SF.net SVN: fclient: [88] trunk/sandbox/fcp/fcp2_0_consts.py
Status: Pre-Alpha
Brought to you by:
jurner
|
From: <ju...@us...> - 2008-01-30 13:21:51
|
Revision: 88
http://fclient.svn.sourceforge.net/fclient/?rev=88&view=rev
Author: jurner
Date: 2008-01-30 05:21:55 -0800 (Wed, 30 Jan 2008)
Log Message:
-----------
continued working on type conversions
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-01-30 13:21:04 UTC (rev 87)
+++ trunk/sandbox/fcp/fcp2_0_consts.py 2008-01-30 13:21:55 UTC (rev 88)
@@ -231,17 +231,48 @@
ReportProgress = 0x1
ReportCompression = 0x200
-
#*************************************************************************************
# python <--> fcp value mappings
#*************************************************************************************
#TODO: reqork Clss.validateFcpValue
+class FcpType(object):
+
+ # consts for validation
+ ValidatesInvalid = 0x0
+ ValidatesValid = 0x1
+ ValidatesIncomlete = 0x2
+
+ @classmethod
+ def pythonToFcp(clss, value):
+ return value
+
+ @classmethod
+ def fcpToPython(clss, value):
+ return value
+
+ @classmethod
+ def validateFcpValue(clss, value):
+ return clss.ValidatesValid
+
+
+class FcpTypeString(FcpType):
+
+ @classmethod
+ def pythonToFcp(clss, value):
+ return str(value) #TODO: ??? unicode ???
+
+ @classmethod
+ def fcpToPython(clss, value):
+ return value
+
+ @classmethod
+ def validateFcpValue(clss, value):
+ return clss.ValidatesValid
-FcpTrue = 'true'
-FcpFalse = 'false'
-class FcpTypeBool(object):
+
+class FcpTypeBool(FcpType):
@classmethod
def pythonToFcp(clss, value):
@@ -254,11 +285,11 @@
@classmethod
def validateFcpValue(clss, value):
if value in ('true', 'false'):
- return str(value)
- return None
+ return self.ValidatesValid
+ return self.ValidatesInvalid
-class FcpTypeInt(object):
+class FcpTypeInt(FcpType):
@classmethod
def pythonToFcp(clss, value):
@@ -276,8 +307,27 @@
return None
+class FcpTypeFloat(FcpType):
+
+ @classmethod
+ def pythonToFcp(clss, value):
+ return str(value)
+
+ @classmethod
+ def fcpToPython(clss, value):
+ return float(value)
+
+ @classmethod
+ def validateFcpValue(clss, value):
+ try:
+ return float(value)
+ except ValueError:
+ return None
+
+
+
# GetFailed sets the ExpectedDataLenght field to '' (empty string). Fix this to show up as -1
-class FcpTypeInt_GetFailed_ExpectedDataLenght(object):
+class FcpTypeInt_GetFailed_ExpectedDataLenght(FcpType):
@classmethod
def pythonToFcp(clss, value):
@@ -300,7 +350,7 @@
-class FcpTypeIntWithBounds(object):
+class FcpTypeIntWithBounds(FcpType):
def __init__(self, lowerBound, upperBound):
self.lowerBound = lowerBound
@@ -329,27 +379,25 @@
-class FcpTypeBase64EncodedString(object):
+class FcpTypeBase64EncodedString(FcpType):
@classmethod
def pythonToFcp(clss, value):
- return base64.encode(value)
+ return base64.b64encode(value)
@classmethod
def fcpToPython(clss, value):
- return base64.decode(value)
+ return base64.b64decode(value)
@classmethod
def validateFcpValue(clss, value):
pass
#TODO: no idea
- # we add a few private params...
- ParamPrefixPrivate = 'Fc'
+
-
-class FcpTypeTime(object):
+class FcpTypeTime(FcpType):
@classmethod
def pythonToFcp(clss, value):
@@ -362,12 +410,452 @@
@classmethod
def validateFcpValue(clss, value):
try:
- return self.fcpToPython(value)
+ return clss.fcpToPython(value)
except ValueEror:
return none
+
+class FcpTypeIP(FcpType):
+ pass
+
+#TODO: check if comma separated or colon separated
+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': FcpTypeIntWithBounds(0, None), # ???
+ '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 splitAll(self, paramName):
+ return paramName.split(self.ComponentsSep)
+
+ def splitParamClass(self, paramName):
+ return paramName.split(self.ComponentsSep, 1)
+
+ def __getitem__(self, paramName):
+ paramClass, paramKey = self.splitParamClass(paramName)
+ if paramClass == self.ParamClassCurrent:
+ return self.Params[paramName]
+ elif paramClass == self.ParamClassDefault:
+ return self.Params[paramName]
+ elif paramClass == ParamClassExpertFlag:
+ return FcpTypeBool
+ elif paramClass == ParamClassForceWriteFlag:
+ return FcpTypeBool
+ elif paramClass == ParamClassShortDescription:
+ return FcpTypeString
+ elif paramClass == ParamClassLongDescription:
+ return FcpTypeString
+ elif paramClass == ParamClassSortOrder:
+ return FcpTypeInt
+ else:
+ raise ValueError('Unkinown 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
@@ -377,12 +865,17 @@
# client messages
+ 'ListPeer': {
+ 'WithMetadata': FcpTypeBool,
+ 'WithVolantile': FcpTypeBool,
+ },
+
'ListPeers': {
'WithMetadata': FcpTypeBool,
'WithVolantile': FcpTypeBool,
},
- #'AddPeer': {}, # ??? check
+ #'AddPeer': # added later as PeerMessageParams
'ModifyPeer': {
'AllowLocalAddresses': FcpTypeBool,
@@ -409,7 +902,7 @@
'WithLongDescription': FcpTypeBool,
},
- #'ModifyConfig': # ??? check
+ #'ModifyConfig': # added later as ConfigMessageParams()
'TestDDARequest': {
'WantReadDirectory': FcpTypeBool,
@@ -462,15 +955,15 @@
},
- #'Peer': {}, # ??? check
+ #'Peer': # added later as PeerMessageParams
'PeerNote': {
'NoteText': FcpTypeBase64EncodedString,
},
- #'NodeData': {}, # ??? check
- #'ConfigData': {}, # ??? check
+ #'NodeData': # added later as NodeMessageParams
+ #'ConfigData': # added later as ConfigMessageParams()
'TestDDAComplete': {
'ReadDirectoryAllowed': FcpTypeBool,
@@ -485,7 +978,7 @@
},
'AllData': {
'Global': FcpTypeBool,
- #NOTE: we ignore startup and completion time here, as long as it is not passed in all messages
+ #NOTE: we ignore startup and completion time here as long as it is not passed in all related messages
},
'FinishedCompression': {
@@ -529,8 +1022,6 @@
'Edition': FcpTypeInt,
},
-
-
}
MessageParamTypes['ClientPutDiskDir'] = MessageParamTypes['ClientPut']
@@ -541,6 +1032,19 @@
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.
|