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.
|