SF.net SVN: fclient: [336] trunk/sandbox/fcp2/types.py
Status: Pre-Alpha
Brought to you by:
jurner
|
From: <jU...@us...> - 2008-03-08 11:05:57
|
Revision: 336
http://fclient.svn.sourceforge.net/fclient/?rev=336&view=rev
Author: jUrner
Date: 2008-03-08 03:05:30 -0800 (Sat, 08 Mar 2008)
Log Message:
-----------
moved all message related stuff to message.py
Modified Paths:
--------------
trunk/sandbox/fcp2/types.py
Modified: trunk/sandbox/fcp2/types.py
===================================================================
--- trunk/sandbox/fcp2/types.py 2008-03-08 11:05:00 UTC (rev 335)
+++ trunk/sandbox/fcp2/types.py 2008-03-08 11:05:30 UTC (rev 336)
@@ -263,549 +263,6 @@
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):
- """Parameter --> FcpType mapping for config related messages"""
-
-
-
- # 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': FcpTypeTimeDelta,
- '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': FcpTypeTimeDelta,
- 'logger.maxCachedBytes': FcpTypeByteAmount,
- 'logger.maxCachedLines': FcpTypeByteAmount, # ???
- 'logger.maxZippedLogsSize': FcpTypeByteAmount, # ???
- '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': FcpTypeByteAmount,
- 'node.disableHangCheckers': FcpTypeBool,
- 'node.disableProbabilisticHTLs': FcpTypeBool,
- 'node.downloadAllowedDirs': FcpTypeChoiceNodeDownloadAllowedDirs,
- 'node.downloadsDir': FcpTypeDirname,
- 'node.enableARKs': FcpTypeBool,
- 'node.enablePacketCoalescing': FcpTypeBool,
- 'node.enablePerNodeFailureTables': FcpTypeBool,
- 'node.enableSwapping': FcpTypeBool,
- 'node.enableSwapQueueing': FcpTypeBool,
- 'node.enableULPRDataPropagation': FcpTypeBool,
- 'node.extraPeerDataDir': FcpTypeDirname,
- 'node.includeLocalAddressesInNoderefs': FcpTypeBool,
- 'node.inputBandwidthLimit': FcpTypeByteAmount, # -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': FcpTypeByteAmount,
- 'node.passOpennetPeersThroughDarknet': FcpTypeBool,
- 'node.persistentTempDir': FcpTypeDirname,
- 'node.storeDir': FcpTypeDirname,
- 'node.storeForceBigShrinks': FcpTypeBool,
- 'node.storeSize': FcpTypeByteAmount,
- 'node.storeType': FcpTypeString,
- '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': FcpTypeByteAmount,
- '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):
- """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 FcpTypeBool
- elif paramClass == consts.ConfigValueClass.ForceWriteFlag:
- return FcpTypeBool
- elif paramClass == consts.ConfigValueClass.ShortDescription:
- return FcpTypeString
- elif paramClass == consts.ConfigValueClass.LongDescription:
- return FcpTypeString
- elif paramClass == consts.ConfigValueClass.SortOrder:
- return FcpTypeInt
- elif paramClass == consts.ConfigValueClass.DataType:
- return FcpTypeString
- 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=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~..................
-
-'''
-#***************************************************************************************
-#
-# Mapping from message params to param types
-#
-# ...being lazy here, only types that are not strings are declared
-#
-#***************************************************************************************
-MessageParamTypes = {
-
- # client messages
- #
- #'AddPeer': # added later as PeerMessageParams
- 'ClientGet': {
- 'BinaryBlob': FcpTypeBool,
- 'Global': FcpTypeBool,
- 'IgnoreDS': FcpTypeBool,
- 'DSOnly': FcpTypeBool,
- 'MaxRetries': FcpTypeInt,
- 'MaxSize': FcpTypeInt,
- 'MaxTempSize': FcpTypeInt,
- 'Verbosity': FcpTypeInt,
- },
- 'ClientHello': {
- 'ExpectedVersion': FcpTypeFloat,
- },
- 'ClientPut': {
- 'BinaryBlob': FcpTypeBool,
- 'DataLength': FcpTypeInt,
- 'DontCompress': FcpTypeBool,
- 'EarlyEncode': FcpTypeBool,
- 'GetCHKOnly': FcpTypeBool,
- 'Global': FcpTypeBool,
- 'MaxRetries': FcpTypeInt,
- 'Verbosity': FcpTypeInt,
- },
- 'FCPPluginReply': {
- 'DataLength': FcpTypeInt,
- },
- 'GetConfig': {
- 'WithCurrent': FcpTypeBool,
- 'WithDefaults': FcpTypeBool,
- 'WithSortOrder': FcpTypeBool,
- 'WithExpertFlag': FcpTypeBool,
- 'WithForceWriteFlag': FcpTypeBool,
- 'WithShortDescription': FcpTypeBool,
- 'WithLongDescription': FcpTypeBool,
- },
- 'GetNode': {
- 'GiveOpennetRef': FcpTypeBool,
- 'WithPrivate': FcpTypeBool,
- 'WithVolatile': FcpTypeBool,
- },
- 'GetPluginInfo': {
- 'Detailed': FcpTypeBool,
- },
- 'GetRequestStatus': {
- 'Global': FcpTypeBool,
- 'OnlyData': FcpTypeBool,
- },
- 'ListPeer': {
- 'WithMetadata': FcpTypeBool,
- 'WithVolantile': FcpTypeBool,
- },
- 'ListPeers': {
- 'WithMetadata': FcpTypeBool,
- 'WithVolantile': FcpTypeBool,
- },
- 'ModifyPeer': {
- 'AllowLocalAddresses': FcpTypeBool,
- 'IsDisabled': FcpTypeBool,
- 'ListenOnly': FcpTypeBool,
- },
- #'ModifyConfig': # added later as ConfigMessageParams()
- 'ModifyPeerNote': {
- 'NoteText': FcpTypeBase64EncodedString,
- },
- 'ModifyPersistentRequest': {
- 'Global': FcpTypeBool,
- },
- 'RemopvePersistentRequest': {
- 'Global': FcpTypeBool,
- },
- 'SubscribeUSK': {
- 'DontPoll': FcpTypeBool,
- },
- 'TestDDARequest': {
- 'WantReadDirectory': FcpTypeBool,
- 'WantWriteDirectory': FcpTypeBool,
- },
- 'WatchGlobal': {
- 'Enabled': FcpTypeBool,
- 'VerbosityMask': FcpTypeInt,
- },
-
- # node messages
- #
- 'AllData': {
- 'Global': FcpTypeBool,
- 'DataLength': FcpTypeInt,
- #NOTE: we ignore startup and completion time here as long as it is not passed in all related messages
- },
- #'ConfigData': # added later as ConfigMessageParams()
- 'DataFound': {
- 'Global': FcpTypeBool,
- 'DataLength': FcpTypeInt,
- },
- 'FinishedCompression': {
- 'OriginalSize': FcpTypeInt,
- 'CompressedSize': FcpTypeInt,
- },
- 'GetFailed': {
- 'Code': FcpTypeInt,
- 'ExpectedDataLength': FcpTypeInt_GetFailed_ExpectedDataLenght,
- 'Fatal': FcpTypeBool,
- 'FinalizedExpected': FcpTypeBool,
- 'Global': FcpTypeBool,
- },
- 'GetPluginInfo': {
- 'Started': FcpTypeBool,
- },
- 'IdentifierCollision': {
- 'Global': FcpTypeBool,
- },
- #'NodeData': # added later as NodeMessageParams
- 'NodeHello': {
- 'Build': FcpTypeInt,
- 'CompressionCodecs': FcpTypeInt,
- 'ExtBuild': FcpTypeInt,
- #'ExtRevision': FcpTypeInt,
- 'FcpVersion': FcpTypeFloat,
- 'Testnet': FcpTypeBool,
- },
- #'Peer': # added later as PeerMessageParams
- 'PeerNote': {
- 'NoteText': FcpTypeBase64EncodedString,
- },
- 'PersistentRequestModified': {
- 'Global': FcpTypeBool,
- },
- 'PersistentRequestRemoved': {
- 'Global': FcpTypeBool,
- },
- 'ProtocolError': {
- 'Code': FcpTypeInt,
- 'Global': FcpTypeBool,
- },
- 'PutFailed': {
- 'Global': FcpTypeBool,
- 'Code': FcpTypeInt,
- },
- 'PutFetchable': {
- 'Global': FcpTypeBool,
- },
- 'SimpleProgress': {
- 'Total': FcpTypeInt,
- 'Required': FcpTypeInt,
- 'Failed': FcpTypeInt,
- 'FatalyFailed': FcpTypeInt,
- 'Succeeded': FcpTypeInt,
- 'FinalizedTotal': FcpTypeBool,
- },
- 'SubscribedUSKUpdate': {
- 'Edition': FcpTypeInt,
- },
- 'TestDDAComplete': {
- 'ReadDirectoryAllowed': FcpTypeBool,
- 'WriteDirectoryAllowed': 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.
|