]> arthur.barton.de Git - netdata.git/commitdiff
non-blocking `SocketService`
authorpaulfantom <paulfantom@gmail.com>
Tue, 19 Jul 2016 00:40:21 +0000 (02:40 +0200)
committerpaulfantom <paulfantom@gmail.com>
Tue, 19 Jul 2016 00:40:21 +0000 (02:40 +0200)
python.d/python_modules/base.py
python.d/redis.chart.py
python.d/squid.chart.py

index 0bf1087f47dbe03a25e89142ea1b35255f479538..7582fae84555e19fc2edb5a9ef1f2500b25fe472 100644 (file)
@@ -572,9 +572,9 @@ class SocketService(SimpleService):
                 break
             if len(ready_to_read) > 0:
                 buf = self._sock.recv(4096)
-                if len(buf) == 0 or buf is None:
+                print(buf)
+                if len(buf) == 0 or buf is None:  # handle server disconnect
                     break
-
                 data += buf.decode()
                 if self._check_raw_data(data):
                     break
index c5f6db8b084510439814fb93ec4d803dc44285bb..4c2c1697268fbb2b738b65f5c46c4ad5ffbb28ef 100644 (file)
@@ -135,6 +135,6 @@ class Service(SocketService):
 
         for name in data:
             if name.startswith('db'):
-                self.definitions['keys']['lines'].append([name.decode(), None, 'absolute'])
+                self.definitions['keys']['lines'].append([name, None, 'absolute'])
 
         return True
index 77b126c1cf8482b37bc332306e5314e21cb660ae..48e1a0824e934079e8223688921de2d5fd039633 100644 (file)
@@ -88,30 +88,10 @@ class Service(SocketService):
         else:
             self._keep_alive = False
 
-        # if "client" in data and "server.all" in data:
-        #     return True
-        # else:
-        #     return False
-        if data[-7:] == "\r\n0\r\n\r\n":
+        if data[-7:] == "\r\n0\r\n\r\n" and "Transfer-Encoding: chunked" in data[:1024]:  # HTTP/1.1 response
             return True
         else:
             return False
-    #     # TODO write some parser of "Transfer-Encoding: chunked"
-    #     if "Transfer-Encoding: chunked" in data[:1024]:
-    #         data = data[self.__last:]
-    #
-    #
-    #     print(data)
-    #     import time
-    #     time.sleep(10)
-    #     return False
-    #     supposed = 0
-    #     if length >= supposed:
-    #         return True
-    #     else:
-    #         return False
-    #
-    #     return False
 
     def check(self):
         """
@@ -123,8 +103,8 @@ class Service(SocketService):
         req = self.request.decode()
         if not req.startswith("GET"):
             req = "GET " + req
-        if not req.endswith(" HTTP/1.1\r\n\r\n"):
-            req += " HTTP/1.1\r\n\r\n"
+        if not req.endswith(" HTTP/1.0\r\n\r\n"):
+            req += " HTTP/1.0\r\n\r\n"
         self.request = req.encode()
         if self._get_data() is not None:
             return True