package com.lutao.cloud.iot.mqtt.core.server.store;

import com.lutao.cloud.iot.mqtt.core.server.model.model.Message;


import java.util.List;

/**
 * message store
 *

 */
public interface IMqttMessageStore {

	/**
	 * 存储 clientId 的遗嘱消息
	 *
	 * @param clientId clientId
	 * @param message  message
	 * @return boolean
	 */
	boolean addWillMessage(String clientId, Message message);

	/**
	 * 清理该 clientId 的遗嘱消息
	 *
	 * @param clientId clientId
	 * @return boolean
	 */
	boolean clearWillMessage(String clientId);

	/**
	 * 获取 will 消息
	 *
	 * @param clientId clientId
	 * @return Message
	 */
	Message getWillMessage(String clientId);

	/**
	 * 存储 retain 消息
	 *
	 * @param topic   topic
	 * @param message message
	 * @return boolean
	 */
	boolean addRetainMessage(String topic, Message message);

	/**
	 * 清理该 topic 的 retain 消息
	 *
	 * @param topic topic
	 * @return boolean
	 */
	boolean clearRetainMessage(String topic);

	/**
	 * 获取所有 retain 消息
	 *
	 * @param topicFilter topicFilter
	 * @return Message
	 */
	List<Message> getRetainMessage(String topicFilter);

}
