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