def broadcast(message, connection): for clients in list_of_clients: if clients != connection: try: clients.send(message.encode()) except: clients.close() remove(clients)
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
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
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
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)