def open_listener(self): BaseDTNDevice.open_listener(self) self.monitor_listen = DTN._tcp_listen(self.my_ip, self.monitor_port) self.vclient_listen = DTN._udp_open(self.my_ip, self.vclient_port)
def handle_dtn_listen(self, s): logger.info('DTN connection request') conn_recv, remote = s.accept() data = conn_recv.recv(1024) sh = data.split()[0] tar = ' '.join(data.split()[1:]) logger.debug('SH: %s, Target: %s' % (sh, tar)) if self.dtn.has_key(sh): logger.debug(self.dtn[sh]) if self.dtn.has_key(sh) and self.dtn[sh] is not None: conn_recv.send(EXIST_ERR) logger.debug('DTN connection already exists between these two Site Managers') return False # Generate a random port for listening random_n = 1 listener = None while True: try: listener = DTN._tcp_listen(self.my_ip, self.dtn_port+random_n) except: random_n += 1 continue break conn_recv.send('%s %d %s' % (self.sh, self.dtn_port+random_n, self.target)) data = conn_recv.recv(1024) if data == EXIST_ERR: logger.debug('DTN connection already exists between these two Site Managers') return False # wait for connection listener.settimeout(5) try: conn_send, remote = listener.accept() except socket.timeout: logger.debug('timeout') return False # remote[0] is IP # remote[1] is PORT #conn_send = DTN._tcp_connect(remote[0], port) if conn_send is not None: # send my SH info #conn_send.send('%s %s' % (self.sh, self.target)) #data = conn_send.recv(1024) #if data == EXIST_ERR: #logger.debug('DTN connection already exists between these two Site Managers') #return #else: #logger.debug('Good') # Ready dtn_conn = DTNConnection(conn_send, conn_recv, self.sh, sh, tar, self) self.dtn[sh] = dtn_conn if not self.last_hash.has_key(sh): self.last_hash[sh] = '' #if sh == SERVER_SH_INFO: #self.server_connected = True logger.info('New DTN connection established') dtn_conn.start() return True return False
def open_listener(self): """ Open Listeners @rewrite if implementing subclass """ self.dtn_listen = DTN._tcp_listen(self.my_ip, self.dtn_port) self.bcast_listen = DTN._broadcast_listen(self.bcast_port)
def open_listener(self): BaseDTNDevice.open_listener(self) self.monitor_listen = DTN._tcp_listen(self.my_ip, self.monitor_port) self.vclient_listen = DTN._udp_open(self.my_ip, self.vclient_port)
def handle_dtn_listen(self, s): logger.info('DTN connection request') conn_recv, remote = s.accept() data = conn_recv.recv(1024) sh = data.split()[0] tar = ' '.join(data.split()[1:]) logger.debug('SH: %s, Target: %s' % (sh, tar)) if self.dtn.has_key(sh): logger.debug(self.dtn[sh]) if self.dtn.has_key(sh) and self.dtn[sh] is not None: conn_recv.send(EXIST_ERR) logger.debug( 'DTN connection already exists between these two Site Managers' ) return False # Generate a random port for listening random_n = 1 listener = None while True: try: listener = DTN._tcp_listen(self.my_ip, self.dtn_port + random_n) except: random_n += 1 continue break conn_recv.send('%s %d %s' % (self.sh, self.dtn_port + random_n, self.target)) data = conn_recv.recv(1024) if data == EXIST_ERR: logger.debug( 'DTN connection already exists between these two Site Managers' ) return False # wait for connection listener.settimeout(5) try: conn_send, remote = listener.accept() except socket.timeout: logger.debug('timeout') return False # remote[0] is IP # remote[1] is PORT #conn_send = DTN._tcp_connect(remote[0], port) if conn_send is not None: # send my SH info #conn_send.send('%s %s' % (self.sh, self.target)) #data = conn_send.recv(1024) #if data == EXIST_ERR: #logger.debug('DTN connection already exists between these two Site Managers') #return #else: #logger.debug('Good') # Ready dtn_conn = DTNConnection(conn_send, conn_recv, self.sh, sh, tar, self) self.dtn[sh] = dtn_conn if not self.last_hash.has_key(sh): self.last_hash[sh] = '' #if sh == SERVER_SH_INFO: #self.server_connected = True logger.info('New DTN connection established') dtn_conn.start() return True return False
def open_listener(self): """ Open Listeners @rewrite if implementing subclass """ self.dtn_listen = DTN._tcp_listen(self.my_ip, self.dtn_port) self.bcast_listen = DTN._broadcast_listen(self.bcast_port)