def receiveFile(self, filename, fileId, token=""): """ Receive a file from the server @type filename : string / file descriptor / file object @param filename : File to receive from server @type fileId : any @param fileId : Identification of the file being received @type token : string @param token : Optional token for the file @return : S_OK/S_ERROR """ fileHelper = FileHelper() retVal = fileHelper.getDataSink(filename) if not retVal['OK']: return retVal dS = retVal['Value'] closeAfterUse = retVal['closeAfterUse'] try: retVal = self._sendTransferHeader("ToClient", (fileId, token)) if not retVal['OK']: return retVal transport = retVal['Value'] fileHelper.setTransport(transport) retVal = fileHelper.networkToDataSink(dS) if not retVal['OK']: return retVal retVal = transport.receiveData() self._disconnect() if closeAfterUse: dS.close() return retVal finally: self._disconnect()
def getDataFromService( self, srvMethod, params ): self.infoMsg( "Sending header request to %s" % self.getDestinationService(), str( params ) ) result = self._sendTransferHeader( srvMethod, params ) if not result[ 'OK' ]: self.errMsg( "Could not send header", result[ 'Message' ] ) return result self.infoMsg( "Starting to receive data from service" ) srvTransport = result[ 'Value' ] srvFileHelper = FileHelper( srvTransport ) srvFileHelper.setDirection( "receive" ) sIO = cStringIO.StringIO() result = srvFileHelper.networkToDataSink( sIO, self.__transferBytesLimit ) if not result[ 'OK' ]: self.errMsg( "Could receive data from server", result[ 'Message' ] ) srvTransport.close() sIO.close() return result dataReceived = sIO.getvalue() sIO.close() self.infoMsg( "Received %s bytes from service" % len( dataReceived ) ) retVal = srvTransport.receiveData() srvTransport.close() if not retVal[ 'OK' ]: return retVal return S_OK( { 'data' : dataReceived, 'srvResponse' : retVal } )
def getDataFromService(self, srvMethod, params): self.infoMsg("Sending header request to %s" % self.getDestinationService(), str(params)) result = self._sendTransferHeader(srvMethod, params) if not result["OK"]: self.errMsg("Could not send header", result["Message"]) return result self.infoMsg("Starting to receive data from service") _, srvTransport = result["Value"] srvFileHelper = FileHelper(srvTransport) srvFileHelper.setDirection("receive") sIO = BytesIO() result = srvFileHelper.networkToDataSink(sIO, self.__transferBytesLimit) if not result["OK"]: self.errMsg("Could not receive data from server", result["Message"]) srvTransport.close() sIO.close() return result dataReceived = sIO.getvalue() sIO.close() self.infoMsg("Received %s bytes from service" % len(dataReceived)) retVal = srvTransport.receiveData() srvTransport.close() if not retVal["OK"]: return retVal return S_OK({"data": dataReceived, "srvResponse": retVal})
def receiveFile( self, filename, fileId, token = "" ): """ Receive a file from the server @type filename : string / file descriptor / file object @param filename : File to receive from server @type fileId : any @param fileId : Identification of the file being received @type token : string @param token : Optional token for the file @return : S_OK/S_ERROR """ fileHelper = FileHelper() retVal = fileHelper.getDataSink( filename ) if not retVal[ 'OK' ]: return retVal dS = retVal[ 'Value' ] closeAfterUse = retVal[ 'closeAfterUse' ] retVal = self._sendTransferHeader( "ToClient", ( fileId, token ) ) if not retVal[ 'OK' ]: return retVal trid, transport = retVal[ 'Value' ] try: fileHelper.setTransport( transport ) retVal = fileHelper.networkToDataSink( dS ) if not retVal[ 'OK' ]: return retVal retVal = transport.receiveData() if closeAfterUse: dS.close() return retVal finally: self._disconnect( trid )
def receiveFile(self, filename, fileId, token=""): """ Receive a file from the server :type filename: string / file descriptor / file object :param filename: File to receive from server :type fileId: any :param fileId: Identification of the file being received :type token: string :param token: Optional token for the file :return: S_OK/S_ERROR """ fileHelper = FileHelper() if "NoCheckSum" in token: fileHelper.disableCheckSum() retVal = fileHelper.getDataSink(filename) if not retVal["OK"]: return retVal dS = retVal["Value"] closeAfterUse = retVal["closeAfterUse"] retVal = self._sendTransferHeader("ToClient", (fileId, token)) if not retVal["OK"]: return retVal trid, transport = retVal["Value"] try: fileHelper.setTransport(transport) retVal = fileHelper.networkToDataSink(dS) if not retVal["OK"]: return retVal retVal = transport.receiveData() if closeAfterUse: dS.close() return retVal finally: self._disconnect(trid)