SF.net SVN: fclient: [150] trunk/sandbox/fcp/fcp2_0_client.py
Status: Pre-Alpha
Brought to you by:
jurner
From: <ju...@us...> - 2008-02-05 15:21:02
|
Revision: 150 http://fclient.svn.sourceforge.net/fclient/?rev=150&view=rev Author: jurner Date: 2008-02-05 07:21:08 -0800 (Tue, 05 Feb 2008) Log Message: ----------- another comb-over the request status flags requests now pick up one after the other in the run through the client 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-05 15:19:28 UTC (rev 149) +++ trunk/sandbox/fcp/fcp2_0_client.py 2008-02-05 15:21:08 UTC (rev 150) @@ -311,7 +311,7 @@ 'FcPersistentUserData': persistentUserData, # any user defined persistent data # non persistent params - 'FcStatus': consts.RequestStatus.Pending, + 'FcStatus': consts.RequestStatus.Null, 'FcErrorMessage': None, # did an error occur? 'FcUserData': userData, # any user defined runtime data here @@ -372,6 +372,7 @@ ) msg['ClientToken'] = self.FcParams.messageToParams(msg) + msg['FcStatus'] |= consts.RequestStatus.Pending msg['Identifier'] = identifier self._requests[identifier] = msg @@ -394,7 +395,7 @@ 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'] @@ -843,7 +844,7 @@ if initialRequest is None: return False - initialRequest['FcStatus'] = consts.RequestStatus.Complete + initialRequest['FcStatus'] |= consts.RequestStatus.Complete # 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 @@ -857,13 +858,14 @@ if initialRequest is None: return False - initialRequest['FcStatus'] = consts.RequestStatus.Complete + initialRequest['FcStatus'] |= consts.RequestStatus.Complete initialRequest['FcMetadataContentType'] = msg.get('Metadata.ContentType', '') initialRequest['FcDataLength'] = msg.get('DataLength', '') if initialRequest['FcSubType'] != consts.RequestSubType.GetData: - initialRequest['FcStatus'] |= consts.RequestStatus.Removed + # 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] self.events.RequestCompleted(initialRequest) return True @@ -873,11 +875,9 @@ if initialRequest is None: return False - initialRequest['FcStatus'] = consts.RequestStatus.Null - # 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 + initialRequest['FcStatus'] |= consts.RequestStatus.Removed del self._requests[requestIdentifier] # check if it is one of our requests for key information @@ -915,13 +915,13 @@ # restore request self._requests[requestIdentifier] = restoredRequest - restoredRequest['FcStatus'] = consts.RequestStatus.Started + restoredRequest['FcStatus'] |= consts.RequestStatus.Started self.events.RequestRestored(restoredRequest) return True # known request... filter out multiple PersistentGets - if initialRequest['FcStatus'] == consts.RequestStatus.Pending: - initialRequest['FcStatus'] = consts.RequestStatus.Started + if not initialRequest['FcStatus'] & consts.RequestStatus.Started: + initialRequest['FcStatus'] |= consts.RequestStatus.Started #TODO: update initialRequest with params from PersistentGet? @@ -930,48 +930,7 @@ return True - elif msg.name == consts.Message.PersistentPut: - - # unknown request... try to restore it - if initialRequest is None: - restoredRequest = self._restorePersistentRequestFromNode(msg) - - # not one of our requests... so cancel it - if restoredRequest is None or CancelPersistentRequests: - self.sendMessage( - consts.Message.RemovePersistentRequest, - Identifier=msg['Identifier'], - Global=msg['Global'], - ) - return True - - # determine initial message name - if restoredRequest['FcSubType'] == consts.RequestSubType.Put: - restoredRequest.name = consts.Message.ClientPut - elif restoredRequest['FcSubType'] == consts.RequestSubType.PutDiskDir: - restoredRequest.name = consts.Message.ClientPutDiskDir - elif restoredRequest['FcSubType'] == consts.RequestSubType.PutComplexDir: - restoredRequest.name = consts.Message.ClientPutComplexDir - - # restore request - self._requests[requestIdentifier] = restoredRequest - restoredRequest['FcStatus'] = consts.RequestStatus.Started - self.events.RequestRestored(restoredRequest) - return True - - # known request... filter out multiple PersistentGets - if initialRequest['FcStatus'] == consts.RequestStatus.Pending: - initialRequest['FcStatus'] = consts.RequestStatus.Started - - #TODO: update initialRequest with params from PersistentPut? - #TODO: update initialRequest with params from PersistentPut? - - self.events.RequestStarted(initialRequest) - return True - - return True - elif msg.name == consts.Message.PersistentRequestModified: if initialRequest is None: return False @@ -1007,7 +966,8 @@ if initialRequest is None: return False - #TODO: notify user ??? + #TODO: notify user ? + initialRequest['FcStatus'] |= consts.RequestStatus.Removed del self._requests[requestIdentifier] return True @@ -1026,17 +986,52 @@ ## put related - elif msg.name == consts.Message.URIGenerated: + elif msg.name == consts.Message.PersistentPut: + + # unknown request... try to restore it if initialRequest is None: - return False - initialRequest['URI'] = msg['URI'] + restoredRequest = self._restorePersistentRequestFromNode(msg) + + # not one of our requests... so cancel it + if restoredRequest is None or CancelPersistentRequests: + self.sendMessage( + consts.Message.RemovePersistentRequest, + Identifier=msg['Identifier'], + Global=msg['Global'], + ) + return True + + # determine initial message name + if restoredRequest['FcSubType'] == consts.RequestSubType.Put: + restoredRequest.name = consts.Message.ClientPut + elif restoredRequest['FcSubType'] == consts.RequestSubType.PutDiskDir: + restoredRequest.name = consts.Message.ClientPutDiskDir + elif restoredRequest['FcSubType'] == consts.RequestSubType.PutComplexDir: + restoredRequest.name = consts.Message.ClientPutComplexDir + + # restore request + self._requests[requestIdentifier] = restoredRequest + restoredRequest['FcStatus'] = 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 + + #TODO: update initialRequest with params from PersistentPut? + + self.events.RequestStarted(initialRequest) + return True + return True + elif msg.name == consts.Message.PutFailed: if initialRequest is None: return False - initialRequest['FcStatus'] = consts.RequestStatus.Complete | consts.RequestStatus.Error + initialRequest['FcStatus'] |= consts.RequestStatus.Complete | consts.RequestStatus.Error # Fcp removes requests from queue with Persistence.Connection.. so do we if initialRequest.params.get('Persistence', consts.Persistence.Connection) == consts.Persistence.Connection: @@ -1064,7 +1059,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.Complete + initialRequest['FcStatus'] |= consts.RequestStatus.Complete if initialRequest.params.get('Persistence', consts.Persistence.Connection) == consts.Persistence.Connection: initialRequest['FcStatus'] |= consts.RequestStatus.Removed @@ -1075,6 +1070,26 @@ return True + elif msg.name == consts.Message.URIGenerated: + if initialRequest is None: + return False + initialRequest['URI'] = msg['URI'] + return True + + elif msg.name == consts.Message.FinishedCompression: + if initialRequest is None: + return False + initialRequest['FcStatus'] |= 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 + self.events.RequestCompressionStarted(initialRequest) + return True + #################################################### ## ## Peer related messages This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |