// Path: zer0MQTTServer/src/com/syxy/protocol/mqttImp/process/subscribe/Subscription.java
// public class Subscription implements Serializable{
// 
// 	private static final long serialVersionUID = 6159635655653102856L;
// 	QoS requestedQos; //max QoS acceptable
//     String topicFilter;
//     String clientID;
//     boolean cleanSession;
//     boolean active = true;
//     
//     public Subscription(String clientID, String topicFilter, QoS requestedQos, boolean cleanSession) {
//     	this.clientID = clientID;
//         this.requestedQos = requestedQos;
//         this.topicFilter = topicFilter;
//         this.cleanSession = cleanSession;
//     }
//     
//     public QoS getRequestedQos() {
// 		return requestedQos;
// 	}
// 
// 	public void setRequestedQos(QoS requestedQos) {
// 		this.requestedQos = requestedQos;
// 	}
// 
// 	public String getTopicFilter() {
// 		return topicFilter;
// 	}
// 
// 	public void setTopicFilter(String topicFilter) {
// 		this.topicFilter = topicFilter;
// 	}
//  
// 	public boolean isCleanSession() {
// 		return cleanSession;
// 	}
// 
// 	public void setCleanSession(boolean cleanSession) {
// 		this.cleanSession = cleanSession;
// 	}
// 
// 	public boolean isActive() {
// 		return active;
// 	}
// 
// 	public void setActive(boolean active) {
// 		this.active = active;
// 	}
// 
// 	public void setClientID(String clientID) {
// 		this.clientID = clientID;
// 	}
// 
// 	public String getClientID() {
// 		return clientID;
// 	}
//  
//     @Override
//     public String toString() {
//         return String.format("[filter:%s, cliID: %s, qos: %s, active: %s]", this.topicFilter, this.clientID, this.requestedQos, this.active);
//     }
// }


import com.syxy.protocol.mqttImp.process.subscribe.Subscription;
package com.syxy.protocol.mqttImp.process.Interface;


/**
 *  会话存储类
 * 
 * @author zer0
 * @version 1.0
 * @date 2015-05-07
 */
public interface ISessionStore {

	/**
	 * 查看是否已储存了该客户端ID，如果存储了则返回true
	 * @param clientID
	 * @return boolean
	 * @author zer0
	 * @version 1.0
	 * @date 2015-05-07
	 */
	boolean searchSubscriptions(String clientID);
	
	/**
	 * 清理某个ID所有订阅信息
	 * @param clientID
	 * @author zer0
	 * @version 1.0
	 * @date 2015-05-19
	 */
	void wipeSubscriptions(String clientID);
	

	/**
	 * 添加某个订阅消息到存储
	 * @param newSubscription
	 * @param clientID
	 * @author zer0
	 * @version 1.0
	 * @date 2015-05-25
	 */
	void addNewSubscription(Subscription newSubscription, String clientID);
	
	/**
	 * 从会话的持久化存储中移除某个订阅主题中的某个client
	 * @param topic
	 * @param clientID
	 * @author zer0
	 * @version 1.0
	 * @date 2015-05-25
	 */
// Path: zer0MQTTServer/src/com/syxy/protocol/mqttImp/process/subscribe/Subscription.java
// public class Subscription implements Serializable{
// 
// 	private static final long serialVersionUID = 6159635655653102856L;
// 	QoS requestedQos; //max QoS acceptable
//     String topicFilter;
//     String clientID;
//     boolean cleanSession;
//     boolean active = true;
//     
//     public Subscription(String clientID, String topicFilter, QoS requestedQos, boolean cleanSession) {
//     	this.clientID = clientID;
//         this.requestedQos = requestedQos;
//         this.topicFilter = topicFilter;
//         this.cleanSession = cleanSession;
//     }
//     
//     public QoS getRequestedQos() {
// 		return requestedQos;
// 	}
// 
// 	public void setRequestedQos(QoS requestedQos) {
// 		this.requestedQos = requestedQos;
// 	}
// 
// 	public String getTopicFilter() {
// 		return topicFilter;
// 	}
// 
// 	public void setTopicFilter(String topicFilter) {
// 		this.topicFilter = topicFilter;
// 	}
//  
// 	public boolean isCleanSession() {
// 		return cleanSession;
// 	}
// 
// 	public void setCleanSession(boolean cleanSession) {
// 		this.cleanSession = cleanSession;
// 	}
// 
// 	public boolean isActive() {
// 		return active;
// 	}
// 
// 	public void setActive(boolean active) {
// 		this.active = active;
// 	}
// 
// 	public void setClientID(String clientID) {
// 		this.clientID = clientID;
// 	}
// 
// 	public String getClientID() {
// 		return clientID;
// 	}
//  
//     @Override
//     public String toString() {
//         return String.format("[filter:%s, cliID: %s, qos: %s, active: %s]", this.topicFilter, this.clientID, this.requestedQos, this.active);
//     }
// }


// Path: zer0MQTTServer/src/com/syxy/protocol/mqttImp/process/Interface/ISessionStore.java
import com.syxy.protocol.mqttImp.process.subscribe.Subscription;

package com.syxy.protocol.mqttImp.process.Interface;


/**
 *  会话存储类
 * 
 * @author zer0
 * @version 1.0
 * @date 2015-05-07
 */
public interface ISessionStore {

	/**
	 * 查看是否已储存了该客户端ID，如果存储了则返回true
	 * @param clientID
	 * @return boolean
	 * @author zer0
	 * @version 1.0
	 * @date 2015-05-07
	 */
	boolean searchSubscriptions(String clientID);
	
	/**
	 * 清理某个ID所有订阅信息
	 * @param clientID
	 * @author zer0
	 * @version 1.0
	 * @date 2015-05-19
	 */
	void wipeSubscriptions(String clientID);
	

	/**
	 * 添加某个订阅消息到存储
	 * @param newSubscription
	 * @param clientID
	 * @author zer0
	 * @version 1.0
	 * @date 2015-05-25
	 */
	void addNewSubscription(Subscription newSubscription, String clientID);
	
	/**
	 * 从会话的持久化存储中移除某个订阅主题中的某个client
	 * @param topic
	 * @param clientID
	 * @author zer0
	 * @version 1.0
	 * @date 2015-05-25
	 */
	void removeSubscription(String topic, String clientID);