fclient-commit Mailing List for fclient (Page 32)
Status: Pre-Alpha
Brought to you by:
jurner
You can subscribe to this list here.
2007 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(23) |
Nov
(54) |
Dec
|
---|---|---|---|---|---|---|---|---|---|---|---|---|
2008 |
Jan
(17) |
Feb
(209) |
Mar
(63) |
Apr
(31) |
May
(7) |
Jun
(39) |
Jul
(390) |
Aug
(122) |
Sep
(6) |
Oct
|
Nov
|
Dec
|
From: <ju...@us...> - 2008-02-08 13:45:38
|
Revision: 187 http://fclient.svn.sourceforge.net/fclient/?rev=187&view=rev Author: jurner Date: 2008-02-08 05:45:43 -0800 (Fri, 08 Feb 2008) Log Message: ----------- ups, shoudn't have gotten in here Removed Paths: ------------- trunk/sandbox/fcp/001.py Deleted: trunk/sandbox/fcp/001.py =================================================================== --- trunk/sandbox/fcp/001.py 2008-02-08 13:45:16 UTC (rev 186) +++ trunk/sandbox/fcp/001.py 2008-02-08 13:45:43 UTC (rev 187) @@ -1 +0,0 @@ - This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ju...@us...> - 2008-02-08 13:45:19
|
Revision: 186 http://fclient.svn.sourceforge.net/fclient/?rev=186&view=rev Author: jurner Date: 2008-02-08 05:45:16 -0800 (Fri, 08 Feb 2008) Log Message: ----------- ups, shoudn't have gotten in here Modified Paths: -------------- trunk/sandbox/fcp/001.py Modified: trunk/sandbox/fcp/001.py =================================================================== --- trunk/sandbox/fcp/001.py 2008-02-08 13:37:01 UTC (rev 185) +++ trunk/sandbox/fcp/001.py 2008-02-08 13:45:16 UTC (rev 186) @@ -1,107 +1 @@ -import random -import uuid -#********************************************************************************************* -# -#********************************************************************************************* -def validateFcpBool(value): - if value in ('true', 'false'): - return value - return None - -def validateFloat(value): - try: - return float(value) - except ValueError: - return None - -def validateInt(value): - try: - return int(value) - except ValueError: - return None - -def validateUuid(value): - result = uuid.UUID_EXACT_MATCH_PAT.match(value) - if result: - return result.group(0) - return None - -#********************************************************************************************* -# -#********************************************************************************************* -FcParamsSep = '\x01' - -FcParams = ( - ('FcSubType', validateInt), - ('FcInitTime', validateFloat), # can not take it from uuid cos requests may be resend multiple times - ('FcHandleCollisions', validateFcpBool), - ('FcCollisionHandled', validateFcpBool), - ('FcRequestIdentifier', validateUuid), - ('FcRandomBytes', validateInt), - ) - - -ISubType = 0 -IRequestIdentifier = 1 -IInitTime = 2 -IHandleCollisions = 3 -ICollisionHandled = 4 -IRandomBytes = 5 - -def paramsFromRequest(msg): - """ - - >>> params = [1, 123.456, 'false', 'false', uuid.uuid_time(), 123456789] - >>> identifier = FcParamsSep.join( [str(i) for i in params] ) - >>> result = paramsFromRequest({'Identifier': identifier}) - >>> result == params - True - - """ - identifier = msg.get('Identifier', None) - if identifier is None: - return None - - params = identifier.split(FcParamsSep) - if len(params) != len(FcParams): - return None - - for i, (paramName, paramValidator) in enumerate(FcParams): - result = paramValidator(params[i]) - if result is None: - return None - params[i] = result - - return params - -def identifierFromRequest(msg): - """ - - >>> msg = {'FcSubType':1, 'FcInitTime':1.234, 'FcHandleCollisions':'false', 'FcCollisionHandled':'flase', 'FcRequestIdentifier':uuid.uuid_time(), 'FcRandomBytes':1234567879} - >>> identifierFromRequest(msg) - - """ - - - params = [] - for paramName, paramValidator in FcParams: - params.append(msg[paramName]) - - params[-1] = random.getrandbits(32) # add some random bits to be able to - # handle IdentifierCollisions(FcRequestIdentifier - # remains the same, identifier kown to node changes) - - return FcParamsSep.join( [str(i) for i in params] ) - - -s = '1\x011.234\x01false\x01flase\x01{fc0125cc-c76f-11dc-9099-fce464f183f6}\x011234567879' -print len(s) -#********************************************************************************* -# -#********************************************************************************* -if __name__ == '__main__2': - import doctest - doctest.testmod() - - This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ju...@us...> - 2008-02-08 13:36:56
|
Revision: 185 http://fclient.svn.sourceforge.net/fclient/?rev=185&view=rev Author: jurner Date: 2008-02-08 05:37:01 -0800 (Fri, 08 Feb 2008) Log Message: ----------- fix Modified Paths: -------------- trunk/sandbox/fcp/test_fcp/test_fcp2_0_client.py Modified: trunk/sandbox/fcp/test_fcp/test_fcp2_0_client.py =================================================================== --- trunk/sandbox/fcp/test_fcp/test_fcp2_0_client.py 2008-02-08 13:35:24 UTC (rev 184) +++ trunk/sandbox/fcp/test_fcp/test_fcp2_0_client.py 2008-02-08 13:37:01 UTC (rev 185) @@ -161,6 +161,7 @@ if messageName is None: self.failIf(self.messages) else: + self.failUnless(self.messages) msg = self.messages.pop(0) self.assertEqual(msg.name, messageName) if param1 is not None: This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ju...@us...> - 2008-02-08 13:35:19
|
Revision: 184 http://fclient.svn.sourceforge.net/fclient/?rev=184&view=rev Author: jurner Date: 2008-02-08 05:35:24 -0800 (Fri, 08 Feb 2008) Log Message: ----------- fix Modified Paths: -------------- trunk/sandbox/fcp/fcp2_0_params.py Modified: trunk/sandbox/fcp/fcp2_0_params.py =================================================================== --- trunk/sandbox/fcp/fcp2_0_params.py 2008-02-08 13:35:03 UTC (rev 183) +++ trunk/sandbox/fcp/fcp2_0_params.py 2008-02-08 13:35:24 UTC (rev 184) @@ -67,7 +67,7 @@ ('FcPersistentUserData', validateString), ) -ISubType = 0 +IRequestType = 0 IInitTime = 1 IFilenameCollision = 2 IPersistentUserData = 3 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ju...@us...> - 2008-02-08 13:35:05
|
Revision: 183 http://fclient.svn.sourceforge.net/fclient/?rev=183&view=rev Author: jurner Date: 2008-02-08 05:35:03 -0800 (Fri, 08 Feb 2008) Log Message: ----------- docs Modified Paths: -------------- trunk/sandbox/fcp/fcp2_0_consts.py Modified: trunk/sandbox/fcp/fcp2_0_consts.py =================================================================== --- trunk/sandbox/fcp/fcp2_0_consts.py 2008-02-08 13:34:41 UTC (rev 182) +++ trunk/sandbox/fcp/fcp2_0_consts.py 2008-02-08 13:35:03 UTC (rev 183) @@ -294,7 +294,7 @@ class RequestStatus: """Request status flags @cvar Null: no status - @cvar Pending: the request is not started yet + @cvar Pending: the request was fed to the client (not set for restored requests) @cvar Compressing: the request is about to be compressed @cvar Compressed: compressing is completed @cvar Success: the request has completed successfuly This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ju...@us...> - 2008-02-08 13:34:36
|
Revision: 182 http://fclient.svn.sourceforge.net/fclient/?rev=182&view=rev Author: jurner Date: 2008-02-08 05:34:41 -0800 (Fri, 08 Feb 2008) Log Message: ----------- now all requests are registered via registerReques() Modified Paths: -------------- trunk/sandbox/fcp/fcp2_0_client.py Modified: trunk/sandbox/fcp/fcp2_0_client.py =================================================================== --- trunk/sandbox/fcp/fcp2_0_client.py 2008-02-08 09:13:54 UTC (rev 181) +++ trunk/sandbox/fcp/fcp2_0_client.py 2008-02-08 13:34:41 UTC (rev 182) @@ -10,22 +10,23 @@ should ever do so. Global is evil. -Sample code, request data of a freenet key:: - +Sample code. Connect to the freenet node:: client = FcpClient() nodeHello = client.connect() if nodeHello is None: pass # something went wrong ..could not connect to the freenet node else: - # request data associated to a freenet key - myRequestIdentifier = client.getData('CHK@ABCDE.......') - myRequest = c.getRequest(myIdentifier) - c.run() - print myRequest.data + pass + # everything went well ..we are connected now -Usually you would connect handlers to client events to do processing or handle errors:: +Request data associated to a freenet key:: + myRequestIdentifier = client.getData('CHK@ABCDE.......') + myRequest = c.getRequest(myIdentifier) + client.run() + print myRequest.data +Usually you would connect handlers to client events to do processing or handle errors:: def handleSuccess(event, request): print 'Here is the data:', request.data @@ -40,7 +41,6 @@ Instead of calling run() you may run the client step by step:: - client.getData('CHK@ABCDE.......') for i in xrange(50): client.next() @@ -132,6 +132,7 @@ #------------------------------------------------------------------------------------------------------------------------------------------------ import atexit +import copy import cPickle import logging import os @@ -284,54 +285,6 @@ ## private methods ## ############################################################### - def _addFcParamsToRequest(self, - msg, - userData, - msgType, - initTime, - persistentUserData, - filenameCollision, - ): - - # add additional params to msg - msg.params.update({ - - # persistent params that will go into identifier - 'FcRequestType': msgType, # identifies sub message types - 'FcInitTime': initTime, # when was the request started? - 'FcFilenameCollision': filenameCollision, # handle fielanem collisions? - 'FcPersistentUserData': persistentUserData, # any user defined persistent data - - # non persistent params - 'FcRequestStatus': consts.RequestStatus.Null, - 'FcErrorMessage': None, # error message in case an error occured - 'FcUserData': userData, # any user defined runtime data here - - # params for SSKKeypair - 'FcInsertUri': None, - 'FcRequestUri': None, - - # params from DataFound - 'FcMetadataContentType': '', # contecnt type - 'FcDataLength': '', # content size - - # params from PersistentRequestModified - 'FcModified': {}, - - # params for DDA test - 'FcTestDDA': {}, - - # params for SimpleProgress - 'FcProgressTotal': '0', - 'FcProgressRequired': '0', - 'FcProgressFailed': '0', - 'FcProgressFatalyFailed': '0', - 'FcProgressSucceeeded': '0', - - }) - return msg - - def _finalizeRequest(self, msg, request, event): """Finalzes a request @param msg: message that is the reason for finalizing @@ -362,71 +315,92 @@ def _registerRequest(self, msg, - userData, - msgType, - initTime, - persistentUserData, + requestType, + userData=None, + identifier=None, + initTime=None, + persistentUserData='', filenameCollision=consts.FilenameCollision.HandleNever, ): """Registers a request @param msg: message to register - @param userData: any user defined data - @param msgType: one of the message sub type consts - @param initTime: (python time) - @param persistentUserData: (str) user defined persistent data - @param filenameCollision: (bool) - - @return: (str) uuid + @param requestType: (L{consts.RequestType}) type of request to register + @param filenameCollision: (L{consts.FilenameCollision}) how to handle filename collisions. + Default is L{consts.FilenameCollision.HandleNever} + @param identifier: (str) identifier of the request or None to create a new one + @param initTime: (int) init time of the request or None to set it to now + @param persistentUserData: (str) anyuser defined persistent data + @param userData: (any) any user defined non persistent data + + @return: (str) identifer of therequest @note: the identifier returned is unique to the client but may not be unique to the node """ - identifier = self.FcParams.newUuid(uuids=self._requests) + identifier = self.FcParams.newUuid(uuids=self._requests) if identifier is None else identifier - # add additional params to msg - msg = self._addFcParamsToRequest( - msg, - userData, - msgType, - initTime, - persistentUserData, - filenameCollision, - ) + if requestType & (consts.RequestType.MaskGet | consts.RequestType.MaskPut): + + msg.params.update({ - msg['ClientToken'] = self.FcParams.messageToParams(msg) + # persistent params that will go into identifier + 'FcRequestType': requestType, # identifies sub message types + 'FcInitTime': time.time() if initTime is None else initTime, # when was the request started? + 'FcFilenameCollision': filenameCollision, # handle fielanem collisions? + 'FcPersistentUserData': persistentUserData, # any user defined persistent data + + # non persistent params + 'FcRequestStatus': consts.RequestStatus.Pending, + 'FcErrorMessage': None, # error message in case an error occured + 'FcUserData': userData, # any user defined runtime data here + + # params for SSKKeypair + 'FcInsertUri': None, + 'FcRequestUri': None, + + # params from DataFound + 'FcMetadataContentType': '', # contecnt type + 'FcDataLength': '', # content size + + # params from PersistentRequestModified + 'FcModified': {}, + + # params for DDA test + 'FcTestDDA': {}, + + # params for SimpleProgress + 'FcProgressTotal': '0', + 'FcProgressRequired': '0', + 'FcProgressFailed': '0', + 'FcProgressFatalyFailed': '0', + 'FcProgressSucceeeded': '0', + + }) + # equip msg with some persistent pparams + if msg.get('ClientToken', None) is None: + msg['ClientToken'] = self.FcParams.messageToParams(msg) + + elif requestType & consts.RequestType.MaskGenerateKeypair: + msg.params.update({ + 'FcRequestType': requestType, # identifies sub message types + 'FcRequestStatus': consts.RequestStatus.Pending, + 'FcInitTime': initTime, # when was the request started? + 'FcModified': {}, + + 'FcPrivateKey': None, + 'FcPublicKey': None, + }) + + else: + msg.params.update({ + 'FcRequestType': requestType, # identifies sub message types + 'FcRequestStatus': consts.RequestStatus.Pending, + 'FcInitTime': initTime, # when was the request started? + 'FcModified': {}, + }) + msg['FcRequestStatus'] |= consts.RequestStatus.Pending msg['Identifier'] = identifier self._requests[identifier] = msg - - - def _restorePersistentRequestFromNode(self, msg): - """Preps a message from node to be restored - @return: the restored message if everything went well, None otherwise - """ - fcParams = self.FcParams.paramsFromRequest(msg) - if fcParams is None: - return None - - # add additional params to msg - msg = self._addFcParamsToRequest( - msg, - None, # userData, - fcParams[self.FcParams.ISubType], - fcParams[self.FcParams.IInitTime], - fcParams[self.FcParams.IPersistentUserData], - fcParams[self.FcParams.IFilenameCollision], - ) - - #FIX: remove Started param from PersistentGet / Put - if msg.name == consts.Message.PersistentGet: - del msg.params['Started'] - #FIX: [0001965: Persistence vs PersistenceType] - if 'PersistenceType' in msg.params: - msg['Persistence'] = msg.params.pop('PersistenceType') - elif msg.name == consts.Message.PersistentPut: - del msg.params['Started'] - - return msg - ############################################################### ## ## connection related methods @@ -914,24 +888,36 @@ # unknown request... try to restore it if initialRequest is None: - restoredRequest = self._restorePersistentRequestFromNode(msg) - + fcParams = self.FcParams.paramsFromRequest(msg) + # not one of our requests... so cancel it - if restoredRequest is None or CancelPersistentRequests: + if fcParams is None or CancelPersistentRequests: self.sendMessage( consts.Message.RemovePersistentRequest, - Identifier=msg['Identifier'], + Identifier=requestIdentifier, Global=msg['Global'], ) return True - # determine initial message name - restoredRequest.name = consts.Message.ClientGet - - # restore request - self._requests[requestIdentifier] = restoredRequest - #restoredRequest['FcRequestStatus'] |= consts.RequestStatus.Null - self.events.RequestRestored(restoredRequest) + initialRequest = copy.deepcopy(msg) + self._registerRequest( + initialRequest, + fcParams[self.FcParams.IRequestType], + identifier=requestIdentifier, + initTime=fcParams[self.FcParams.IInitTime], + userData=None, + persistentUserData=fcParams[self.FcParams.IPersistentUserData], + filenameCollision=fcParams[self.FcParams.IFilenameCollision], + ) + + initialRequest.name = consts.Message.ClientGet + #FIX: remove Started param from PersistentGet / Put + del initialRequest.params['Started'] + #FIX: [0001965: Persistence vs PersistenceType] + if 'PersistenceType' in initialRequest.params: + initialRequest['Persistence'] = initialRequest.params.pop('PersistenceType') + initialRequest['FcRequestStatus'] = consts.RequestStatus.Null + self.events.RequestRestored(initialRequest) return True # known request ..we don't handle that @@ -996,29 +982,41 @@ # unknown request... try to restore it if initialRequest is None: - restoredRequest = self._restorePersistentRequestFromNode(msg) - + fcParams = self.FcParams.paramsFromRequest(msg) + # not one of our requests... so cancel it - if restoredRequest is None or CancelPersistentRequests: + if fcParams is None or CancelPersistentRequests: self.sendMessage( consts.Message.RemovePersistentRequest, - Identifier=msg['Identifier'], + Identifier=requestIdentifier, Global=msg['Global'], ) return True - # determine initial message name - if restoredRequest['FcRequestType'] == consts.RequestType.Put: - restoredRequest.name = consts.Message.ClientPut - elif restoredRequest['FcRequestType'] == consts.RequestType.PutDiskDir: - restoredRequest.name = consts.Message.ClientPutDiskDir - elif restoredRequest['FcRequestType'] == consts.RequestType.PutComplexDir: - restoredRequest.name = consts.Message.ClientPutComplexDir + initialRequest = copy.deepcopy(msg) + requestType = fcParams[self.FcParams.IRequestType] + self._registerRequest( + initialRequest, + requestType, + identifier=requestIdentifier, + initTime=fcParams[self.FcParams.IInitTime], + userData=None, + persistentUserData=fcParams[self.FcParams.IPersistentUserData], + filenameCollision=fcParams[self.FcParams.IFilenameCollision], + ) - # restore request - self._requests[requestIdentifier] = restoredRequest - #restoredRequest['FcRequestStatus'] = consts.RequestStatus.Null - self.events.RequestRestored(restoredRequest) + # determine initial message name + if requestType == consts.RequestType.Put: + initialRequest.name = consts.Message.ClientPut + elif requestType == consts.RequestType.PutDiskDir: + initialRequest.name = consts.Message.ClientPutDiskDir + elif requestType == consts.RequestType.PutComplexDir: + initialRequest.name = consts.Message.ClientPutComplexDir + + #FIX: remove Started param from PersistentGet / Put + del initialRequest.params['Started'] + initialRequest['FcRequestStatus'] = consts.RequestStatus.Null + self.events.RequestRestored(initialRequest) return True # known request ..we don't handle that @@ -1318,7 +1316,7 @@ ######################################################## def clientGet(self, uri, - messageSubType, + requestType, userData, persistentUserData, filenameCollision, @@ -1326,7 +1324,7 @@ ): """Requests a key from the node @param uri: (str) uri of the file to request (may contain prefixes like 'freenet:' or 'http://') - @param messageSubType: (L{consts.RequestType}) sub type of the message + @param requestType: (L{consts.RequestType}) sub type of the message @param userData: any non persistent data to associate to the request or None @param persistentUserData: any string to associate to the request as persistent data or None @param filenameCollision: what to do if the disk target alreaady exists. One of the FilenameCollision.* consts @@ -1345,11 +1343,10 @@ self._registerRequest( msg, - userData, - messageSubType, - time.time(), - persistentUserData, + requestType, filenameCollision=filenameCollision, + persistentUserData=persistentUserData, + userData=userData, ) self.sendMessageEx(msg) return msg['Identifier'] @@ -1595,11 +1592,9 @@ self._registerRequest( msg, - userData, messageType, - time.time(), - persistentUserData, - #filenameCollision=filenameCollision, + persistentUserData=persistentUserData, + userData=userData, ) if upload.keyType in (consts.KeyType.SSK, consts.KeyType.USK): @@ -1612,7 +1607,7 @@ def clientPut(self, uri, - messageSubType, + requestType, userData, persistentUserData, data, @@ -1629,21 +1624,15 @@ self._registerRequest( msg, - userData, - messageSubType, - time.time(), - persistentUserData, - #filenameCollision=filenameCollision, + requestType, + persistentUserData=persistentUserData, + userData=userData, ) self.sendMessageEx(msg) return msg['Identifier'] - #TODO: method names - #CHK - - def chkPutData(self, data, @@ -1897,21 +1886,23 @@ or L{consts.Message.ClientPluginMessages}. All attempts to resend other requests will fail @note: the request passed is not removed in the call. Use L{removeRequest} if necessary """ - if requestMessage.name in consts.Message.ClientKeyRequestMessages: + requestType = requestMessage.get('FcRequestType', None) + if requestType is None: + raise ValueError('Can not resend request: %s' % requestMessage.name) + + if requestType & (consts.RequestType.MaskGet | consts.RequestType.MaskPut): self._registerRequest( requestMessage, - requestMessage['FcUserData'], - requestMessage['FcMessageSubType'], - time.time(), # TOSO: reset init time? - requestMessage['FcPersistentUserData'], - requestMessage['FcFilenameCollision'] & consts.FilenameCollision.MaskHandle, + requestType, + filenameCollision=requestMessage['FcFilenameCollision'] & consts.FilenameCollision.MaskHandle, + #initTime=time.time(), # TODO: reset init time or not? + persistentUserData=requestMessage['FcPersistentUserData'], + userData=requestMessage['FcUserData'], ) - elif requestMessage.name in consts.Message.ClientPluginMessages: - identifier = self.FcParam.newUuid(uuids=self._requests) - initialRequest['Identifier'] = identifier - self._requests[identifier] = initialRequest + elif requestType & (consts.RequestType.MaskGenerateKeypair | onsts.RequestType.MaskPlugin): + self._registerRequest(requestMessage, requestType) else: - raise ValueError('Can not resend request: %s' % requestMessage.name) + raise ValueError('Should not have ended here') self.sendMessageEx(msg) return requestMessage['Identifier'] @@ -2038,18 +2029,10 @@ """ identifier = self.FcParam.newUuid(uuids=self._requests) msg = self.Message( - consts.Message.GetPluginInfo, - - FcErrorMessage=None, - FcModified={}, - FcRequestType=consts.RequestType.PluginInfo, - FcRequestStatus=consts.RequestStatus.Pending, - - Identifier=identifier, PluginName=pluginName, Detailed=detailed, ) - self._requests[identifier] = msg + self._registerRequest(msg, consts.Message.GetPluginInfo) self.sendMessageEx(msg) return identifier @@ -2064,21 +2047,13 @@ identifier = self.FcParam.newUuid(uuids=self._requests) msg = self.Message( consts.Message.GetPluginInfo, - - FcErrorMessage=None, - FcModified={}, - FcRequestType=consts.RequestType.PluginMessage, - FcRequestStatus=consts.RequestStatus.Pending, - - Identifier=identifier, PluginName=pluginName, **params ) if data is not None: msg['DataLength'] = len(data) msg.data = data - - self._requests[identifier] = msg + self._registerRequest(msg, onsts.RequestType.PluginMessage) self.sendMessageEx(msg) return identifier @@ -2107,16 +2082,8 @@ requestType = consts.RequestType.GenerateSSKKeypair if keypairType == consts.KeyType.SSK else consts.RequestType.GenerateUSKKeypair identifier = self.FcParams.newUuid(uuids=self._requests) - msg = self.Message( - consts.Message.GenerateSSK, - FcModified={}, - FcPrivateKey= None, - FcPublicKey=None, - FcRequestStatus=consts.RequestStatus.Pending, - FcRequestType=requestType, - Identifier=identifier, - ) - self._requests[identifier] = msg + msg = self.Message(consts.Message.GenerateSSK) + self._registerRequest(msg, requestType) self.sendMessageEx(msg) return identifier @@ -2344,7 +2311,9 @@ def testGenerateKeypair(): def cb(event, msg): - print msg.pprint() + print '--------------------------------' + print '>>>>privateKey:', msg['FcPrivateKey'] + print '>>>>publicKey:', msg['FcPublicKey'] pass c.events.KeypairGenerated += cb This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ju...@us...> - 2008-02-08 09:13:49
|
Revision: 181 http://fclient.svn.sourceforge.net/fclient/?rev=181&view=rev Author: jurner Date: 2008-02-08 01:13:54 -0800 (Fri, 08 Feb 2008) Log Message: ----------- done Modified Paths: -------------- trunk/sandbox/fcp/fcp2_0_events.py Modified: trunk/sandbox/fcp/fcp2_0_events.py =================================================================== --- trunk/sandbox/fcp/fcp2_0_events.py 2008-02-08 09:13:40 UTC (rev 180) +++ trunk/sandbox/fcp/fcp2_0_events.py 2008-02-08 09:13:54 UTC (rev 181) @@ -50,6 +50,9 @@ class PeerNote(events.Event): """A peer note has arrived""" + class PeerNoteTypeUnknown(events.Event): + """The unknown note type""" + class PeerUnknown(events.Event): """Unknown peer""" @@ -65,7 +68,6 @@ class PluginMessageFailed(events.Event): """Sending of a plugin message failed""" - #TODO: not used currently class ProtocolError(events.Event): """A protocol error occured""" This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ju...@us...> - 2008-02-08 09:13:35
|
Revision: 180 http://fclient.svn.sourceforge.net/fclient/?rev=180&view=rev Author: jurner Date: 2008-02-08 01:13:40 -0800 (Fri, 08 Feb 2008) Log Message: ----------- combed a bit over Peer related stuff ++ UnknownPeerNoteType is handled now Modified Paths: -------------- trunk/sandbox/fcp/fcp2_0_client.py Modified: trunk/sandbox/fcp/fcp2_0_client.py =================================================================== --- trunk/sandbox/fcp/fcp2_0_client.py 2008-02-08 09:11:42 UTC (rev 179) +++ trunk/sandbox/fcp/fcp2_0_client.py 2008-02-08 09:13:40 UTC (rev 180) @@ -660,9 +660,9 @@ if requestIdentifier is None: - #TODO: check how to handle this - raise consts.ProtocolError(msg) - + self.events.ProtocolError(msg) + return True + if initialRequest is None: return False @@ -1104,6 +1104,9 @@ self.events.PeerUnknown(msg) return True + elif msg.name == consts.Message.UnknownPeerNoteType: + self.events.PeerNoteTypeUnknown(msg) + return True #################################################### ## ## plugins @@ -1208,14 +1211,11 @@ # check if we have running requests. Assert False haveRunningRequests = False - #print 'run' for request in self._requests.values(): - #print 'is completed', request.params['FcRequestStatus'] & consts.RequestStatus.Completed if not request.params['FcRequestStatus'] & consts.RequestStatus.Completed: haveRunningRequests = True break - #print 'haveRunningRequest', haveRunningRequests if not haveRunningRequests: self._log.info(consts.LogMessages.AllRequestsCompleted) break @@ -1939,9 +1939,9 @@ ) - def listPeer(self, nodeIdentity): + def listPeer(self, identity): """Requests information about a peer node - @param nodeIdentity: identity of the peer to request information for + @param identity: identity of the peer to request information for """ self.sendMessage( consts.Message.ListPeer, @@ -1949,16 +1949,16 @@ ) - def listPeerNotes(self, nodeIdentity): + def listPeerNotes(self, identity): """Lists all text notes associated to a peer - @param nodeIdentity: peer as returned in a call to L{listPeer} + @param identity: peer as returned in a call to L{listPeer} @event: ListPeerNote(event, params) @event: EndListPeerNotes(event, params) @note: listPeerNotes() is only available for darknet nodes """ self.sendMessage( consts.Message.ListPeerNotes, - NodeIdentifier=nodeIdentity + NodeIdentifier=identity ) @@ -1978,16 +1978,18 @@ - def modifyPeer(self, nodeIdentifier, allowLocalAddresses=None, isDisabled=None, isListenOnly=None): + def modifyPeer(self, identitty, allowLocalAddresses=None, isDisabled=None, isListenOnly=None): """Modifies a peer node - @param nodeIdentifier: identitfier of the peer node to modify + @param identitty: identity of the peer node to modify @param allowLocalAddresses: if True, whatever is done @param isDisabled: if True, the peer is disabled @param isListenOnly: if True, the peer is set to listen only status + + @note: you can only modify darknet peers """ msg = Message( consts.Message.ModifyPeer, - NodeIdentifier=nodeidentifier, + NodeIdentifier=identity, ) if allowLocalAddresses is not None: msg['AllowLocalAddresses'] = allowLocalAddresses @@ -1998,27 +2000,29 @@ self.sendMessageEx(msg) - def modifyPeerNote(self, nodeIdentifier, note): + def modifyPeerNote(self, identity, note): """Modifies the note associated to a peer - @param nodeIdentifier: identitifier of the peer node to modify + @param identity: identity of the peer node to modify @param note: (str) new note to associate to the peer + + @note: you can only modify notes of darknet peers """ self.sendMessage( consts.Message.ModifyPeerNote, - NodeIdentifier=nodeIdentifier, + NodeIdentifier=identity, #NOTE: currently fcp supports only this one type PeerNoteType=consts.PeerNoteType.Private, NoteText=note ) - def removePeer(self, nodeIdentifier): + def removePeer(self, identity): """Removes a peer - @param nodeIdentifier: identitfier of the peer node to remove + @param identity: identity of the peer node to remove """ self.sendMessage( consts.Message.RemovePeer, - NodeIdentifier=nodeidentifier, + NodeIdentifier=identity, ) ########################################################## @@ -2356,8 +2360,16 @@ def testListPeers(): + + def peerCb(event, msg): + c.listPeerNotes(msg['identity']) + + c.events.Peer += peerCb c.listPeers() - for i in xrange(10): + + + + for i in xrange(50): c.next() This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ju...@us...> - 2008-02-08 09:11:37
|
Revision: 179 http://fclient.svn.sourceforge.net/fclient/?rev=179&view=rev Author: jurner Date: 2008-02-08 01:11:42 -0800 (Fri, 08 Feb 2008) Log Message: ----------- added a note Modified Paths: -------------- trunk/sandbox/fcp/fcp_lib/events.py Modified: trunk/sandbox/fcp/fcp_lib/events.py =================================================================== --- trunk/sandbox/fcp/fcp_lib/events.py 2008-02-08 08:39:39 UTC (rev 178) +++ trunk/sandbox/fcp/fcp_lib/events.py 2008-02-08 09:11:42 UTC (rev 179) @@ -104,7 +104,11 @@ self.observers = [] def __call__(self, *args, **kwargs): - """Dispatches the event and additional parameters to all observers registerd""" + """Dispatches the event and additional parameters to all observers registerd + + @note: all listeners will be called with the event a first parameter, followed + by optional args and kwargs + """ for o in self.observers: o(self, *args, **kwargs) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ju...@us...> - 2008-02-08 08:39:34
|
Revision: 178 http://fclient.svn.sourceforge.net/fclient/?rev=178&view=rev Author: jurner Date: 2008-02-08 00:39:39 -0800 (Fri, 08 Feb 2008) Log Message: ----------- add a test all script Added Paths: ----------- trunk/sandbox/fcp/test_fcp/test_all.py Added: trunk/sandbox/fcp/test_fcp/test_all.py =================================================================== --- trunk/sandbox/fcp/test_fcp/test_all.py (rev 0) +++ trunk/sandbox/fcp/test_fcp/test_all.py 2008-02-08 08:39:39 UTC (rev 178) @@ -0,0 +1,27 @@ +"""Runs all unittests in the current folder""" + +import os, sys +import unittest +#************************************************************************************************* +# +#************************************************************************************************* +if __name__ == '__main__': + Dir, SelfName= os.path.split(os.path.abspath(__file__)) + sys.path.insert(0, Dir) + + for file in os.walk(Dir).next()[2]: + filename, ext = os.path.splitext(file) + if ext.lower() == '.py': + if filename.startswith('test_') and file != SelfName: + mod = __import__(filename) + suite = getattr(mod, 'suite') + unittest.TextTestRunner(verbosity=1).run(suite()) + + + + + + + + + This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ju...@us...> - 2008-02-08 08:39:15
|
Revision: 177 http://fclient.svn.sourceforge.net/fclient/?rev=177&view=rev Author: jurner Date: 2008-02-08 00:39:18 -0800 (Fri, 08 Feb 2008) Log Message: ----------- test where broken. Fixed Modified Paths: -------------- trunk/sandbox/fcp/test_fcp/test_fcp2_0_message.py Modified: trunk/sandbox/fcp/test_fcp/test_fcp2_0_message.py =================================================================== --- trunk/sandbox/fcp/test_fcp/test_fcp2_0_message.py 2008-02-08 08:38:57 UTC (rev 176) +++ trunk/sandbox/fcp/test_fcp/test_fcp2_0_message.py 2008-02-08 08:39:18 UTC (rev 177) @@ -15,6 +15,7 @@ from fcp2_0_client import FcpClient Message = FcpClient.Message +import fcp2_0_consts as consts sys.path.pop(0) del parentdir @@ -34,7 +35,7 @@ s.setResponse('NodeHello\nfoo=bar\nEndMessage\n') msg = Message.fromSocket(s) - self.failUnless(msg.name == Message.MessageNodeHello) + self.failUnless(msg.name == consts.Message.NodeHello) self.failUnless(len(msg.params) == 1) self.failUnless(msg.get('foo', None) == 'bar') @@ -46,7 +47,7 @@ s.setClosed(True) msg = Message.fromSocket(s) - self.failUnless(msg.name == Message.MessageClientSocketDied) + self.failUnless(msg.name == consts.Message.ClientSocketDied) self.failUnless(msg.get('Exception', None) == socket.error) @@ -58,7 +59,7 @@ s.setError(True) msg = Message.fromSocket(s) - self.failUnless(msg.name == Message.MessageClientSocketDied) + self.failUnless(msg.name == consts.Message.ClientSocketDied) self.failUnless(msg.get('Exception', None) == socket.error) @@ -67,7 +68,7 @@ s = DummySocket() msg = Message.fromSocket(s) - self.failUnless(msg.name == Message.MessageClientSocketTimeout) + self.failUnless(msg.name == consts.Message.ClientSocketTimeout) def testDataFromSocket(self): @@ -76,7 +77,7 @@ s.setResponse('AllData\nDataLength=8\nData\n\nABC\nDEF') msg = Message.fromSocket(s) - self.failUnless(msg.name == Message.MessageAllData) + self.failUnless(msg.name == consts.Message.AllData) self.failUnless(len(msg.params) == 1) self.failUnless(msg.get('DataLength', None) == '8') self.failUnless(msg.data == '\nABC\nDEF') @@ -86,7 +87,7 @@ """Sends a simple message""" s = DummySocket() msg = Message( - Message.MessageClientHello, + consts.Message.ClientHello, foo='bar' ) msg.send(s) @@ -97,50 +98,31 @@ """Sends a message containing a data member""" s = DummySocket('') msg = Message( - Message.MessageAllData, + consts.Message.AllData, DataLength='5', data='ABCDE' ) msg.send(s) self.failUnless(s.bytes == 'AllData\nDataLength=5\nData\nABCDE') - - # test error checking of data member - msg = Message( - Message.MessageAllData, - ##DataLength='1', # no data length specified - data='A' - ) - self.assertRaises(AssertionError, msg.send, s) - msg = Message( - Message.MessageAllData, - DataLength='1', - data='A' * 100 - ) - self.assertRaises(AssertionError, msg.send, s) - msg = Message( - Message.MessageAllData, - DataLength='100', - data='A' - ) - self.assertRaises(AssertionError, msg.send, s) - msg = Message( - Message.MessageAllData, - DataLength='X', - data='A' - ) - self.assertRaises(AssertionError, msg.send, s) - #********************************************************************************* # #********************************************************************************* def suite(): - return unittest.TestLoader().loadTestsFromTestCase(TestMessageObject) + tests = ( + TestMessageObject, + ) + suite = unittest.TestSuite() + for test in tests: + suite.addTest(unittest.makeSuite(test)) + return suite + + def test(): - unittest.main() + unittest.TextTestRunner(verbosity=1).run(suite()) if __name__ == '__main__': test() This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ju...@us...> - 2008-02-08 08:38:54
|
Revision: 176 http://fclient.svn.sourceforge.net/fclient/?rev=176&view=rev Author: jurner Date: 2008-02-08 00:38:57 -0800 (Fri, 08 Feb 2008) Log Message: ----------- test where broken. Fixed Modified Paths: -------------- trunk/sandbox/fcp/test_fcp/test_fcp2_0_config.py Modified: trunk/sandbox/fcp/test_fcp/test_fcp2_0_config.py =================================================================== --- trunk/sandbox/fcp/test_fcp/test_fcp2_0_config.py 2008-02-08 08:38:28 UTC (rev 175) +++ trunk/sandbox/fcp/test_fcp/test_fcp2_0_config.py 2008-02-08 08:38:57 UTC (rev 176) @@ -15,7 +15,9 @@ from fcp2_0_client import FcpClient Message = FcpClient.Message +import fcp2_0_types as types + sys.path.pop(0) del parentdir #<-- rel import hack @@ -32,8 +34,8 @@ # prep a dummy message and feed it to the config class Msg: params = { - 'current.console.allowedHosts': 'true', - 'default.console.allowedHosts': 'false', + 'current.console.enabled': 'true', + 'default.console.enabled': 'false', } cfg = FcpClient.Config(Msg) @@ -42,28 +44,39 @@ consoleItem = cfg.children.get('console', None) self.failIf(consoleItem is None) - allowedHosts = consoleItem.values.get('allowedHosts', None) - self.failIf(allowedHosts is None) + enabled = consoleItem.children.get('enabled', None) + self.failIf(enabled is None) - current = allowedHosts.get(cfg.ValueClassCurrent, None) - self.assertEqual(current, 'true') + current = enabled.values.get(cfg.ValueClassCurrent, None) + self.failIf(current is None) + value, valueType = current + self.assertEqual(value, 'true') + self.assertEqual(valueType, types.FcpTypeBool) - default = allowedHosts.get(cfg.ValueClassDefault, None) - self.assertEqual(default, 'false') - valueType = allowedHosts.get(cfg.ValueClassType, None) - self.assertEqual(valueType, cfg.Keys['console.allowedHosts']) - - + default = enabled.values.get(cfg.ValueClassDefault, None) + self.failIf(default is None) + value, valueType = default + self.assertEqual(value, 'false') + self.assertEqual(valueType, types.FcpTypeBool) + #********************************************************************************* # #********************************************************************************* def suite(): - return unittest.TestLoader().loadTestsFromTestCase(TestMessageObject) + tests = ( + TestConfigObject, + ) + suite = unittest.TestSuite() + for test in tests: + suite.addTest(unittest.makeSuite(test)) + return suite + + def test(): - unittest.main() + unittest.TextTestRunner(verbosity=1).run(suite()) if __name__ == '__main__': test() This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ju...@us...> - 2008-02-08 08:38:22
|
Revision: 175 http://fclient.svn.sourceforge.net/fclient/?rev=175&view=rev Author: jurner Date: 2008-02-08 00:38:28 -0800 (Fri, 08 Feb 2008) Log Message: ----------- adapt Modified Paths: -------------- trunk/sandbox/fcp/test_fcp/test_fcp2_0_client.py Modified: trunk/sandbox/fcp/test_fcp/test_fcp2_0_client.py =================================================================== --- trunk/sandbox/fcp/test_fcp/test_fcp2_0_client.py 2008-02-08 08:37:46 UTC (rev 174) +++ trunk/sandbox/fcp/test_fcp/test_fcp2_0_client.py 2008-02-08 08:38:28 UTC (rev 175) @@ -472,7 +472,7 @@ self.failUnless(self.fcpClient.getRequests() ) myRequest = self.fcpClient.getRequest(myIdentifier) self.assertEqual(myIdentifier, myRequest['Identifier']) - self.assertEqual(myRequest['FcStatus'], consts.RequestStatus.Pending) + self.assertEqual(myRequest['FcRequestStatus'], consts.RequestStatus.Pending) def testGetData_Success(self): @@ -490,13 +490,7 @@ Started='false', **myRequest.params ) - self.assertHasNextEvent( - self.fcpClient.events.RequestStarted, - consts.Message.ClientGet, - ('FcStatus', consts.RequestStatus.Pending | consts.RequestStatus.Started) - ) - self.assertHasNextEvent(None) - + # simulate a progress self.sendResponseMessage( 'SimpleProgress', @@ -539,22 +533,21 @@ self.assertHasNextEvent( self.fcpClient.events.RequestCompleted, consts.Message.ClientGet, - ('FcStatus', consts.RequestStatus.Pending | - consts.RequestStatus.Started | + ('FcRequestStatus', consts.RequestStatus.Pending | consts.RequestStatus.Success | consts.RequestStatus.RemovedFromQueue ), data=data ) self.failIf(myIdentifier in allRequests) - self.failUnless(myRequest['FcStatus'] & consts.RequestStatus.Completed) + self.failUnless(myRequest['FcRequestStatus'] & consts.RequestStatus.Completed) self.assertHasNextEvent(None) # cheat a bit to test peristence == Forever (client should not remove request) allRequests[myIdentifier] =myRequest myRequest['Persistence'] = consts.Persistence.Forever - myRequest['FcStatus'] &= ~(consts.RequestStatus.Success | + myRequest['FcRequestStatus'] &= ~(consts.RequestStatus.Success | consts.RequestStatus.Completed | consts.RequestStatus.RemovedFromQueue ) @@ -570,13 +563,12 @@ self.assertHasNextEvent( self.fcpClient.events.RequestCompleted, consts.Message.ClientGet, - ('FcStatus', consts.RequestStatus.Pending | - consts.RequestStatus.Started | + ('FcRequestStatus', consts.RequestStatus.Pending | consts.RequestStatus.Success), data=data ) self.failUnless(myIdentifier in allRequests) - self.failUnless(myRequest['FcStatus'] & consts.RequestStatus.Completed) + self.failUnless(myRequest['FcRequestStatus'] & consts.RequestStatus.Completed) self.assertHasNextEvent(None) @@ -595,13 +587,7 @@ Started='false', **myRequest.params ) - self.assertHasNextEvent( - self.fcpClient.events.RequestStarted, - consts.Message.ClientGet, - ('FcStatus', consts.RequestStatus.Pending | consts.RequestStatus.Started) - ) - self.assertHasNextEvent(None) - + # finalize request self.sendResponseMessage( 'GetFailed', @@ -615,13 +601,12 @@ self.assertHasNextEvent( self.fcpClient.events.RequestFailed, consts.Message.ClientGet, - ('FcStatus', consts.RequestStatus.Pending | - consts.RequestStatus.Started | + ('FcRequestStatus', consts.RequestStatus.Pending | consts.RequestStatus.Error | consts.RequestStatus.RemovedFromQueue ) ) - self.failUnless(myRequest['FcStatus'] & consts.RequestStatus.Completed) + self.failUnless(myRequest['FcRequestStatus'] & consts.RequestStatus.Completed) self.assertHasNextEvent(None) #return @@ -630,7 +615,7 @@ allRequests[myIdentifier] =myRequest myRequest['Persistence'] = consts.Persistence.Forever - myRequest['FcStatus'] &= ~(consts.RequestStatus.Error | + myRequest['FcRequestStatus'] &= ~(consts.RequestStatus.Error | consts.RequestStatus.Completed | consts.RequestStatus.RemovedFromQueue ) @@ -646,13 +631,12 @@ self.assertHasNextEvent( self.fcpClient.events.RequestFailed, consts.Message.ClientGet, - ('FcStatus', consts.RequestStatus.Pending | - consts.RequestStatus.Started | + ('FcRequestStatus', consts.RequestStatus.Pending | consts.RequestStatus.Error ), ) self.failUnless(myIdentifier in allRequests) - self.failUnless(myRequest['FcStatus'] & consts.RequestStatus.Completed) + self.failUnless(myRequest['FcRequestStatus'] & consts.RequestStatus.Completed) self.assertHasNextEvent(None) @@ -674,13 +658,7 @@ Started='false', **myRequest.params ) - self.assertHasNextEvent( - self.fcpClient.events.RequestStarted, - consts.Message.ClientGet, - ('FcStatus', consts.RequestStatus.Pending | consts.RequestStatus.Started) - ) - self.assertHasNextEvent(None) - + # finalize request data = 'foo' params = { @@ -696,14 +674,13 @@ self.assertHasNextEvent( self.fcpClient.events.RequestCompleted, consts.Message.ClientGet, - ('FcStatus', consts.RequestStatus.Pending | - consts.RequestStatus.Started | + ('FcRequestStatus', consts.RequestStatus.Pending | consts.RequestStatus.Success | consts.RequestStatus.RemovedFromQueue ) ) self.failIf(myIdentifier in allRequests) - self.failUnless(myRequest['FcStatus'] & consts.RequestStatus.Completed) + self.failUnless(myRequest['FcRequestStatus'] & consts.RequestStatus.Completed) self.assertHasNextEvent(None) @@ -725,13 +702,7 @@ Started='false', **myRequest.params ) - self.assertHasNextEvent( - self.fcpClient.events.RequestStarted, - consts.Message.ClientGet, - ('FcStatus', consts.RequestStatus.Pending | consts.RequestStatus.Started) - ) - self.assertHasNextEvent(None) - + # finalize request self.sendResponseMessage( 'GetFailed', @@ -743,14 +714,13 @@ self.assertHasNextEvent( self.fcpClient.events.RequestFailed, consts.Message.ClientGet, - ('FcStatus', consts.RequestStatus.Pending | - consts.RequestStatus.Started | + ('FcRequestStatus', consts.RequestStatus.Pending | consts.RequestStatus.Error | consts.RequestStatus.RemovedFromQueue ) ) self.failIf(myIdentifier in allRequests) - self.failUnless(myRequest['FcStatus'] & consts.RequestStatus.Completed) + self.failUnless(myRequest['FcRequestStatus'] & consts.RequestStatus.Completed) self.assertHasNextEvent(None) @@ -771,13 +741,7 @@ Started='false', **myRequest.params ) - self.assertHasNextEvent( - self.fcpClient.events.RequestStarted, - consts.Message.ClientGet, - ('FcStatus', consts.RequestStatus.Pending | consts.RequestStatus.Started) - ) - self.assertHasNextEvent(None) - + # finalize request data = 'foo' params = { @@ -793,14 +757,13 @@ self.assertHasNextEvent( self.fcpClient.events.RequestCompleted, consts.Message.ClientGet, - ('FcStatus', consts.RequestStatus.Pending | - consts.RequestStatus.Started | + ('FcRequestStatus', consts.RequestStatus.Pending | consts.RequestStatus.Success | consts.RequestStatus.RemovedFromQueue ) ) self.failIf(myIdentifier in allRequests) - self.failUnless(myRequest['FcStatus'] & consts.RequestStatus.Completed) + self.failUnless(myRequest['FcRequestStatus'] & consts.RequestStatus.Completed) self.assertHasNextEvent(None) @@ -822,13 +785,7 @@ Started='false', **myRequest.params ) - self.assertHasNextEvent( - self.fcpClient.events.RequestStarted, - consts.Message.ClientGet, - ('FcStatus', consts.RequestStatus.Pending | consts.RequestStatus.Started) - ) - self.assertHasNextEvent(None) - + # finalize request self.sendResponseMessage( 'GetFailed', @@ -840,19 +797,15 @@ self.assertHasNextEvent( self.fcpClient.events.RequestCompleted, consts.Message.ClientGet, - ('FcStatus', consts.RequestStatus.Pending | - consts.RequestStatus.Started | + ('FcRequestStatus', consts.RequestStatus.Pending | consts.RequestStatus.Success | consts.RequestStatus.RemovedFromQueue ) ) - self.failUnless(myRequest['FcStatus'] & consts.RequestStatus.Completed) + self.failUnless(myRequest['FcRequestStatus'] & consts.RequestStatus.Completed) self.assertHasNextEvent(None) - # cheat a bit to test persistence == Connection - myRequest['Persistence'] = consts.Persistence.Connection - myRequest['FcStatus'] = consts.RequestStatus.Started - + def testGetKeyInfo_Failure(self): @@ -869,13 +822,7 @@ Started='false', **myRequest.params ) - self.assertHasNextEvent( - self.fcpClient.events.RequestStarted, - consts.Message.ClientGet, - ('FcStatus', consts.RequestStatus.Pending | consts.RequestStatus.Started) - ) - self.assertHasNextEvent(None) - + # finalize request self.sendResponseMessage( 'GetFailed', @@ -887,13 +834,12 @@ self.assertHasNextEvent( self.fcpClient.events.RequestFailed, consts.Message.ClientGet, - ('FcStatus', consts.RequestStatus.Pending | - consts.RequestStatus.Started | + ('FcRequestStatus', consts.RequestStatus.Pending | consts.RequestStatus.Error | consts.RequestStatus.RemovedFromQueue ) ) - self.failUnless(myRequest['FcStatus'] & consts.RequestStatus.Completed) + self.failUnless(myRequest['FcRequestStatus'] & consts.RequestStatus.Completed) self.assertHasNextEvent(None) #*********************************************************************************** @@ -928,8 +874,7 @@ Started='false', **myRequest.params ) - self.assertHasNextEvent(self.fcpClient.events.RequestStarted ) - + # test modify persistent user data self.fcpClient.modifyRequest(myIdentifier, persistentUserData='bar', priorityClass=consts.Priority.High) msg = self.assertHasNextMessage(consts.Message.ModifyPersistentRequest) @@ -974,8 +919,7 @@ # status of our request should be set to removed emidiately, but it should # not be removed from the client - self.assertEqual(myRequest['FcStatus'], consts.RequestStatus.Pending | - consts.RequestStatus.Started | + self.assertEqual(myRequest['FcRequestStatus'], consts.RequestStatus.Pending | consts.RequestStatus.Removed ) self.failUnless(myIdentifier in self.fcpClient.getRequests()) @@ -990,8 +934,8 @@ ) # now the request should have been removed - self.failUnless(myRequest['FcStatus'] & consts.RequestStatus.RemovedFromQueue) - self.failUnless(myRequest['FcStatus'] & consts.RequestStatus.Completed) + self.failUnless(myRequest['FcRequestStatus'] & consts.RequestStatus.RemovedFromQueue) + self.failUnless(myRequest['FcRequestStatus'] & consts.RequestStatus.Completed) self.failIf(self.fcpClient.getRequests()) self.assertHasNextEvent(None) @@ -1064,7 +1008,7 @@ self.fcpClient.events.RequestRestored, consts.Message.ClientGet, ('Identifier', myIdentifier), - ('FcStatus', consts.RequestStatus.Started), # no RequestStatus.Pending flag should be set here + ('FcRequestStatus', consts.RequestStatus.Null), # no RequestStatus.Pending flag should be set here ) self.failUnless(myIdentifier in allRequests) @@ -1158,14 +1102,6 @@ **msg.params ) - # check if client send expected events - self.assertHasNextEvent( - self.fcpClient.events.RequestStarted, - consts.Message.ClientGet, - ('Identifier', myIdentifier) - ) - self.assertHasNextEvent(None) - requests = self.fcpClient.getRequests() self.assertEqual(len(requests), 1) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ju...@us...> - 2008-02-08 08:37:40
|
Revision: 174 http://fclient.svn.sourceforge.net/fclient/?rev=174&view=rev Author: jurner Date: 2008-02-08 00:37:46 -0800 (Fri, 08 Feb 2008) Log Message: ----------- removed ReequestStatus.Started Modified Paths: -------------- trunk/sandbox/fcp/fcp2_0_consts.py Modified: trunk/sandbox/fcp/fcp2_0_consts.py =================================================================== --- trunk/sandbox/fcp/fcp2_0_consts.py 2008-02-08 08:37:27 UTC (rev 173) +++ trunk/sandbox/fcp/fcp2_0_consts.py 2008-02-08 08:37:46 UTC (rev 174) @@ -295,7 +295,6 @@ """Request status flags @cvar Null: no status @cvar Pending: the request is not started yet - @cvar Started: the request has started @cvar Compressing: the request is about to be compressed @cvar Compressed: compressing is completed @cvar Success: the request has completed successfuly @@ -314,12 +313,11 @@ """ Null = 0x0 Pending = 0x1 - Started = 0x2 - Compressing = 0x4 - Compressed = 0x8 - Success = 0x10 - Error = 0x20 - Removed = 0x40 + Compressing = 0x2 + Compressed = 0x4 + Success = 0x8 + Error = 0x10 + Removed = 0x20 Completed =0x10000000 RemovedFromQueue = 0x2000000 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ju...@us...> - 2008-02-08 08:37:22
|
Revision: 173 http://fclient.svn.sourceforge.net/fclient/?rev=173&view=rev Author: jurner Date: 2008-02-08 00:37:27 -0800 (Fri, 08 Feb 2008) Log Message: ----------- removed Event.RequestStarted Modified Paths: -------------- trunk/sandbox/fcp/fcp2_0_events.py Modified: trunk/sandbox/fcp/fcp2_0_events.py =================================================================== --- trunk/sandbox/fcp/fcp2_0_events.py 2008-02-08 08:36:59 UTC (rev 172) +++ trunk/sandbox/fcp/fcp2_0_events.py 2008-02-08 08:37:27 UTC (rev 173) @@ -93,9 +93,6 @@ class RequestRestored(events.Event): """A request has been restored""" - class RequestStarted(events.Event): - """A request has been started""" - class USKUpdated(events.Event): """An update of an Usk has arrived""" This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ju...@us...> - 2008-02-08 08:36:54
|
Revision: 172 http://fclient.svn.sourceforge.net/fclient/?rev=172&view=rev Author: jurner Date: 2008-02-08 00:36:59 -0800 (Fri, 08 Feb 2008) Log Message: ----------- run() would hang when GetData[Persistence] is not connection. fixed removed RequestStatus.Started and event.RequestStarted. We can not know that Modified Paths: -------------- trunk/sandbox/fcp/fcp2_0_client.py Modified: trunk/sandbox/fcp/fcp2_0_client.py =================================================================== --- trunk/sandbox/fcp/fcp2_0_client.py 2008-02-07 23:49:44 UTC (rev 171) +++ trunk/sandbox/fcp/fcp2_0_client.py 2008-02-08 08:36:59 UTC (rev 172) @@ -62,7 +62,6 @@ """ - #Bug reports filed and open: #-------------------------------------------------------------------------------------------------------------------------------------------- # [0001931: Send EndListPersistentRequests following client connect] @@ -167,7 +166,6 @@ from fcp2_0_requests import Upload from fcp2_0_uri import Uri - logging.basicConfig(stream=sys.stdout, level=logging.DEBUG) #********************************************************************** # helpers @@ -874,8 +872,23 @@ initialRequest['FcDataLength'] = msg.get('DataLength', '') # except from GetData all requests are complete here. Next GetData will run through AllData... - if initialRequest['FcRequestType'] != consts.RequestType.GetData: - self._finalizeRequest(msg, initialRequest, self.events.RequestCompleted) + + # For GetData with persistence != connection the node sends no All Data message + # whatever that is good for ..fix this here to get all GetData request to complete on + # All Data, too. + # Note: All other requests are completed here. + if initialRequest['FcRequestType'] == consts.RequestType.GetData: + if initialRequest['Persistence'] != consts.Persistence.Connection: + self.sendMessage( + consts.Message.GetRequestStatus, + Identifier=initialRequest['Identifier'], + Global=False, + OnlyData=True + ) + else: + self._finalizeRequest(msg, initialRequest, self.events.RequestCompleted) + + return True @@ -917,22 +930,14 @@ # restore request self._requests[requestIdentifier] = restoredRequest - restoredRequest['FcRequestStatus'] |= consts.RequestStatus.Started + #restoredRequest['FcRequestStatus'] |= consts.RequestStatus.Null self.events.RequestRestored(restoredRequest) return True - # known request... filter out multiple PersistentGets - if not initialRequest['FcRequestStatus'] & consts.RequestStatus.Started: - initialRequest['FcRequestStatus'] |= consts.RequestStatus.Started - - #TODO: update initialRequest with params from PersistentGet? - - self.events.RequestStarted(initialRequest) - return True + # known request ..we don't handle that + return False - return True - elif msg.name == consts.Message.PersistentRequestModified: if initialRequest is None: return False @@ -1012,22 +1017,14 @@ # restore request self._requests[requestIdentifier] = restoredRequest - restoredRequest['FcRequestStatus'] = consts.RequestStatus.Started + #restoredRequest['FcRequestStatus'] = consts.RequestStatus.Null self.events.RequestRestored(restoredRequest) return True - # known request... filter out multiple PersistentGets - if not initialRequest['FcRequestStatus'] & consts.RequestStatus.Started: - initialRequest['FcRequestStatus'] |= consts.RequestStatus.Started - - #TODO: update initialRequest with params from PersistentPut? - - self.events.RequestStarted(initialRequest) - return True - - return True + # known request ..we don't handle that + return False + - elif msg.name == consts.Message.PutFailed: if initialRequest is None: return False @@ -1211,11 +1208,14 @@ # check if we have running requests. Assert False haveRunningRequests = False + #print 'run' for request in self._requests.values(): + #print 'is completed', request.params['FcRequestStatus'] & consts.RequestStatus.Completed if not request.params['FcRequestStatus'] & consts.RequestStatus.Completed: haveRunningRequests = True break + #print 'haveRunningRequest', haveRunningRequests if not haveRunningRequests: self._log.info(consts.LogMessages.AllRequestsCompleted) break @@ -2144,7 +2144,7 @@ identifier = c.getData( 'CHK@q4~2soHTd9SOINIoXmg~dn7LNUAOYzN1tHNHT3j4c9E,gcVRtoglEhgqN-DJolXPqJ4yX1f~1gBGh89HNWlFMWQ,AAIC--8/snow_002%20%2810%29.jpg', - #persistence=consts.Persistence.Forever, + persistence=consts.Persistence.Connection, #binaryBlob=True, ) @@ -2242,7 +2242,7 @@ def testUskPutData(): def cb(event, request): - insertURI = request['InsertURI'] + insertURI = request['FcPrivateKey'] identifier = c.uskPutData( 'foo', insertURI + 'foo/0/', This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ju...@us...> - 2008-02-07 23:49:39
|
Revision: 171 http://fclient.svn.sourceforge.net/fclient/?rev=171&view=rev Author: jurner Date: 2008-02-07 15:49:44 -0800 (Thu, 07 Feb 2008) Log Message: ----------- some fixes Modified Paths: -------------- trunk/sandbox/fcp/fcp2_0_requests.py Modified: trunk/sandbox/fcp/fcp2_0_requests.py =================================================================== --- trunk/sandbox/fcp/fcp2_0_requests.py 2008-02-07 23:49:12 UTC (rev 170) +++ trunk/sandbox/fcp/fcp2_0_requests.py 2008-02-07 23:49:44 UTC (rev 171) @@ -185,7 +185,7 @@ if params['FcItemType'] == self.ItemTypeData: msg.data = params['FcData'] - if self.keyType == consts.Keytype.CHK: + if self.keyType == consts.KeyType.CHK: msg['TargetFilename'] = targetFilename @@ -217,13 +217,12 @@ if not msg.data: msg.data = None - - + # determine Uri if self.keyType == consts.KeyType.CHK: msg['URI'] = consts.KeyType.CHK elif self.keyType == consts.KeyType.KSK: - msg['URI'] = consts.KeyType.KSK + '/' + targetFilename + msg['URI'] = consts.KeyType.KSK + targetFilename elif self.keyType == consts.KeyType.SSK: msg['URI'] = self.privateKey + targetFilename elif self.keyType == consts.KeyType.USK: This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ju...@us...> - 2008-02-07 23:49:08
|
Revision: 170 http://fclient.svn.sourceforge.net/fclient/?rev=170&view=rev Author: jurner Date: 2008-02-07 15:49:12 -0800 (Thu, 07 Feb 2008) Log Message: ----------- docs Modified Paths: -------------- trunk/sandbox/fcp/fcp2_0_params.py Modified: trunk/sandbox/fcp/fcp2_0_params.py =================================================================== --- trunk/sandbox/fcp/fcp2_0_params.py 2008-02-07 23:48:50 UTC (rev 169) +++ trunk/sandbox/fcp/fcp2_0_params.py 2008-02-07 23:49:12 UTC (rev 170) @@ -1,7 +1,8 @@ -"""Handling of additional message parameters""" +"""Handling of persistent request parameters""" import sys, os import base64 +import time #--> rel import hack class SysPathHack(object): @@ -131,7 +132,6 @@ return FcParamsSep.join(params) - def newUuid(uuids=None): """Creates a new unique identifier @param uuids: if desired any iterable containing uuids to enshure the identifier is unique in the iterable This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ju...@us...> - 2008-02-07 23:48:46
|
Revision: 169 http://fclient.svn.sourceforge.net/fclient/?rev=169&view=rev Author: jurner Date: 2008-02-07 15:48:50 -0800 (Thu, 07 Feb 2008) Log Message: ----------- docs Modified Paths: -------------- trunk/sandbox/fcp/fcp2_0_events.py Modified: trunk/sandbox/fcp/fcp2_0_events.py =================================================================== --- trunk/sandbox/fcp/fcp2_0_events.py 2008-02-07 23:48:25 UTC (rev 168) +++ trunk/sandbox/fcp/fcp2_0_events.py 2008-02-07 23:48:50 UTC (rev 169) @@ -9,8 +9,12 @@ # #******************************************************************************* class Events(events.Events): - """All events the client may trigger""" + """All events the client may trigger + @note: all events will be called with the event as first parameter, followed + by the request the event is related to as second. + """ + class ConfigData(events.Event): """Config data has arrived as requested or some value of the config has changed""" This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ju...@us...> - 2008-02-07 23:48:24
|
Revision: 168 http://fclient.svn.sourceforge.net/fclient/?rev=168&view=rev Author: jurner Date: 2008-02-07 15:48:25 -0800 (Thu, 07 Feb 2008) Log Message: ----------- some more consts Modified Paths: -------------- trunk/sandbox/fcp/fcp2_0_consts.py Modified: trunk/sandbox/fcp/fcp2_0_consts.py =================================================================== --- trunk/sandbox/fcp/fcp2_0_consts.py 2008-02-07 23:47:22 UTC (rev 167) +++ trunk/sandbox/fcp/fcp2_0_consts.py 2008-02-07 23:48:25 UTC (rev 168) @@ -341,6 +341,13 @@ PluginInfo = 0x2000000 PluginMessage = 0x4000000 + + SubscribeUSK = 0x10000000000 + + MaskGet = GetData | GetFile | GetKeyInfo + MaskGenerateKeypair = GenerateSSKKeypair | GenerateUSKKeypair + MaskPlugin = PluginInfo | PluginMessage + MaskPut = Put | PutDiskDir | PutComplexDir #TODO: no idea how fcp handles strings as in <Peer volatile.status=CONNECTED> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ju...@us...> - 2008-02-07 23:47:18
|
Revision: 167 http://fclient.svn.sourceforge.net/fclient/?rev=167&view=rev Author: jurner Date: 2008-02-07 15:47:22 -0800 (Thu, 07 Feb 2008) Log Message: ----------- renames Modified Paths: -------------- trunk/sandbox/fcp/fcp2_0_client.py Modified: trunk/sandbox/fcp/fcp2_0_client.py =================================================================== --- trunk/sandbox/fcp/fcp2_0_client.py 2008-02-06 14:57:28 UTC (rev 166) +++ trunk/sandbox/fcp/fcp2_0_client.py 2008-02-07 23:47:22 UTC (rev 167) @@ -3,9 +3,9 @@ Compatibility: >= Freenet 0.7 Build #1107 -@newfield event: event, events +@newfield event: Event, Events +@newfield requestparam: RequestParam, RequestParams - @note: The client implementation never uses or watches the global queue. No implementation should ever do so. Global is evil. @@ -294,8 +294,7 @@ persistentUserData, filenameCollision, ): - - + # add additional params to msg msg.params.update({ @@ -306,7 +305,7 @@ 'FcPersistentUserData': persistentUserData, # any user defined persistent data # non persistent params - 'FcStatus': consts.RequestStatus.Null, + 'FcRequestStatus': consts.RequestStatus.Null, 'FcErrorMessage': None, # error message in case an error occured 'FcUserData': userData, # any user defined runtime data here @@ -353,12 +352,12 @@ #NOTE: non Get / Put related requests do not have a Persistence param removeRequest = request.params.get('Persistence', consts.Persistence.Connection) == consts.Persistence.Connection if removeRequest: - request['FcStatus'] |= consts.RequestStatus.RemovedFromQueue + request['FcRequestStatus'] |= consts.RequestStatus.RemovedFromQueue if event is not None: event(request) - request['FcStatus'] |= consts.RequestStatus.Completed + request['FcRequestStatus'] |= consts.RequestStatus.Completed if removeRequest: del self._requests[request['Identifier']] @@ -371,8 +370,8 @@ persistentUserData, filenameCollision=consts.FilenameCollision.HandleNever, ): - """Registers a message - @param msg: message to register for track keeping + """Registers a request + @param msg: message to register @param userData: any user defined data @param msgType: one of the message sub type consts @param initTime: (python time) @@ -395,7 +394,7 @@ ) msg['ClientToken'] = self.FcParams.messageToParams(msg) - msg['FcStatus'] |= consts.RequestStatus.Pending + msg['FcRequestStatus'] |= consts.RequestStatus.Pending msg['Identifier'] = identifier self._requests[identifier] = msg @@ -720,25 +719,25 @@ elif code == consts.ProtocolError.NoSuchPlugin: if initialRequest.name == consts.Message.PluginInfo: initialRequest['FcErrorMessage'] = msg - initialRequest['FcStatus'] |= consts.RequestStatus.Error + initialRequest['FcRequestStatus'] |= consts.RequestStatus.Error self._finalizeRequest(msg, initialRequest, self.events.PluginInfoFailed) return True elif initialRequest.name == consts.Message.FCPPluginMessage: initialRequest['FcErrorMessage'] = msg - initialRequest['FcStatus'] |= consts.RequestStatus.Error + initialRequest['FcRequestStatus'] |= consts.RequestStatus.Error self._finalizeRequest(msg, initialRequest, self.events.PluginMessageFailed) return True elif code == consts.ProtocolError.AccessDenied: if initialRequest.name == consts.Message.PluginInfo: self.events.PluginInfoFailed(initialRequest) - initialRequest['FcStatus'] |= consts.RequestStatus.Completed + initialRequest['FcRequestStatus'] |= consts.RequestStatus.Completed del self._requests[requestIdentifier] return True # TODO: just a guess that FCPPluginMessage can trigger an AccessDenied error elif initialRequest.name == consts.Message.FCPPluginMessage: self.events.PluginMessageFailed(initialRequest) - initialRequest['FcStatus'] |= consts.RequestStatus.Completed + initialRequest['FcRequestStatus'] |= consts.RequestStatus.Completed del self._requests[requestIdentifier] return True @@ -747,7 +746,7 @@ # NOTE: Fcp already removed the request initialRequest['FcErrorMessage'] = msg - initialRequest['FcStatus'] = consts.RequestStatus.Error + initialRequest['FcRequestStatus'] = consts.RequestStatus.Error self._finalizeRequest(msg, initialRequest, self.events.RequestFailed) return True @@ -827,7 +826,7 @@ if testFailed: #TODO: check if errorMsg gives reasonable feedback - initialRequest['FcStatus'] = consts.RequestStatus.Error + initialRequest['FcRequestStatus'] = consts.RequestStatus.Error initialRequest['FcErrorMessage'] = initialRequest['FcTestDDA']['ErrorMsg'] self._finalizeRequest(msg, initialRequest, self.events.RequestFailed) return True @@ -861,7 +860,7 @@ if initialRequest is None: return False - initialRequest['FcStatus'] |= consts.RequestStatus.Success + initialRequest['FcRequestStatus'] |= consts.RequestStatus.Success initialRequest.data = msg.data self._finalizeRequest(msg, initialRequest, self.events.RequestCompleted) return True @@ -870,7 +869,7 @@ if initialRequest is None: return False - initialRequest['FcStatus'] |= consts.RequestStatus.Success + initialRequest['FcRequestStatus'] |= consts.RequestStatus.Success initialRequest['FcMetadataContentType'] = msg.get('Metadata.ContentType', '') initialRequest['FcDataLength'] = msg.get('DataLength', '') @@ -889,11 +888,11 @@ if code == consts.FetchError.TooBig and initialRequest['FcRequestType'] == consts.RequestType.GetKeyInfo: initialRequest['FcMetadataContentType'] = msg.get('ExpectedMetadata.ContentType', '') initialRequest['FcDataLength'] = msg.get('ExpectedDataLength', -1) - initialRequest['FcStatus'] |= consts.RequestStatus.Success + initialRequest['FcRequestStatus'] |= consts.RequestStatus.Success self._finalizeRequest(msg, initialRequest, self.events.RequestCompleted) else: initialRequest['FcErrorMessage'] = msg - initialRequest['FcStatus'] |= consts.RequestStatus.Error + initialRequest['FcRequestStatus'] |= consts.RequestStatus.Error self._finalizeRequest(msg, initialRequest, self.events.RequestFailed) return True @@ -918,13 +917,13 @@ # restore request self._requests[requestIdentifier] = restoredRequest - restoredRequest['FcStatus'] |= consts.RequestStatus.Started + restoredRequest['FcRequestStatus'] |= consts.RequestStatus.Started self.events.RequestRestored(restoredRequest) return True # known request... filter out multiple PersistentGets - if not initialRequest['FcStatus'] & consts.RequestStatus.Started: - initialRequest['FcStatus'] |= consts.RequestStatus.Started + if not initialRequest['FcRequestStatus'] & consts.RequestStatus.Started: + initialRequest['FcRequestStatus'] |= consts.RequestStatus.Started #TODO: update initialRequest with params from PersistentGet? @@ -969,7 +968,7 @@ if initialRequest is None: return False #TODO: notify user? - initialRequest['FcStatus'] |= consts.RequestStatus.Removed + initialRequest['FcRequestStatus'] |= consts.RequestStatus.Removed self._finalizeRequest(msg, initialRequest, None) return True @@ -1013,13 +1012,13 @@ # restore request self._requests[requestIdentifier] = restoredRequest - restoredRequest['FcStatus'] = consts.RequestStatus.Started + restoredRequest['FcRequestStatus'] = consts.RequestStatus.Started self.events.RequestRestored(restoredRequest) return True # known request... filter out multiple PersistentGets - if not initialRequest['FcStatus'] & consts.RequestStatus.Started: - initialRequest['FcStatus'] |= consts.RequestStatus.Started + if not initialRequest['FcRequestStatus'] & consts.RequestStatus.Started: + initialRequest['FcRequestStatus'] |= consts.RequestStatus.Started #TODO: update initialRequest with params from PersistentPut? @@ -1032,7 +1031,7 @@ elif msg.name == consts.Message.PutFailed: if initialRequest is None: return False - initialRequest['FcStatus'] |= consts.RequestStatus.Error + initialRequest['FcRequestStatus'] |= consts.RequestStatus.Error initialRequest['FcErrorMessage'] = msg self._finalizeRequest(msg, initialRequest, self.events.RequestFailed) return True @@ -1053,7 +1052,7 @@ # TODO: StartupTime and CompletionTime are passed, but # as long as no corrosponding params are passed in DataFound # we ignore them - initialRequest['FcStatus'] |= consts.RequestStatus.Success + initialRequest['FcRequestStatus'] |= consts.RequestStatus.Success initialRequest['URI'] = msg['URI'] self._finalizeRequest(msg, initialRequest, self.events.RequestCompleted) return True @@ -1068,14 +1067,14 @@ elif msg.name == consts.Message.FinishedCompression: if initialRequest is None: return False - initialRequest['FcStatus'] |= consts.RequestStatus.Compressed + initialRequest['FcRequestStatus'] |= consts.RequestStatus.Compressed self.events.RequestCompressionFinished(initialRequest) return True elif msg.name == consts.Message.StartedCompression: if initialRequest is None: return False - initialRequest['FcStatus'] |= consts.RequestStatus.Compressing + initialRequest['FcRequestStatus'] |= consts.RequestStatus.Compressing self.events.RequestCompressionStarted(initialRequest) return True @@ -1116,14 +1115,14 @@ elif msg.name == consts.Message.PluginInfo: if initialRequest is None: return False - initialRequest['FcStatus'] |= consts.RequestStatus.Success + initialRequest['FcRequestStatus'] |= consts.RequestStatus.Success self._finalizeRequest(msg, initialRequest, self.events.PluginInfo) return True elif msg.name == consts.Message.FCPPluginReply: if initialRequest is None: return False - initialRequest['FcStatus'] |= consts.RequestStatus.Success + initialRequest['FcRequestStatus'] |= consts.RequestStatus.Success self._finalizeRequest(msg, initialRequest, self.events.PluginMessage) return True @@ -1154,9 +1153,9 @@ insertURI = insertURI.replace(consts.KeyType.SSK, consts.KeyType.USK, 1) requestURI = requestURI.replace(consts.KeyType.SSK, consts.KeyType.USK, 1) - initialRequest['InsertURI'] = insertURI - initialRequest['RequestURI'] = requestURI - initialRequest['FcStatus'] |= consts.RequestStatus.Success + initialRequest['FcPrivateKey'] = insertURI + initialRequest['FcPublicKey'] = requestURI + initialRequest['FcRequestStatus'] |= consts.RequestStatus.Success self._finalizeRequest(msg, initialRequest, self.events.KeypairGenerated) return True @@ -1213,7 +1212,7 @@ # check if we have running requests. Assert False haveRunningRequests = False for request in self._requests.values(): - if not request.params['FcStatus'] & consts.RequestStatus.Completed: + if not request.params['FcRequestStatus'] & consts.RequestStatus.Completed: haveRunningRequests = True break @@ -1372,9 +1371,9 @@ userData=None, persistentUserData='', ): - """Requests a file from the node + """Requests datae from the node - @param uri: uri of the file to request (may contain prefixes like 'freenet:' or 'http://') + @param uri: uri of the data to request (may contain prefixes like 'freenet:' or 'http://') @param allowedMimeTypes: (str) list of allowed mime types @param binaryBlob: (bool) if True, the file is retrieved as binary blob file @@ -1389,12 +1388,14 @@ @return: (str) request identifier - @event: RequestCompleted(event, message) triggered when the request is complete - @event: RequestFailed(event, message) triggered when the request failes - @event: RequestStarted(event, message) triggered when as the request is started - @event: RequestModified(event, message) trigggered if the request identifier changes + @event: L{Events.RequestCompleted} triggered as soon as the request is complete + @event: L{Events.RequestFailed} triggered if the request failes + @event: L{Events.RequestStarted} triggered as soon as the request is started + @event: L{Events.RequestModified} trigggered if the request identifier changes or the request is modified otherwise (see L{modifyRequest}) + @note: the identifier of the request may change at any time. You should be prepaired to handle + this @note: if persistence is L{consts.Persistence.Connection} the request is removed from the client as soon as it completes or failes """ @@ -1563,6 +1564,10 @@ identifier = self.FcParams.newUuid(uuids=self._requests) self.sendMessage( consts.Message.SubscribeUSK, + FcModified={}, + FcRequestStatus=consts.RequestStatus.Pending, #TODO: status? + FcRequestType=consts.RequestType.SubscribeUSK, + Identifier=identifier, URI=uri, DontPoll=dontPoll, @@ -1574,6 +1579,37 @@ ## CHK ClientPut related methods ## ######################################################## + def putUpload(self, upload, userData=None, persistentUserData=''): + + msg = upload.getMessage(self.Message) + if msg is None: + raise ValueError('Nothing to upload') + + # determine SubType + if msg.name == consts.Message.ClientPut: + messageType = consts.RequestType.Put + elif msg.name == consts.Message.ClientPutDiskDir: + messageType = consts.RequestType.PutDiskDir + else: + messageType = consts.RequestType.PutComplexDir + + self._registerRequest( + msg, + userData, + messageType, + time.time(), + persistentUserData, + #filenameCollision=filenameCollision, + ) + + if upload.keyType in (consts.KeyType.SSK, consts.KeyType.USK): + msg['FcInsertUri'] = upload.privateKey + #NOTE: the caller may use the 'FcInsertUri' member to store the private key + + + self.sendMessageEx(msg) + return msg['Identifier'] + def clientPut(self, uri, messageSubType, @@ -1590,7 +1626,7 @@ msg[paramName] = value if data is not None: msg.data = data - + self._registerRequest( msg, userData, @@ -1613,6 +1649,7 @@ contentType=None, dontCompress=None, + filename=None, maxRetries=None, persistence=consts.Persistence.Connection, priorityClass=consts.Priority.Medium, @@ -1621,7 +1658,9 @@ userData=None, persistentUserData='', ): - """""" + """ + @param data: () + """ return self.clientPut( consts.KeyType.CHK, consts.RequestType.Put, @@ -1650,10 +1689,9 @@ def chkPutFile(self, - filename, - contentType=None, dontCompress=None, + filename=None, maxRetries=None, persistence=consts.Persistence.Connection, priorityClass=consts.Priority.Medium, @@ -1663,6 +1701,10 @@ persistentUserData='', ): + """ + @param filename: (str) filename to append to the CHK key or None (may not contain slashes) + """ + return self.clientPut( consts.KeyType.CHK, consts.RequestType.Put, @@ -1832,7 +1874,7 @@ a RequestRemoved event is triggered as soon as the request has actually been removed """ initialRequest = self._requests[requestIdentifier] - initialRequest['FcStatus'] |= consts.RequestStatus.Removed + initialRequest['FcRequestStatus'] |= consts.RequestStatus.Removed if initialRequest.name in consts.Message.ClientKeyRequestMessages: self.sendMessage( consts.Message.RemovePersistentRequest, @@ -1997,7 +2039,7 @@ FcErrorMessage=None, FcModified={}, FcRequestType=consts.RequestType.PluginInfo, - FcStatus=consts.RequestStatus.Pending, + FcRequestStatus=consts.RequestStatus.Pending, Identifier=identifier, PluginName=pluginName, @@ -2022,7 +2064,7 @@ FcErrorMessage=None, FcModified={}, FcRequestType=consts.RequestType.PluginMessage, - FcStatus=consts.RequestStatus.Pending, + FcRequestStatus=consts.RequestStatus.Pending, Identifier=identifier, PluginName=pluginName, @@ -2042,12 +2084,20 @@ ## ########################################################## def generateKeypair(self, keypairType=consts.KeyType.SSK): - """ + """Generates a public / private keypair + @param keypairType: type of keypair to generate (either L{consts.KeyType.SSK} or L{consts.KeyType.SSK}) @return: identifier of the request - @event: KeypairGenerated(event, params) is triggered when the request is complete + + @event: L{Events.KeypairGenerated} triggered as soon as the request is complete + + @requestparam: B{FcModified:} (dict) + @requestparam: B{FcPrivateKey:} None. Will contain the private key as soon as the key is generated + @requestparam: B{FcPublivcKey:} None. Will contain the public key as soon as the key is generated + @requestparam: B{FcRequestStatus:} one or more of the L{consts.RequestStatus} flags + @requestparam: B{FcRequestType:} one or more of the L{consts.RequestType} flags + @requestparam: B{Identifier:} identifier of the request """ - if keypairType not in (consts.KeyType.SSK, consts.KeyType.USK): raise ValueError('keypairType must be %s or %s' % (consts.KeyType.SSK, consts.KeyType.USK)) @@ -2056,7 +2106,9 @@ msg = self.Message( consts.Message.GenerateSSK, FcModified={}, - FcStatus=consts.RequestStatus.Pending, + FcPrivateKey= None, + FcPublicKey=None, + FcRequestStatus=consts.RequestStatus.Pending, FcRequestType=requestType, Identifier=identifier, ) @@ -2159,8 +2211,6 @@ 'test123', #persistence=c.Persistence.Reboot, ) - - for i in xrange(500): c.next() #c.removeRequest(myIdentifier) @@ -2169,6 +2219,10 @@ #testChkPutData() + + + + def testChkPutFile(): fpath = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'test.jpg') @@ -2207,9 +2261,32 @@ # c.next() #testUskPutData() + + + def testUskPutData(): + def cb(event, request): + insertURI = request['InsertURI'] + insertURI = 'USK@AKva7OolWsdAICB8ZE1hDgFqBJigJpYN2edJd6deiApU,dOitAHZSrt27Tl4wK7F-VHVShJVvzR7eNWKsXBolq8k,AQECAAE/' + + u = c.Upload(consts.KeyType.USK, privateKey=insertURI) + u.addData('foo/0/', 'data here') + c.putUpload(u) + + + c.events.KeypairGenerated += cb + c.generateKeypair(keypairType=consts.KeyType.USK) + + #identifier = c.uskPutData( + #'foo1', + #'USK@dkbB9DSr6R2WWs0MFsB9BJvN2cRjNxSboanDQNMJVNc,uIi9-1JrCLZ~6MLa8UrxQCMLptu~PzL59hAtorUIStw,AQECAAE/foo/0/', + #) + c.run() + + #testUskPutData() + def testConfigData(): from fcp2_0_config import Config This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ju...@us...> - 2008-02-06 14:57:29
|
Revision: 166 http://fclient.svn.sourceforge.net/fclient/?rev=166&view=rev Author: jurner Date: 2008-02-06 06:57:28 -0800 (Wed, 06 Feb 2008) Log Message: ----------- distinguish Removed from RemovedFromQueue Modified Paths: -------------- trunk/sandbox/fcp/test_fcp/test_fcp2_0_client.py Modified: trunk/sandbox/fcp/test_fcp/test_fcp2_0_client.py =================================================================== --- trunk/sandbox/fcp/test_fcp/test_fcp2_0_client.py 2008-02-06 14:57:08 UTC (rev 165) +++ trunk/sandbox/fcp/test_fcp/test_fcp2_0_client.py 2008-02-06 14:57:28 UTC (rev 166) @@ -542,7 +542,8 @@ ('FcStatus', consts.RequestStatus.Pending | consts.RequestStatus.Started | consts.RequestStatus.Success | - consts.RequestStatus.Removed), + consts.RequestStatus.RemovedFromQueue + ), data=data ) self.failIf(myIdentifier in allRequests) @@ -554,8 +555,8 @@ allRequests[myIdentifier] =myRequest myRequest['Persistence'] = consts.Persistence.Forever myRequest['FcStatus'] &= ~(consts.RequestStatus.Success | - consts.RequestStatus.Removed | - consts.RequestStatus.Completed + consts.RequestStatus.Completed | + consts.RequestStatus.RemovedFromQueue ) self.sendResponseMessage( 'AllData', @@ -617,7 +618,8 @@ ('FcStatus', consts.RequestStatus.Pending | consts.RequestStatus.Started | consts.RequestStatus.Error | - consts.RequestStatus.Removed) + consts.RequestStatus.RemovedFromQueue + ) ) self.failUnless(myRequest['FcStatus'] & consts.RequestStatus.Completed) self.assertHasNextEvent(None) @@ -629,8 +631,9 @@ allRequests[myIdentifier] =myRequest myRequest['Persistence'] = consts.Persistence.Forever myRequest['FcStatus'] &= ~(consts.RequestStatus.Error | - consts.RequestStatus.Removed | - consts.RequestStatus.Completed) + consts.RequestStatus.Completed | + consts.RequestStatus.RemovedFromQueue + ) self.sendResponseMessage( 'GetFailed', Code='28', # All data not found @@ -693,7 +696,11 @@ self.assertHasNextEvent( self.fcpClient.events.RequestCompleted, consts.Message.ClientGet, - ('FcStatus', consts.RequestStatus.Pending | consts.RequestStatus.Started | consts.RequestStatus.Success | consts.RequestStatus.Removed) + ('FcStatus', consts.RequestStatus.Pending | + consts.RequestStatus.Started | + consts.RequestStatus.Success | + consts.RequestStatus.RemovedFromQueue + ) ) self.failIf(myIdentifier in allRequests) self.failUnless(myRequest['FcStatus'] & consts.RequestStatus.Completed) @@ -736,7 +743,11 @@ self.assertHasNextEvent( self.fcpClient.events.RequestFailed, consts.Message.ClientGet, - ('FcStatus', consts.RequestStatus.Pending | consts.RequestStatus.Started | consts.RequestStatus.Error | consts.RequestStatus.Removed) + ('FcStatus', consts.RequestStatus.Pending | + consts.RequestStatus.Started | + consts.RequestStatus.Error | + consts.RequestStatus.RemovedFromQueue + ) ) self.failIf(myIdentifier in allRequests) self.failUnless(myRequest['FcStatus'] & consts.RequestStatus.Completed) @@ -748,7 +759,6 @@ # request a arbitrary uri myIdentifier = self.fcpClient.getKeyInfo( 'arbitrary-uri', - persistence=consts.Persistence.Forever, # cheat a bit, so we can test multiple cases ) myRequest = self.fcpClient.getRequest(myIdentifier) allRequests = self.fcpClient.getRequests() @@ -783,15 +793,44 @@ self.assertHasNextEvent( self.fcpClient.events.RequestCompleted, consts.Message.ClientGet, - ('FcStatus', consts.RequestStatus.Pending | consts.RequestStatus.Started | consts.RequestStatus.Success) + ('FcStatus', consts.RequestStatus.Pending | + consts.RequestStatus.Started | + consts.RequestStatus.Success | + consts.RequestStatus.RemovedFromQueue + ) ) - self.failIf(myIdentifier not in allRequests) + self.failIf(myIdentifier in allRequests) self.failUnless(myRequest['FcStatus'] & consts.RequestStatus.Completed) self.assertHasNextEvent(None) + + def testGetKeyInfo_TooBig(self): + # test specdial case where ProtocolError.TooBig is handled as success - myRequest['FcStatus'] &= ~(consts.RequestStatus.Success) + # request a arbitrary uri + myIdentifier = self.fcpClient.getKeyInfo( + 'arbitrary-uri', + ) + myRequest = self.fcpClient.getRequest(myIdentifier) + allRequests = self.fcpClient.getRequests() + + self.assertHasNextMessage(consts.Message.ClientGet) + + # respond to the file request self.sendResponseMessage( + 'PersistentGet', + Started='false', + **myRequest.params + ) + self.assertHasNextEvent( + self.fcpClient.events.RequestStarted, + consts.Message.ClientGet, + ('FcStatus', consts.RequestStatus.Pending | consts.RequestStatus.Started) + ) + self.assertHasNextEvent(None) + + # finalize request + self.sendResponseMessage( 'GetFailed', Code='21', # Too big Identifier=myIdentifier, @@ -803,8 +842,8 @@ consts.Message.ClientGet, ('FcStatus', consts.RequestStatus.Pending | consts.RequestStatus.Started | - consts.RequestStatus.Success | - consts.RequestStatus.Completed + consts.RequestStatus.Success | + consts.RequestStatus.RemovedFromQueue ) ) self.failUnless(myRequest['FcStatus'] & consts.RequestStatus.Completed) @@ -814,10 +853,7 @@ myRequest['Persistence'] = consts.Persistence.Connection myRequest['FcStatus'] = consts.RequestStatus.Started - ########################################### - ########################################### - - + def testGetKeyInfo_Failure(self): # request a arbitrary file @@ -851,7 +887,11 @@ self.assertHasNextEvent( self.fcpClient.events.RequestFailed, consts.Message.ClientGet, - ('FcStatus', consts.RequestStatus.Pending | consts.RequestStatus.Started | consts.RequestStatus.Error | consts.RequestStatus.Removed) + ('FcStatus', consts.RequestStatus.Pending | + consts.RequestStatus.Started | + consts.RequestStatus.Error | + consts.RequestStatus.RemovedFromQueue + ) ) self.failUnless(myRequest['FcStatus'] & consts.RequestStatus.Completed) self.assertHasNextEvent(None) @@ -934,7 +974,10 @@ # status of our request should be set to removed emidiately, but it should # not be removed from the client - self.assertEqual(myRequest['FcStatus'], consts.RequestStatus.Pending | consts.RequestStatus.Started | consts.RequestStatus.Removed) + self.assertEqual(myRequest['FcStatus'], consts.RequestStatus.Pending | + consts.RequestStatus.Started | + consts.RequestStatus.Removed + ) self.failUnless(myIdentifier in self.fcpClient.getRequests()) # client schould send a RemovePersistentRequest @@ -947,9 +990,9 @@ ) # now the request should have been removed + self.failUnless(myRequest['FcStatus'] & consts.RequestStatus.RemovedFromQueue) + self.failUnless(myRequest['FcStatus'] & consts.RequestStatus.Completed) self.failIf(self.fcpClient.getRequests()) - - # client never sends an event here self.assertHasNextEvent(None) #*********************************************************************************** This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ju...@us...> - 2008-02-06 14:57:07
|
Revision: 165 http://fclient.svn.sourceforge.net/fclient/?rev=165&view=rev Author: jurner Date: 2008-02-06 06:57:08 -0800 (Wed, 06 Feb 2008) Log Message: ----------- distinguish Removed from RemovedFromQueue Modified Paths: -------------- trunk/sandbox/fcp/fcp2_0_consts.py Modified: trunk/sandbox/fcp/fcp2_0_consts.py =================================================================== --- trunk/sandbox/fcp/fcp2_0_consts.py 2008-02-06 14:57:01 UTC (rev 164) +++ trunk/sandbox/fcp/fcp2_0_consts.py 2008-02-06 14:57:08 UTC (rev 165) @@ -289,8 +289,8 @@ GetPluginInfo, FCPPlugin, ) - + class RequestStatus: """Request status flags @cvar Null: no status @@ -300,8 +300,10 @@ @cvar Compressed: compressing is completed @cvar Success: the request has completed successfuly @cvar Error: the request has completed with an error + @cvar Removed: the request is completed because it will be or has been removed + @cvar Completed: processing of the request is completed - @cvar Removed: the request is no longer present in the nodes queue. The client will remove the request + @cvar RemovedFromQueue: the request is no longer present in the nodes queue. The client will remove the request from its own queue as soon as all event listeners have been notified. @cvar MaskProcessed: bitmask checking if a request is completely processed (either @@ -317,9 +319,10 @@ Compressed = 0x8 Success = 0x10 Error = 0x20 + Removed = 0x40 Completed =0x10000000 - Removed = 0x2000000 + RemovedFromQueue = 0x2000000 class RequestType: This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ju...@us...> - 2008-02-06 14:57:02
|
Revision: 164 http://fclient.svn.sourceforge.net/fclient/?rev=164&view=rev Author: jurner Date: 2008-02-06 06:57:01 -0800 (Wed, 06 Feb 2008) Log Message: ----------- distinguish Removed from RemovedFromQueue Modified Paths: -------------- trunk/sandbox/fcp/fcp2_0_client.py Modified: trunk/sandbox/fcp/fcp2_0_client.py =================================================================== --- trunk/sandbox/fcp/fcp2_0_client.py 2008-02-06 13:57:32 UTC (rev 163) +++ trunk/sandbox/fcp/fcp2_0_client.py 2008-02-06 14:57:01 UTC (rev 164) @@ -341,7 +341,7 @@ @param request: request to finalize @param event: event to trigger or None - @note: this method sets the requests L{consts.RequestStatus.Removed} and + @note: this method sets the requests L{consts.RequestStatus.RemovedFromQueue} and L{consts.RequestStatus.Completed} flags accordingly @note: Fcp removes Get / Put requests with Persistence == connection emidiately from its queue. Same goes all requests on ProtocolError. We inform the caller @@ -353,7 +353,7 @@ #NOTE: non Get / Put related requests do not have a Persistence param removeRequest = request.params.get('Persistence', consts.Persistence.Connection) == consts.Persistence.Connection if removeRequest: - request['FcStatus'] |= consts.RequestStatus.Removed + request['FcStatus'] |= consts.RequestStatus.RemovedFromQueue if event is not None: event(request) @@ -969,6 +969,7 @@ if initialRequest is None: return False #TODO: notify user? + initialRequest['FcStatus'] |= consts.RequestStatus.Removed self._finalizeRequest(msg, initialRequest, None) return True @@ -1831,7 +1832,7 @@ a RequestRemoved event is triggered as soon as the request has actually been removed """ initialRequest = self._requests[requestIdentifier] - initialRequest['FcStatus'] |= consts.RequestStatus.Removed + initialRequest['FcStatus'] |= consts.RequestStatus.Removed if initialRequest.name in consts.Message.ClientKeyRequestMessages: self.sendMessage( consts.Message.RemovePersistentRequest, This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ju...@us...> - 2008-02-06 13:57:33
|
Revision: 163 http://fclient.svn.sourceforge.net/fclient/?rev=163&view=rev Author: jurner Date: 2008-02-06 05:57:32 -0800 (Wed, 06 Feb 2008) Log Message: ----------- refactored finalizing of requests to handle it in one place Modified Paths: -------------- trunk/sandbox/fcp/fcp2_0_client.py Modified: trunk/sandbox/fcp/fcp2_0_client.py =================================================================== --- trunk/sandbox/fcp/fcp2_0_client.py 2008-02-06 11:13:27 UTC (rev 162) +++ trunk/sandbox/fcp/fcp2_0_client.py 2008-02-06 13:57:32 UTC (rev 163) @@ -307,7 +307,7 @@ # non persistent params 'FcStatus': consts.RequestStatus.Null, - 'FcErrorMessage': None, # did an error occur? + 'FcErrorMessage': None, # error message in case an error occured 'FcUserData': userData, # any user defined runtime data here # params for SSKKeypair @@ -335,6 +335,34 @@ return msg + def _finalizeRequest(self, msg, request, event): + """Finalzes a request + @param msg: message that is the reason for finalizing + @param request: request to finalize + @param event: event to trigger or None + + @note: this method sets the requests L{consts.RequestStatus.Removed} and + L{consts.RequestStatus.Completed} flags accordingly + @note: Fcp removes Get / Put requests with Persistence == connection emidiately + from its queue. Same goes all requests on ProtocolError. We inform the caller + that the request has been completed and remove it fom our queue if necessary. + Non Get / Put requests will be removed in any case. + """ + removeRequest = msg.name in (consts.Message.ProtocolError, consts.Message.PersistentRequestRemoved) + if not removeRequest: + #NOTE: non Get / Put related requests do not have a Persistence param + removeRequest = request.params.get('Persistence', consts.Persistence.Connection) == consts.Persistence.Connection + if removeRequest: + request['FcStatus'] |= consts.RequestStatus.Removed + + if event is not None: + event(request) + + request['FcStatus'] |= consts.RequestStatus.Completed + if removeRequest: + del self._requests[request['Identifier']] + + def _registerRequest(self, msg, userData, @@ -691,16 +719,14 @@ # handle plugin related request failures elif code == consts.ProtocolError.NoSuchPlugin: if initialRequest.name == consts.Message.PluginInfo: - initialRequest['FcStatus'] |= consts.RequestStatus.Error | consts.RequestStatus.Success | consts.RequestStatus.Removed - self.events.PluginInfoFailed(initialRequest) - initialRequest['FcStatus'] |= consts.RequestStatus.Completed - del self._requests[requestIdentifier] + initialRequest['FcErrorMessage'] = msg + initialRequest['FcStatus'] |= consts.RequestStatus.Error + self._finalizeRequest(msg, initialRequest, self.events.PluginInfoFailed) return True elif initialRequest.name == consts.Message.FCPPluginMessage: - initialRequest['FcStatus'] |= consts.RequestStatus.Error | consts.RequestStatus.Success | consts.RequestStatus.Removed - self.events.PluginMessageFailed(initialRequest) - initialRequest['FcStatus'] |= consts.RequestStatus.Completed - del self._requests[requestIdentifier] + initialRequest['FcErrorMessage'] = msg + initialRequest['FcStatus'] |= consts.RequestStatus.Error + self._finalizeRequest(msg, initialRequest, self.events.PluginMessageFailed) return True elif code == consts.ProtocolError.AccessDenied: @@ -721,10 +747,8 @@ # NOTE: Fcp already removed the request initialRequest['FcErrorMessage'] = msg - initialRequest['FcStatus'] = consts.RequestStatus.Success | consts.RequestStatus.Error | consts.RequestStatus.Removed - self.events.RequestFailed(initialRequest) - initialRequest['FcStatus'] |= consts.RequestStatus.Completed - del self._requests[requestIdentifier] + initialRequest['FcStatus'] = consts.RequestStatus.Error + self._finalizeRequest(msg, initialRequest, self.events.RequestFailed) return True @@ -802,20 +826,13 @@ testFailed = not msg.params.get('ReadDirectoryAllowed', False) if testFailed: - #TODO: check if errorMsg gives reasonable feedback - initialRequest['FcStatus'] = consts.RequestStatus.Error | consts.RequestStatus.Removed + initialRequest['FcStatus'] = consts.RequestStatus.Error initialRequest['FcErrorMessage'] = initialRequest['FcTestDDA']['ErrorMsg'] - - # notify listeners - self.events.ProtocolError(initialRequest) - # the node removed the request in any case (ProtocolError) so do we... - initialRequest['FcStatus'] = consts.RequestStatus.Completed - del self._requests[initialRequest['Identifier']] + self._finalizeRequest(msg, initialRequest, self.events.RequestFailed) return True - - - # resend message + + # else: resend message self.sendMessageEx(initialRequest) return True @@ -846,16 +863,7 @@ initialRequest['FcStatus'] |= consts.RequestStatus.Success initialRequest.data = msg.data - - # Fcp removes requests from queue with Persistence.Connection.. so do we - if initialRequest.params.get('Persistence', consts.Persistence.Connection) == consts.Persistence.Connection: - initialRequest['FcStatus'] |= consts.RequestStatus.Removed - - # notify listeners - self.events.RequestCompleted(initialRequest) - initialRequest['FcStatus'] |= consts.RequestStatus.Completed - if initialRequest['FcStatus'] & consts.RequestStatus.Removed: - del self._requests[requestIdentifier] + self._finalizeRequest(msg, initialRequest, self.events.RequestCompleted) return True elif msg.name == consts.Message.DataFound: @@ -868,16 +876,7 @@ # except from GetData all requests are complete here. Next GetData will run through AllData... if initialRequest['FcRequestType'] != consts.RequestType.GetData: - # Fcp removes requests from queue with Persistence.Connection.. so do we - if initialRequest.params.get('Persistence', consts.Persistence.Connection) == consts.Persistence.Connection: - initialRequest['FcStatus'] |= consts.RequestStatus.Removed - - # notify listeners - self.events.RequestCompleted(initialRequest) - initialRequest['FcStatus'] |= consts.RequestStatus.Completed - if initialRequest['FcStatus'] & consts.RequestStatus.Removed: - del self._requests[requestIdentifier] - + self._finalizeRequest(msg, initialRequest, self.events.RequestCompleted) return True @@ -885,29 +884,20 @@ if initialRequest is None: return False - # Fcp removes requests from queue with Persistence.Connection.. so do we - if initialRequest.params.get('Persistence', consts.Persistence.Connection) == consts.Persistence.Connection: - initialRequest['FcStatus'] |= consts.RequestStatus.Removed - # check if it is one of our requests for key information code = msg['Code'] if code == consts.FetchError.TooBig and initialRequest['FcRequestType'] == consts.RequestType.GetKeyInfo: - initialRequest['FcStatus'] |= consts.RequestStatus.Success initialRequest['FcMetadataContentType'] = msg.get('ExpectedMetadata.ContentType', '') initialRequest['FcDataLength'] = msg.get('ExpectedDataLength', -1) - self.events.RequestCompleted(initialRequest) + initialRequest['FcStatus'] |= consts.RequestStatus.Success + self._finalizeRequest(msg, initialRequest, self.events.RequestCompleted) else: initialRequest['FcErrorMessage'] = msg initialRequest['FcStatus'] |= consts.RequestStatus.Error - self.events.RequestFailed(initialRequest) - - initialRequest['FcStatus'] |= consts.RequestStatus.Completed - if initialRequest['FcStatus'] & consts.RequestStatus.Removed: - del self._requests[requestIdentifier] + self._finalizeRequest(msg, initialRequest, self.events.RequestFailed) return True - - - + + elif msg.name == consts.Message.PersistentGet: # unknown request... try to restore it @@ -978,10 +968,8 @@ elif msg.name == consts.Message.PersistentRequestRemoved: if initialRequest is None: return False - - #TODO: notify user ? - initialRequest['FcStatus'] |= consts.RequestStatus.Removed - del self._requests[requestIdentifier] + #TODO: notify user? + self._finalizeRequest(msg, initialRequest, None) return True @@ -1043,20 +1031,9 @@ elif msg.name == consts.Message.PutFailed: if initialRequest is None: return False - initialRequest['FcStatus'] |= consts.RequestStatus.Error initialRequest['FcErrorMessage'] = msg - - # Fcp removes requests from queue with Persistence.Connection.. so do we - if initialRequest.params.get('Persistence', consts.Persistence.Connection) == consts.Persistence.Connection: - initialRequest['FcStatus'] |= consts.RequestStatus.Removed - del self._requests[requestIdentifier] - - # notify listeners - self.events.RequestFailed(initialRequest) - initialRequest['FcStatus'] |= consts.RequestStatus.Completed - if initialRequest['FcStatus'] & consts.RequestStatus.Removed: - del self._requests[requestIdentifier] + self._finalizeRequest(msg, initialRequest, self.events.RequestFailed) return True @@ -1072,20 +1049,12 @@ elif msg.name == consts.Message.PutSuccessful: if initialRequest is None: return False - # TODO: StartupTime and CompletionTime are passed, but # as long as no corrosponding params are passed in DataFound # we ignore them initialRequest['FcStatus'] |= consts.RequestStatus.Success initialRequest['URI'] = msg['URI'] - if initialRequest.params.get('Persistence', consts.Persistence.Connection) == consts.Persistence.Connection: - initialRequest['FcStatus'] |= consts.RequestStatus.Removed - - # notify listeners - self.events.RequestCompleted(initialRequest) - initialRequest['FcStatus'] |= consts.RequestStatus.Completed - if initialRequest['FcStatus'] & consts.RequestStatus.Removed: - del self._requests[requestIdentifier] + self._finalizeRequest(msg, initialRequest, self.events.RequestCompleted) return True @@ -1146,25 +1115,15 @@ elif msg.name == consts.Message.PluginInfo: if initialRequest is None: return False - - initialRequest['FcStatus'] |= consts.RequestStatus.Success | consts.RequestStatus.Removed - - # notify listeners - self.events.PluginInfo(msg) - initialRequest['FcStatus'] |= consts.RequestStatus.Completed - del self._pluginRequests[requestIdentifier] + initialRequest['FcStatus'] |= consts.RequestStatus.Success + self._finalizeRequest(msg, initialRequest, self.events.PluginInfo) return True elif msg.name == consts.Message.FCPPluginReply: if initialRequest is None: return False - - initialRequest['FcStatus'] |= consts.RequestStatus.Success | consts.RequestStatus.Removed - - # notify listeners - self.events.PluginMessage(msg) - initialRequest['FcStatus'] |= consts.RequestStatus.Completed - del self._requests[requestIdentifier] + initialRequest['FcStatus'] |= consts.RequestStatus.Success + self._finalizeRequest(msg, initialRequest, self.events.PluginMessage) return True #################################################### @@ -1196,12 +1155,8 @@ initialRequest['InsertURI'] = insertURI initialRequest['RequestURI'] = requestURI - initialRequest['FcStatus'] |= consts.RequestStatus.Success | consts.RequestStatus.Removed - self.events.KeypairGenerated(initialRequest) - - # notify listeners - initialRequest['FcStatus'] |= consts.RequestStatus.Completed - del self._requests[requestIdentifier] + initialRequest['FcStatus'] |= consts.RequestStatus.Success + self._finalizeRequest(msg, initialRequest, self.events.KeypairGenerated) return True elif msg.name == consts.Message.SubscribedUSKUpdate: @@ -2036,14 +1991,17 @@ """ identifier = self.FcParam.newUuid(uuids=self._requests) msg = self.Message( - consts.Message.GetPluginInfo, - FcModified={}, - FcStatus=consts.RequestStatus.Pending, - FcRequestType=consts.RequestType.PluginInfo, - Identifier=identifier, - PluginName=pluginName, - Detailed=detailed, - ) + consts.Message.GetPluginInfo, + + FcErrorMessage=None, + FcModified={}, + FcRequestType=consts.RequestType.PluginInfo, + FcStatus=consts.RequestStatus.Pending, + + Identifier=identifier, + PluginName=pluginName, + Detailed=detailed, + ) self._requests[identifier] = msg self.sendMessageEx(msg) return identifier @@ -2058,14 +2016,17 @@ """ identifier = self.FcParam.newUuid(uuids=self._requests) msg = self.Message( - consts.Message.GetPluginInfo, - FcModified={}, - FcStatus=consts.RequestStatus.Pending, - FcRequestType=consts.RequestType.PluginMessage, - Identifier=identifier, - PluginName=pluginName, - **params - ) + consts.Message.GetPluginInfo, + + FcErrorMessage=None, + FcModified={}, + FcRequestType=consts.RequestType.PluginMessage, + FcStatus=consts.RequestStatus.Pending, + + Identifier=identifier, + PluginName=pluginName, + **params + ) if data is not None: msg['DataLength'] = len(data) msg.data = data @@ -2150,12 +2111,13 @@ identifier = c.getFile( 'CHK@q4~2soHTd9SOINIoXmg~dn7LNUAOYzN1tHNHT3j4c9E,gcVRtoglEhgqN-DJolXPqJ4yX1f~1gBGh89HNWlFMWQ,AAIC--8/snow_002%20%2810%29.jpg', filename, - filenameCollision=c.FilenameCollision.HandleRename, + filenameCollision=consts.FilenameCollision.HandleRename, #persistence=consts.Persistence.Forever, ) - for i in xrange(50): - c.next() + c.run() + #for i in xrange(50): + # c.next() #c.removeRequest(identifier) #for i in xrange(5): This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |