def setup_timeout(self, ID=0): Time = time.time() Times = struct.pack('d', Time) if ID == 0: ID = random.getrandbits(32) # ID size in bits ping.data_ping(self.socket, self.server[1], ID, Times) msg = ping.read_ping(self.socket, self.timeout()) if not msg: raise Exception( 'PingServer::setup_timeout: no valid response from ' + self.server[0]) addr, rID, data = msg['address'], msg['ID'], msg['payload'] log.debug("Addr=%s rID=%d Data=%d bytes" % (addr[0], rID, len(data))) if len(data) == 0: raise Exception('PingServer::setup_timeout: null response from ' + self.server[0]) if rID != ID: raise Exception( 'PingServer::setup_timeout: invalid response id from ' + self.server[0]) if data != Times: raise Exception( 'PingServer::setup_timeout: invalid response data from ' + self.server[0]) if addr[0] != self.server[1]: raise Exception( 'PingServer::setup_timeout: invalid response server from ' + self.server[0]) delay = time.time() - Time log.notice('echo delay: %.02fms' % (1000 * delay))
def process_block(self, addr, ID, data): if ID == 0: raise Exception('server responded with ID 0 packet') while len(self.queued_events[ID]): handler, event, args = self.queued_events[ID].popleft() if event.is_set(): continue if handler == self.write_block_timeout: if self.debug: log.trace('%s (block %d) updated' % (self.server[0], ID)) data = args[1] elif handler == self.read_block_timeout: if self.debug: log.trace('%s (block %d) read' % (self.server[0], ID)) callback, cb_args = args[1], args[2] if len(data) > 0: callback(ID, data, *cb_args) else: callback(ID, self.null_block(), *cb_args) elif handler == self.delete_block_timeout: if self.debug: log.trace('%s (block %d) deleted' % (self.server[0], ID)) data = '' event.set() if len(data) == 0: self.blocks = self.blocks - 1 else: if len(self.listeners): self.process_listeners(addr, ID, data) #log.trace('%s: sending %d bytes from block %d'%(self.server[0],len(data),ID)) ping.data_ping(self.socket, addr, ID, data)
def setup_block(self, ID=0): if ID == 0: ID = random.getrandbits(32) # ID size in bits Fill = chr(random.getrandbits(8)) # repeated data Filler = self.block_size * Fill ping.data_ping(self.socket, self.server[1], ID, Filler) msg = ping.read_ping(self.socket, self.timeout()) if not msg: raise Exception( 'PingServer::setup_block: no valid response from ' + self.server[0]) addr, rID, data = msg['address'], msg['ID'], msg['payload'] log.debug("Addr=%s rID=%d Data=%d bytes" % (addr[0], rID, len(data))) if len(data) == 0: raise Exception('PingServer::setup_block: null response from ' + self.server[0]) if rID != ID: raise Exception( 'PingServer::setup_block: invalid response id from ' + self.server[0]) if data != len(data) * Fill: raise Exception( 'PingServer::setup_block: invalid response data from ' + self.server[0]) if addr[0] != self.server[1]: raise Exception( 'PingServer::setup_block: invalid response server from ' + self.server[0]) self.block_size = len(data) self.empty_block = self.null_block() log.notice('echo length: %d bytes' % self.block_size)
def process_block(self, addr, ID, data): if ID == 0: raise Exception("server responded with ID 0 packet") while len(self.queued_events[ID]): handler, event, args = self.queued_events[ID].popleft() if event.is_set(): continue if handler == self.write_block_timeout: if self.debug: log.trace("%s (block %d) updated" % (self.server[0], ID)) data = args[1] elif handler == self.read_block_timeout: if self.debug: log.trace("%s (block %d) read" % (self.server[0], ID)) callback, cb_args = args[1], args[2] if len(data) > 0: callback(ID, data, *cb_args) else: callback(ID, self.null_block(), *cb_args) elif handler == self.delete_block_timeout: if self.debug: log.trace("%s (block %d) deleted" % (self.server[0], ID)) data = "" event.set() if len(data) == 0: self.blocks = self.blocks - 1 else: if len(self.listeners): self.process_listeners(addr, ID, data) # log.trace('%s: sending %d bytes from block %d'%(self.server[0],len(data),ID)) ping.data_ping(self.socket, addr, ID, data)
def setup_timeout(self, ID=0): Time = time.time() Times = struct.pack('d',Time) if ID == 0: ID = random.getrandbits(32) # ID size in bits ping.data_ping(self.socket,self.server[1],ID,Times) msg = ping.read_ping(self.socket,self.timeout()) if not msg: raise Exception('PingServer::setup_timeout: no valid response from '+self.server[0]) addr,rID,data = msg['address'],msg['ID'],msg['payload'] log.debug("Addr=%s rID=%d Data=%d bytes"%(addr[0],rID,len(data))) if len(data) == 0: raise Exception('PingServer::setup_timeout: null response from '+self.server[0]) if rID != ID: raise Exception('PingServer::setup_timeout: invalid response id from '+self.server[0]) if data != Times: raise Exception('PingServer::setup_timeout: invalid response data from '+self.server[0]) if addr[0] != self.server[1]: raise Exception('PingServer::setup_timeout: invalid response server from '+self.server[0]) delay = time.time() - Time log.notice('echo delay: %.02fms'%(1000*delay))
def setup_block(self, ID = 0): if ID == 0: ID = random.getrandbits(32) # ID size in bits Fill = chr(random.getrandbits(8)) # repeated data Filler = self.block_size * Fill ping.data_ping(self.socket,self.server[1],ID,Filler) msg = ping.read_ping(self.socket,self.timeout()) if not msg: raise Exception('PingServer::setup_block: no valid response from '+self.server[0]) addr,rID,data = msg['address'],msg['ID'],msg['payload'] log.debug("Addr=%s rID=%d Data=%d bytes"%(addr[0],rID,len(data))) if len(data) == 0: raise Exception('PingServer::setup_block: null response from '+self.server[0]) if rID != ID: raise Exception('PingServer::setup_block: invalid response id from '+self.server[0]) if data != len(data)*Fill: raise Exception('PingServer::setup_block: invalid response data from '+self.server[0]) if addr[0] != self.server[1]: raise Exception('PingServer::setup_block: invalid response server from '+self.server[0]) self.block_size = len(data) self.empty_block = self.null_block() log.notice('echo length: %d bytes'%self.block_size)