Example #1
0
def broadcast(message, connection):
    for clients in list_of_clients:
        if clients != connection:
            try:
                clients.send(message.encode())
            except:
                clients.close()
                remove(clients)
Example #2
0
 def send(self, message):
     if type(message) is str:
         line = message
     else:
         notice('Out: %s' % message)
         line = encode(message)
     while True:
         try:
             self.socket.send(line)
             break
         except socket.timeout:
             pass
Example #3
0
    def _request(self, obj):
        if not self.is_connected():
            raise self.APIError('Not connected to BESS daemon')

        if self.debug:
            print >> sys.stderr, '\t---> %s' % repr(obj)

        try:
            q = message.encode(obj)
        except:
            print >> sys.stderr, 'Encoding error, object: %s' % repr(obj)
            raise

        self.s.sendall(struct.pack('<L', len(q)))
        self.s.sendall(q)

        total, = struct.unpack('<L', self.s.recv(4))
        buf = []
        received = 0
        while received < total:
            frag = self.s.recv(total - received)
            buf.append(frag)
            received += len(frag)

        try:
            obj = message.decode(''.join(buf))
        except:
            print >> sys.stderr, 'Decoding error, binary: %s' % obj.encode(
                'hex')
            raise

        if self.debug:
            print >> sys.stderr, '\t<--- %s' % repr(obj)

        if isinstance(obj, dict) and 'err' in obj:
            err = obj['err']
            errmsg = obj.get('errmsg', '(error message is not given)')
            details = obj.get('details', None)
            raise self.Error(err, errmsg, details)

        return obj
Example #4
0
    def _request(self, obj):
        if not self.is_connected():
            raise self.APIError('Not connected to BESS daemon')

        if self.debug:
            print >> sys.stderr, '\t---> %s' % repr(obj)

        try:
            q = message.encode(obj)
        except:
            print >> sys.stderr, 'Encoding error, object: %s' % repr(obj)
            raise

        self.s.sendall(struct.pack('<L', len(q)))
        self.s.sendall(q)

        total, = struct.unpack('<L', self.s.recv(4))
        buf = []
        received = 0
        while received < total:
            frag = self.s.recv(total - received)
            buf.append(frag)
            received += len(frag)

        try:
            obj = message.decode(''.join(buf))
        except:
            print >> sys.stderr, 'Decoding error, binary: %s' % obj.encode('hex')
            raise

        if self.debug:
            print >> sys.stderr, '\t<--- %s' % repr(obj)

        if isinstance(obj, dict) and 'err' in obj:
            err = obj['err']
            errmsg = obj.get('errmsg', '(error message is not given)')
            details = obj.get('details', None)
            raise self.Error(err, errmsg, details)

        return obj
Example #5
0
 def _clientSend(cls, handler, message):
     content = message.encode()
     log.msg("< %s\t%s" % (handler.getPeer(), message))
     if not content.endswith("\r\n"):
         content += "\r\n"
     handler.write(content)
Example #6
0
 def _clientSend(cls, handler, message):
     content = message.encode()
     log.msg("< %s\t%s" % (handler.getPeer(), message))
     if not content.endswith("\r\n"):
         content +=  "\r\n"
     handler.write(content)