SF.net SVN: fclient: [335] trunk/sandbox/fcp2/message.py
Status: Pre-Alpha
Brought to you by:
jurner
|
From: <jU...@us...> - 2008-03-08 11:05:17
|
Revision: 335
http://fclient.svn.sourceforge.net/fclient/?rev=335&view=rev
Author: jUrner
Date: 2008-03-08 03:05:00 -0800 (Sat, 08 Mar 2008)
Log Message:
-----------
moved all message related stuff to message.py
All messages are defined here now
Modified Paths:
--------------
trunk/sandbox/fcp2/message.py
Modified: trunk/sandbox/fcp2/message.py
===================================================================
--- trunk/sandbox/fcp2/message.py 2008-03-07 09:55:12 UTC (rev 334)
+++ trunk/sandbox/fcp2/message.py 2008-03-08 11:05:00 UTC (rev 335)
@@ -23,13 +23,28 @@
#********************************************************************************
#
#********************************************************************************
-class PrivateParamName(str):
- """Helper class to mark a message parameter as private to the package"""
+class PrivateParam(str):
+ """Helper class to mark a message parameter as PrivateParam to the package"""
#********************************************************************************
#
#********************************************************************************
-class Message(object):
+MessagesAll = {}
+
+class MessageMeta(type):
+
+ def __new__(klass, name, bases, kws):
+ newClass = type.__new__(klass, name, bases, kws)
+ msgName = kws['name']
+ if msgName in MessagesAll:
+ raise ValueError('A message of that type already exists: ' + msgName)
+ MessagesAll[msgName] = newClass
+ return newClass
+
+#********************************************************************************
+#
+#********************************************************************************
+class MessageBase(object):
"""Class wrapping a Fcp message
Sample use::
@@ -49,27 +64,33 @@
@ivar name: (str) message name
@ivar params: (dict) message params
"""
-
+ __metaclass__ = MessageMeta
+
+ name = ''
+ _additional_params_ = {}
+ _param_types_ = {}
+
+
@classmethod
- def privateParamName(klass, name):
- """Returns a message param name that is marked as being private to the package
- @return: (L{PrivateParamName])
- """
- return PrivateParamName(name)
+ def __eq__(klass, other):
+ return klass.name == other.name
+ @classmethod
+ def __ne__(klass, other):
+ return klass.name != other.name
- def __init__(self, name, data=None, **params):
+
+ def __init__(self, data=None, **params):
"""
- @param name: messge name
@param data: data associated to the message
@param params: {field-name: value, ...} of parameters of the message
- @note: all params can be accessed as attributes of the class
"""
+ params.update(self._additional_params_.copy())
+
self.data = data
- self.name = name
self.params = params
+
-
def get(self, name, default=None):
"""Returns the message parameter 'name' or 'default' """
return self.params.get(name, default)
@@ -88,18 +109,9 @@
def pprint(self):
"""Returns the message as nicely formated human readable string"""
out = ['', '>>' + self.name, ]
- paramTypes = types.MessageParamTypes.get(self.name, None)
-
for param, value in self.params.items():
- if isinstance(param, PrivateParamName):
+ if isinstance(param, PrivateParam):
continue
-
- # convert python to fcp value if necessary
- #if paramTypes is not None:
- # paramType = paramTypes.get(param, None)
- # if paramType is not None:
- # value = paramType.pythonToFcp(value)
-
out.append('>> %s=%s' % (param, value))
if self.data is None:
@@ -113,17 +125,14 @@
def toString(self):
"""Returns the message as formated string ready to be send"""
out = [self.name, ]
- paramTypes = types.MessageParamTypes.get(self.name, None)
-
for param, value in self.params.items():
- if isinstance(param, PrivateParamName):
+ if isinstance(param, PrivateParam):
continue
# convert python to fcp value if necessary
- if paramTypes is not None:
- paramType = paramTypes.get(param, None)
- if paramType is not None:
- value = paramType.pythonToFcp(value)
+ paramType = self._param_types_.get(param, None)
+ if paramType is not None:
+ value = paramType.pythonToFcp(value)
out.append('%s=%s' % (param, value))
@@ -135,4 +144,1023 @@
return '\n'.join(out)
+#***************************************************************************************
+#
+# param types for config message
+#
+# ..bit more efford here, cos we need types for user input checking
+# ...a slpoppy implementation of a dict should be enough
+#
+#***************************************************************************************
+class _ConfigMessageParamTypes(object):
+ """Parameter --> FcpType mapping for config related messages
+
+ @note: we use this instead of _param_types_ dict to handle param classes
+ in L{ConfigData} and L{ModifyConfig}
+ """
+
+
+
+ # all known config keys (param class stripped)
+ Params = {
+
+ 'console.allowedHosts': types.FcpTypeIPList, # host names, single IPs CIDR-maskip IPs likee 192.168.0.0/24
+ 'console.bindTo': types.FcpTypeIPList,
+ 'console.directEnabled': types.FcpTypeBool,
+ 'console.enabled': types.FcpTypeBool,
+ 'console.port': types.FcpTypeIPort,
+ 'console.ssl': types.FcpTypeBool,
+
+ 'fcp.allowedHosts': types.FcpTypeIPList,
+ 'fcp.allowedHostsFullAccess': types.FcpTypeIPList,
+ 'fcp.assumeDownloadDDAIsAllowed': types.FcpTypeBool,
+ 'fcp.assumeUploadDDAIsAllowed': types.FcpTypeBool,
+ 'fcp.bindTo': types.FcpTypeIP,
+ 'fcp.enabled': types.FcpTypeBool,
+ 'fcp.persistentDownloadsEnabled': types.FcpTypeBool,
+ 'fcp.persistentDownloadsFile': types.FcpTypeFilename,
+ 'fcp.persistentDownloadsInterval': types.FcpTypeTimeDelta,
+ 'fcp.port': types.FcpTypeIPort,
+ 'fcp.ssl': types.FcpTypeBool,
+
+ 'fproxy.CSSOverride': types.FcpTypeBool,
+ 'fproxy.advancedModeEnabled': types.FcpTypeBool,
+ 'fproxy.allowedHosts': types.FcpTypeIPList,
+ 'fproxy.allowedHostsFullAccess': types.FcpTypeIPList,
+ 'fproxy.bindTo': types.FcpTypeIPList,
+ 'fproxy.css': types.FcpTypeChoiceFProxyCss,
+ 'fproxy.doRobots': types.FcpTypeBool,
+ 'fproxy.enabled': types.FcpTypeBool,
+ 'fproxy.javascriptEnabled': types.FcpTypeBool,
+ 'fproxy.port': types.FcpTypeIPort,
+ 'fproxy.showPanicButton': types.FcpTypeBool,
+ 'fproxy.ssl': types.FcpTypeBool,
+
+ 'logger.dirname': types.FcpTypeDirname,
+ 'logger.enabled': types.FcpTypeBool,
+ 'logger.interval': types.FcpTypeTimeDelta,
+ 'logger.maxCachedBytes': types.FcpTypeByteAmount,
+ 'logger.maxCachedLines': types.FcpTypeByteAmount, # ???
+ 'logger.maxZippedLogsSize': types.FcpTypeByteAmount, # ???
+ 'logger.priority': types.FcpTypeChoiceLoggerPriority,
+ 'logger.priorityDetail': types.FcpType, # ???? is it Detailed priority thresholds ???
+
+ 'node.alwaysAllowLocalAddresses': types.FcpTypeBool,
+ 'node.assumeNATed': types.FcpTypeBool,
+ 'node.bindTo': types.FcpTypeIP,
+ 'node.clientThrottleFile': types.FcpTypeFilename,
+ 'node.databaseMaxMemory': types.FcpTypeByteAmount,
+ 'node.disableHangCheckers': types.FcpTypeBool,
+ 'node.disableProbabilisticHTLs': types.FcpTypeBool,
+ 'node.downloadAllowedDirs': types.FcpTypeChoiceNodeDownloadAllowedDirs,
+ 'node.downloadsDir': types.FcpTypeDirname,
+ 'node.enableARKs': types.FcpTypeBool,
+ 'node.enablePacketCoalescing': types.FcpTypeBool,
+ 'node.enablePerNodeFailureTables': types.FcpTypeBool,
+ 'node.enableSwapping': types.FcpTypeBool,
+ 'node.enableSwapQueueing': types.FcpTypeBool,
+ 'node.enableULPRDataPropagation': types.FcpTypeBool,
+ 'node.extraPeerDataDir': types.FcpTypeDirname,
+ 'node.includeLocalAddressesInNoderefs': types.FcpTypeBool,
+ 'node.inputBandwidthLimit': types.FcpTypeByteAmount, # -1 is possible as value aswell
+ 'node.ipAddressOverride': types.FcpTypeIP,
+ 'node.l10n': types.FcpType, # ???
+ 'node.lazyResume': types.FcpTypeBool,
+ 'node.listenPort': types.FcpTypeIPort,
+ 'node.maxBackgroundUSKFetchers': types.FcpTypeIntWithBounds(0, None),
+ 'node.maxHTL': types.FcpTypeIntWithBounds(0, None),
+ 'node.name': types.FcpTypeString,
+ 'node.nodeDir': types.FcpTypeDirname,
+ 'node.oneConnectionPerIP': types.FcpTypeBool,
+ 'node.outputBandwidthLimit': types.FcpTypeByteAmount,
+ 'node.passOpennetPeersThroughDarknet': types.FcpTypeBool,
+ 'node.persistentTempDir': types.FcpTypeDirname,
+ 'node.storeDir': types.FcpTypeDirname,
+ 'node.storeForceBigShrinks': types.FcpTypeBool,
+ 'node.storeSize': types.FcpTypeByteAmount,
+ 'node.storeType': types.FcpTypeString,
+ 'node.tempDir': types.FcpTypeDirname,
+ 'node.tempIPAddressHint': types.FcpTypeIP, # ???
+ 'node.testingDropPacketsEvery': types.FcpTypeIntWithBounds(0, None),
+ 'node.uploadAllowedDirs': types.FcpTypeChoiceNodeDownloadAllowedDirs,
+
+ 'node.testnet.enabled': types.FcpTypeBool,
+
+ 'node.load.aggressiveGC': types.FcpType, # ???
+ 'node.load.freeHeapBytesThreshold': types.FcpTypeByteAmount,
+ 'node.load.freeHeapPercentThreshold': types.FcpTypePercent,
+ 'node.load.memoryChecker': types.FcpTypeBool,
+ 'node.load.nodeThrottleFile': types.FcpTypeFilename,
+ 'node.load.threadLimit': types.FcpTypeIntWithBounds(0, None),
+
+ 'node.opennet.acceptSeedConnections': types.FcpTypeBool,
+ 'node.opennet.alwaysAllowLocalAddresses': types.FcpTypeBool,
+ 'node.opennet.assumeNATed': types.FcpTypeBool,
+ 'node.opennet.bindTo': types.FcpTypeIP,
+ 'node.opennet.enabled': types.FcpTypeBool,
+ 'node.opennet.listenPort': types.FcpTypeIPort,
+ 'node.opennet.maxOpennetPeers': types.FcpTypeIntWithBounds(0, None),
+ 'node.opennet.oneConnectionPerIP': types.FcpTypeBool,
+ 'node.opennet.testingDropPacketsEvery': types.FcpTypeIntWithBounds(0, None),
+
+ 'node.scheduler.CHKinserter_priority_policy': types.FcpTypeChoicePriorityPolicy,
+ 'node.scheduler.CHKrequester_priority_policy': types.FcpTypeChoicePriorityPolicy,
+ 'node.scheduler.SSKinserter_priority_policy': types.FcpTypeChoicePriorityPolicy,
+ 'node.scheduler.SSKrequester_priority_policy': types.FcpTypeChoicePriorityPolicy,
+
+ 'node.updater.URI': types.FcpTypeUri,
+ 'node.updater.autoupdate': types.FcpTypeBool,
+ 'node.updater.enabled': types.FcpTypeBool,
+ 'node.updater.extURI': types.FcpTypeUri,
+ 'node.updater.revocationURI': types.FcpTypeUri,
+
+ 'pluginmanager.loadplugin': types.FcpTypeStringList,
+ 'pluginmanager2.loadedPlugins': types.FcpTypeStringList,
+
+ 'ssl.sslEnable': types.FcpTypeBool,
+ 'ssl.sslKeyPass': types.FcpTypeString,
+ 'ssl.sslKeyStore': types.FcpTypeFilename,
+ 'ssl.sslKeyStorePass': types.FcpTypeString,
+ 'ssl.sslVersion': types.FcpTypeChoiceSSLVersion,
+
+ 'toadletsymlinker.symlinks': types.FcpTypeStringList,
+ }
+ def __init__(self):
+ pass
+
+ def splitAll(self, paramName):
+ """Splits a parameter name into its components
+ @param paramName: (str) parameter name to split
+ @return: (list) components
+ """
+ return paramName.split(consts.ConfigKeySep)
+
+
+ def splitParamClass(self, paramName):
+ """Splits the parameter class from a parameter name
+ @param paramName: (str) parameter name to split
+ @return: (tuple) paramClass, tail
+ """
+ result = paramName.split(consts.ConfigKeySep, 1)
+ if len(result) == 2:
+ if result[0] in consts.ConfigValueClass.ClassesAll:
+ return result
+ return '', paramName
+
+
+ def get(self, paramName, default=None):
+ """Returns the type of a parameter or default
+ @param paramName: (str) name of the parameter to retuen the type for
+ @return: (FcpType)
+ """
+ try:
+ return self[paramName]
+ except KeyError:
+ return default
+
+
+ def __getitem__(self, paramName):
+ """Returns the type of a parameter
+ @param paramName: (str) name of the parameter to retuen the type for
+ @return: (FcpType)
+ """
+ paramClass, paramKey = self.splitParamClass(paramName)
+ if paramClass == consts.ConfigValueClass.Current or paramClass == '':
+ return self.Params[paramKey]
+ elif paramClass == consts.ConfigValueClass.Default:
+ return self.Params[paramKey]
+ elif paramClass == consts.ConfigValueClass.ExpertFlag:
+ return types.FcpTypeBool
+ elif paramClass == consts.ConfigValueClass.ForceWriteFlag:
+ return types.FcpTypeBool
+ elif paramClass == consts.ConfigValueClass.ShortDescription:
+ return types.FcpTypeString
+ elif paramClass == consts.ConfigValueClass.LongDescription:
+ return types.FcpTypeString
+ elif paramClass == consts.ConfigValueClass.SortOrder:
+ return types.FcpTypeInt
+ elif paramClass == consts.ConfigValueClass.DataType:
+ return types.FcpTypeString
+ else:
+ raise ValueError('Unknown param class in: %r' % paramName)
+
+ConfigMessageParamTypes = _ConfigMessageParamTypes()
+#********************************************************************************
+#
+#********************************************************************************
+PeerMessageParamTypes = {
+ 'ark.number': types.FcpTypeInt,
+ 'auth.negTypes': types.FcpTypeInt,
+
+ 'location': types.FcpTypeFloat,
+ 'opennet': types.FcpTypeBool,
+ 'testnet': types.FcpTypeBool,
+
+ 'metadata.timeLastConnected': types.FcpTypeTime,
+ 'metadata.timeLastReceivedPacket': types.FcpTypeTime,
+ 'metadata.timeLastRoutable': types.FcpTypeTime,
+ 'metadata.timeLastSuccess': types.FcpTypeTime,
+ 'metadata.routableConnectionCheckCount': types.FcpTypeInt,
+ 'metadata.hadRoutableConnectionCount': types.FcpTypeInt,
+
+ 'volatile.averagePingTime': types.FcpTypeFloat,
+ 'volatile.overloadProbability': types.FcpTypePercent,
+ 'volatile.routingBackoff': types.FcpTypeInt,
+ 'volatile.routingBackoffPercent': types.FcpTypePercent,
+ 'volatile.totalBytesIn': types.FcpTypeInt,
+ 'volatile.totalBytesOut': types.FcpTypeInt,
+ 'volatile.routingBackoffLength': types.FcpTypeInt,
+ }
+
+'''all other Peer message params here....
+
+>> identity=YIrE..................
+>> lastGoodVersion=Fred,0.7,1.0,1106
+>> physical.udp=00.000.000.000:00000
+>> version=Fred,0.7,1.0,1107
+>> dsaGroup.q=ALFDN...............
+>> dsaGroup.p=AIYIrE..................
+>> dsaPubKey.y=YSlb............
+>> dsaGroup.g=UaRa...............
+>> ark.pubURI=SSK@......................
+>>
+>> metadata.detected.udp=000.000.000.000:00000
+
+>> volatile.lastRoutingBackoffReason=ForwardRejectedOverload
+>> volatile.percentTimeRoutableConnection=99.4735.................
+>> volatile.status=CONNECTED
+
+'''
+
+
+AdditionalGetParams = {
+
+ # persistent params that will go into identifier
+ PrivateParam('RequestType'): consts.RequestType.Null, # identifies sub message types
+ PrivateParam('InitTime'): 0, # when was the request started?
+ PrivateParam('FilenameCollision'): consts.FilenameCollision.HandleNever, # handle fielanem collisions?
+ PrivateParam('PersistentUserData'): '', # any user defined persistent data
+
+ # non persistent params
+ PrivateParam('RequestStatus'): consts.RequestStatus.Null,
+ PrivateParam('ErrorMessage'): None, # error message in case an error occured
+ PrivateParam('UserData'): None, # any user defined runtime data here
+
+ # params for SSKKeypair
+ PrivateParam('PrivateParamKey'): None,
+ PrivateParam('PublicKey'): None,
+
+ # params from DataFound
+ PrivateParam('MetadataContentType'): '', # contecnt type
+ PrivateParam('MetadataSize'): 0, # content size
+
+ # params from PersistentRequestModified
+ PrivateParam('Modified'): {},
+
+ # params for DDA test
+ PrivateParam('TestDDA'): {},
+
+ # params for SimpleProgress
+ PrivateParam('ProgressTotal'): 0,
+ PrivateParam('ProgressRequired'): 0,
+ PrivateParam('ProgressFailed'): 0,
+ PrivateParam('ProgressFatalyFailed'): 0,
+ PrivateParam('ProgressSucceeeded'): 0,
+ }
+
+
+AdditionalPutParams = {
+
+ # persistent params that will go into identifier
+ PrivateParam('RequestType'): consts.RequestType.Null, # identifies sub message types
+ PrivateParam('InitTime'): 0, # when was the request started?
+
+ #TODO: not really necessary, but we need it for persistent params
+ PrivateParam('FilenameCollision'): consts.FilenameCollision.HandleNever,
+ PrivateParam('PersistentUserData'): '', # any user defined persistent data
+
+ # non persistent params
+ PrivateParam('RequestStatus'): consts.RequestStatus.Null,
+ PrivateParam('ErrorMessage'): None, # error message in case an error occured
+ PrivateParam('UserData'): None, # any user defined runtime data here
+
+ # params for SSKKeypair
+ PrivateParam('PrivateParamKey'): None,
+ PrivateParam('PublicKey'): None,
+
+ # params from DataFound
+ PrivateParam('MetadataContentType'): '', # contecnt type
+ PrivateParam('MetadataSize'): 0, # content size
+
+ # params from PersistentRequestModified
+ PrivateParam('Modified'): {},
+
+ # params for DDA test
+ PrivateParam('TestDDA'): {},
+
+ # params for SimpleProgress
+ PrivateParam('ProgressTotal'): 0,
+ PrivateParam('ProgressRequired'): 0,
+ PrivateParam('ProgressFailed'): 0,
+ PrivateParam('ProgressFatalyFailed'): 0,
+ PrivateParam('ProgressSucceeeded'): 0,
+ }
+
+AdditionalGenerateSSKParams = {
+ PrivateParam('RequestType'): consts.RequestType.Null, # identifies sub message types
+ PrivateParam('RequestStatus'): consts.RequestStatus.Null,
+ PrivateParam('InitTime'): 0, # when was the request started?
+ PrivateParam('PrivateKey'): None,
+ PrivateParam('PublicKey'): None,
+ }
+
+AdditionalSubscribeUSKParams = {
+ PrivateParam('RequestType'): consts.RequestType.Null, # identifies sub message types
+ PrivateParam('RequestStatus'): consts.RequestStatus.Null,
+ PrivateParam('InitTime'): 0, # when was the request started?
+ PrivateParam('UserData'): None,
+ }
+
+AdditionalPluginInfoParams = {
+ PrivateParam('RequestType'): consts.RequestType.Null, # identifies sub message types
+ PrivateParam('RequestStatus'): consts.RequestStatus.Null,
+ PrivateParam('InitTime'): 0, # when was the request started?
+ }
+
+#********************************************************************************
+#
+#********************************************************************************
+#TODO: register new message type?
+def newMessageType(name, paramTypes=None, additionalParams=None):
+ kws = {
+ 'name': name,
+ '_additional_params_': additionalParams if additionalParams is not None else {},
+ '_param_types_': paramTypes if paramTypes is not None else {},
+ }
+ return type(name, (MessageBase, ), kws)
+
+#********************************************************************************
+# some additional messages we define for uniformity
+#********************************************************************************
+class ClientDisconnected(MessageBase):
+ name = consts.Message.ClientDisconnected
+ _additional_params_ = {}
+ _param_types_ = {
+ 'DisconnectReason': types.FcpTypeInt,
+ }
+
+class ClientSocketDied(MessageBase):
+ name = consts.Message.ClientSocketDied
+ _additional_params_ = {}
+ _param_types_ = {
+ }
+
+
+class ClientSocketTimeout(MessageBase):
+ name = consts.Message.ClientSocketTimeout
+ _additional_params_ = {}
+ _param_types_ = {
+ }
+
+#********************************************************************************
+#
+#********************************************************************************
+class AddPeer(MessageBase):
+ name = consts.Message.AddPeer
+ _additional_params_ = {}
+ _param_types_ = PeerMessageParamTypes
+
+
+class AllData(MessageBase):
+ name = consts.Message.AllData
+ _additional_params_ = {}
+ _param_types_ = {
+ 'DataLength': types.FcpTypeInt,
+ 'Global': types.FcpTypeBool,
+ }
+
+
+class ClientGet(MessageBase):
+ name = consts.Message.ClientGet
+ _additional_params_ = AdditionalGetParams
+ _param_types_ = {
+ 'BinaryBlob': types.FcpTypeBool,
+ 'DSOnly': types.FcpTypeBool,
+ 'Global': types.FcpTypeBool,
+ 'IgnoreDS': types.FcpTypeBool,
+ 'MaxRetries': types.FcpTypeInt,
+ 'MaxSize': types.FcpTypeInt,
+ 'MaxTempSize': types.FcpTypeInt,
+ 'Verbosity': types.FcpTypeInt,
+ }
+
+
+class ClientHello(MessageBase):
+ name = consts.Message.ClientHello
+ _additional_params_ = {}
+ _param_types_ = {
+ 'ExpectedVersion': types.FcpTypeFloat,
+ }
+
+
+class ClientPut(MessageBase):
+ name = consts.Message.ClientPut
+ _additional_params_ = AdditionalPutParams
+ _param_types_ = {
+ 'BinaryBlob': types.FcpTypeBool,
+ 'DataLength': types.FcpTypeInt,
+ 'DontCompress': types.FcpTypeBool,
+ 'EarlyEncode': types.FcpTypeBool,
+ 'GetCHKOnly': types.FcpTypeBool,
+ 'Global': types.FcpTypeBool,
+ 'MaxRetries': types.FcpTypeInt,
+ 'Verbosity': types.FcpTypeInt,
+ }
+
+
+class ClientPutComplexDir(MessageBase):
+ name = consts.Message.ClientPutComplexDir
+ _additional_params_ = AdditionalGetParams
+ _param_types_ = {
+ 'BinaryBlob': types.FcpTypeBool,
+ 'DontCompress': types.FcpTypeBool,
+ 'EarlyEncode': types.FcpTypeBool,
+ 'GetCHKOnly': types.FcpTypeBool,
+ 'Global': types.FcpTypeBool,
+ 'MaxRetries': types.FcpTypeInt,
+ 'Verbosity': types.FcpTypeInt,
+ }
+
+
+class ClientPutDiskDir(MessageBase):
+ name = consts.Message.ClientPutDiskDir
+ _additional_params_ = AdditionalGetParams
+ _param_types_ = {
+ 'BinaryBlob': types.FcpTypeBool,
+ 'DontCompress': types.FcpTypeBool,
+ 'EarlyEncode': types.FcpTypeBool,
+ 'GetCHKOnly': types.FcpTypeBool,
+ 'Global': types.FcpTypeBool,
+ 'MaxRetries': types.FcpTypeInt,
+ 'Verbosity': types.FcpTypeInt,
+ }
+
+
+class CloseConnectionDuplicateClientName(MessageBase):
+ name = consts.Message.CloseConnectionDuplicateClientName
+ _additional_params_ = {}
+ _param_types_ = {
+ }
+
+#########################################
+#########################################
+class ConfigData(MessageBase):
+ name = consts.Message.ConfigData
+ _additional_params_ = {}
+ _param_types_ = ConfigMessageParamTypes
+
+
+class DataFound(MessageBase):
+ name = consts.Message.DataFound
+ _additional_params_ = {}
+ _param_types_ = {
+ 'DataLength': types.FcpTypeInt,
+ 'Global': types.FcpTypeBool,
+ }
+
+
+class EndListPeerNotes(MessageBase):
+ name = consts.Message.EndListPeerNotes
+ _additional_params_ = {}
+ _param_types_ = {
+ }
+
+
+class EndListPeers(MessageBase):
+ name = consts.Message.EndListPeers
+ _additional_params_ = {}
+ _param_types_ = {
+ }
+
+
+class EndListPersistentRequests(MessageBase):
+ name = consts.Message.EndListPersistentRequests
+ _additional_params_ = {}
+ _param_types_ = {
+ }
+
+
+class FCPPluginMessage(MessageBase):
+ name = consts.Message.FCPPluginMessage
+ _additional_params_ = {}
+ _param_types_ = {
+ }
+
+
+class FCPPluginReply(MessageBase):
+ name = consts.Message.FCPPluginReply
+ _additional_params_ = {}
+ _param_types_ = {
+ 'DataLength': types.FcpTypeInt,
+ }
+
+
+class FinishedCompression(MessageBase):
+ name = consts.Message.FinishedCompression
+ _additional_params_ = {}
+ _param_types_ = {
+ 'CompressedSize': types.FcpTypeInt,
+ 'OriginalSize': types.FcpTypeInt,
+ }
+
+
+class GenerateSSK(MessageBase):
+ name = consts.Message.GenerateSSK
+ _additional_params_ = AdditionalGenerateSSKParams
+ _param_types_ = {
+ }
+
+
+class GetConfig(MessageBase):
+ name = consts.Message.GetConfig
+ _additional_params_ = {}
+ _param_types_ = {
+ 'WithCurrent': types.FcpTypeBool,
+ 'WithDefaults': types.FcpTypeBool,
+ 'WithExpertFlag': types.FcpTypeBool,
+ 'WithForceWriteFlag': types.FcpTypeBool,
+ 'WithLongDescription': types.FcpTypeBool,
+ 'WithShortDescription': types.FcpTypeBool,
+ 'WithSortOrder': types.FcpTypeBool,
+ }
+
+
+class GetFailed(MessageBase):
+ name = consts.Message.GetFailed
+ _additional_params_ = {}
+ _param_types_ = {
+ 'Code': types.FcpTypeInt,
+ 'ExpectedDataLength': types.FcpTypeInt_GetFailed_ExpectedDataLenght,
+ 'Fatal': types.FcpTypeBool,
+ 'FinalizedExpected': types.FcpTypeBool,
+ 'Global': types.FcpTypeBool,
+ }
+
+
+class GetNode(MessageBase):
+ name = consts.Message.GetNode
+ _additional_params_ = {}
+ _param_types_ = {
+ 'GiveOpennetRef': types.FcpTypeBool,
+ 'WithPrivate': types.FcpTypeBool,
+ 'WithVolatile': types.FcpTypeBool,
+ }
+
+
+class GetPluginInfo(MessageBase):
+ name = consts.Message.GetPluginInfo
+ _additional_params_ = AdditionalPluginInfoParams
+ _param_types_ = {
+ 'Started': types.FcpTypeBool,
+ }
+
+
+class GetRequestStatus(MessageBase):
+ name = consts.Message.GetRequestStatus
+ _additional_params_ = {}
+ _param_types_ = {
+ 'Global': types.FcpTypeBool,
+ 'OnlyData': types.FcpTypeBool,
+ }
+
+
+class IdentifierCollision(MessageBase):
+ name = consts.Message.IdentifierCollision
+ _additional_params_ = {}
+ _param_types_ = {
+ 'Global': types.FcpTypeBool,
+ }
+
+
+class ListPeer(MessageBase):
+ name = consts.Message.ListPeer
+ _additional_params_ = {}
+ _param_types_ = {
+ 'WithMetadata': types.FcpTypeBool,
+ 'WithVolantile': types.FcpTypeBool,
+ }
+
+
+class ListPeerNotes(MessageBase):
+ name = consts.Message.ListPeerNotes
+ _additional_params_ = {}
+ _param_types_ = {
+ }
+
+
+
+class ListPeers(MessageBase):
+ name = consts.Message.ListPeers
+ _additional_params_ = {}
+ _param_types_ = {
+ 'WithMetadata': types.FcpTypeBool,
+ 'WithVolantile': types.FcpTypeBool,
+ }
+
+
+class ListPersistentRequests(MessageBase):
+ name = consts.Message.ListPersistentRequests
+ _additional_params_ = {}
+ _param_types_ = {
+ }
+
+#####################################
+#####################################
+class ModifyConfig(MessageBase):
+ name = consts.Message.ModifyConfig
+ _additional_params_ = {}
+ _param_types_ = ConfigMessageParamTypes
+
+#####################################
+#####################################
+class ModifyPeer(MessageBase):
+ name = consts.Message.ModifyPeer
+ _additional_params_ = {}
+ _param_types_ = {
+ }
+
+
+class ModifyPeerNote(MessageBase):
+ name = consts.Message.ModifyPeerNote
+ _additional_params_ = {}
+ _param_types_ = {
+ #'Peernotetype': types.FcpTypeInt, #????
+ }
+
+
+class ModifyPersistentRequest(MessageBase):
+ name = consts.Message.ModifyPersistentRequest
+ _additional_params_ = {}
+ _param_types_ = {
+ 'Global': types.FcpTypeBool,
+ }
+
+###################################
+###################################
+class NodeData(MessageBase):
+ name = consts.Message.NodeData
+ _additional_params_ = {}
+ _param_types_ = {
+ 'ark.number': types.FcpTypeInt,
+ 'auth.negTypes': types.FcpTypeInt,
+ 'location': types.FcpTypeFloat,
+ 'opennet': types.FcpTypeBool,
+ 'testnet': types.FcpTypeBool,
+
+ 'volatile.allocatedJavaMemory': types.FcpTypeInt,
+ 'volatile.availableCPUs': types.FcpTypeInt,
+ 'volatile.averagePingTime': types.FcpTypeFloat,
+ 'volatile.avgStoreAccessRate': types.FcpTypePercent,
+ 'volatile.backedOffPercent': types.FcpTypePercent,
+ 'volatile.bwlimitDelayTime': types.FcpTypeFloat,
+ 'volatile.cacheAccess': types.FcpTypeInt,
+ 'volatile.cachedKeys': types.FcpTypeInt,
+ 'volatile.cachedSize': types.FcpTypeInt,
+ 'volatile.cachedStoreHits': types.FcpTypeInt,
+ 'volatile.cachedStoreMisses': types.FcpTypeInt,
+ 'volatile.freeJavaMemory': types.FcpTypeInt,
+ 'volatile.isUsingWrapper': types.FcpTypeBool,
+ 'volatile.locationChangePerMinute': types.FcpTypeFloat,
+ 'volatile.locationChangePerSession': types.FcpTypeFloat,
+ 'volatile.locationChangePerSwap': types.FcpTypeFloat,
+ 'volatile.maximumJavaMemory': types.FcpTypeInt,
+ 'volatile.maxOverallKeys': types.FcpTypeInt,
+ 'volatile.maxOverallSize': types.FcpTypeInt,
+ 'volatile.networkSizeEstimate24hourRecent': types.FcpTypeInt,
+ 'volatile.networkSizeEstimate48hourRecent': types.FcpTypeInt,
+ 'volatile.networkSizeEstimateSession': types.FcpTypeInt,
+ 'volatile.noSwaps': types.FcpTypeFloat,
+ 'volatile.noSwapsPerMinute': types.FcpTypeFloat,
+ 'volatile.numberOfARKFetchers': types.FcpTypeInt,
+ 'volatile.numberOfBursting': types.FcpTypeInt,
+ 'volatile.numberOfConnected': types.FcpTypeInt,
+ 'volatile.numberOfDisabled': types.FcpTypeInt,
+ 'volatile.numberOfDisconnected': types.FcpTypeInt,
+ 'volatile.numberOfInsertSenders': types.FcpTypeInt,
+ 'volatile.numberOfListening': types.FcpTypeInt,
+ 'volatile.numberOfListenOnly': types.FcpTypeInt,
+ 'volatile.numberOfNeverConnected': types.FcpTypeInt,
+ 'volatile.numberOfNotConnected': types.FcpTypeInt,
+ 'volatile.numberOfRemotePeerLocationsSeenInSwaps': types.FcpTypeFloat,
+ 'volatile.numberOfRequestSenders': types.FcpTypeInt,
+ 'volatile.numberOfRoutingBackedOff': types.FcpTypeInt,
+ 'volatile.numberOfSimpleConnected': types.FcpTypeInt,
+ 'volatile.numberOfTooNew': types.FcpTypeInt,
+ 'volatile.numberOfTooOld': types.FcpTypeInt,
+ 'volatile.numberOfTransferringRequestSenders': types.FcpTypeInt,
+ 'volatile.numberWithRoutingBackoffReasons.ForwardRejectedOverload': types.FcpTypeInt,
+ 'volatile.overallAccesses': types.FcpTypeInt,
+ 'volatile.overallKeys': types.FcpTypeInt,
+ 'volatile.overallSize': types.FcpTypeInt,
+ 'volatile.percentCachedStoreHitsOfAccesses': types.FcpTypePercent,
+ 'volatile.percentOverallKeysOfMax': types.FcpTypePercent,
+ 'volatile.percentStoreHitsOfAccesses': types.FcpTypePercent,
+ 'volatile.pInstantReject': types.FcpTypeFloat, # or percent?
+ 'volatile.recentInputRate': types.FcpTypeFloat,
+ 'volatile.recentOutputRate': types.FcpTypeFloat,
+ 'volatile.routingMissDistance': types.FcpTypeFloat,
+ 'volatile.runningThreadCount': types.FcpTypeInt,
+ 'volatile.startedSwaps': types.FcpTypeInt,
+ 'volatile.startupTime': types.FcpTypeTime,
+ 'volatile.storeAccesses': types.FcpTypeInt,
+ 'volatile.storeHits': types.FcpTypeInt,
+ 'volatile.storeKeys': types.FcpTypeInt,
+ 'volatile.storeMisses': types.FcpTypeInt,
+ 'volatile.storeSize': types.FcpTypeInt,
+ 'volatile.swaps': types.FcpTypeFloat,
+ 'volatile.swapsPerMinute': types.FcpTypeFloat,
+ 'volatile.swapsPerNoSwaps': types.FcpTypeFloat,
+ 'volatile.swapsRejectedAlreadyLocked': types.FcpTypeInt,
+ 'volatile.swapsRejectedLoop': types.FcpTypeInt,
+ 'volatile.swapsRejectedNowhereToGo': types.FcpTypeInt,
+ 'volatile.swapsRejectedRateLimit': types.FcpTypeInt,
+ 'volatile.swapsRejectedRecognizedID': types.FcpTypeInt,
+ 'volatile.totalInputBytes': types.FcpTypeInt,
+ 'volatile.totalInputRate': types.FcpTypeInt,
+ 'volatile.totalOutputBytes': types.FcpTypeInt,
+ 'volatile.totalOutputRate': types.FcpTypeInt,
+ 'volatile.totalPayloadOutputBytes': types.FcpTypeInt,
+ 'volatile.totalPayloadOutputPercent': types.FcpTypePercent,
+ 'volatile.totalPayloadOutputRate': types.FcpTypeInt,
+ 'volatile.unclaimedFIFOSize': types.FcpTypeInt,
+ 'volatile.uptimeSeconds': types.FcpTypeInt,
+ 'volatile.usedJavaMemory': types.FcpTypeInt,
+ }
+
+
+ '''
+ >>all other NodeData message params here....
+ >>
+ >> physical.udp=000.000.000.000:00000
+ >> dsaPubKey.y=GarpsNUKe.................................................
+ >> version=Fred,0.7,1.0,1107
+ >> myName=whatever
+ >> ark.pubURI=SSK@...............
+
+ >> dsaGroup.q=ALFDNoq.....
+ >> dsaGroup.p=AIYIrE9VNhM3.............
+ >> volatile.avgConnectedPeersPerNode=00.00................
+ >> dsaGroup.g=UaRa.............
+ >> dsaPrivKey.x=Pwam..................
+ >> ark.privURI=SSK@.................
+ >> lastGoodVersion=Fred,0.7,1.0,1106
+ >> sig=691f............
+ >> identity=vMQa~..................
+
+ '''
+
+class NodeHello(MessageBase):
+ name = consts.Message.NodeHello
+ _additional_params_ = {}
+ _param_types_ = {
+ 'Build': types.FcpTypeInt,
+ 'CompressionCodecs': types.FcpTypeInt,
+ 'ExtBuild': types.FcpTypeInt,
+ 'FcpVersion': types.FcpTypeFloat,
+ 'Testnet': types.FcpTypeBool,
+ }
+
+#######################################
+#######################################
+class Peer(MessageBase):
+ name = consts.Message.Peer
+ _additional_params_ = {}
+ _param_types_ = PeerMessageParamTypes
+
+
+class PeerNote(MessageBase):
+ name = consts.Message.PeerNote
+ _additional_params_ = {}
+ _param_types_ = {
+ 'NoteText': types.FcpTypeBase64EncodedString,
+ }
+
+
+class PeerRemoved(MessageBase):
+ name = consts.Message.PeerRemoved
+ _additional_params_ = {}
+ _param_types_ = {
+ }
+
+#######################################
+#######################################
+class PersistentGet(MessageBase):
+ name = consts.Message.PersistentGet
+ _additional_params_ = {}
+ _param_types_ = {
+ }
+
+
+#######################################
+#######################################
+class PersistentPut(MessageBase):
+ name = consts.Message.PersistentPut
+ _additional_params_ = {}
+ _param_types_ = {
+ }
+
+
+class PersistentPutDir(MessageBase):
+ name = consts.Message.PersistentPutDir
+ _additional_params_ = {}
+ _param_types_ = {
+ }
+
+
+class PersistentRequestModified(MessageBase):
+ name = consts.Message.PersistentRequestModified
+ _additional_params_ = {}
+ _param_types_ = {
+ 'Global': types.FcpTypeBool,
+ }
+
+
+class PersistentRequestRemoved(MessageBase):
+ name = consts.Message.PersistentRequestRemoved
+ _additional_params_ = {}
+ _param_types_ = {
+ 'Global': types.FcpTypeBool,
+ }
+
+
+class PluginInfo(MessageBase):
+ name = consts.Message.PluginInfo
+ _additional_params_ = {}
+ _param_types_ = {
+ }
+
+
+class ProtocolError(MessageBase):
+ name = consts.Message.ProtocolError
+ _additional_params_ = {}
+ _param_types_ = {
+ 'Code': types.FcpTypeInt,
+ 'Global': types.FcpTypeBool,
+ }
+
+
+
+class PutFailed(MessageBase):
+ name = consts.Message.PutFailed
+ _additional_params_ = {}
+ _param_types_ = {
+ 'Code': types.FcpTypeInt,
+ 'Global': types.FcpTypeBool,
+ }
+
+
+class PutFetchable(MessageBase):
+ name = consts.Message.PutFetchable
+ _additional_params_ = {}
+ _param_types_ = {
+ 'Global': types.FcpTypeBool,
+ }
+
+#####################################
+######################################
+#!! not implemented
+#TODO: has more params
+class PutSuccessful(MessageBase):
+ name = consts.Message.PutSuccessful
+ _additional_params_ = {}
+ _param_types_ = {
+ 'Global': types.FcpTypeBool,
+ }
+
+
+class RemovePeer(MessageBase):
+ name = consts.Message.RemovePeer
+ _additional_params_ = {}
+ _param_types_ = {
+ }
+
+
+class RemovePersistentRequest(MessageBase):
+ name = consts.Message.RemovePersistentRequest
+ _additional_params_ = {}
+ _param_types_ = {
+ 'Global': types.FcpTypeBool,
+ }
+
+
+class SSKKeypair(MessageBase):
+ name = consts.Message. SSKKeypair
+ _additional_params_ = {}
+ _param_types_ = {
+ }
+
+
+class Shutdown(MessageBase):
+ name = consts.Message.Shutdown
+ _additional_params_ = {}
+ _param_types_ = {
+ }
+
+
+class SimpleProgress(MessageBase):
+ name = consts.Message.SimpleProgress
+ _additional_params_ = {}
+ _param_types_ = {
+ 'Failed': types.FcpTypeInt,
+ 'FatalyFailed': types.FcpTypeInt,
+ 'FinalizedTotal': types.FcpTypeBool,
+ 'Required': types.FcpTypeInt,
+ 'Succeeded': types.FcpTypeInt,
+ 'Total': types.FcpTypeInt,
+ }
+
+
+class StartedCompression(MessageBase):
+ name = consts.Message.StartedCompression
+ _additional_params_ = {}
+ _param_types_ = {
+ }
+
+
+class SubscribeUSK(MessageBase):
+ name = consts.Message.SubscribeUSK
+ _additional_params_ = AdditionalSubscribeUSKParams
+ _param_types_ = {
+ 'DontPoll': types.FcpTypeBool,
+ }
+
+
+class SubscribedUSKUpdate(MessageBase):
+ name = consts.Message.SubscribedUSKUpdate
+ _additional_params_ = {}
+ _param_types_ = {
+ 'Edition': types.FcpTypeInt,
+ }
+
+
+class TestDDAComplete(MessageBase):
+ name = consts.Message.TestDDAComplete
+ _additional_params_ = {}
+ _param_types_ = {
+ 'ReadDirectoryAllowed': types.FcpTypeBool,
+ 'WriteDirectoryAllowed': types.FcpTypeBool,
+ }
+
+
+class TestDDAReply(MessageBase):
+ name = consts.Message.TestDDAReply
+ _additional_params_ = {}
+ _param_types_ = {
+ }
+
+
+class TestDDARequest(MessageBase):
+ name = consts.Message.TestDDARequest
+ _additional_params_ = {}
+ _param_types_ = {
+ 'WantReadDirectory': types.FcpTypeBool,
+ 'WantWriteDirectory': types.FcpTypeBool,
+ }
+
+
+class TestDDAResponse(MessageBase):
+ name = consts.Message.TestDDAResponse
+ _additional_params_ = {}
+ _param_types_ = {
+ }
+
+
+class URIGenerated(MessageBase):
+ name = consts.Message.URIGenerated
+ _additional_params_ = {}
+ _param_types_ = {
+ }
+
+
+class UnknownNodeIdentifier(MessageBase):
+ name = consts.Message.UnknownNodeIdentifier
+ _additional_params_ = {}
+ _param_types_ = {
+ }
+
+
+class UnknownPeerNoteType(MessageBase):
+ name = consts.Message.UnknownPeerNoteType
+ _additional_params_ = {}
+ _param_types_ = {
+ }
+
+
+class WatchGlobal(MessageBase):
+ name = consts.Message.WatchGlobal
+ _additional_params_ = {}
+ _param_types_ = {
+ 'Enabled': types.FcpTypeBool,
+ 'VerbosityMask': types.FcpTypeInt,
+ }
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|