SF.net SVN: fclient: [102] trunk/sandbox/fcp/fcp2_0_types.py
Status: Pre-Alpha
Brought to you by:
jurner
|
From: <ju...@us...> - 2008-02-02 05:10:54
|
Revision: 102
http://fclient.svn.sourceforge.net/fclient/?rev=102&view=rev
Author: jurner
Date: 2008-02-01 21:11:00 -0800 (Fri, 01 Feb 2008)
Log Message:
-----------
added types module
Added Paths:
-----------
trunk/sandbox/fcp/fcp2_0_types.py
Added: trunk/sandbox/fcp/fcp2_0_types.py
===================================================================
--- trunk/sandbox/fcp/fcp2_0_types.py (rev 0)
+++ trunk/sandbox/fcp/fcp2_0_types.py 2008-02-02 05:11:00 UTC (rev 102)
@@ -0,0 +1,738 @@
+"""Fcp types vs. Python types
+
+This module handles type conversions from Fcp to Python and vice versa
+"""
+
+import base64
+
+import fcp2_0_consts as consts
+#*************************************************************************************
+#
+#*************************************************************************************
+class FcpType(object):
+
+ @classmethod
+ def pythonToFcp(clss, value):
+ return value
+
+ @classmethod
+ def fcpToPython(clss, value):
+ return value
+
+
+class FcpTypeString(FcpType):
+
+ @classmethod
+ def pythonToFcp(clss, value):
+ return str(value) #TODO: unicode ???
+
+ @classmethod
+ def fcpToPython(clss, value):
+ return value
+
+
+class FcpTypeBool(FcpType):
+
+ @classmethod
+ def pythonToFcp(clss, value):
+ return consts.FcpTrue if value else consts.FcpFalse
+
+ @classmethod
+ def fcpToPython(clss, value):
+ return value == consts.FcpTrue
+
+
+class FcpTypeInt(FcpType):
+
+ @classmethod
+ def pythonToFcp(clss, value):
+ return str(value)
+
+ @classmethod
+ def fcpToPython(clss, value):
+ return int(value)
+
+
+class FcpTypeFloat(FcpType):
+
+ @classmethod
+ def pythonToFcp(clss, value):
+ return str(value)
+
+ @classmethod
+ def fcpToPython(clss, value):
+ return float(value)
+
+
+# GetFailed sets the ExpectedDataLenght field to '' (empty string). Fix this to show up as -1
+class FcpTypeInt_GetFailed_ExpectedDataLenght(FcpType):
+
+ @classmethod
+ def pythonToFcp(clss, value):
+ return str(value)
+
+ @classmethod
+ def fcpToPython(clss, value):
+ if value == '':
+ return -1
+ return int(value)
+
+
+class FcpTypeIntWithBounds(FcpType):
+
+ def __init__(self, lowerBound, upperBound):
+ self.lowerBound = lowerBound
+ self.upperBound = upperBound
+
+ def pythonToFcp(self, value):
+ return str(value)
+
+ def fcpToPython(self, value):
+ return int(value)
+
+
+class FcpTypeBase64EncodedString(FcpType):
+
+ @classmethod
+ def pythonToFcp(clss, value):
+ return base64.b64encode(value)
+
+ @classmethod
+ def fcpToPython(clss, value):
+ return base64.b64decode(value)
+
+
+class FcpTypeTime(FcpType):
+
+ @classmethod
+ def pythonToFcp(clss, value):
+ return str(value * 1000)
+
+ @classmethod
+ def fcpToPython(clss, value):
+ return int(value) / 1000
+
+
+
+class FcpTypeIP(FcpType): pass
+class FcpTypeIPList(FcpType): pass
+class FcpTypeIPort(FcpType): pass
+class FcpTypeStringList(FcpType): pass
+class FcpTypeDirname(FcpType): pass
+class FcpTypeFilename(FcpType): pass
+class FcpTypeNumBytes(FcpType): pass
+class FcpTypePercent(FcpTypeFloat): pass
+class FcpTypeUri(FcpType): pass
+
+
+# special choice types for config message
+
+
+class FcpTypeChoiceFProxyCss(FcpType):
+ Clean = 'Clean'
+ Boxed = 'boxed'
+ GrayAndBlue = 'grayandblue'
+ Sky = 'sky'
+
+ ChoicesAll = (Clean, Boxed, GrayAndBlue, Sky)
+ ChoicesAllowMultiple = False
+
+class FcpTypeChoiceLoggerPriority(FcpType):
+ Error = 'ERROR'
+ Normal = 'NORMAL'
+ Minor = 'MINOR'
+ Debug = 'DEBUG'
+
+ ChoicesAll = (Error, Normal, Minor, Debug)
+ ChoicesAllowMultiple = False
+
+class FcpTypeChoiceNodeDownloadAllowedDirs(FcpType):
+ All = 'all'
+ Downloads = 'downloads'
+ Nowhere = ''
+
+ ChoicesAll = (All, Downloads, Nowhere)
+ ChoicesAllowMultiple = False
+
+class FcpTypeChoiceNodeUploadAllowedDirs(FcpType):
+ All = 'all'
+ Nowhere = ''
+ ChoicesAll = (All, Nowhere)
+ ChoicesAllowMultiple = False
+
+class FcpTypeChoicePriorityPolicy(FcpType):
+ Hard = 'HARD'
+ Soft = 'SOFT'
+
+ ChoicesAll = (Hard, Soft)
+ ChoicesAllowMultiple = False
+
+
+class FcpTypeChoiceSSLVersion(FcpType):
+ Stl = 'STL'
+ SslV3 = 'SSLV3'
+ TlsV1 = 'TLSv1'
+
+ ChoicesAll = (Stl, SslV3, TlsV1)
+ ChoicesAllowMultiple = False
+
+
+#***************************************************************************************
+#
+# 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 ConfigMessageParams(object):
+
+ ComponentsSep = '.'
+
+
+ # first component of a config message param is always the param class
+
+ ParamClassCurrent = 'current'
+ ParamClassDefault = 'default'
+ ParamClassExpertFlag = 'expertFlag'
+ ParamClassForceWriteFlag = 'forceWriteFlag'
+ ParamClassShortDescription = 'shortDescription'
+ ParamClassLongDescription = 'longDescription'
+ ParamClassSortOrder = 'sortOrder'
+
+ ParamClasses = (
+ ParamClassCurrent,
+ ParamClassDefault,
+ ParamClassExpertFlag,
+ ParamClassForceWriteFlag,
+ ParamClassShortDescription,
+ ParamClassLongDescription,
+ )
+
+
+
+ # all known config keys (param class stripped)
+ Params = {
+
+ 'console.allowedHosts': FcpTypeIPList, # host names, single IPs CIDR-maskip IPs likee 192.168.0.0/24
+ 'console.bindTo': FcpTypeIPList,
+ 'console.directEnabled': FcpTypeBool,
+ 'console.enabled': FcpTypeBool,
+ 'console.port': FcpTypeIPort,
+ 'console.ssl': FcpTypeBool,
+
+
+ 'fcp.allowedHosts': FcpTypeIPList,
+ 'fcp.allowedHostsFullAccess': FcpTypeIPList,
+ 'fcp.assumeDownloadDDAIsAllowed': FcpTypeBool,
+ 'fcp.assumeUploadDDAIsAllowed': FcpTypeBool,
+ 'fcp.bindTo': FcpTypeIP,
+ 'fcp.enabled': FcpTypeBool,
+ 'fcp.persistentDownloadsEnabled': FcpTypeBool,
+ 'fcp.persistentDownloadsFile': FcpTypeFilename,
+ 'fcp.persistentDownloadsInterval': FcpTypeIntWithBounds(0, None),
+ 'fcp.port': FcpTypeIPort,
+ 'fcp.ssl': FcpTypeBool,
+
+
+ 'fproxy.CSSOverride': FcpTypeBool,
+ 'fproxy.advancedModeEnabled': FcpTypeBool,
+ 'fproxy.allowedHosts': FcpTypeIPList,
+ 'fproxy.allowedHostsFullAccess': FcpTypeIPList,
+ 'fproxy.bindTo': FcpTypeIPList,
+ 'fproxy.css': FcpTypeChoiceFProxyCss,
+ 'fproxy.doRobots': FcpTypeBool,
+ 'fproxy.enabled': FcpTypeBool,
+ 'fproxy.javascriptEnabled': FcpTypeBool,
+ 'fproxy.port': FcpTypeIPort,
+ 'fproxy.showPanicButton': FcpTypeBool,
+ 'fproxy.ssl': FcpTypeBool,
+
+
+ 'logger.dirname': FcpTypeDirname,
+ 'logger.enabled': FcpTypeBool,
+ 'logger.interval': FcpType, # ??? 1HOUR ??
+ 'logger.maxCachedBytes': FcpTypeNumBytes,
+ 'logger.maxCachedLines': FcpTypeNumBytes, # ???
+ 'logger.maxZippedLogsSize': FcpTypeNumBytes, # ???
+ 'logger.priority': FcpTypeChoiceLoggerPriority,
+ 'logger.priorityDetail': FcpType, # ???? is it Detailed priority thresholds ???
+
+
+ 'node.alwaysAllowLocalAddresses': FcpTypeBool,
+ 'node.assumeNATed': FcpTypeBool,
+ 'node.bindTo': FcpTypeIP,
+ 'node.clientThrottleFile': FcpTypeFilename,
+ 'node.databaseMaxMemory': FcpTypeNumBytes,
+ 'node.disableHangCheckers': FcpTypeBool,
+ 'node.disableProbabilisticHTLs': FcpTypeBool,
+ 'node.downloadAllowedDirs': FcpTypeChoiceNodeDownloadAllowedDirs,
+ 'node.downloadsDir': FcpTypeDirname,
+ 'node.extraPeerDataDir': FcpTypeDirname,
+ 'node.includeLocalAddressesInNoderefs': FcpTypeBool,
+ 'node.inputBandwidthLimit': FcpTypeNumBytes, # -1 is possible as value aswell
+ 'node.ipAddressOverride': FcpTypeIP,
+ 'node.l10n': FcpType, # ???
+ 'node.lazyResume': FcpTypeBool,
+ 'node.listenPort': FcpTypeIPort,
+ 'node.maxBackgroundUSKFetchers': FcpTypeIntWithBounds(0, None),
+ 'node.maxHTL': FcpTypeIntWithBounds(0, None),
+ 'node.name': FcpTypeString,
+ 'node.nodeDir': FcpTypeDirname,
+ 'node.oneConnectionPerIP': FcpTypeBool,
+ 'node.outputBandwidthLimit': FcpTypeNumBytes,
+ 'node.passOpennetPeersThroughDarknet': FcpTypeBool,
+ 'node.persistentTempDir': FcpTypeDirname,
+ 'node.storeDir': FcpTypeDirname,
+ 'node.storeForceBigShrinks': FcpTypeBool,
+ 'node.storeSize': FcpTypeNumBytes,
+ 'node.tempDir': FcpTypeDirname,
+ 'node.tempIPAddressHint': FcpTypeIP, # ???
+ 'node.testingDropPacketsEvery': FcpTypeIntWithBounds(0, None),
+ 'node.uploadAllowedDirs': FcpTypeChoiceNodeDownloadAllowedDirs,
+
+
+ 'node.testnet.enabled': FcpTypeBool,
+
+
+ 'node.load.aggressiveGC': FcpType, # ???
+ 'node.load.freeHeapBytesThreshold': FcpTypeNumBytes,
+ 'node.load.freeHeapPercentThreshold': FcpTypePercent,
+ 'node.load.memoryChecker': FcpTypeBool,
+ 'node.load.nodeThrottleFile': FcpTypeFilename,
+ 'node.load.threadLimit': FcpTypeIntWithBounds(0, None),
+
+
+ 'node.opennet.acceptSeedConnections': FcpTypeBool,
+ 'node.opennet.alwaysAllowLocalAddresses': FcpTypeBool,
+ 'node.opennet.assumeNATed': FcpTypeBool,
+ 'node.opennet.bindTo': FcpTypeIP,
+ 'node.opennet.enabled': FcpTypeBool,
+ 'node.opennet.listenPort': FcpTypeIPort,
+ 'node.opennet.maxOpennetPeers': FcpTypeIntWithBounds(0, None),
+ 'node.opennet.oneConnectionPerIP': FcpTypeBool,
+ 'node.opennet.testingDropPacketsEvery': FcpTypeIntWithBounds(0, None),
+
+ 'node.scheduler.CHKinserter_priority_policy': FcpTypeChoicePriorityPolicy,
+ 'node.scheduler.CHKrequester_priority_policy': FcpTypeChoicePriorityPolicy,
+ 'node.scheduler.SSKinserter_priority_policy': FcpTypeChoicePriorityPolicy,
+ 'node.scheduler.SSKrequester_priority_policy': FcpTypeChoicePriorityPolicy,
+
+ 'node.updater.URI': FcpTypeUri,
+ 'node.updater.autoupdate': FcpTypeBool,
+ 'node.updater.enabled': FcpTypeBool,
+ 'node.updater.extURI': FcpTypeUri,
+ 'node.updater.revocationURI': FcpTypeUri,
+
+
+ 'pluginmanager.loadplugin': FcpTypeStringList,
+ 'pluginmanager2.loadedPlugins': FcpTypeStringList,
+
+
+ 'ssl.sslEnable': FcpTypeBool,
+ 'ssl.sslKeyPass': FcpTypeString,
+ 'ssl.sslKeyStore': FcpTypeFilename,
+ 'ssl.sslKeyStorePass': FcpTypeString,
+ 'ssl.sslVersion': FcpTypeChoiceSSLVersion,
+
+ 'toadletsymlinker.symlinks': FcpTypeStringList,
+
+ }
+
+
+ def __init__(self):
+ pass
+
+
+ def splitAll(self, paramName):
+ return paramName.split(self.ComponentsSep)
+
+ def splitParamClass(self, paramName):
+ return paramName.split(self.ComponentsSep, 1)
+
+
+ def get(self, paramName, default=None):
+ try:
+ return self[paramName]
+ except KeyError:
+ return default
+
+
+ def __getitem__(self, paramName):
+ paramClass, paramKey = self.splitParamClass(paramName)
+ if paramClass == self.ParamClassCurrent:
+ return self.Params[paramKey]
+ elif paramClass == self.ParamClassDefault:
+ return self.Params[paramKey]
+ elif paramClass == self.ParamClassExpertFlag:
+ return FcpTypeBool
+ elif paramClass == self.ParamClassForceWriteFlag:
+ return FcpTypeBool
+ elif paramClass == self.ParamClassShortDescription:
+ return FcpTypeString
+ elif paramClass == self.ParamClassLongDescription:
+ return FcpTypeString
+ elif paramClass == self.ParamClassSortOrder:
+ return FcpTypeInt
+ else:
+ raise ValueError('Unknown param class in: %r' % paramName)
+
+#***************************************************************************************
+#
+# param types for peer message
+#
+# ..need to do a bit more here, cos it may be needed to validate user input
+#
+#***************************************************************************************
+PeerMessageParams = {
+ 'ark.number': FcpTypeInt,
+ 'auth.negTypes': FcpTypeInt,
+
+
+ 'location': FcpTypeFloat,
+ 'opennet': FcpTypeBool,
+ 'testnet': FcpTypeBool,
+
+ 'metadata.timeLastConnected': FcpTypeTime,
+ 'metadata.timeLastReceivedPacket': FcpTypeTime,
+ 'metadata.timeLastRoutable': FcpTypeTime,
+ 'metadata.timeLastSuccess': FcpTypeTime,
+ 'metadata.routableConnectionCheckCount': FcpTypeInt,
+ 'metadata.hadRoutableConnectionCount': FcpTypeInt,
+
+ 'volatile.averagePingTime': FcpTypeFloat,
+ 'volatile.overloadProbability': FcpTypePercent,
+ 'volatile.routingBackoff': FcpTypeInt,
+ 'volatile.routingBackoffPercent': FcpTypePercent,
+ 'volatile.totalBytesIn': FcpTypeInt,
+ 'volatile.totalBytesOut': FcpTypeInt,
+ 'volatile.routingBackoffLength': 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
+
+'''
+
+#***************************************************************************************
+#
+# param types for node message
+#
+#***************************************************************************************
+NodeMessageParams = {
+ 'ark.number': FcpTypeInt,
+ 'auth.negTypes': FcpTypeInt,
+ 'location': FcpTypeFloat,
+ 'opennet': FcpTypeBool,
+ 'testnet': FcpTypeBool,
+
+
+ 'volatile.allocatedJavaMemory': FcpTypeInt,
+ 'volatile.availableCPUs': FcpTypeInt,
+ 'volatile.averagePingTime': FcpTypeFloat,
+ 'volatile.avgStoreAccessRate': FcpTypePercent,
+ 'volatile.backedOffPercent': FcpTypePercent,
+ 'volatile.bwlimitDelayTime': FcpTypeFloat,
+ 'volatile.cacheAccess': FcpTypeInt,
+ 'volatile.cachedKeys': FcpTypeInt,
+ 'volatile.cachedSize': FcpTypeInt,
+ 'volatile.cachedStoreHits': FcpTypeInt,
+ 'volatile.cachedStoreMisses': FcpTypeInt,
+ 'volatile.freeJavaMemory': FcpTypeInt,
+ 'volatile.isUsingWrapper': FcpTypeBool,
+ 'volatile.locationChangePerMinute': FcpTypeFloat,
+ 'volatile.locationChangePerSession': FcpTypeFloat,
+ 'volatile.locationChangePerSwap': FcpTypeFloat,
+ 'volatile.maximumJavaMemory': FcpTypeInt,
+ 'volatile.maxOverallKeys': FcpTypeInt,
+ 'volatile.maxOverallSize': FcpTypeInt,
+ 'volatile.networkSizeEstimate24hourRecent': FcpTypeInt,
+ 'volatile.networkSizeEstimate48hourRecent': FcpTypeInt,
+ 'volatile.networkSizeEstimateSession': FcpTypeInt,
+ 'volatile.noSwaps': FcpTypeFloat,
+ 'volatile.noSwapsPerMinute': FcpTypeFloat,
+ 'volatile.numberOfARKFetchers': FcpTypeInt,
+ 'volatile.numberOfBursting': FcpTypeInt,
+ 'volatile.numberOfConnected': FcpTypeInt,
+ 'volatile.numberOfDisabled': FcpTypeInt,
+ 'volatile.numberOfDisconnected': FcpTypeInt,
+ 'volatile.numberOfInsertSenders': FcpTypeInt,
+ 'volatile.numberOfListening': FcpTypeInt,
+ 'volatile.numberOfListenOnly': FcpTypeInt,
+ 'volatile.numberOfNeverConnected': FcpTypeInt,
+ 'volatile.numberOfNotConnected': FcpTypeInt,
+ 'volatile.numberOfRemotePeerLocationsSeenInSwaps': FcpTypeFloat,
+ 'volatile.numberOfRequestSenders': FcpTypeInt,
+ 'volatile.numberOfRoutingBackedOff': FcpTypeInt,
+ 'volatile.numberOfSimpleConnected': FcpTypeInt,
+ 'volatile.numberOfTooNew': FcpTypeInt,
+ 'volatile.numberOfTooOld': FcpTypeInt,
+ 'volatile.numberOfTransferringRequestSenders': FcpTypeInt,
+ 'volatile.numberWithRoutingBackoffReasons.ForwardRejectedOverload': FcpTypeInt,
+ 'volatile.overallAccesses': FcpTypeInt,
+ 'volatile.overallKeys': FcpTypeInt,
+ 'volatile.overallSize': FcpTypeInt,
+ 'volatile.percentCachedStoreHitsOfAccesses': FcpTypePercent,
+ 'volatile.percentOverallKeysOfMax': FcpTypePercent,
+ 'volatile.percentStoreHitsOfAccesses': FcpTypePercent,
+ 'volatile.pInstantReject': FcpTypeFloat, # or percent?
+ 'volatile.recentInputRate': FcpTypeFloat,
+ 'volatile.recentOutputRate': FcpTypeFloat,
+ 'volatile.routingMissDistance': FcpTypeFloat,
+ 'volatile.runningThreadCount': FcpTypeInt,
+ 'volatile.startedSwaps': FcpTypeInt,
+ 'volatile.startupTime': FcpTypeTime,
+ 'volatile.storeAccesses': FcpTypeInt,
+ 'volatile.storeHits': FcpTypeInt,
+ 'volatile.storeKeys': FcpTypeInt,
+ 'volatile.storeMisses': FcpTypeInt,
+ 'volatile.storeSize': FcpTypeInt,
+ 'volatile.swaps': FcpTypeFloat,
+ 'volatile.swapsPerMinute': FcpTypeFloat,
+ 'volatile.swapsPerNoSwaps': FcpTypeFloat,
+ 'volatile.swapsRejectedAlreadyLocked': FcpTypeInt,
+ 'volatile.swapsRejectedLoop': FcpTypeInt,
+ 'volatile.swapsRejectedNowhereToGo': FcpTypeInt,
+ 'volatile.swapsRejectedRateLimit': FcpTypeInt,
+ 'volatile.swapsRejectedRecognizedID': FcpTypeInt,
+ 'volatile.totalInputBytes': FcpTypeInt,
+ 'volatile.totalInputRate': FcpTypeInt,
+ 'volatile.totalOutputBytes': FcpTypeInt,
+ 'volatile.totalOutputRate': FcpTypeInt,
+ 'volatile.totalPayloadOutputBytes': FcpTypeInt,
+ 'volatile.totalPayloadOutputPercent': FcpTypePercent,
+ 'volatile.totalPayloadOutputRate': FcpTypeInt,
+ 'volatile.unclaimedFIFOSize': FcpTypeInt,
+ 'volatile.uptimeSeconds': FcpTypeInt,
+ 'volatile.usedJavaMemory': FcpTypeInt,
+ }
+
+
+'''
+>>all other NodeData message params here....
+>>
+>> physical.udp=000.000.000.000:00000
+>> dsaPubKey.y=GgrpsNUK9m.................................................
+>> version=Fred,0.7,1.0,1107
+>> myName=whatever
+>> ark.pubURI=SSK@...............
+
+>> dsaGroup.q=ALFDNoq.....
+>> dsaGroup.p=AIYIrE9VNhM3.............
+>> volatile.avgConnectedPeersPerNode=15.35................
+>> dsaGroup.g=UaRa.............
+>> dsaPrivKey.x=Pwam..................
+>> ark.privURI=SSK@.................
+>> lastGoodVersion=Fred,0.7,1.0,1106
+>> sig=691f............
+>> identity=vMQa~..................
+
+'''
+#***************************************************************************************
+#
+# Mapping from message params to param types
+#
+# ...being lazy here, only types that are not strings are declared
+#
+#***************************************************************************************
+MessageParamTypes = {
+
+ # client messages
+
+ 'ListPeer': {
+ 'WithMetadata': FcpTypeBool,
+ 'WithVolantile': FcpTypeBool,
+ },
+
+ 'ListPeers': {
+ 'WithMetadata': FcpTypeBool,
+ 'WithVolantile': FcpTypeBool,
+ },
+
+ #'AddPeer': # added later as PeerMessageParams
+
+ 'ModifyPeer': {
+ 'AllowLocalAddresses': FcpTypeBool,
+ 'IsDisabled': FcpTypeBool,
+ 'ListenOnly': FcpTypeBool,
+ },
+
+ 'ModifyPeerNote': {
+ 'NoteText': FcpTypeBase64EncodedString,
+ },
+
+ 'GetNode': {
+ 'GiveOpennetRef': FcpTypeBool,
+ 'WithPrivate': FcpTypeBool,
+ 'WithVolatile': FcpTypeBool,
+ },
+ 'GetConfig': {
+ 'WithCurrent': FcpTypeBool,
+ 'WithDefaults': FcpTypeBool,
+ 'WithSortOrder': FcpTypeBool,
+ 'WithExpertFlag': FcpTypeBool,
+ 'WithForceWriteFlag': FcpTypeBool,
+ 'WithShortDescription': FcpTypeBool,
+ 'WithLongDescription': FcpTypeBool,
+ },
+
+ #'ModifyConfig': # added later as ConfigMessageParams()
+
+ 'TestDDARequest': {
+ 'WantReadDirectory': FcpTypeBool,
+ 'WantWriteDirectory': FcpTypeBool,
+ },
+ 'ClientPut': {
+ 'BinaryBlob': FcpTypeBool,
+ 'DontCompress': FcpTypeBool,
+ 'EarlyEncode': FcpTypeBool,
+ 'GetCHKOnly': FcpTypeBool,
+ 'Global': FcpTypeBool,
+ 'MaxRetries': FcpTypeInt,
+ 'Verbosity': FcpTypeInt,
+ },
+ 'ClientGet': {
+ 'BinaryBlob': FcpTypeBool,
+ 'Global': FcpTypeBool,
+ 'IgnoreDS': FcpTypeBool,
+ 'DSOnly': FcpTypeBool,
+ 'MaxSize': FcpTypeInt,
+ 'MaxTempSize': FcpTypeInt,
+ 'Verbosity': FcpTypeInt,
+ },
+ 'SubscribeUSK': {
+ 'DontPoll': FcpTypeBool,
+ },
+ 'WatchGlobal': {
+ 'Enabled': FcpTypeBool,
+ 'VerbosityMask': FcpTypeInt,
+ },
+ 'GetRequestStatus': {
+ 'Global': FcpTypeBool,
+ 'OnlyData': FcpTypeBool,
+ },
+ 'RemopvePersistentRequest': {
+ 'Global': FcpTypeBool,
+ },
+ 'ModifyPersistentRequest': {
+ 'Global': FcpTypeBool,
+ },
+ 'GetPluginInfo': {
+ 'Detailed': FcpTypeBool,
+ },
+
+
+
+ # node messages
+
+ 'NodeHello': {
+ 'Build': FcpTypeInt,
+ 'CompressionCodecs': FcpTypeInt,
+ 'ExtBuild': FcpTypeInt,
+ 'ExtRevision': FcpTypeInt,
+ 'FcpVersion': FcpTypeFloat,
+ 'Testnet': FcpTypeBool,
+ },
+
+ #'Peer': # added later as PeerMessageParams
+
+ 'PeerNote': {
+ 'NoteText': FcpTypeBase64EncodedString,
+ },
+
+
+ #'NodeData': # added later as NodeMessageParams
+ #'ConfigData': # added later as ConfigMessageParams()
+
+ 'TestDDAComplete': {
+ 'ReadDirectoryAllowed': FcpTypeBool,
+ 'WriteDirectoryAllowed': FcpTypeBool,
+ },
+ 'PutFetchable': {
+ 'Global': FcpTypeBool,
+ },
+ 'DataFound': {
+ 'Global': FcpTypeBool,
+ 'DataLength': FcpTypeInt,
+ },
+ 'AllData': {
+ 'Global': FcpTypeBool,
+ #NOTE: we ignore startup and completion time here as long as it is not passed in all related messages
+
+ },
+ 'FinishedCompression': {
+ 'OriginalSize': FcpTypeInt,
+ 'CompressedSize': FcpTypeInt,
+ },
+ 'SimpleProgress': {
+ 'Total': FcpTypeInt,
+ 'Required': FcpTypeInt,
+ 'Failed': FcpTypeInt,
+ 'FatalyFailed': FcpTypeInt,
+ 'Succeeded': FcpTypeInt,
+ 'Finalized': FcpTypeBool,
+ },
+ 'PersistentRequestRemoved': {
+ 'Global': FcpTypeBool,
+ },
+ 'PersistentRequestModified': {
+ 'Global': FcpTypeBool,
+ },
+ 'PutFailed': {
+ 'Global': FcpTypeBool,
+ 'Code': FcpTypeInt,
+ },
+ 'GetFailed': {
+ 'Code': FcpTypeInt,
+ 'ExpectedDataLength': FcpTypeInt_GetFailed_ExpectedDataLenght,
+ 'Fatal': FcpTypeBool,
+ 'FinalizedExpected': FcpTypeBool,
+ 'Global': FcpTypeBool,
+ },
+ 'ProtocolError': {
+ 'Code': FcpTypeInt,
+ 'Global': FcpTypeBool,
+ },
+
+ 'IdentifierCollision': {
+ 'Global': FcpTypeBool,
+ },
+ 'SubscribedUSKUpdate': {
+ 'Edition': FcpTypeInt,
+ },
+ 'GetPluginInfo': {
+ 'Started': FcpTypeBool,
+ },
+
+ }
+
+MessageParamTypes['ClientPutDiskDir'] = MessageParamTypes['ClientPut']
+MessageParamTypes['ClientComplexDir'] = MessageParamTypes['ClientPut']
+
+# TODO: "Started" param? Think we simply ignore it
+MessageParamTypes['PersistentGet'] = MessageParamTypes['ClientGet']
+MessageParamTypes['PersistentPut'] = MessageParamTypes['ClientPut']
+
+
+MessageParamTypes['ModifyConfig'] = MessageParamTypes['ConfigData'] = ConfigMessageParams()
+
+MessageParamTypes['Peer'] = MessageParamTypes['AddPeer'] = PeerMessageParams
+
+
+
+
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|