SF.net SVN: fclient: [229] trunk/sandbox/fcp/fcp2_0_client.py
Status: Pre-Alpha
Brought to you by:
jurner
|
From: <ju...@us...> - 2008-02-18 13:30:12
|
Revision: 229
http://fclient.svn.sourceforge.net/fclient/?rev=229&view=rev
Author: jurner
Date: 2008-02-18 05:30:13 -0800 (Mon, 18 Feb 2008)
Log Message:
-----------
added aome more loggers
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-18 13:28:30 UTC (rev 228)
+++ trunk/sandbox/fcp/fcp2_0_client.py 2008-02-18 13:30:13 UTC (rev 229)
@@ -301,13 +301,16 @@
self._ddaTests = [] # currently running DDA tests (request0, ... requestN)
self._requests = {} # currently running requests (requestIdentifier --> request)
- self._log = logging.getLogger(consts.LoggerNames.Client)
+ self._logEvent = logging.getLogger(consts.LoggerNames.ClientEvents)
+ self._logMessage = logging.getLogger(consts.LoggerNames.ClientMessages)
+ self._logRuntime = logging.getLogger(consts.LoggerNames.ClientRuntime)
+
self._nodeHelloMessage = None
self._socket = None
-
+
self.events = Events()
for event in self.events:
- event += self._logEvent
+ event += self._captureEvent
self.setDebugVerbosity(consts.DebugVerbosity.Warning if debugVerbosity is None else debugVerbosity)
atexit.register(self.close)
@@ -322,7 +325,7 @@
"""Closes the client
@param msg: message to pass to the ClientDisconnected event or None to not inform listeners
"""
- self._log.info(consts.LogMessages.ClientClose)
+ self._logRuntime.info(consts.LogMessages.ClientClose)
# clean left over DDA test tmp files
for initialRequest in self._ddaTests:
@@ -471,9 +474,9 @@
self._requests[identifier] = msg
- def _logEvent(self, event, request):
+ def _captureEvent(self, event, request):
if event != self.events.Idle:
- self._log.debug(consts.LogMessages.EventTriggered + event.name)
+ self._logEvent.debug(consts.LogMessages.EventTriggered + event.name)
###############################################################
##
@@ -523,7 +526,7 @@
@event: ClientConnected(event, message) is triggered as soon as the client is connected
"""
- self._log.info(consts.LogMessages.Connecting)
+ self._logRuntime.info(consts.LogMessages.Connecting)
# try to Connect socket
if self._socket is not None:
@@ -543,7 +546,7 @@
except socket.error, d:
yield None
else:
- self._log.info(consts.LogMessages.Connected)
+ self._logRuntime.info(consts.LogMessages.Connected)
# send ClientHello and wait for NodeHello
#NOTE: thought I could leave ClientHelloing up to the caller
@@ -564,7 +567,7 @@
elif msg.name == consts.Message.NodeHello:
self._nodeHelloMessage = msg
- self._log.debug(consts.LogMessages.MessageReceived + msg.pprint())
+ self._logMessage.debug(consts.LogMessages.MessageReceived + msg.pprint())
# check if version is ok
if self.versionCheckNodeHello(msg):
self.events.ClientConnected(msg)
@@ -579,16 +582,16 @@
raise StopIteration
else:
- self._log.debug(consts.LogMessages.MessageReceived + msg.pprint())
+ self._logMessage.debug(consts.LogMessages.MessageReceived + msg.pprint())
break
break
# continue polling
- self._log.info(consts.LogMessages.ConnectionRetry)
+ self._logRuntime.info(consts.LogMessages.ConnectionRetry)
timeElapsed += timeout
time.sleep(timeout)
- self._log.info(consts.LogMessages.ConnectingFailed)
+ self._logRuntime.info(consts.LogMessages.ConnectingFailed)
disconnectMsg = self.Message(
consts.Message.ClientDisconnected,
DisconnectReason=consts.DisconnectReason.ConnectingFailed,
@@ -604,7 +607,7 @@
"""
return self._connectionName
-
+
def setConnectionName(self, connectionName=None):
"""Sets the connection name to be used by the client
@param connectionName: (str) connection name or None to use an arbitrary connection name
@@ -618,7 +621,7 @@
"""Sets the verbosity level of the client
@note: see L{consts.DebugVerbosity}
"""
- self._log.setLevel(debugVerbosity)
+ self._logMessage.setLevel(debugVerbosity)
def startFreenet(self, cmdline):
@@ -663,7 +666,7 @@
if msg.name == consts.Message.ClientSocketTimeout:
return True
- self._log.debug(consts.LogMessages.MessageReceived + msg.pprint())
+ self._logMessage.debug(consts.LogMessages.MessageReceived + msg.pprint())
# check if we have an initial request corrosponding to msg
requestIdentifier = msg.get('Identifier', None)
@@ -1253,7 +1256,7 @@
"""
msg = self.Message.fromSocket(self._socket)
if msg.name == consts.Message.ClientSocketDied:
- self._log.critical(consts.LogMessages.SocketDied)
+ self._logRuntime.critical(consts.LogMessages.SocketDied)
if dispatch:
disconnectMsg = self.Message(
consts.Message.ClientDisconnected,
@@ -1290,13 +1293,13 @@
break
if not haveRunningRequests:
- self._log.info(consts.LogMessages.AllRequestsCompleted)
+ self._logRuntime.info(consts.LogMessages.AllRequestsCompleted)
break
try:
msg = self.next()
except KeyboardInterrupt:
- self._log.info(consts.LogMessages.KeyboardInterrupt)
+ self._logRuntime.info(consts.LogMessages.KeyboardInterrupt)
break
if msg.name == consts.Message.ClientSocketDied:
@@ -1330,11 +1333,11 @@
@note: you can use this method to send a message to the node, bypassing all
track keeping methods of the client
"""
- self._log.debug(consts.LogMessages.MessageSend + msg.pprint())
+ self._logMessage.debug(consts.LogMessages.MessageSend + msg.pprint())
try:
msg.send(self._socket)
except socket.error, d:
- self._log.critical(consts.LogMessages.SocketDied)
+ self._logRuntime.critical(consts.LogMessages.SocketDied)
disconnectMsg = self.Message(
consts.Message.ClientDisconnected,
DisconnectReason=consts.DisconnectReason.SocketDied,
@@ -1642,6 +1645,41 @@
self.sendMessageEx(msg)
return msg['Identifier']
+
+ def putRedirect(self,
+ name,
+ targetURI,
+
+ maxRetries=None,
+ persistence=consts.Persistence.Connection,
+ priorityClass=consts.Priority.Medium,
+
+ userData=None,
+ persistentUserData='',
+ ):
+ """Uploads a redirect
+ @param name: name of the redirect
+ @param targetURI: (str) uri to redirect to
+ @return: (str) request identifier
+ """
+ msg = self.Message(
+ consts.Message.ClientPut,
+ URI=consts.KeyType.KSK + name,
+ Persistence=persistence,
+ PriorityClass=priorityClass,
+ TargetURI=targetURI,
+ UploadFrom=consts.UploadFrom.Redirect,
+ )
+ self._registerRequest(
+ msg,
+ consts.RequestType.PutRedirect,
+ persistentUserData=persistentUserData,
+ userData=userData,
+ )
+ self.sendMessageEx(msg)
+ return msg['Identifier']
+
+
########################################################
##
## CHK ClientPut related methods
@@ -1678,9 +1716,9 @@
**messageParams
):
- if requestType in (consts.Message.ClientPutData, consts.Message.ClientPutFile):
+ if requestType in (consts.RequestType.PutData, consts.RequestType.PutFile):
msgName = consts.Message.ClientPut
- elif requestType == consts.Message.ClientPutDir:
+ elif requestType == consts.RequestType.PutDir:
msgName = consts.Message.ClientPutDiskDir
else:
msgName = consts.Message.ClientPutComplexDir
@@ -1744,6 +1782,7 @@
MaxRetries=maxRetries,
DontCompress=dontCompress,
Persistence=persistence,
+ PriorityClass=priorityClass,
TargetFilename=targetFilename,
UploadFrom=consts.UploadFrom.Direct,
Verbosity=consts.Verbosity.ReportProgress | consts.Verbosity.ReportCompression,
@@ -1789,7 +1828,8 @@
MaxRetries=maxRetries,
DontCompress=dontCompress,
Persistence=persistence,
- TergetFilename=targetFilename,
+ PriorityClass=priorityClass,
+ TargetFilename=targetFilename,
UploadFrom=consts.UploadFrom.Disk,
Verbosity=consts.Verbosity.ReportProgress | consts.Verbosity.ReportCompression,
)
@@ -1831,14 +1871,14 @@
MaxRetries=maxRetries,
DontCompress=dontCompress,
Persistence=persistence,
- TergetFilename=targetFilename,
+ PriorityClass=priorityClass,
+ TargetFilename=targetFilename,
UploadFrom=consts.UploadFrom.Disk,
Verbosity=consts.Verbosity.ReportProgress | consts.Verbosity.ReportCompression,
)
def chkPutMultiple(self,
- directory,
items,
allowUnreadableFiles=False,
@@ -1854,8 +1894,14 @@
persistentUserData='',
):
- """
+ """Uploads multiple items at once
+
+ @param items:
+
@param TargetFilename: (str) filename to append to the CHK key or None (may not contain slashes)
+
+
+
"""
return self.clientPut(
@@ -1880,7 +1926,8 @@
MaxRetries=maxRetries,
DontCompress=dontCompress,
Persistence=persistence,
- TergetFilename=targetFilename,
+ PriorityClass=priorityClass,
+ TargetFilename=targetFilename,
UploadFrom=consts.UploadFrom.Disk,
Verbosity=consts.Verbosity.ReportProgress | consts.Verbosity.ReportCompression,
)
@@ -1924,9 +1971,9 @@
):
return self.clientPut(
+ consts.RequestType.PutData,
insertURI,
#insertURI + 'foo/0/',
- consts.RequestType.Put,
userData,
persistentUserData,
data,
@@ -2279,10 +2326,12 @@
connectionName='test',
debugVerbosity=consts.DebugVerbosity.Debug
)
- #log = c.getLogger()
+
fpath = os.path.join(Dir, 'test.log')
handler = logging.FileHandler(fpath, 'w')
- logging.getLogger('').addHandler(handler)
+ #formatter = logging.Formatter('%(name)s:%(levelname)s:%(funcName)s:%(message)s')
+ #handler.setFormatter(formatter)
+ logging.getLogger('Fcp.Client').addHandler(handler)
nodeHello = c.connect()
@@ -2380,9 +2429,62 @@
#testGetKeyInfo()
+ def testPutRedirect():
+
+
+
+
+ def cb(event, msg):
+ if event == c.events.RequestCompleted:
+
+ identifier = c.putRedirect(
+ 'HaHaHa',
+ msg['URI']
+ )
+
+ pass
+ #c.sendMessage(c.consts.Message.GetRequestStatus, Identifier=identifier)
+ #print msg['FcErrorMessage']
+
+
+ c.events.RequestCompleted += cb
+ c.events.RequestFailed += cb
+
+ #c.chkPutData('HaHaHaHa')
+
+ #identifier = c.putRedirect(
+ # 'foo',
+ # 'USK@zQyF2O1o8B4y40w7Twz8y2I9haW3d2DTlxjTHPu7zc8,h2mhQNNE9aQvF~2yKAmKV1uorr7141-QOroBf5hrlbw,AQACAAE/AnotherIndex/0/',
+ #'foo/bar'
+ #persistence=c.consts.Persistence.Reboot,
+ # )
+
+ #c.sendMessage(
+ # consts.Message.ClientPut,
+ # Identifier='blah',
+ # URI='KSK@foo',
+ # TargetURI='USK@zQyF2O1o8B4y40w7Twz8y2I9haW3d2DTlxjTHPu7zc8,h2mhQNNE9aQvF~2yKAmKV1uorr7141-QOroBf5hrlbw,AQACAAE/AnotherIndex/0/',
+ # UploadFrom='redirect',
+ # )
+
+ c.chkPutData('arggggggggg!')
+
+ #for i in xrange(55):
+ # c.next()
+ #c.removeRequest(identifier)
+ #for i in xrange(5):
+ # c.next()
+ c.run()
+
+ #testPutRedirect()
+
+
+
+
+
def testChkPutData():
myIdentifier = c.chkPutData(
- 'test123',
+ 'test123hahaha',
#persistence=c.Persistence.Reboot,
)
@@ -2394,11 +2496,9 @@
# c.next()
#testChkPutData()
-
-
def testChkPutFile():
fpath = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'test.jpg')
@@ -2421,9 +2521,9 @@
myIdentifier = c.uskPutData(
'foo',
insertURI + 'foo/0/',
- persistence=consts.Persistence.Reboot,
+ #persistence=consts.Persistence.Reboot,
)
- c.removeRequest(myIdentifier)
+ #c.removeRequest(myIdentifier)
c.events.KeypairGenerated += cb
c.generateKeypair(keypairType=consts.KeyType.USK)
@@ -2432,10 +2532,10 @@
#'foo1',
#'USK@dkbB9DSr6R2WWs0MFsB9BJvN2cRjNxSboanDQNMJVNc,uIi9-1JrCLZ~6MLa8UrxQCMLptu~PzL59hAtorUIStw,AQECAAE/foo/0/',
#)
- #c.run()
+ c.run()
- for i in xrange(700):
- c.next()
+ #for i in xrange(700):
+ # c.next()
#testUskPutData()
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|