From 8c2f32c74831953c7edb1132661b1f580b09a49e Mon Sep 17 00:00:00 2001 From: Dirk Alders Date: Mon, 11 Jan 2021 07:24:06 +0100 Subject: [PATCH] direct_socket_stp_* added --- __init__.py | 89 ++++++++++++++++++++++++---- _docs_/genindex.html | 24 +++++++- _docs_/index.html | 134 ++++++++++++++++++++++++++++++------------ _docs_/objects.inv | 3 +- _docs_/searchindex.js | 2 +- 5 files changed, 198 insertions(+), 54 deletions(-) diff --git a/__init__.py b/__init__.py index 6dff810..2d42a70 100644 --- a/__init__.py +++ b/__init__.py @@ -145,7 +145,7 @@ class continues_statistic(dict): :rtype: :class:`helpers.continues_statistic` or None """ if self.quantifier == 0: - return None + return continues_statistic() else: rv = continues_statistic(self.mean, self.min, self.max, self.quantifier) self.__init_data__(None, None, None, 0) @@ -211,7 +211,7 @@ class continues_statistic_multivalue(dict): """ if key is None: if len(self) == 0: - return None + return continues_statistic_multivalue() else: rv = continues_statistic_multivalue(**self) self.clear() @@ -231,6 +231,7 @@ class direct_socket_base(object): This is the base class for other classes in this module. """ DEFAULT_CHANNEL_NAME = 'all_others' + IS_CLIENT = False def __init__(self, max_len=None, virtual_rate_bps=None): self.__max_length__ = max_len @@ -259,7 +260,7 @@ class direct_socket_base(object): def __clean_buffer__(self): self.__rx_buffer__ = b'' - self.logger.info('%s Cleaning RX-Buffer...', self.__log_prefix__()) + self.logger.debug('%s Cleaning up receive-buffer', self.__log_prefix__()) def __connect__(self, remote_socket): if self.__remote_socket__ is None: @@ -271,16 +272,16 @@ class direct_socket_base(object): remote_socket.__connect__(self) def __log_prefix__(self): - return 'Client:' if self.IS_CLIENT else 'Server:' + return 'comm-client:' if self.IS_CLIENT else 'comm-server:' def __rx__(self, data): self.__rx_buffer__ += data - self.logger.debug('%s RX <- %s', self.__log_prefix__(), stringtools.hexlify(data)) + self.logger.info('%s RX <- %s', self.__log_prefix__(), stringtools.hexlify(data)) if self.__data_callback__ is not None: self.__data_callback__(self) def __tx__(self, q, data): - self.logger.debug('%s TX -> %s', self.__log_prefix__(), stringtools.hexlify(data)) + self.logger.info('%s TX -> %s', self.__log_prefix__(), stringtools.hexlify(data)) if self.__rate_bps__ is not None: time.sleep(len(data) / self.__rate_bps__) self.__remote_socket__.__rx__(data) @@ -334,11 +335,11 @@ class direct_socket_base(object): i += 1 time.sleep(.1) if len(self.__rx_buffer__) < (num or 1): - return b'' + return self.__rx_buffer__[0:0] else: if num is None: rv = self.__rx_buffer__ - self.__rx_buffer__ = b'' + self.__rx_buffer__ = rv[0:0] else: rv = self.__rx_buffer__[:num] self.__rx_buffer__ = self.__rx_buffer__[num:] @@ -380,8 +381,6 @@ class direct_socket_base(object): :type data: bytes :param timeout: The timeout for sending data (e.g. time to establish new connection). :type timeout: float - :param log_lvl: The log level to log outgoing TX-data - :type log_lvl: int :return: True if data had been sent, otherwise False. :rtype: bool """ @@ -397,6 +396,44 @@ class direct_socket_base(object): return True +class direct_socket_stp_base(direct_socket_base): + IS_CLIENT = False + + def __init__(self, *args, **kwargs): + direct_socket_base.__init__(self, *args, **kwargs) + self.__stp_rx__ = stringtools.stp.stp() + + def __chunks__(self, data): + return direct_socket_base.__chunks__(self, stringtools.stp.build_frame(data)) + + def __clean_buffer__(self): + self.__rx_buffer__ = [] + self.logger.debug('%s Cleaning up receive-buffer', self.__log_prefix__()) + + def __rx__(self, data): + self.logger.debug('%s RX <- %s', self.__log_prefix__(), stringtools.hexlify(data)) + msg = self.__stp_rx__.process(data) + if len(msg) > 0: + self.__rx_buffer__.extend(msg) + if len(self.__rx_buffer__) > 0: + if self.__data_callback__ is not None: + self.__data_callback__(self) + + def receive(self, timeout=1): + """ + This method returns one received messages via the initiated communication channel. + + :param timeout: The timeout for receiving data (at least after the timeout the method returns data or None). + :type timeout: float + :return: The received data. + :rtype: bytes + """ + try: + return direct_socket_base.receive(self, timeout=timeout, num=1)[0] + except TypeError: + return None + + class direct_socket_client(direct_socket_base): """ Class to create a direct client socket. See also parent :class:`helpers.direct_socket_base`. @@ -451,6 +488,38 @@ class direct_socket_server(direct_socket_base): self.logger.info('%s Waiting for incomming connection', self.__log_prefix__()) +class direct_socket_stp_client(direct_socket_stp_base): + IS_CLIENT = True + + def connect(self, remote_socket): + """ + Method to create a connection between this client and a :class:`helpers.direct_socket_server` instance. + + :param remote_socket: The remote socket to connect to. + :type remote_socket: :class:`helpers.direct_socket_server` + """ + self.__connect__(remote_socket) + + def reconnect(self): + """ + Method to do a reconnect. + + .. note:: The :const:`remote_socket` of the prefious :func:`connect` call will be used. + """ + if self.__last_remote_socket__ is not None and self.__remote_socket__ is None: + self.connect(self.__last_remote_socket__) + return True + return False + + +class direct_socket_stp_server(direct_socket_stp_base): + IS_CLIENT = False + + def __init__(self, *args, **kwargs): + direct_socket_stp_base.__init__(self, *args, **kwargs) + self.logger.info('%s Waiting for incomming connection', self.__log_prefix__()) + + class ringbuffer(list): """ Class for a list with a limited number of elements. diff --git a/_docs_/genindex.html b/_docs_/genindex.html index 110779d..cab3a4f 100644 --- a/_docs_/genindex.html +++ b/_docs_/genindex.html @@ -173,7 +173,11 @@
    -
  • direct_socket_server (class in helpers) +
  • direct_socket_stp_base (class in helpers) +
  • +
  • direct_socket_stp_client (class in helpers) +
  • +
  • direct_socket_stp_server (class in helpers)
  • disconnect() (helpers.direct_socket_base method)
  • @@ -265,13 +275,21 @@ @@ -520,20 +519,20 @@ given as first argument.

    Will result to the following output:

    -
    2021-01-09 22:30:47,920: root.helpers.all_others - INFO - Server: Cleaning RX-Buffer...
    -2021-01-09 22:30:47,920: root.helpers.all_others - INFO - Server: Waiting for incomming connection
    -2021-01-09 22:30:47,920: root.helpers.all_others - INFO - Client: Cleaning RX-Buffer...
    -2021-01-09 22:30:47,920: root.helpers.example_client - INFO - Client: Connection established...
    -2021-01-09 22:30:47,921: root.helpers.example_client - INFO - Client: Cleaning RX-Buffer...
    -2021-01-09 22:30:47,921: root.helpers.example_server - INFO - Server: Connection established...
    -2021-01-09 22:30:47,921: root.helpers.example_server - INFO - Server: Cleaning RX-Buffer...
    -2021-01-09 22:30:47,921: root.helpers.example_client - DEBUG - Client: TX -> (2): 61 62
    -2021-01-09 22:30:48,321: root.helpers.example_server - DEBUG - Server: RX <- (2): 61 62
    -2021-01-09 22:30:48,322: root.helpers.example_client - DEBUG - Client: TX -> (1): 63
    -2021-01-09 22:30:48,322: root.helpers.example_server - DEBUG - Server: TX -> (2): 61 62
    -2021-01-09 22:30:48,523: root.helpers.example_server - DEBUG - Server: RX <- (1): 63
    -2021-01-09 22:30:48,723: root.helpers.example_client - DEBUG - Client: RX <- (2): 61 62
    -2021-01-09 22:30:48,723: root.helpers.example_server - DEBUG - Server: TX -> (1): 63
    +
    2021-01-11 07:03:07,423: root.helpers.all_others - DEBUG - comm-server: Cleaning up receive-buffer
    +2021-01-11 07:03:07,423: root.helpers.all_others - INFO - comm-server: Waiting for incomming connection
    +2021-01-11 07:03:07,423: root.helpers.all_others - DEBUG - comm-client: Cleaning up receive-buffer
    +2021-01-11 07:03:07,423: root.helpers.example_client - INFO - comm-client: Connection established...
    +2021-01-11 07:03:07,424: root.helpers.example_client - DEBUG - comm-client: Cleaning up receive-buffer
    +2021-01-11 07:03:07,424: root.helpers.example_server - INFO - comm-server: Connection established...
    +2021-01-11 07:03:07,424: root.helpers.example_server - DEBUG - comm-server: Cleaning up receive-buffer
    +2021-01-11 07:03:07,424: root.helpers.example_client - INFO - comm-client: TX -> (2): 61 62
    +2021-01-11 07:03:07,824: root.helpers.example_server - INFO - comm-server: RX <- (2): 61 62
    +2021-01-11 07:03:07,825: root.helpers.example_client - INFO - comm-client: TX -> (1): 63
    +2021-01-11 07:03:07,825: root.helpers.example_server - INFO - comm-server: TX -> (2): 61 62
    +2021-01-11 07:03:08,025: root.helpers.example_server - INFO - comm-server: RX <- (1): 63
    +2021-01-11 07:03:08,225: root.helpers.example_client - INFO - comm-client: RX <- (2): 61 62
    +2021-01-11 07:03:08,225: root.helpers.example_server - INFO - comm-server: TX -> (1): 63
     The Client received: b'ab'
     
    @@ -592,25 +591,82 @@ given as first argument.

    Will result to the following output:

    -
    2021-01-09 22:30:47,920: root.helpers.all_others - INFO - Server: Cleaning RX-Buffer...
    -2021-01-09 22:30:47,920: root.helpers.all_others - INFO - Server: Waiting for incomming connection
    -2021-01-09 22:30:47,920: root.helpers.all_others - INFO - Client: Cleaning RX-Buffer...
    -2021-01-09 22:30:47,920: root.helpers.example_client - INFO - Client: Connection established...
    -2021-01-09 22:30:47,921: root.helpers.example_client - INFO - Client: Cleaning RX-Buffer...
    -2021-01-09 22:30:47,921: root.helpers.example_server - INFO - Server: Connection established...
    -2021-01-09 22:30:47,921: root.helpers.example_server - INFO - Server: Cleaning RX-Buffer...
    -2021-01-09 22:30:47,921: root.helpers.example_client - DEBUG - Client: TX -> (2): 61 62
    -2021-01-09 22:30:48,321: root.helpers.example_server - DEBUG - Server: RX <- (2): 61 62
    -2021-01-09 22:30:48,322: root.helpers.example_client - DEBUG - Client: TX -> (1): 63
    -2021-01-09 22:30:48,322: root.helpers.example_server - DEBUG - Server: TX -> (2): 61 62
    -2021-01-09 22:30:48,523: root.helpers.example_server - DEBUG - Server: RX <- (1): 63
    -2021-01-09 22:30:48,723: root.helpers.example_client - DEBUG - Client: RX <- (2): 61 62
    -2021-01-09 22:30:48,723: root.helpers.example_server - DEBUG - Server: TX -> (1): 63
    +
    2021-01-11 07:03:07,423: root.helpers.all_others - DEBUG - comm-server: Cleaning up receive-buffer
    +2021-01-11 07:03:07,423: root.helpers.all_others - INFO - comm-server: Waiting for incomming connection
    +2021-01-11 07:03:07,423: root.helpers.all_others - DEBUG - comm-client: Cleaning up receive-buffer
    +2021-01-11 07:03:07,423: root.helpers.example_client - INFO - comm-client: Connection established...
    +2021-01-11 07:03:07,424: root.helpers.example_client - DEBUG - comm-client: Cleaning up receive-buffer
    +2021-01-11 07:03:07,424: root.helpers.example_server - INFO - comm-server: Connection established...
    +2021-01-11 07:03:07,424: root.helpers.example_server - DEBUG - comm-server: Cleaning up receive-buffer
    +2021-01-11 07:03:07,424: root.helpers.example_client - INFO - comm-client: TX -> (2): 61 62
    +2021-01-11 07:03:07,824: root.helpers.example_server - INFO - comm-server: RX <- (2): 61 62
    +2021-01-11 07:03:07,825: root.helpers.example_client - INFO - comm-client: TX -> (1): 63
    +2021-01-11 07:03:07,825: root.helpers.example_server - INFO - comm-server: TX -> (2): 61 62
    +2021-01-11 07:03:08,025: root.helpers.example_server - INFO - comm-server: RX <- (1): 63
    +2021-01-11 07:03:08,225: root.helpers.example_client - INFO - comm-client: RX <- (2): 61 62
    +2021-01-11 07:03:08,225: root.helpers.example_server - INFO - comm-server: TX -> (1): 63
     The Client received: b'ab'
     
    +
    +
    +class helpers.direct_socket_stp_base(*args, **kwargs)
    +
    +
    +receive(timeout=1)
    +

    This method returns one received messages via the initiated communication channel.

    +
      +
    • register_callback() (helpers.direct_socket_base method) +
    • register_connect_callback() (helpers.direct_socket_base method)
    • register_disconnect_callback() (helpers.direct_socket_base method) diff --git a/_docs_/index.html b/_docs_/index.html index 653e83f..cc854d8 100644 --- a/_docs_/index.html +++ b/_docs_/index.html @@ -312,25 +312,25 @@ -------------------------------------------------------------- a: mean=3.1, min=1, max=3.5, quantifier=305 -------------------------------------------------------------- -b: mean=17.1, min=13.1, max=19.3, quantifier=27 -a: mean=3.103954248366013, min=1, max=4.31, quantifier=306 +a: mean=3.103954248366013, min=1, max=4.31, quantifier=306 +b: mean=17.1, min=13.1, max=19.3, quantifier=27 -------------------------------------------------------------- -b: mean=17.1, min=13.1, max=19.3, quantifier=27 -a: mean=3.103954248366013, min=1, max=4.31, quantifier=306 +a: mean=3.103954248366013, min=1, max=4.31, quantifier=306 +b: mean=17.1, min=13.1, max=19.3, quantifier=27 -------------------------------------------------------------- pop out b: mean=17.1, min=13.1, max=19.3, quantifier=27 -------------------------------------------------------------- -pop out b: None +pop out b: mean=None, min=None, max=None, quantifier=0 -------------------------------------------------------------- -b: mean=None, min=None, max=None, quantifier=0 -a: mean=3.103954248366013, min=1, max=4.31, quantifier=306 +a: mean=3.103954248366013, min=1, max=4.31, quantifier=306 +b: mean=None, min=None, max=None, quantifier=0 -------------------------------------------------------------- pop out all: -b: mean=None, min=None, max=None, quantifier=0 -a: mean=3.103954248366013, min=1, max=4.31, quantifier=306 +a: mean=3.103954248366013, min=1, max=4.31, quantifier=306 +b: mean=None, min=None, max=None, quantifier=0 -------------------------------------------------------------- pop out all: -None +- -------------------------------------------------------------- - -------------------------------------------------------------- @@ -475,7 +475,6 @@ given as first argument.

    Parameters:
    • data (bytes) – The data to be send over the communication channel.
    • timeout (float) – The timeout for sending data (e.g. time to establish new connection).
    • -
    • log_lvl (int) – The log level to log outgoing TX-data
    +++ + + + + + + + +
    Parameters:timeout (float) – The timeout for receiving data (at least after the timeout the method returns data or None).
    Returns:The received data.
    Return type:bytes
    + + + + +
    +
    +class helpers.direct_socket_stp_client(*args, **kwargs)
    +
    +
    +connect(remote_socket)
    +

    Method to create a connection between this client and a helpers.direct_socket_server instance.

    + +++ + + + +
    Parameters:remote_socket (helpers.direct_socket_server) – The remote socket to connect to.
    +
    + +
    +
    +reconnect()
    +

    Method to do a reconnect.

    +
    +

    Note

    +

    The remote_socket of the prefious connect() call will be used.

    +
    +
    + +
    + +
    +
    +class helpers.direct_socket_stp_server(*args, **kwargs)
    +
    +
    class helpers.ringbuffer(*args, **kwargs)
    diff --git a/_docs_/objects.inv b/_docs_/objects.inv index 29c56f1..8423d22 100644 --- a/_docs_/objects.inv +++ b/_docs_/objects.inv @@ -2,4 +2,5 @@ # Project: helpers # Version: # The remainder of this file is compressed using zlib. -xڭAn E>Uls.*UK4 Q5z8$VJ>Lf@Ob8{Qh7I+DYtY)gYۀ$5V# BU=GL.zpñeȝk>;0z? u-XS[dYR7%QΫZiYbz!y6Q@l^*0]oyZIh3zF˳YªSv⣔@w~_׶f3\0 {h nj4\zFFx-ى,>>IDccc/ٻ">-y =W)U%DҒ5@7&} \ No newline at end of file +xڭN0 { b׽$$#7hiRbgnǓ.Vڔ[oqҶhz$su0(5ʖ;sA6EY6 Ib`M@+Db=oPef8FKp]jry{(n5 Lޏ Krj,+)CQXr^R[R=as!XgZD&nz +nOZο]j%2-Sv棔@|*;X0 v_<=Ln׶v;38#|jОA\o ThD'5vjEQ.ވĹO10twnE2{N?)+!x$_hp # \ No newline at end of file diff --git a/_docs_/searchindex.js b/_docs_/searchindex.js index 5ac5c40..017fee1 100644 --- a/_docs_/searchindex.js +++ b/_docs_/searchindex.js @@ -1 +1 @@ -Search.setIndex({docnames:["index"],envversion:{"sphinx.domains.c":1,"sphinx.domains.changeset":1,"sphinx.domains.cpp":1,"sphinx.domains.javascript":1,"sphinx.domains.math":2,"sphinx.domains.python":1,"sphinx.domains.rst":1,"sphinx.domains.std":1,sphinx:55},filenames:["index.rst"],objects:{"":{helpers:[0,0,0,"-"]},"helpers.continues_statistic":{max:[0,2,1,""],mean:[0,2,1,""],min:[0,2,1,""],pop:[0,3,1,""],quantifier:[0,2,1,""]},"helpers.continues_statistic_multivalue":{pop:[0,3,1,""]},"helpers.direct_socket_base":{disconnect:[0,3,1,""],init_channel_name:[0,3,1,""],is_connected:[0,3,1,""],receive:[0,3,1,""],register_callback:[0,3,1,""],register_connect_callback:[0,3,1,""],register_disconnect_callback:[0,3,1,""],send:[0,3,1,""]},"helpers.direct_socket_client":{connect:[0,3,1,""],reconnect:[0,3,1,""]},"helpers.ringbuffer":{append:[0,3,1,""],extend:[0,3,1,""]},helpers:{continues_statistic:[0,1,1,""],continues_statistic_multivalue:[0,1,1,""],direct_socket_base:[0,1,1,""],direct_socket_client:[0,1,1,""],direct_socket_server:[0,1,1,""],ringbuffer:[0,1,1,""]}},objnames:{"0":["py","module","Python module"],"1":["py","class","Python class"],"2":["py","attribute","Python attribute"],"3":["py","method","Python method"]},objtypes:{"0":"py:module","1":"py:class","2":"py:attribute","3":"py:method"},terms:{"byte":0,"class":0,"float":0,"function":0,"import":0,"int":0,"new":0,"return":0,"true":0,The:0,Will:0,With:0,abc:0,abl:0,add:0,adding:0,after:0,alder:0,all:0,all_oth:0,also:0,append:0,arg:0,argument:0,author:0,avail:0,base:0,been:0,between:0,bool:0,buffer:0,call:0,callback:0,can:0,chang:0,channel:0,channel_nam:0,clean:0,client:0,commun:0,connect:0,continu:0,continues_statist:0,continues_statistic_multipl:0,continues_statistic_multivalu:0,creat:0,csm:0,current:0,data:0,debug:0,def:0,delet:0,descript:0,dict:0,direct:0,direct_socket_bas:0,direct_socket_cli:0,direct_socket_serv:0,dirk:0,disconnect:0,don:0,each:0,element:0,empti:0,end:0,entri:0,equival:0,establish:0,exampl:0,example_cli:0,example_serv:0,execut:0,exist:0,extend:0,fals:0,first:0,follow:0,from:0,get:0,given:0,had:0,have:0,identifi:0,includ:0,incom:0,index:0,info:0,init_channel_nam:0,initi:0,initialis:0,instanc:0,is_connect:0,iter:0,kei:0,keword:0,kwarg:0,least:0,length:0,level:0,limit:0,list:0,log:0,log_lvl:0,log_name_lvl:0,lost:0,mathemat:0,max:0,max_len:0,max_val:0,maximum:0,mean:0,method:0,min:0,min_val:0,mirror_callback:0,mockeri:0,modul:0,mount:0,multipl:0,name:0,need:0,none:0,nonetyp:0,num:0,number:0,numer:0,obj:0,object:0,one:0,oper:0,other:0,otherwis:0,out:0,outgo:0,output:0,over:0,own:0,page:0,paramet:0,parent:0,pass:0,path:0,pop:0,prefiou:0,print:0,quantifi:0,receiv:0,reconnect:0,reduc:0,register_callback:0,register_connect_callback:0,register_disconnect_callback:0,remot:0,remote_socket:0,report:0,repr:0,result:0,ringbuff:0,root:0,search:0,see:0,send:0,sent:0,server:0,singl:0,sock:0,socket:0,start:0,statist:0,statu:0,stdoutloggingconfigur:0,store:0,str:0,stream:0,submodul:0,sudo:0,support:0,sys:0,thi:0,time:0,timeout:0,type:0,unittest:0,use:0,used:0,val:0,valu:0,via:0,virtual_rate_bp:0,wai:0,wait:0,when:0,which:0,without:0,yet:0,you:0},titles:["Welcome to helpers\u2019s documentation!"],titleterms:{document:0,helper:0,indic:0,tabl:0,welcom:0}}) \ No newline at end of file +Search.setIndex({docnames:["index"],envversion:{"sphinx.domains.c":1,"sphinx.domains.changeset":1,"sphinx.domains.cpp":1,"sphinx.domains.javascript":1,"sphinx.domains.math":2,"sphinx.domains.python":1,"sphinx.domains.rst":1,"sphinx.domains.std":1,sphinx:55},filenames:["index.rst"],objects:{"":{helpers:[0,0,0,"-"]},"helpers.continues_statistic":{max:[0,2,1,""],mean:[0,2,1,""],min:[0,2,1,""],pop:[0,3,1,""],quantifier:[0,2,1,""]},"helpers.continues_statistic_multivalue":{pop:[0,3,1,""]},"helpers.direct_socket_base":{disconnect:[0,3,1,""],init_channel_name:[0,3,1,""],is_connected:[0,3,1,""],receive:[0,3,1,""],register_callback:[0,3,1,""],register_connect_callback:[0,3,1,""],register_disconnect_callback:[0,3,1,""],send:[0,3,1,""]},"helpers.direct_socket_client":{connect:[0,3,1,""],reconnect:[0,3,1,""]},"helpers.direct_socket_stp_base":{receive:[0,3,1,""]},"helpers.direct_socket_stp_client":{connect:[0,3,1,""],reconnect:[0,3,1,""]},"helpers.ringbuffer":{append:[0,3,1,""],extend:[0,3,1,""]},helpers:{continues_statistic:[0,1,1,""],continues_statistic_multivalue:[0,1,1,""],direct_socket_base:[0,1,1,""],direct_socket_client:[0,1,1,""],direct_socket_server:[0,1,1,""],direct_socket_stp_base:[0,1,1,""],direct_socket_stp_client:[0,1,1,""],direct_socket_stp_server:[0,1,1,""],ringbuffer:[0,1,1,""]}},objnames:{"0":["py","module","Python module"],"1":["py","class","Python class"],"2":["py","attribute","Python attribute"],"3":["py","method","Python method"]},objtypes:{"0":"py:module","1":"py:class","2":"py:attribute","3":"py:method"},terms:{"byte":0,"class":0,"float":0,"function":0,"import":0,"int":0,"new":0,"return":0,"true":0,The:0,Will:0,With:0,abc:0,abl:0,add:0,adding:0,after:0,alder:0,all:0,all_oth:0,also:0,append:0,arg:0,argument:0,author:0,avail:0,base:0,been:0,between:0,bool:0,buffer:0,call:0,callback:0,can:0,chang:0,channel:0,channel_nam:0,clean:0,client:0,comm:0,commun:0,connect:0,continu:0,continues_statist:0,continues_statistic_multipl:0,continues_statistic_multivalu:0,creat:0,csm:0,current:0,data:0,debug:0,def:0,delet:0,descript:0,dict:0,direct:0,direct_socket_bas:0,direct_socket_cli:0,direct_socket_serv:0,direct_socket_stp_bas:0,direct_socket_stp_cli:0,direct_socket_stp_serv:0,dirk:0,disconnect:0,don:0,each:0,element:0,empti:0,end:0,entri:0,equival:0,establish:0,exampl:0,example_cli:0,example_serv:0,execut:0,exist:0,extend:0,fals:0,first:0,follow:0,from:0,get:0,given:0,had:0,have:0,identifi:0,includ:0,incom:0,index:0,info:0,init_channel_nam:0,initi:0,initialis:0,instanc:0,is_connect:0,iter:0,kei:0,keword:0,kwarg:0,least:0,length:0,limit:0,list:0,log:0,log_name_lvl:0,lost:0,mathemat:0,max:0,max_len:0,max_val:0,maximum:0,mean:0,messag:0,method:0,min:0,min_val:0,mirror_callback:0,mockeri:0,modul:0,mount:0,multipl:0,name:0,need:0,none:0,nonetyp:0,num:0,number:0,numer:0,obj:0,object:0,one:0,oper:0,other:0,otherwis:0,out:0,output:0,over:0,own:0,page:0,paramet:0,parent:0,pass:0,path:0,pop:0,prefiou:0,print:0,quantifi:0,receiv:0,reconnect:0,reduc:0,register_callback:0,register_connect_callback:0,register_disconnect_callback:0,remot:0,remote_socket:0,report:0,repr:0,result:0,ringbuff:0,root:0,search:0,see:0,send:0,sent:0,server:0,singl:0,sock:0,socket:0,start:0,statist:0,statu:0,stdoutloggingconfigur:0,store:0,str:0,stream:0,submodul:0,sudo:0,support:0,sys:0,thi:0,time:0,timeout:0,type:0,unittest:0,use:0,used:0,val:0,valu:0,via:0,virtual_rate_bp:0,wai:0,wait:0,when:0,which:0,without:0,yet:0,you:0},titles:["Welcome to helpers\u2019s documentation!"],titleterms:{document:0,helper:0,indic:0,tabl:0,welcom:0}}) \ No newline at end of file