python/daemon.py
changeset 2 b3afb9f1e801
parent 0 6f7a81934006
equal deleted inserted replaced
1:30113bfbe723 2:b3afb9f1e801
    26 class Econn(Exception): pass
    26 class Econn(Exception): pass
    27 
    27 
    28 def encode_int(i):
    28 def encode_int(i):
    29     return chr((i/256)%256) + chr(i%256)
    29     return chr((i/256)%256) + chr(i%256)
    30 
    30 
    31 def encode_str(str):
    31 def encode_str(s):
    32     return encode_int(len(str)) + str
    32     s = str(s)
       
    33     return encode_int(len(s)) + s
    33 
    34 
    34 class Command:
    35 class Command:
    35     def __init__(self, name, args):
    36     def __init__(self, name, args):
    36         self.name = name
    37         self.name = name
    37         self.args = args
    38         self.args = args
    57     def read_response_noraise(self):
    58     def read_response_noraise(self):
    58         try:
    59         try:
    59             reply = self.socket.recv(3)
    60             reply = self.socket.recv(3)
    60             code = ord(reply[0])
    61             code = ord(reply[0])
    61             msglen = ord(reply[1])*256 + ord(reply[2])
    62             msglen = ord(reply[1])*256 + ord(reply[2])
    62             message = self.socket.recv(msglen)
    63             if msglen:
       
    64                 message = self.socket.recv(msglen)
       
    65             else:
       
    66                 message = ""
    63         except:
    67         except:
    64             return (econn, 'Server aborted the connection')
    68             return (econn, 'Server aborted the connection')
    65         return (code, message)
    69         return (code, message)
    66         
    70         
    67     def read_response(self):
    71     def read_response(self):