package com.github.techrobby.SimplePubSub;
// 提供给客户端进行订阅,发布,取消订阅等方法
public interface JMessageHub {
//发布一条消息: 第一个参数代表了消息类型==主题, 第二个参数是消息内容
public <T extends JMessage> void publish(Class<T> messageClass, T message);
//订阅一个主题: 因为发布的消息类型是Class,所以订阅一个主题第一个参数要传递Class,第二个参数是订阅者自己的回调实现
public <T extends JMessage, R extends JMessageReceiver<T>> JMessageToken<T>
subscribe(Class<T> messageClass, R handler);
//取消订阅
public <T extends JMessage> void unsubsribe(JMessageToken<T> token);
}