def onTCPConnect( connector ) : obj.op = None if connector.getError() != 0 : onError() return obj.rpcConn = RPCConnection( connector.getSock(), reactor ) obj.rpcConn.setCloseCallback( onError ) obj.op = _doRPCCall( obj.rpcConn, 'Accept', [connectionId], onRouterAccept )
def onTCPConnect( connector ) : self.connectOp = None if connector.getError() != 0 : self.state = self.CLOSED connectCallback( False ) return self.rpcConn = RPCConnection( connector.getSock(), self.reactor ) self.rpcConn.setCloseCallback( self._onClose ) self.state = self.CONNECTED connectCallback( True )
def __init__( self, sock, reactor, routerState ) : self.rpcConn = RPCConnection( sock, reactor ) self.reactor = reactor self.routerState = routerState self.rpcConn.setCloseCallback( self.close ) self.rpcConn.setRequestCallback( self._onRequest ) self.requestTable = {} for msg in 'Ping Register Connect Accept'.split() : self.requestTable[msg] = getattr( self, '_do%s' % msg ) self.routerState.handlers[self] = 1 self.state = self.INITIAL self._lastActiveTime = time()
def _doOfferFiles(self, sock): self._setStatus('Sending request ...') self.state = self.OFFERINGFILES fileList = [] for row in range(self.ui.fileList.count()): item = self.ui.fileList.item(row) fileList.append(self.fileItems[item][0]) self.rpcConn = RPCConnection(sock, self.reactor) self.switchboard = RPCSwitchboard(self.rpcConn) self.fs = FlatFS(fileList) self.fileServer = FileServer(self.fs, self.switchboard) pending = {} for i, f in enumerate(fileList): pending[os.path.split(f)[1].lower()] = i def onClose(): if pending: self._setError('Disconnected.') else: self._setStatus('Completed.') def onTransferStatus(payload): if type(payload) is not ListType: return if len(payload) != 4: return for x in payload: if type(x) is not IntType: return if x < 0: return fileId, numFiles, transferred, fileSize = payload if numFiles != len(fileList): return if not (1 <= fileId <= numFiles): return if transferred > fileSize: return fname = os.path.split(fileList[fileId - 1])[1] lfname = fname.lower() pos = pending.get(lfname, None) if pos is None: return if transferred == fileSize: percent = 100 del pending[lfname] else: percent = transferred * 100 / fileSize self._setStatus('Sending file (%d/%d): %s (%d%%)' % (pos + 1, len(fileList), fname, percent)) self.switchboard.addOnewayAgent('TransferStatus', onTransferStatus) self.rpcConn.setCloseCallback(onClose)