22connect straight to the network plugin.
33
44"""
5+ import collections
56import struct
67import socket
78import logging
@@ -149,8 +150,59 @@ def send(self, connection, timestamp, *values):
149150
150151 payload = self .type ._encode_values (* values )
151152
153+ log .debug ("send: %s" , _SendMsg (self , values ))
152154 connection .send (header_ + payload )
153155
156+ def __str__ (self ):
157+ return (
158+ "(host=%r, plugin=%r, plugin_instance=%r, "
159+ "type=%r, type_instance=%r, interval=%r)" % (
160+ self .host , self .plugin , self .plugin_instance ,
161+ self .type .name , self .type_instance , self .interval
162+ )
163+ )
164+
165+
166+ class _SendMsg (collections .namedtuple ('sendmsg' , ['sender' , 'values' ])):
167+ def __str__ (self ):
168+ sender = self .sender
169+ type_ = sender .type
170+ return (
171+ "(host=%r, plugin=%r, plugin_instance=%r, "
172+ "type=%r, type_instance=%r, interval=%r, values=%s)" % (
173+ sender .host , sender .plugin , sender .plugin_instance ,
174+ type_ .name , sender .type_instance , sender .interval ,
175+ ", " .join (
176+ "%s=%s" % (field_name , value )
177+ for field_name , value in zip (type_ .names , self .values )
178+ )
179+ )
180+ )
181+
182+
183+ class _RecvMsg (collections .namedtuple ("receivemsg" , ['result' , 'type' ])):
184+
185+ def __str__ (self ):
186+ if self .type :
187+ type_names = self .type .names
188+ else :
189+ type_names = ["(unknown)" for value in self .result [TYPE_VALUES ]]
190+
191+ return (
192+ "(host=%r, plugin=%r, plugin_instance=%r, "
193+ "type=%r, type_instance=%r, interval=%r, values=%s)" % (
194+ self .result [TYPE_HOST ], self .result [TYPE_PLUGIN ],
195+ self .result [TYPE_PLUGIN_INSTANCE ],
196+ self .result [TYPE_TYPE ], self .result [TYPE_TYPE_INSTANCE ],
197+ self .result [TYPE_INTERVAL ],
198+ ", " .join (
199+ "%s=%s" % (field_name , value )
200+ for field_name , value
201+ in zip (type_names , self .result [TYPE_VALUES ])
202+ )
203+ )
204+ )
205+
154206
155207class MessageReceiver (object ):
156208 def __init__ (self , * types ):
@@ -171,6 +223,7 @@ def __init__(self, *types):
171223 def receive (self , buf ):
172224 result = self ._unpack_packet (buf )
173225 type_name = result [TYPE_TYPE ]
226+ type_ = None
174227 try :
175228 type_ = self ._types [type_name ]
176229 except KeyError :
@@ -183,6 +236,8 @@ def receive(self, buf):
183236 for name , value in zip (type_ ._field_names , result [TYPE_VALUES ])
184237 }
185238 return result
239+ finally :
240+ log .debug ("receive: %s" , _RecvMsg (result , type_ ))
186241
187242 def _unpack_packet (self , buf ):
188243 pos = 0
@@ -257,7 +312,6 @@ def send(self, message):
257312 self ._mutex .acquire ()
258313 try :
259314 self ._check_connect ()
260- log .debug ("sending: %r" , message )
261315 self .socket .sendto (message , (self .host , self .port ))
262316 except IOError :
263317 log .error ("Error in socket.sendto" , exc_info = True )
0 commit comments