SF.net SVN: fclient: [213] trunk/sandbox/fcp/fcp2_0_client.py
Status: Pre-Alpha
Brought to you by:
jurner
|
From: <ju...@us...> - 2008-02-16 10:05:30
|
Revision: 213
http://fclient.svn.sourceforge.net/fclient/?rev=213&view=rev
Author: jurner
Date: 2008-02-16 02:05:34 -0800 (Sat, 16 Feb 2008)
Log Message:
-----------
bit more work on uploads. Still not decided how to process.
++ some fixes
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-12 15:59:48 UTC (rev 212)
+++ trunk/sandbox/fcp/fcp2_0_client.py 2008-02-16 10:05:34 UTC (rev 213)
@@ -152,8 +152,16 @@
# x. Fcp seems to use kibibytes. Autoconvert to kilobytes?
#
#------------------------------------------------------------------------------------------------------------------------------------------------
+# logging
+#
+# x. should uris (...) always be visible in log output? Certainly in memory. Maybe a specialized
+# "save" logger could be useful (like for user feedback).
+#
+#------------------------------------------------------------------------------------------------------------------------------------------------
+
+
import atexit
import copy
import cPickle
@@ -266,7 +274,7 @@
# suggested by Mathew Toseland to use about 32k for mimeType requests
# basic sizes of keys are: 1k for SSks and 32k for CHKs
# without MaxSize DataFound will have DataLength set to 0 (?!)
- MaxSizeKeyInfo = 32768 #TODO: 32k
+ MaxSizeKeyInfo = 32768
SocketTimeout = 0.1
ExpectedFcpVersion = 2.0
ExpectedNodeBuild = 1107
@@ -293,7 +301,7 @@
self._ddaTests = [] # currently running DDA tests (request0, ... requestN)
self._requests = {} # currently running requests (requestIdentifier --> request)
- self._log = logging.getLogger(self.__class__.__name__)
+ self._log = logging.getLogger(consts.LoggerNames.Client)
self._nodeHelloMessage = None
self._socket = None
@@ -402,8 +410,8 @@
'FcUserData': userData, # any user defined runtime data here
# params for SSKKeypair
- 'FcInsertUri': None,
- 'FcRequestUri': None,
+ 'FcPrivateKey': None,
+ 'FcPublicKey': None,
# params from DataFound
'FcMetadataContentType': '', # contecnt type
@@ -1071,11 +1079,11 @@
)
# determine initial message name
- if requestType == consts.RequestType.Put:
+ if requestType in (consts.RequestType.PutData, consts.RequestType.PutFile):
initialRequest.name = consts.Message.ClientPut
- elif requestType == consts.RequestType.PutDiskDir:
+ elif requestType == consts.RequestType.PutDir:
initialRequest.name = consts.Message.ClientPutDiskDir
- elif requestType == consts.RequestType.PutComplexDir:
+ elif requestType == consts.RequestType.PutMultiple:
initialRequest.name = consts.Message.ClientPutComplexDir
#FIX: remove Started param from PersistentGet / Put
@@ -1344,7 +1352,6 @@
## config related methods
##
#########################################################
- #TODO: WithDefault never returns defaults
def getConfig(self,
withCurrent=True,
withDefaults=True,
@@ -1645,28 +1652,20 @@
########################################################
def putUpload(self, upload, userData=None, persistentUserData=''):
- msg = upload.getMessage(self.Message)
- if msg is None:
+ requestType, msg = upload.getMessage(self.Message)
+ if requestType 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,
- messageType,
+ requestType,
persistentUserData=persistentUserData,
userData=userData,
)
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
+ msg['FcPrivateKey'] = upload.privateKey
+ #NOTE: the caller may use the 'FcPrivateKey' member to store the private key
self.sendMessageEx(msg)
@@ -1678,11 +1677,18 @@
data=None,
persistentUserData='',
userData=None,
-
+ items=None,
**messageParams
):
- msg = self.Message(consts.Message.ClientPut, URI=uri)
+ if requestType in (consts.Message.ClientPutData, consts.Message.ClientPutFile):
+ msgName = consts.Message.ClientPut
+ elif requestType == consts.Message.ClientPutDir:
+ msgName = consts.Message.ClientPutDiskDir
+ else:
+ msgName = consts.Message.ClientPutComplexDir
+
+ msg = self.Message(msgName, URI=uri)
for paramName, value in messageParams.items():
if value is not None:
if paramName == 'ContentType':
@@ -1691,6 +1697,10 @@
if data is not None:
msg.data = data
+ if items:
+ pass
+
+
self._registerRequest(
msg,
requestType,
@@ -1720,7 +1730,7 @@
@param data: ()
"""
return self.clientPut(
- consts.RequestType.Put,
+ consts.RequestType.PutData,
consts.KeyType.CHK,
data=data,
@@ -1742,9 +1752,50 @@
Verbosity=consts.Verbosity.ReportProgress | consts.Verbosity.ReportCompression,
)
- def chkPutDir(self):
+ def chkPutDir(self,
+ directory,
+ allowUnreadableFiles=False,
+ contentType=None,
+ defaultName=None,
+ dontCompress=None,
+ maxRetries=None,
+ persistence=consts.Persistence.Connection,
+ priorityClass=consts.Priority.Medium,
+ targetFilename=None,
+
+ userData=None,
+ persistentUserData='',
+
+ ):
+ """
+ @param TargetFilename: (str) filename to append to the CHK key or None (may not contain slashes)
+ """
- pass
+ return self.clientPut(
+ consts.RequestType.PutDir,
+ consts.KeyType.CHK,
+
+ data=None,
+ persistentUserData=persistentUserData,
+ userData=userData,
+
+
+ # fcp params
+ Filename=directory,
+ AllowUnreadableFiles=allowUnreadableFiles,
+ ContentType=contentType,
+ DefaultName=defaultName,
+ #EarlyEncode='false',
+ #GetCHKOnly='false',
+ Global=False,
+ Identifier=None,
+ MaxRetries=maxRetries,
+ DontCompress=dontCompress,
+ Persistence=persistence,
+ TergetFilename=targetFilename,
+ UploadFrom=consts.UploadFrom.Disk,
+ Verbosity=consts.Verbosity.ReportProgress | consts.Verbosity.ReportCompression,
+ )
def chkPutFile(self,
@@ -1765,7 +1816,7 @@
"""
return self.clientPut(
- consts.RequestType.Put,
+ consts.RequestType.PutFile,
consts.KeyType.CHK,
data=None,
@@ -1790,21 +1841,52 @@
def chkPutMultiple(self,
+ directory,
items,
+
+ allowUnreadableFiles=False,
+ contentType=None,
defaultName=None,
- ):
+ dontCompress=None,
+ maxRetries=None,
+ persistence=consts.Persistence.Connection,
+ priorityClass=consts.Priority.Medium,
+ targetFilename=None,
+
+ userData=None,
+ persistentUserData='',
+
+ ):
+ """
+ @param TargetFilename: (str) filename to append to the CHK key or None (may not contain slashes)
+ """
- msg = self.Message(
- consts.PutComplexDir,
- URI=consts.KeyType.CHK
+ return self.clientPut(
+ consts.RequestType.PutMultiple,
+ consts.KeyType.CHK,
+
+ data=None,
+ persistentUserData=persistentUserData,
+ userData=userData,
+ items=items,
+
+ # fcp params
+ Filename=directory,
+ AllowUnreadableFiles=allowUnreadableFiles,
+ ContentType=contentType,
+ DefaultName=defaultName,
+ #EarlyEncode='false',
+ #GetCHKOnly='false',
+ Global=False,
+ Identifier=None,
+ MaxRetries=maxRetries,
+ DontCompress=dontCompress,
+ Persistence=persistence,
+ TergetFilename=targetFilename,
+ UploadFrom=consts.UploadFrom.Disk,
+ Verbosity=consts.Verbosity.ReportProgress | consts.Verbosity.ReportCompression,
)
-
- for n, item in enumerate(items):
-
- for paramName, value in item.items():
- pass
-
########################################################
##
## SSK ClientPut related methods
@@ -2200,7 +2282,7 @@
connectionName='test',
debugVerbosity=consts.DebugVerbosity.Debug
)
- log = c.getLogger()
+ #log = c.getLogger()
fpath = os.path.join(Dir, 'test.log')
handler = logging.FileHandler(fpath, 'w')
logging.getLogger('').addHandler(handler)
@@ -2291,12 +2373,12 @@
#c.sendMessage(c.consts.Message.GetRequestStatus, Identifier=identifier)
c.events.RequestCompleted += cb
- for i in xrange(55):
- c.next()
+ #for i in xrange(55):
+ # c.next()
#c.removeRequest(identifier)
#for i in xrange(5):
# c.next()
- c.events.RequestCompleted -= cb
+ c.run()
#testGetKeyInfo()
@@ -2390,6 +2472,9 @@
from fcp2_0_config import Config
def cb(event, msg):
+
+ #print msg['current.fcp.persistentDownloadsInterval']
+ #return
root=Config(configDataMsg=msg)
print
@@ -2420,7 +2505,31 @@
#testConfigData()
+ #testConfigData()
+
+ def testModifyConfig():
+
+ from fcp2_0_config import Config
+
+ def cb(event, msg):
+ print msg['current.logger.interval']
+ #print msg['current.fcp.persistentDownloadsInterval']
+
+ c.setDebugVerbosity(c.consts.DebugVerbosity.Warning)
+
+ c.events.ConfigData += cb
+ #c.modifyConfig({'fcp.persistentDownloadsInterval': '3000000h'})
+
+ c.modifyConfig({'logger.interval': '1'})
+
+ for i in xrange(10):
+ c.next()
+
+ #testModifyConfig()
+
+
+
def testNodeData():
def cb(event, msg):
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|