Package xyz.cofe.trambda.tcp
Class TcpClient
- java.lang.Object
-
- xyz.cofe.trambda.tcp.TcpClient
-
- All Implemented Interfaces:
AutoCloseable
public class TcpClient extends Object implements AutoCloseable
-
-
Field Summary
Fields Modifier and Type Field Description protected xyz.cofe.ecolls.ListenersHelper<TrListener,TrEvent>listenersprotected TcpProtocolprotoprotected Socketsocketprotected Map<String,List<xyz.cofe.fn.Tuple2<Consumer<ServerEvent>,AutoCloseable>>>subscribers
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected voidaddEvent(TrEvent ev)Добавляет событие в очередьAutoCloseableaddListener(TrListener listener)Добавление подписчика.AutoCloseableaddListener(TrListener listener, boolean weakLink)Добавление подписчика.voidclose()ResultConsumer<Compile,CompileResult>compile(LambdaDump methodDef)ResultConsumer<Execute,ExecuteResult>execute(CompileResult cres)protected voidfireEvent(TrEvent event)Рассылка уведомления подписчикамSet<TrListener>getListeners()Получение списка подписчиковbooleanhasListener(TrListener listener)Проверка наличия подписчика в списке обработкиvoidping(Consumer<Pong> consumer)voidremoveAllListeners()Удаление всех подписчиковvoidremoveListener(TrListener listener)Удаление подписчика из списка обработкиprotected voidrunEventQueue()Отправляет события из очереди подписчикамvoidshutdown()ResultConsumer<Subscribe,SubscribeResult>subscribe(String publisher, Consumer<ServerEvent> listener)ResultConsumer<Subscribe,SubscribeResult>subscribe(Subscribe subscribe, Consumer<ServerEvent> listener)ResultConsumer<UnSubscribe,UnSubscribeResult>unsubscribe(String publisher)voidunsubscribe(Consumer<? super ServerEvent> listener)ResultConsumer<UnSubscribe,UnSubscribeResult>unsubscribe(UnSubscribe subscribe)protected voidwithQueue(Runnable run)Запустить выполнение кода в блоке, и не рассылать уведомления до завершения блока кодаprotected <T> TwithQueue(Supplier<T> run)Запустить выполнение кода в блоке, и не рассылать уведомления до завершения блока кода
-
-
-
Field Detail
-
socket
protected final Socket socket
-
proto
protected final TcpProtocol proto
-
listeners
protected final xyz.cofe.ecolls.ListenersHelper<TrListener,TrEvent> listeners
-
subscribers
protected final Map<String,List<xyz.cofe.fn.Tuple2<Consumer<ServerEvent>,AutoCloseable>>> subscribers
-
-
Constructor Detail
-
TcpClient
public TcpClient(Socket socket)
-
-
Method Detail
-
hasListener
public boolean hasListener(TrListener listener)
Проверка наличия подписчика в списке обработки- Parameters:
listener- подписчик- Returns:
- true - есть в списке обработки
-
getListeners
public Set<TrListener> getListeners()
Получение списка подписчиков- Returns:
- подписчики
-
addListener
public AutoCloseable addListener(TrListener listener)
Добавление подписчика.- Parameters:
listener- Подписчик.- Returns:
- Интерфес для отсоединения подписчика
-
addListener
public AutoCloseable addListener(TrListener listener, boolean weakLink)
Добавление подписчика.- Parameters:
listener- Подписчик.weakLink- true - добавить как weak ссылку / false - как hard ссылку- Returns:
- Интерфес для отсоединения подписчика
-
removeListener
public void removeListener(TrListener listener)
Удаление подписчика из списка обработки- Parameters:
listener- подписчик
-
removeAllListeners
public void removeAllListeners()
Удаление всех подписчиков
-
withQueue
protected void withQueue(Runnable run)
Запустить выполнение кода в блоке, и не рассылать уведомления до завершения блока кода- Parameters:
run- блок кода
-
withQueue
protected <T> T withQueue(Supplier<T> run)
Запустить выполнение кода в блоке, и не рассылать уведомления до завершения блока кода- Parameters:
run- блок кода- Returns:
- возвращаемое значение
-
fireEvent
protected void fireEvent(TrEvent event)
Рассылка уведомления подписчикам- Parameters:
event- уведомление
-
addEvent
protected void addEvent(TrEvent ev)
Добавляет событие в очередь- Parameters:
ev- событие
-
runEventQueue
protected void runEventQueue()
Отправляет события из очереди подписчикам
-
close
public void close()
- Specified by:
closein interfaceAutoCloseable
-
shutdown
public void shutdown()
-
compile
public ResultConsumer<Compile,CompileResult> compile(LambdaDump methodDef)
-
execute
public ResultConsumer<Execute,ExecuteResult> execute(CompileResult cres)
-
subscribe
public ResultConsumer<Subscribe,SubscribeResult> subscribe(Subscribe subscribe, Consumer<ServerEvent> listener)
-
subscribe
public ResultConsumer<Subscribe,SubscribeResult> subscribe(String publisher, Consumer<ServerEvent> listener)
-
unsubscribe
public ResultConsumer<UnSubscribe,UnSubscribeResult> unsubscribe(UnSubscribe subscribe)
-
unsubscribe
public ResultConsumer<UnSubscribe,UnSubscribeResult> unsubscribe(String publisher)
-
unsubscribe
public void unsubscribe(Consumer<? super ServerEvent> listener)
-
-