@@ -31,34 +31,21 @@ def __init__(self,
31
31
self .timeout = timeout
32
32
self .verbose = verbose
33
33
34
+ self .socket = None
34
35
self .pendings = None
35
36
self .packer = msgpack .Packer ()
36
37
self .lock = threading .Lock ()
38
+
37
39
try :
38
- self .socket = self . _connect ()
40
+ self ._reconnect ()
39
41
except :
40
42
# will be retried in emit()
41
- self .socket = None
43
+ self ._close ()
42
44
43
45
def emit (self , label , data ):
44
46
bytes = self ._make_packet (label , data )
45
47
self ._send (bytes )
46
48
47
- def _reconnect (self ):
48
- if not self .socket :
49
- self .socket = self ._connect ()
50
-
51
- def _connect (self ):
52
- sock = socket .socket (socket .AF_INET , socket .SOCK_STREAM )
53
- sock .settimeout (self .timeout )
54
- sock .connect ((self .host , self .port ))
55
- return sock
56
-
57
- def _close (self ):
58
- if self .socket :
59
- self .socket .close ()
60
- self .socket = None
61
-
62
49
def _make_packet (self , label , data ):
63
50
if label :
64
51
tag = '.' .join ((self .tag , label ))
@@ -97,6 +84,19 @@ def _send_internal(self, bytes):
97
84
self ._close ()
98
85
# clear buffer if it exceeds max bufer size
99
86
if self .pendings and (len (self .pendings ) > self .bufmax ):
87
+ # TODO: add callback handler here
100
88
self .pendings = None
101
89
else :
102
90
self .pendings = bytes
91
+
92
+ def _reconnect (self ):
93
+ if not self .socket :
94
+ sock = socket .socket (socket .AF_INET , socket .SOCK_STREAM )
95
+ sock .settimeout (self .timeout )
96
+ sock .connect ((self .host , self .port ))
97
+ self .socket = sock
98
+
99
+ def _close (self ):
100
+ if self .socket :
101
+ self .socket .close ()
102
+ self .socket = None
0 commit comments