All Downloads are FREE. Search and download functionalities are using the official Maven repository.

conf.hycube_simulator.cfg Maven / Gradle / Ivy


configuration = node.main

	node.main.MessageTTL = 32
	
	node.main.UsePorts = true
	
	node.main.MessageAckEnabled = true
	node.main.DirectAck = true
	node.main.AckTimeout = 5000
	node.main.ProcessAckInterval = 5000
	node.main.ResendIfNoAck = false
	node.main.SendRetries = 1
	

	node.main.NodeIdFactory = HyCubeNodeIdFactory
		node.main.NodeIdFactory[HyCubeNodeIdFactory].Class = net.hycube.core.HyCubeNodeIdFactory
		node.main.NodeIdFactory[HyCubeNodeIdFactory].Dimensions =	@node.extensions.HyCube.Dimensions
		node.main.NodeIdFactory[HyCubeNodeIdFactory].Levels = @node.extensions.HyCube.Levels
		
	node.main.MessageFactory = HyCubeMessageFactory
		node.main.MessageFactory[HyCubeMessageFactory].Class = net.hycube.messaging.messages.HyCubeMessageFactory
		node.main.MessageFactory[HyCubeMessageFactory].NodeIdFactory = HyCubeNodeIdFactory
		node.main.MessageFactory[HyCubeMessageFactory].NetworkAddressByteLength = 20
		node.main.MessageFactory[HyCubeMessageFactory].NodeIdFactory[HyCubeNodeIdFactory] = @node.main.NodeIdFactory[HyCubeNodeIdFactory]
		node.main.MessageFactory[HyCubeMessageFactory].HeaderExtensionsCount = 3
			# HyCubeMessageFragmenter, Signature, ...
		node.main.MessageFactory[HyCubeMessageFactory].HeaderExtensionLengths = 4, 16, 0
		
	node.main.RoutingTable = HyCubeRoutingTable
	
		node.main.RoutingTable[HyCubeRoutingTable].Class = net.hycube.core.HyCubeRoutingTableImpl
		node.main.RoutingTable[HyCubeRoutingTable].Dimensions = @node.extensions.HyCube.Dimensions
		node.main.RoutingTable[HyCubeRoutingTable].Levels = @node.extensions.HyCube.Levels
		node.main.RoutingTable[HyCubeRoutingTable].NSSize = @node.extensions.HyCube.NSSize
		node.main.RoutingTable[HyCubeRoutingTable].RoutingTableSlotSize = @node.extensions.HyCube.RoutingTableSlotSize
		node.main.RoutingTable[HyCubeRoutingTable].UseSecureRouting = @node.extensions.HyCube.UseSecureRouting

	
	
	node.main.NextHopSelectors = HyCubeNextHopSelector
	
		node.main.NextHopSelectors[HyCubeNextHopSelector].Class = net.hycube.nexthopselection.HyCubeNextHopSelector
		node.main.NextHopSelectors[HyCubeNextHopSelector].Dimensions = @node.extensions.HyCube.Dimensions
		node.main.NextHopSelectors[HyCubeNextHopSelector].Levels = @node.extensions.HyCube.Levels
		node.main.NextHopSelectors[HyCubeNextHopSelector].UseRT1 = @node.extensions.HyCube.UseRT1
		node.main.NextHopSelectors[HyCubeNextHopSelector].UseRT2 = @node.extensions.HyCube.UseRT2
		node.main.NextHopSelectors[HyCubeNextHopSelector].UseNS = @node.extensions.HyCube.UseNS
		node.main.NextHopSelectors[HyCubeNextHopSelector].Metric = @node.extensions.HyCube.Metric
		node.main.NextHopSelectors[HyCubeNextHopSelector].UseSteinhausTransform = @node.extensions.HyCube.UseSteinhausTransform
		node.main.NextHopSelectors[HyCubeNextHopSelector].DynamicSteinhausTransform = @node.extensions.HyCube.DynamicSteinhausTransform
		node.main.NextHopSelectors[HyCubeNextHopSelector].RouteWithRegularMetricAfterSteinhaus = @node.extensions.HyCube.RouteWithRegularMetricAfterSteinhaus
		node.main.NextHopSelectors[HyCubeNextHopSelector].PrefixMismatchHeuristicEnabled = @node.extensions.HyCube.PrefixMismatchHeuristicEnabled
		node.main.NextHopSelectors[HyCubeNextHopSelector].PrefixMismatchHeuristicMode = @node.extensions.HyCube.PrefixMismatchHeuristicMode
		node.main.NextHopSelectors[HyCubeNextHopSelector].PrefixMismatchHeuristicFactor = @node.extensions.HyCube.PrefixMismatchHeuristicFactor
		node.main.NextHopSelectors[HyCubeNextHopSelector].PrefixMismatchHeuristicWhenNoNextHop = @node.extensions.HyCube.PrefixMismatchHeuristicWhenNoNextHop
		node.main.NextHopSelectors[HyCubeNextHopSelector].UseSteinhausTransformOnlyWithPMH = @node.extensions.HyCube.UseSteinhausTransformOnlyWithPMH
		node.main.NextHopSelectors[HyCubeNextHopSelector].RespectNumOfCommonBitsInNextGroup = @node.extensions.HyCube.RespectNumOfCommonBitsInNextGroup
		node.main.NextHopSelectors[HyCubeNextHopSelector].UseNSInFullScanWithoutPMH = @node.extensions.HyCube.UseNSInFullScanWithoutPMH
		node.main.NextHopSelectors[HyCubeNextHopSelector].UseRT1InFullScanWithoutPMH = @node.extensions.HyCube.UseRT1InFullScanWithoutPMH
		node.main.NextHopSelectors[HyCubeNextHopSelector].UseRT2InFullScanWithoutPMH = @node.extensions.HyCube.UseRT2InFullScanWithoutPMH
		node.main.NextHopSelectors[HyCubeNextHopSelector].UseNSInFullScanWithPMH = @node.extensions.HyCube.UseNSInFullScanWithPMH
		node.main.NextHopSelectors[HyCubeNextHopSelector].UseRT1InFullScanWithPMH = @node.extensions.HyCube.UseRT1InFullScanWithPMH
		node.main.NextHopSelectors[HyCubeNextHopSelector].UseRT2InFullScanWithPMH = @node.extensions.HyCube.UseRT2InFullScanWithPMH
		node.main.NextHopSelectors[HyCubeNextHopSelector].UseSecureRouting = @node.extensions.HyCube.UseSecureRouting
		node.main.NextHopSelectors[HyCubeNextHopSelector].SkipRandomNumberOfNodesEnabled = false
		node.main.NextHopSelectors[HyCubeNextHopSelector].SkipRandomNumberOfNodesMean = 0
		node.main.NextHopSelectors[HyCubeNextHopSelector].SkipRandomNumberOfNodesStdDev = 1
		node.main.NextHopSelectors[HyCubeNextHopSelector].SkipRandomNumberOfNodesAbsolute = true
		node.main.NextHopSelectors[HyCubeNextHopSelector].SkipNodesNumMax = 4
		node.main.NextHopSelectors[HyCubeNextHopSelector].SkipNodesNumWhenRandomExceedsMax = 0
		node.main.NextHopSelectors[HyCubeNextHopSelector].ForceSkipNodes = false
		node.main.NextHopSelectors[HyCubeNextHopSelector].SkipNodesIncludeExcactMatch = false
	
	
	
	
	node.main.RoutingManager = HyCubeRoutingManager
	node.main.RoutingManager[HyCubeRoutingManager].Class = net.hycube.routing.HyCubeRoutingManager
	node.main.RoutingManager[HyCubeRoutingManager].NextHopSelectorKey = HyCubeNextHopSelector
	node.main.RoutingManager[HyCubeRoutingManager].UseSteinhausTransform = @node.extensions.HyCube.UseSteinhausTransform
	node.main.RoutingManager[HyCubeRoutingManager].AllowRegisteredRoutes = true
	node.main.RoutingManager[HyCubeRoutingManager].RegisteredRoutesRetentionTime = 1000
	node.main.RoutingManager[HyCubeRoutingManager].AllowAnonymousRoutes = true
	node.main.RoutingManager[HyCubeRoutingManager].ConcealTTL = false
	node.main.RoutingManager[HyCubeRoutingManager].DecreaseTTLProbability = 0.8
	node.main.RoutingManager[HyCubeRoutingManager].IncreaseTTLByRandomNum = true
	node.main.RoutingManager[HyCubeRoutingManager].IncreaseTTLRandomMean = 0.5
	node.main.RoutingManager[HyCubeRoutingManager].IncreaseTTLRandomStdDev = 1
	node.main.RoutingManager[HyCubeRoutingManager].IncreaseTTLRandomAbsolute = true
	node.main.RoutingManager[HyCubeRoutingManager].IncreaseTTLRandomModulo = 4
	node.main.RoutingManager[HyCubeRoutingManager].ConcealHopCount = false
	node.main.RoutingManager[HyCubeRoutingManager].EnsureSteinhausPointAnonymity = false
	node.main.RoutingManager[HyCubeRoutingManager].SteinhausPointAnonymityDistanceFactor = 0.9375
	
	
	
	node.main.LookupManager = HyCubeLookupManager
	node.main.LookupManager[HyCubeLookupManager].Class = net.hycube.lookup.HyCubeLookupManager
	node.main.LookupManager[HyCubeLookupManager].NextHopSelectorKey = HyCubeNextHopSelector
	node.main.LookupManager[HyCubeLookupManager].LookupCallbackEventKey = LookupCallback
	node.main.LookupManager[HyCubeLookupManager].LookupRequestTimeoutEventKey = LookupRequestTimeout
	node.main.LookupManager[HyCubeLookupManager].DefaultBeta = 1
	node.main.LookupManager[HyCubeLookupManager].DefaultGamma = 2
	node.main.LookupManager[HyCubeLookupManager].Metric = @node.extensions.HyCube.Metric
	node.main.LookupManager[HyCubeLookupManager].UseSteinhausTransform = @node.extensions.HyCube.UseSteinhausTransform
	node.main.LookupManager[HyCubeLookupManager].LookupRequestTimeout = 5000

	node.main.SearchManager = HyCubeSearchManager
	node.main.SearchManager[HyCubeSearchManager].Class = net.hycube.search.HyCubeSearchManager
	node.main.SearchManager[HyCubeSearchManager].NextHopSelectorKey = HyCubeNextHopSelector
	node.main.SearchManager[HyCubeSearchManager].SearchCallbackEventKey = SearchCallback
	node.main.SearchManager[HyCubeSearchManager].SearchRequestTimeoutEventKey = SearchRequestTimeout
	node.main.SearchManager[HyCubeSearchManager].DefaultAlpha = 8
	node.main.SearchManager[HyCubeSearchManager].DefaultBeta = 16
	node.main.SearchManager[HyCubeSearchManager].DefaultGamma = 16
	node.main.SearchManager[HyCubeSearchManager].Metric = @node.extensions.HyCube.Metric
	node.main.SearchManager[HyCubeSearchManager].UseSteinhausTransform = @node.extensions.HyCube.UseSteinhausTransform
	node.main.SearchManager[HyCubeSearchManager].SearchRequestTimeout = 10000

	
	
	node.main.JoinManager = HyCubeSearchJoinManager
	#node.main.JoinManager = HyCubeRouteJoinManager
	
	node.main.JoinManager[HyCubeSearchJoinManager].Class = net.hycube.join.searchjoin.HyCubeSearchJoinManager
	node.main.JoinManager[HyCubeSearchJoinManager].NextHopSelectorKey = HyCubeNextHopSelector
	node.main.JoinManager[HyCubeSearchJoinManager].JoinCallbackEventKey = JoinCallback
	node.main.JoinManager[HyCubeSearchJoinManager].JoinRequestTimeoutEventKey = JoinRequestTimeout
	node.main.JoinManager[HyCubeSearchJoinManager].JoinAlpha = 8
	node.main.JoinManager[HyCubeSearchJoinManager].JoinBeta = 16
	node.main.JoinManager[HyCubeSearchJoinManager].JoinGamma = 16
	node.main.JoinManager[HyCubeSearchJoinManager].Metric = @node.extensions.HyCube.Metric
	node.main.JoinManager[HyCubeSearchJoinManager].UseSteinhausTransform = @node.extensions.HyCube.UseSteinhausTransform
	node.main.JoinManager[HyCubeSearchJoinManager].JoinRequestTimeout = 2000
	node.main.JoinManager[HyCubeSearchJoinManager].SendClosestInInitialJoinReply = false
	node.main.JoinManager[HyCubeSearchJoinManager].IncludeNSInInitialJoinReply = true
	node.main.JoinManager[HyCubeSearchJoinManager].IncludeRTInInitialJoinReply = true
	node.main.JoinManager[HyCubeSearchJoinManager].IncludeSelfInInitialJoinReply = true
	node.main.JoinManager[HyCubeSearchJoinManager].MarkInitialJoinReplySenderAsResponded = true
	node.main.JoinManager[HyCubeSearchJoinManager].RecoveryNSAfterJoin = true
	node.main.JoinManager[HyCubeSearchJoinManager].RecoveryAfterJoin = false
	node.main.JoinManager[HyCubeSearchJoinManager].RecoveryExtensionKey = RecoveryExtension
	node.main.JoinManager[HyCubeSearchJoinManager].DiscoverPublicNetworkAddress = true
	
	node.main.JoinManager[HyCubeRouteJoinManager].Class = net.hycube.join.routejoin.HyCubeRouteJoinManager
	node.main.JoinManager[HyCubeRouteJoinManager].NextHopSelectorKey = HyCubeNextHopSelector
	node.main.JoinManager[HyCubeRouteJoinManager].PMHDisabledForJoinMessages = @node.extensions.HyCube.PrefixMismatchHeuristicDisabledForJoinMessages
	node.main.JoinManager[HyCubeRouteJoinManager].UseSteinhausTransform = @node.extensions.HyCube.UseSteinhausTransform
	node.main.JoinManager[HyCubeRouteJoinManager].JoinCallbackEventKey = JoinCallback
	node.main.JoinManager[HyCubeRouteJoinManager].JoinTimeoutEventKey = JoinTimeout
	node.main.JoinManager[HyCubeRouteJoinManager].WaitAfterFinalJoinReplyTimeoutEventKey = WaitAfterFinalJoinReplyTimeout
	node.main.JoinManager[HyCubeRouteJoinManager].JoinTimeout = 3000
	node.main.JoinManager[HyCubeRouteJoinManager].WaitTimeAfterFinalJoinReply = 500
	node.main.JoinManager[HyCubeRouteJoinManager].IncludeNSInJoinReply = true
	node.main.JoinManager[HyCubeRouteJoinManager].IncludeRTInJoinReply = true
	node.main.JoinManager[HyCubeRouteJoinManager].IncludeSelfInJoinReply = true
	node.main.JoinManager[HyCubeRouteJoinManager].IncludeNSInJoinReplyFinal = true
	node.main.JoinManager[HyCubeRouteJoinManager].IncludeRTInJoinReplyFinal = true
	node.main.JoinManager[HyCubeRouteJoinManager].IncludeSelfInJoinReplyFinal = true
	node.main.JoinManager[HyCubeRouteJoinManager].RecoveryNSAfterJoin = true
	node.main.JoinManager[HyCubeRouteJoinManager].RecoveryAfterJoin = false
	node.main.JoinManager[HyCubeRouteJoinManager].RecoveryExtensionKey = RecoveryExtension
	node.main.JoinManager[HyCubeRouteJoinManager].DiscoverPublicNetworkAddress = true
	
	node.main.LeaveManager = HyCubeLeaveManager
	node.main.LeaveManager[HyCubeLeaveManager].Class = net.hycube.leave.HyCubeLeaveManager
	node.main.LeaveManager[HyCubeLeaveManager].BlockingSendLeave = false
	node.main.LeaveManager[HyCubeLeaveManager].WaitAfterSendLeaveTime = 50
	node.main.LeaveManager[HyCubeLeaveManager].ProcessReceivedNodes = true
	
	
	
	node.main.DHTManager = HyCubeRoutingDHTManager
	
	node.main.DHTManager[HyCubeRoutingDHTManager].Class = net.hycube.dht.HyCubeRoutingDHTManager
	node.main.DHTManager[HyCubeRoutingDHTManager].PutCallbackEventTypeKey = PutCallbackEvent
	node.main.DHTManager[HyCubeRoutingDHTManager].RefreshPutCallbackEventTypeKey = RefreshPutCallbackEvent
	node.main.DHTManager[HyCubeRoutingDHTManager].GetCallbackEventTypeKey = GetCallbackEvent
	node.main.DHTManager[HyCubeRoutingDHTManager].DeleteCallbackEventTypeKey = DeleteCallbackEvent
	node.main.DHTManager[HyCubeRoutingDHTManager].PutRequestTimeoutEventTypeKey = PutRequestTimeoutEvent
	node.main.DHTManager[HyCubeRoutingDHTManager].RefreshPutRequestTimeoutEventTypeKey = RefreshPutRequestTimeoutEvent
	node.main.DHTManager[HyCubeRoutingDHTManager].GetRequestTimeoutEventTypeKey = GetRequestTimeoutEvent
	node.main.DHTManager[HyCubeRoutingDHTManager].DeleteRequestTimeoutEventTypeKey = DeleteRequestTimeoutEvent
	node.main.DHTManager[HyCubeRoutingDHTManager].PutRequestTimeout = 10000
	node.main.DHTManager[HyCubeRoutingDHTManager].RefreshPutRequestTimeout = 10000
	node.main.DHTManager[HyCubeRoutingDHTManager].GetRequestTimeout = 10000
	node.main.DHTManager[HyCubeRoutingDHTManager].DeleteRequestTimeout = 10000
	node.main.DHTManager[HyCubeRoutingDHTManager].ResourceStoreTime = 360000000
	node.main.DHTManager[HyCubeRoutingDHTManager].Metric = @node.extensions.HyCube.Metric
	node.main.DHTManager[HyCubeRoutingDHTManager].CheckIfResourceReplicaBeforeStoring = true
	node.main.DHTManager[HyCubeRoutingDHTManager].ResourceStoreNodesNum = 16
	node.main.DHTManager[HyCubeRoutingDHTManager].ReplicationNodesNum = 16
	node.main.DHTManager[HyCubeRoutingDHTManager].Replicate = true
	node.main.DHTManager[HyCubeRoutingDHTManager].AnonymousReplicate = false
	node.main.DHTManager[HyCubeRoutingDHTManager].MaxReplicationNSNodesNum = 16
	node.main.DHTManager[HyCubeRoutingDHTManager].MaxReplicationSpreadNodesNum = 32
	node.main.DHTManager[HyCubeRoutingDHTManager].AssumeNsOrdered = true
	node.main.DHTManager[HyCubeRoutingDHTManager].DensityCalculationQuantileFuncThreshold = 0.5
	node.main.DHTManager[HyCubeRoutingDHTManager].EstimatedDistanceCoefficient = 1.2
	node.main.DHTManager[HyCubeRoutingDHTManager].EstimateDensityBasedOnLastNodeOnly = false
	node.main.DHTManager[HyCubeRoutingDHTManager].PutResponseAnonymousRoute = false
	node.main.DHTManager[HyCubeRoutingDHTManager].RefreshPutResponseAnonymousRoute = false
	node.main.DHTManager[HyCubeRoutingDHTManager].GetResponseAnonymousRoute = false
	node.main.DHTManager[HyCubeRoutingDHTManager].DeleteResponseAnonymousRoute = false
	node.main.DHTManager[HyCubeRoutingDHTManager].ReplicationGetRegisterRoute = false
	node.main.DHTManager[HyCubeRoutingDHTManager].ReplicationGetAnonymousRoute = false
	node.main.DHTManager[HyCubeRoutingDHTManager].IgnoreExactPutRequests = false
	node.main.DHTManager[HyCubeRoutingDHTManager].IgnoreExactRefreshPutRequests = false
	node.main.DHTManager[HyCubeRoutingDHTManager].IgnoreExactGetRequests = false
	node.main.DHTManager[HyCubeRoutingDHTManager].IgnoreExactDeleteRequests = false
	node.main.DHTManager[HyCubeRoutingDHTManager].DHTStorageManager = HyCubeSimpleDHTStorageManager
	node.main.DHTManager[HyCubeRoutingDHTManager].DHTStorageManager[HyCubeSimpleDHTStorageManager] = @node.main.DHTStorageManager[HyCubeSimpleDHTStorageManager]
	node.main.DHTManager[HyCubeRoutingDHTManager].ResourceAccessController = HyCubeSimpleResourceAccessController 
	node.main.DHTManager[HyCubeRoutingDHTManager].ResourceAccessController[HyCubeSimpleResourceAccessController].Class = net.hycube.dht.HyCubeSimpleResourceAccessController
	node.main.DHTManager[HyCubeRoutingDHTManager].ResourceReplicationSpreadManager = HyCubeSimpleResourceReplicationSpreadManager 
	node.main.DHTManager[HyCubeRoutingDHTManager].ResourceReplicationSpreadManager[HyCubeSimpleResourceReplicationSpreadManager].Class = net.hycube.dht.HyCubeSimpleResourceReplicationSpreadManager
	
	
	node.main.DHTStorageManager[HyCubeSimpleDHTStorageManager].Class = net.hycube.dht.HyCubeSimpleDHTStorageManager
	node.main.DHTStorageManager[HyCubeSimpleDHTStorageManager].StoreMultipleCopies = true
	node.main.DHTStorageManager[HyCubeSimpleDHTStorageManager].MaxResourcesNum = 1000
	node.main.DHTStorageManager[HyCubeSimpleDHTStorageManager].MaxKeySlotSize = 10
	node.main.DHTStorageManager[HyCubeSimpleDHTStorageManager].MaxResourceSlotSize = 10
	
	
	
	node.main.NotifyProcessor = HyCubeNotifyProcessor
	
		node.main.NotifyProcessor[HyCubeNotifyProcessor].Class = net.hycube.maintenance.HyCubeNotifyProcessor
		node.main.NotifyProcessor[HyCubeNotifyProcessor].Dimensions = @node.extensions.HyCube.Dimensions
		node.main.NotifyProcessor[HyCubeNotifyProcessor].Levels = @node.extensions.HyCube.Levels
		node.main.NotifyProcessor[HyCubeNotifyProcessor].NSSize = @node.extensions.HyCube.NSSize
		node.main.NotifyProcessor[HyCubeNotifyProcessor].RoutingTableSlotSize = @node.extensions.HyCube.RoutingTableSlotSize
		node.main.NotifyProcessor[HyCubeNotifyProcessor].UseRT1 = @node.extensions.HyCube.UseRT1
		node.main.NotifyProcessor[HyCubeNotifyProcessor].UseRT2 = @node.extensions.HyCube.UseRT2
		node.main.NotifyProcessor[HyCubeNotifyProcessor].UseNS = @node.extensions.HyCube.UseNS
		node.main.NotifyProcessor[HyCubeNotifyProcessor].Metric = @node.extensions.HyCube.Metric
		node.main.NotifyProcessor[HyCubeNotifyProcessor].ExcludeRT2ScopeFromRT1 = @node.extensions.HyCube.ExcludeRT2ScopeFromRT1
		node.main.NotifyProcessor[HyCubeNotifyProcessor].UseSecureRouting = @node.extensions.HyCube.UseSecureRouting
		node.main.NotifyProcessor[HyCubeNotifyProcessor].UpdateNetworkAddressWhenDifferent = @node.extensions.HyCube.UpdateRTENetworkAddressWhenDifferentOnNotify 
		node.main.NotifyProcessor[HyCubeNotifyProcessor].RecentlyProcessedNodesRetentionTime = 0
		node.main.NotifyProcessor[HyCubeNotifyProcessor].RecentlyProcessedNodesCacheMaxSize = 300
		
		#node.main.NotifyProcessor[HyCubeNotifyProcessor].RTNodeSelector = HyCubeLnsRTNodeSelector
		node.main.NotifyProcessor[HyCubeNotifyProcessor].RTNodeSelector = HyCubeSimpleRTNodeSelector
		#node.main.NotifyProcessor[HyCubeNotifyProcessor].RTNodeSelector = HyCubePnsRTNodeSelector
		#node.main.NotifyProcessor[HyCubeNotifyProcessor].RTNodeSelector = HyCubeSecureRTNodeSelector
		
		node.main.NotifyProcessor[HyCubeNotifyProcessor].NSNodeSelector = HyCubeBalancedOrthantsNSNodeSelector
		#node.main.NotifyProcessor[HyCubeNotifyProcessor].NSNodeSelector = HyCubeBalancedRingNSNodeSelector
		#node.main.NotifyProcessor[HyCubeNotifyProcessor].NSNodeSelector = HyCubeDistanceNSNodeSelector
		#node.main.NotifyProcessor[HyCubeNotifyProcessor].NSNodeSelector = HyCubeMinDistEvennessNSNodeSelector
		#node.main.NotifyProcessor[HyCubeNotifyProcessor].NSNodeSelector = HyCubeAvgDistEvennessNSNodeSelector
		
		node.main.NotifyProcessor[HyCubeNotifyProcessor].SecureRTNodeSelector = HyCubeSecureRTNodeSelector
		
			node.main.NotifyProcessor[HyCubeNotifyProcessor].RTNodeSelector[HyCubeLnsRTNodeSelector] = @node.rtnodeselection.RTNodeSelector[HyCubeLnsRTNodeSelector]
			node.main.NotifyProcessor[HyCubeNotifyProcessor].RTNodeSelector[HyCubeSimpleRTNodeSelector] = @node.rtnodeselection.RTNodeSelector[HyCubeSimpleRTNodeSelector]
			node.main.NotifyProcessor[HyCubeNotifyProcessor].RTNodeSelector[HyCubePnsRTNodeSelector] = @node.rtnodeselection.RTNodeSelector[HyCubePnsRTNodeSelector]
			node.main.NotifyProcessor[HyCubeNotifyProcessor].RTNodeSelector[HyCubeSecureRTNodeSelector] = @node.rtnodeselection.RTNodeSelector[HyCubeSecureRTNodeSelector]
			node.main.NotifyProcessor[HyCubeNotifyProcessor].NSNodeSelector[HyCubeBalancedOrthantsNSNodeSelector] = @node.rtnodeselection.NSNodeSelector[HyCubeBalancedOrthantsNSNodeSelector]
			node.main.NotifyProcessor[HyCubeNotifyProcessor].NSNodeSelector[HyCubeBalancedRingNSNodeSelector] = @node.rtnodeselection.NSNodeSelector[HyCubeBalancedRingNSNodeSelector]
			node.main.NotifyProcessor[HyCubeNotifyProcessor].NSNodeSelector[HyCubeDistanceNSNodeSelector] = @node.rtnodeselection.NSNodeSelector[HyCubeDistanceNSNodeSelector]
			node.main.NotifyProcessor[HyCubeNotifyProcessor].NSNodeSelector[HyCubeMinDistEvennessNSNodeSelector] = @node.rtnodeselection.NSNodeSelector[HyCubeMinDistEvennessNSNodeSelector]
			node.main.NotifyProcessor[HyCubeNotifyProcessor].NSNodeSelector[HyCubeAvgDistEvennessNSNodeSelector] = @node.rtnodeselection.NSNodeSelector[HyCubeAvgDistEvennessNSNodeSelector]
			
			
			
		
		node.rtnodeselection.RTNodeSelector[HyCubeLnsRTNodeSelector].Class  = net.hycube.rtnodeselection.HyCubeLnsRTNodeSelector
		node.rtnodeselection.RTNodeSelector[HyCubeLnsRTNodeSelector].LnsIndicatorRteKey = @node.main.Extensions[KeepAliveExtension].PingResponseIndicatorRteKey
		node.rtnodeselection.RTNodeSelector[HyCubeLnsRTNodeSelector].InitialLnsIndicatorValue = @node.main.Extensions[KeepAliveExtension].InitialPingResponseIndicatorValue
		node.rtnodeselection.RTNodeSelector[HyCubeLnsRTNodeSelector].LnsIndicatorReplaceThreshold = @node.main.Extensions[KeepAliveExtension].PingResponseIndicatorReplaceThreshold
		node.rtnodeselection.RTNodeSelector[HyCubeLnsRTNodeSelector].KeepAliveExtensionKey = KeepAliveExtension
		node.rtnodeselection.RTNodeSelector[HyCubeLnsRTNodeSelector].UseKeepAliveExtensionLnsIndicatorCache = true
		
		node.rtnodeselection.RTNodeSelector[HyCubeSimpleRTNodeSelector].Class  = net.hycube.rtnodeselection.HyCubeSimpleRTNodeSelector
		
		node.rtnodeselection.RTNodeSelector[HyCubePnsRTNodeSelector].Class  = net.hycube.rtnodeselection.HyCubePnsRTNodeSelector
		
		node.rtnodeselection.RTNodeSelector[HyCubeSecureRTNodeSelector].Class  = net.hycube.rtnodeselection.HyCubeSecureRTNodeSelector
		node.rtnodeselection.RTNodeSelector[HyCubeSecureRTNodeSelector].Metric = @node.extensions.HyCube.Metric
		node.rtnodeselection.RTNodeSelector[HyCubeSecureRTNodeSelector].Dimensions = @node.extensions.HyCube.Dimensions
		node.rtnodeselection.RTNodeSelector[HyCubeSecureRTNodeSelector].Levels = @node.extensions.HyCube.Levels
		node.rtnodeselection.RTNodeSelector[HyCubeSecureRTNodeSelector].XorNodeIdChangeAfter = 1000
		node.rtnodeselection.RTNodeSelector[HyCubeSecureRTNodeSelector].DistFunRteKey = HyCubeSecureRTNodeSelector.DistFun
	
	
		node.rtnodeselection.NSNodeSelector[HyCubeBalancedOrthantsNSNodeSelector].Class = net.hycube.rtnodeselection.HyCubeBalancedOrthantsNSNodeSelector
		node.rtnodeselection.NSNodeSelector[HyCubeBalancedOrthantsNSNodeSelector].Dimensions = @node.extensions.HyCube.Dimensions
		node.rtnodeselection.NSNodeSelector[HyCubeBalancedOrthantsNSNodeSelector].OrthantNoRteKey = HyCubeBalancedOrthantsNSNodeSelector.OrthantNo
			
		node.rtnodeselection.NSNodeSelector[HyCubeBalancedRingNSNodeSelector].Class = net.hycube.rtnodeselection.HyCubeBalancedRingNSNodeSelector
		node.rtnodeselection.NSNodeSelector[HyCubeBalancedRingNSNodeSelector].SemiringNoRteKey = HyCubeBalancedRingNSNodeSelector.SemiringNo
			
		node.rtnodeselection.NSNodeSelector[HyCubeDistanceNSNodeSelector].Class = net.hycube.rtnodeselection.HyCubeDistanceNSNodeSelector
			
		node.rtnodeselection.NSNodeSelector[HyCubeMinDistEvennessNSNodeSelector].Class = net.hycube.rtnodeselection.HyCubeMinDistEvennessNSNodeSelector
		node.rtnodeselection.NSNodeSelector[HyCubeMinDistEvennessNSNodeSelector].Metric = @node.extensions.HyCube.Metric
		node.rtnodeselection.NSNodeSelector[HyCubeMinDistEvennessNSNodeSelector].DistanceCompFactor = -32
		node.rtnodeselection.NSNodeSelector[HyCubeMinDistEvennessNSNodeSelector].DistanceCompElemExp = 2
		node.rtnodeselection.NSNodeSelector[HyCubeMinDistEvennessNSNodeSelector].DistanceCompExp = 0.5
		node.rtnodeselection.NSNodeSelector[HyCubeMinDistEvennessNSNodeSelector].EvennessCompFactor = 1
		node.rtnodeselection.NSNodeSelector[HyCubeMinDistEvennessNSNodeSelector].EvennessCompElemExp = 1
		node.rtnodeselection.NSNodeSelector[HyCubeMinDistEvennessNSNodeSelector].EvennessCompExp = 1

		node.rtnodeselection.NSNodeSelector[HyCubeAvgDistEvennessNSNodeSelector].Class = net.hycube.rtnodeselection.HyCubeAvgDistEvennessNSNodeSelector
		node.rtnodeselection.NSNodeSelector[HyCubeAvgDistEvennessNSNodeSelector].Metric = @node.extensions.HyCube.Metric
		node.rtnodeselection.NSNodeSelector[HyCubeAvgDistEvennessNSNodeSelector].DistanceCompFactor = -48
		node.rtnodeselection.NSNodeSelector[HyCubeAvgDistEvennessNSNodeSelector].DistanceCompElemExp = 2
		node.rtnodeselection.NSNodeSelector[HyCubeAvgDistEvennessNSNodeSelector].DistanceCompExp = 0.5
		node.rtnodeselection.NSNodeSelector[HyCubeAvgDistEvennessNSNodeSelector].EvennessCompFactor = 1
		node.rtnodeselection.NSNodeSelector[HyCubeAvgDistEvennessNSNodeSelector].EvennessCompElemExp = 0.5
		node.rtnodeselection.NSNodeSelector[HyCubeAvgDistEvennessNSNodeSelector].EvennessCompExp = 2
		

	
	
	#node.main.NetworkAdapter = UDPSelectorNetworkAdapter
	#node.main.NetworkAdapter = UDPNetworkAdapter
	node.main.NetworkAdapter = SimNetworkAdapter
	
		node.main.NetworkAdapter[UDPSelectorNetworkAdapter].Class = net.hycube.transport.UDPSelectorNetworkAdapter
		node.main.NetworkAdapter[UDPSelectorNetworkAdapter].OSSendBufferSize = 131072
		node.main.NetworkAdapter[UDPSelectorNetworkAdapter].OSReceiveBufferSize = 131072
		node.main.NetworkAdapter[UDPSelectorNetworkAdapter].ReceiveTimeout = 0
		#node.main.NetworkAdapter[UDPSelectorNetworkAdapter].ReceiveTimeout = 100
		node.main.NetworkAdapter[UDPSelectorNetworkAdapter].MaxMessageLength = 65507
		#node.main.NetworkAdapter[UDPSelectorNetworkAdapter].MaxMessageLength = 0
		node.main.NetworkAdapter[UDPSelectorNetworkAdapter].ThrowWhenMaxMessageLengthExceeded = true
		node.main.NetworkAdapter[UDPSelectorNetworkAdapter].FragmentMessages = true
		node.main.NetworkAdapter[UDPSelectorNetworkAdapter].MessageFragmenter = HyCubeMessageFragmenter
		node.main.NetworkAdapter[UDPSelectorNetworkAdapter].MessageFragmenter[HyCubeMessageFragmenter].Class = net.hycube.messaging.fragmentation.HyCubeMessageFragmenter
		node.main.NetworkAdapter[UDPSelectorNetworkAdapter].MessageFragmenter[HyCubeMessageFragmenter].HeaderExtensionIndex = 0		
		node.main.NetworkAdapter[UDPSelectorNetworkAdapter].MessageFragmenter[HyCubeMessageFragmenter].FragmentLength = 32767
		node.main.NetworkAdapter[UDPSelectorNetworkAdapter].MessageFragmenter[HyCubeMessageFragmenter].FragmentsRetentionPeriod = 5000
		node.main.NetworkAdapter[UDPSelectorNetworkAdapter].MessageFragmenter[HyCubeMessageFragmenter].PreventFragmentDuplicates = false
		
		node.main.NetworkAdapter[UDPNetworkAdapter].Class = net.hycube.transport.UDPNetworkAdapter
		node.main.NetworkAdapter[UDPNetworkAdapter].OSSendBufferSize = 131072
		node.main.NetworkAdapter[UDPNetworkAdapter].OSReceiveBufferSize = 131072
		node.main.NetworkAdapter[UDPNetworkAdapter].ReceiveTimeout = 100
		node.main.NetworkAdapter[UDPNetworkAdapter].MaxMessageLength = 65507
		node.main.NetworkAdapter[UDPNetworkAdapter].ThrowWhenMaxMessageLengthExceeded = true
		node.main.NetworkAdapter[UDPNetworkAdapter].FragmentMessages = true
		node.main.NetworkAdapter[UDPNetworkAdapter].MessageFragmenter = HyCubeMessageFragmenter
		node.main.NetworkAdapter[UDPNetworkAdapter].MessageFragmenter[HyCubeMessageFragmenter].Class = net.hycube.messaging.fragmentation.HyCubeMessageFragmenter
		node.main.NetworkAdapter[UDPNetworkAdapter].MessageFragmenter[HyCubeMessageFragmenter].HeaderExtensionIndex = 0		
		node.main.NetworkAdapter[UDPNetworkAdapter].MessageFragmenter[HyCubeMessageFragmenter].FragmentLength = 32767
		node.main.NetworkAdapter[UDPNetworkAdapter].MessageFragmenter[HyCubeMessageFragmenter].FragmentsRetentionPeriod = 5000
		node.main.NetworkAdapter[UDPNetworkAdapter].MessageFragmenter[HyCubeMessageFragmenter].PreventFragmentDuplicates = false
		
		node.main.NetworkAdapter[SimNetworkAdapter].Class = net.hycube.simulator.transport.SimNetworkAdapter
	
	
	
	
	
	#node.main.MessageReceiver = UDPWakeableSelectorMessageReceiver
	#node.main.MessageReceiver = UDPSelectorMessageReceiver
	#node.main.MessageReceiver = UDPMessageReceiver
	node.main.MessageReceiver = SimWakeableMessageReceiver

		node.main.MessageReceiver[UDPWakeableSelectorMessageReceiver].Class = net.hycube.transport.UDPWakeableSelectorMessageReceiver
		node.main.MessageReceiver[UDPWakeableSelectorMessageReceiver].MessageFactory = HyCubeMessageFactory
		node.main.MessageReceiver[UDPWakeableSelectorMessageReceiver].MessageFactory[HyCubeMessageFactory] = @node.main.MessageFactory[HyCubeMessageFactory]
		
		node.main.MessageReceiver[UDPSelectorMessageReceiver].Class = net.hycube.transport.UDPSelectorMessageReceiver
		node.main.MessageReceiver[UDPSelectorMessageReceiver].MessageFactory = HyCubeMessageFactory
		node.main.MessageReceiver[UDPSelectorMessageReceiver].MessageFactory[HyCubeMessageFactory] = @node.main.MessageFactory[HyCubeMessageFactory]
		
		node.main.MessageReceiver[UDPMessageReceiver].Class = net.hycube.transport.UDPMessageReceiver
		node.main.MessageReceiver[UDPMessageReceiver].MessageFactory = HyCubeMessageFactory
		node.main.MessageReceiver[UDPMessageReceiver].MessageFactory[HyCubeMessageFactory] = @node.main.MessageFactory[HyCubeMessageFactory]
		
		node.main.MessageReceiver[SimMessageReceiver].Class = net.hycube.simulator.transport.SimMessageReceiver
		node.main.MessageReceiver[SimMessageReceiver].MessageFactory = HyCubeMessageFactory
		node.main.MessageReceiver[SimMessageReceiver].MessageFactory[HyCubeMessageFactory] = @node.main.MessageFactory[HyCubeMessageFactory]
		
		node.main.MessageReceiver[SimWakeableMessageReceiver].Class = net.hycube.simulator.transport.SimWakeableMessageReceiver
		node.main.MessageReceiver[SimWakeableMessageReceiver].MessageFactory = HyCubeMessageFactory
		node.main.MessageReceiver[SimWakeableMessageReceiver].MessageFactory[HyCubeMessageFactory] = @node.main.MessageFactory[HyCubeMessageFactory]	
	
	
	
	node.main.ReceivedMessageProcessors = HyCubeReceivedMessageProcessor
		node.main.ReceivedMessageProcessors[HyCubeReceivedMessageProcessor].Class = net.hycube.messaging.processing.HyCubeReceivedMessageProcessor
		node.main.ReceivedMessageProcessors[HyCubeReceivedMessageProcessor].MessageTypes = DATA, DATA_ACK, PING, PONG, LOOKUP, LOOKUP_REPLY, SEARCH, SEARCH_REPLY, JOIN, JOIN_REPLY, RECOVERY, RECOVERY_REPLY, NOTIFY, LEAVE, PUT, PUT_REPLY, GET, GET_REPLY, DELETE, DELETE_REPLY, REFRESH_PUT, REFRESH_PUT_REPLY, REPLICATE
		node.main.ReceivedMessageProcessors[HyCubeReceivedMessageProcessor].LimitMaxProcessedMessagesRate.Num = 0
		node.main.ReceivedMessageProcessors[HyCubeReceivedMessageProcessor].LimitMaxProcessedMessagesRate.Time = 1000
		node.main.ReceivedMessageProcessors[HyCubeReceivedMessageProcessor].LimitMaxProcessedMessagesRate.LimitForTypes = 
		#PING, NOTIFY, LEAVE, JOIN, RECOVERY, DATA, LOOKUP, SEARCH, PUT, GET, DELETE, REFRESH_PUT
		node.main.ReceivedMessageProcessors[HyCubeReceivedMessageProcessor].LimitMaxProcessedMessagesRate[PING].Num = 0
		node.main.ReceivedMessageProcessors[HyCubeReceivedMessageProcessor].LimitMaxProcessedMessagesRate[PING].Time = 1000
		node.main.ReceivedMessageProcessors[HyCubeReceivedMessageProcessor].LimitMaxProcessedMessagesRate[NOTIFY].Num = 300
		node.main.ReceivedMessageProcessors[HyCubeReceivedMessageProcessor].LimitMaxProcessedMessagesRate[NOTIFY].Time = 1000
		node.main.ReceivedMessageProcessors[HyCubeReceivedMessageProcessor].LimitMaxProcessedMessagesRate[LEAVE].Num = 200
		node.main.ReceivedMessageProcessors[HyCubeReceivedMessageProcessor].LimitMaxProcessedMessagesRate[LEAVE].Time = 1000
		node.main.ReceivedMessageProcessors[HyCubeReceivedMessageProcessor].LimitMaxProcessedMessagesRate[JOIN].Num = 100
		node.main.ReceivedMessageProcessors[HyCubeReceivedMessageProcessor].LimitMaxProcessedMessagesRate[JOIN].Time = 1000
		node.main.ReceivedMessageProcessors[HyCubeReceivedMessageProcessor].LimitMaxProcessedMessagesRate[RECOVERY].Num = 100
		node.main.ReceivedMessageProcessors[HyCubeReceivedMessageProcessor].LimitMaxProcessedMessagesRate[RECOVERY].Time = 1000
		node.main.ReceivedMessageProcessors[HyCubeReceivedMessageProcessor].LimitMaxProcessedMessagesRate[DATA].Num = 200
		node.main.ReceivedMessageProcessors[HyCubeReceivedMessageProcessor].LimitMaxProcessedMessagesRate[DATA].Time = 1000 
		node.main.ReceivedMessageProcessors[HyCubeReceivedMessageProcessor].LimitMaxProcessedMessagesRate[LOOKUP].Num = 200
		node.main.ReceivedMessageProcessors[HyCubeReceivedMessageProcessor].LimitMaxProcessedMessagesRate[LOOKUP].Time = 1000
		node.main.ReceivedMessageProcessors[HyCubeReceivedMessageProcessor].LimitMaxProcessedMessagesRate[SEARCH].Num = 200
		node.main.ReceivedMessageProcessors[HyCubeReceivedMessageProcessor].LimitMaxProcessedMessagesRate[SEARCH].Time = 1000
		node.main.ReceivedMessageProcessors[HyCubeReceivedMessageProcessor].LimitMaxProcessedMessagesRate[PUT].Num = 200
		node.main.ReceivedMessageProcessors[HyCubeReceivedMessageProcessor].LimitMaxProcessedMessagesRate[PUT].Time = 1000
		node.main.ReceivedMessageProcessors[HyCubeReceivedMessageProcessor].LimitMaxProcessedMessagesRate[GET].Num = 200
		node.main.ReceivedMessageProcessors[HyCubeReceivedMessageProcessor].LimitMaxProcessedMessagesRate[GET].Time = 1000
		node.main.ReceivedMessageProcessors[HyCubeReceivedMessageProcessor].LimitMaxProcessedMessagesRate[DELETE].Num = 200 
		node.main.ReceivedMessageProcessors[HyCubeReceivedMessageProcessor].LimitMaxProcessedMessagesRate[DELETE].Time = 1000
		node.main.ReceivedMessageProcessors[HyCubeReceivedMessageProcessor].LimitMaxProcessedMessagesRate[REFRESH_PUT].Num = 200
		node.main.ReceivedMessageProcessors[HyCubeReceivedMessageProcessor].LimitMaxProcessedMessagesRate[REFRESH_PUT].Time = 1000
		node.main.ReceivedMessageProcessors[HyCubeReceivedMessageProcessor].ProcessRouteBackMessagesByNodesOnRoute = false
		
		
		
		#for search join:
		node.main.ReceivedMessageProcessors[HyCubeReceivedMessageProcessor].ReceivedMessageProcessors = HyCubeReceivedMessageProcessorData, HyCubeReceivedMessageProcessorAck, HyCubeReceivedMessageProcessorPing, HyCubeReceivedMessageProcessorLookup, HyCubeReceivedMessageProcessorSearch, HyCubeReceivedMessageProcessorSearchJoin, HyCubeReceivedMessageProcessorRecovery, HyCubeReceivedMessageProcessorNotify, HyCubeReceivedMessageProcessorLeave, HyCubeReceivedMessageProcessorDHT, StatReceivedMessageProcessor
		
		#for route join:
		#node.main.ReceivedMessageProcessors[HyCubeReceivedMessageProcessor].ReceivedMessageProcessors = HyCubeReceivedMessageProcessorData, HyCubeReceivedMessageProcessorAck, HyCubeReceivedMessageProcessorPing, HyCubeReceivedMessageProcessorLookup, HyCubeReceivedMessageProcessorSearch, HyCubeReceivedMessageProcessorRouteJoin, HyCubeReceivedMessageProcessorRecovery, HyCubeReceivedMessageProcessorNotify, HyCubeReceivedMessageProcessorLeave, HyCubeReceivedMessageProcessorDHT, StatReceivedMessageProcessor

			node.main.ReceivedMessageProcessors[HyCubeReceivedMessageProcessor].ReceivedMessageProcessors[HyCubeReceivedMessageProcessorData].Class = net.hycube.messaging.data.HyCubeReceivedMessageProcessorData
			node.main.ReceivedMessageProcessors[HyCubeReceivedMessageProcessor].ReceivedMessageProcessors[HyCubeReceivedMessageProcessorData].MessageTypes = DATA
			node.main.ReceivedMessageProcessors[HyCubeReceivedMessageProcessor].ReceivedMessageProcessors[HyCubeReceivedMessageProcessorData].AckEnabled = @node.main.MessageAckEnabled
			node.main.ReceivedMessageProcessors[HyCubeReceivedMessageProcessor].ReceivedMessageProcessors[HyCubeReceivedMessageProcessorData].AckExtensionKey = AckExtension
			node.main.ReceivedMessageProcessors[HyCubeReceivedMessageProcessor].ReceivedMessageProcessors[HyCubeReceivedMessageProcessorData].ProcessDataMessageIfCannotRoute = false
			node.main.ReceivedMessageProcessors[HyCubeReceivedMessageProcessor].ReceivedMessageProcessors[HyCubeReceivedMessageProcessorData].PreventDuplicates = false
			node.main.ReceivedMessageProcessors[HyCubeReceivedMessageProcessor].ReceivedMessageProcessors[HyCubeReceivedMessageProcessorData].PreventAnonymousDuplicates = false
			node.main.ReceivedMessageProcessors[HyCubeReceivedMessageProcessor].ReceivedMessageProcessors[HyCubeReceivedMessageProcessorData].PreventDuplicatesIncludeCRC = true
			node.main.ReceivedMessageProcessors[HyCubeReceivedMessageProcessor].ReceivedMessageProcessors[HyCubeReceivedMessageProcessorData].PreventDuplicatesRetentionPeriod = 0
			node.main.ReceivedMessageProcessors[HyCubeReceivedMessageProcessor].ReceivedMessageProcessors[HyCubeReceivedMessageProcessorData].PreventDuplicatesCacheMaxSize = 200
			
			
			node.main.ReceivedMessageProcessors[HyCubeReceivedMessageProcessor].ReceivedMessageProcessors[HyCubeReceivedMessageProcessorAck].Class = net.hycube.messaging.ack.HyCubeReceivedMessageProcessorDataAck
			node.main.ReceivedMessageProcessors[HyCubeReceivedMessageProcessor].ReceivedMessageProcessors[HyCubeReceivedMessageProcessorAck].MessageTypes = DATA_ACK
			node.main.ReceivedMessageProcessors[HyCubeReceivedMessageProcessor].ReceivedMessageProcessors[HyCubeReceivedMessageProcessorAck].AckExtensionKey = AckExtension
			
			node.main.ReceivedMessageProcessors[HyCubeReceivedMessageProcessor].ReceivedMessageProcessors[HyCubeReceivedMessageProcessorPing].Class = net.hycube.maintenance.HyCubeReceivedMessageProcessorPing
			node.main.ReceivedMessageProcessors[HyCubeReceivedMessageProcessor].ReceivedMessageProcessors[HyCubeReceivedMessageProcessorPing].MessageTypes = PING, PONG
			node.main.ReceivedMessageProcessors[HyCubeReceivedMessageProcessor].ReceivedMessageProcessors[HyCubeReceivedMessageProcessorPing].KeepAliveExtensionKey = KeepAliveExtension
			
			node.main.ReceivedMessageProcessors[HyCubeReceivedMessageProcessor].ReceivedMessageProcessors[HyCubeReceivedMessageProcessorLookup].Class = net.hycube.lookup.HyCubeReceivedMessageProcessorLookup
			node.main.ReceivedMessageProcessors[HyCubeReceivedMessageProcessor].ReceivedMessageProcessors[HyCubeReceivedMessageProcessorLookup].MessageTypes = LOOKUP, LOOKUP_REPLY
			
			node.main.ReceivedMessageProcessors[HyCubeReceivedMessageProcessor].ReceivedMessageProcessors[HyCubeReceivedMessageProcessorSearch].Class = net.hycube.search.HyCubeReceivedMessageProcessorSearch
			node.main.ReceivedMessageProcessors[HyCubeReceivedMessageProcessor].ReceivedMessageProcessors[HyCubeReceivedMessageProcessorSearch].MessageTypes = SEARCH, SEARCH_REPLY
			
			node.main.ReceivedMessageProcessors[HyCubeReceivedMessageProcessor].ReceivedMessageProcessors[HyCubeReceivedMessageProcessorSearchJoin].Class = net.hycube.join.searchjoin.HyCubeReceivedMessageProcessorSearchJoin
			node.main.ReceivedMessageProcessors[HyCubeReceivedMessageProcessor].ReceivedMessageProcessors[HyCubeReceivedMessageProcessorSearchJoin].MessageTypes = JOIN, JOIN_REPLY
			
			node.main.ReceivedMessageProcessors[HyCubeReceivedMessageProcessor].ReceivedMessageProcessors[HyCubeReceivedMessageProcessorRouteJoin].Class = net.hycube.join.routejoin.HyCubeReceivedMessageProcessorRouteJoin
			node.main.ReceivedMessageProcessors[HyCubeReceivedMessageProcessor].ReceivedMessageProcessors[HyCubeReceivedMessageProcessorRouteJoin].MessageTypes = JOIN, JOIN_REPLY
			
			node.main.ReceivedMessageProcessors[HyCubeReceivedMessageProcessor].ReceivedMessageProcessors[HyCubeReceivedMessageProcessorRecovery].Class = net.hycube.maintenance.HyCubeReceivedMessageProcessorRecovery
			node.main.ReceivedMessageProcessors[HyCubeReceivedMessageProcessor].ReceivedMessageProcessors[HyCubeReceivedMessageProcessorRecovery].MessageTypes = RECOVERY, RECOVERY_REPLY
			node.main.ReceivedMessageProcessors[HyCubeReceivedMessageProcessor].ReceivedMessageProcessors[HyCubeReceivedMessageProcessorRecovery].RecoveryExtensionKey = RecoveryExtension
			
			node.main.ReceivedMessageProcessors[HyCubeReceivedMessageProcessor].ReceivedMessageProcessors[HyCubeReceivedMessageProcessorNotify].Class = net.hycube.maintenance.HyCubeReceivedMessageProcessorNotify
			node.main.ReceivedMessageProcessors[HyCubeReceivedMessageProcessor].ReceivedMessageProcessors[HyCubeReceivedMessageProcessorNotify].MessageTypes = NOTIFY
			node.main.ReceivedMessageProcessors[HyCubeReceivedMessageProcessor].ReceivedMessageProcessors[HyCubeReceivedMessageProcessorNotify].ValidateNotifyMessageSender = true
			
			node.main.ReceivedMessageProcessors[HyCubeReceivedMessageProcessor].ReceivedMessageProcessors[HyCubeReceivedMessageProcessorLeave].Class = net.hycube.leave.HyCubeReceivedMessageProcessorLeave
			node.main.ReceivedMessageProcessors[HyCubeReceivedMessageProcessor].ReceivedMessageProcessors[HyCubeReceivedMessageProcessorLeave].MessageTypes = LEAVE
			node.main.ReceivedMessageProcessors[HyCubeReceivedMessageProcessor].ReceivedMessageProcessors[HyCubeReceivedMessageProcessorLeave].ValidateLeaveMessageSender = true
		
			node.main.ReceivedMessageProcessors[HyCubeReceivedMessageProcessor].ReceivedMessageProcessors[HyCubeReceivedMessageProcessorDHT].Class = net.hycube.dht.HyCubeReceivedMessageProcessorDHT
			node.main.ReceivedMessageProcessors[HyCubeReceivedMessageProcessor].ReceivedMessageProcessors[HyCubeReceivedMessageProcessorDHT].MessageTypes = PUT, PUT_REPLY, GET, GET_REPLY, DELETE, DELETE_REPLY, REFRESH_PUT, REFRESH_PUT_REPLY, REPLICATE
	
			node.main.ReceivedMessageProcessors[HyCubeReceivedMessageProcessor].ReceivedMessageProcessors[StatReceivedMessageProcessor].Class = net.hycube.simulator.stat.StatReceivedMessageProcessor
			node.main.ReceivedMessageProcessors[HyCubeReceivedMessageProcessor].ReceivedMessageProcessors[StatReceivedMessageProcessor].MessageTypes = DATA
			node.main.ReceivedMessageProcessors[HyCubeReceivedMessageProcessor].ReceivedMessageProcessors[StatReceivedMessageProcessor].MessageStatExtensionKey = MessageStatExtension
	
	
	
	node.main.MessageSendProcessors = HyCubeMessageSendProcessor
		node.main.MessageSendProcessors[HyCubeMessageSendProcessor].Class = net.hycube.messaging.processing.HyCubeMessageSendProcessor
		node.main.MessageSendProcessors[HyCubeMessageSendProcessor].MessageTypes = DATA, PING
		node.main.MessageSendProcessors[HyCubeMessageSendProcessor].MessageSendProcessors = HyCubeMessageSendProcessorData, HyCubeMessageSendProcessorPing, StatMessageSendProcessor
		
			node.main.MessageSendProcessors[HyCubeMessageSendProcessor].MessageSendProcessors[HyCubeMessageSendProcessorData].Class = net.hycube.messaging.ack.HyCubeMessageSendProcessorDataAck
			node.main.MessageSendProcessors[HyCubeMessageSendProcessor].MessageSendProcessors[HyCubeMessageSendProcessorData].MessageTypes = DATA
			node.main.MessageSendProcessors[HyCubeMessageSendProcessor].MessageSendProcessors[HyCubeMessageSendProcessorData].AckExtensionKey = AckExtension
			
			node.main.MessageSendProcessors[HyCubeMessageSendProcessor].MessageSendProcessors[HyCubeMessageSendProcessorPing].Class = net.hycube.maintenance.HyCubeMessageSendProcessorPing
			node.main.MessageSendProcessors[HyCubeMessageSendProcessor].MessageSendProcessors[HyCubeMessageSendProcessorPing].MessageTypes = PING
			node.main.MessageSendProcessors[HyCubeMessageSendProcessor].MessageSendProcessors[HyCubeMessageSendProcessorPing].KeepAliveExtensionKey = KeepAliveExtension

			node.main.MessageSendProcessors[HyCubeMessageSendProcessor].MessageSendProcessors[StatMessageSendProcessor].Class = net.hycube.simulator.stat.StatMessageSendProcessor
			node.main.MessageSendProcessors[HyCubeMessageSendProcessor].MessageSendProcessors[StatMessageSendProcessor].MessageTypes = DATA
			node.main.MessageSendProcessors[HyCubeMessageSendProcessor].MessageSendProcessors[StatMessageSendProcessor].MessageStatExtensionKey = MessageStatExtension
	
	
	
	
	node.main.Extensions = HyCubeExtension, AckExtension, KeepAliveExtension, PnsExtension, RecoveryExtension, MessageStatExtension, NodeClearMemoryExtension
		
		node.main.Extensions[HyCubeExtension] = @node.extensions.HyCube
		
		node.main.Extensions[AckExtension].Class = net.hycube.messaging.ack.HyCubeAckExtension
		node.main.Extensions[AckExtension].AckManager.ApplySecureRoutingAfterNotDeliveredCount = 1
		node.main.Extensions[AckExtension].AckManager.ApplySkippingNextHopsAfterNotDeliveredCount = 1
		node.main.Extensions[AckExtension].AckManager.ValidateAckSender = false
		
		node.main.Extensions[KeepAliveExtension].Class = net.hycube.maintenance.HyCubeKeepAliveExtension
		node.main.Extensions[KeepAliveExtension].PingInterval = 20000
		node.main.Extensions[KeepAliveExtension].PongTimeout = 5000
		node.main.Extensions[KeepAliveExtension].ProcessPongInterval = 20000
		node.main.Extensions[KeepAliveExtension].PingResponseIndicatorRteKey = PingResponseIndicator
		node.main.Extensions[KeepAliveExtension].InitialPingResponseIndicatorValue = 1
		node.main.Extensions[KeepAliveExtension].MaxPingResponseIndicatorValue = 2
		node.main.Extensions[KeepAliveExtension].PingResponseIndicatorUpdateCoefficient = 0.5
		node.main.Extensions[KeepAliveExtension].PingResponseIndicatorDeactivateThreshold = 0.5
		node.main.Extensions[KeepAliveExtension].PingResponseIndicatorReplaceThreshold = 0.5
		node.main.Extensions[KeepAliveExtension].PingResponseIndicatorRemoveThreshold = 0.5
		node.main.Extensions[KeepAliveExtension].PingResponseIndicatorRetentionTime = 0
		
		node.main.Extensions[PnsExtension].Class = net.hycube.maintenance.HyCubePnsExtension
		
		node.main.Extensions[RecoveryExtension].Class = net.hycube.maintenance.HyCubeRecoveryExtension
		node.main.Extensions[RecoveryExtension].RecoveryManager = HyCubeRecoveryManager
		node.main.Extensions[RecoveryExtension].RecoveryManager[HyCubeRecoveryManager].SendRecoveryToNS = true
		node.main.Extensions[RecoveryExtension].RecoveryManager[HyCubeRecoveryManager].SendRecoveryToRT1 = true
		node.main.Extensions[RecoveryExtension].RecoveryManager[HyCubeRecoveryManager].SendRecoveryToRT2 = true
		node.main.Extensions[RecoveryExtension].RecoveryManager[HyCubeRecoveryManager].SendNotifyToNS = true
		node.main.Extensions[RecoveryExtension].RecoveryManager[HyCubeRecoveryManager].SendNotifyToRT1 = true
		node.main.Extensions[RecoveryExtension].RecoveryManager[HyCubeRecoveryManager].SendNotifyToRT2 = true
		node.main.Extensions[RecoveryExtension].RecoveryManager[HyCubeRecoveryManager].ProcessRecoveryAsNotify = true
		node.main.Extensions[RecoveryExtension].RecoveryManager[HyCubeRecoveryManager].ReturnNS = true
		node.main.Extensions[RecoveryExtension].RecoveryManager[HyCubeRecoveryManager].ReturnRT1 = true
		node.main.Extensions[RecoveryExtension].RecoveryManager[HyCubeRecoveryManager].ReturnRT2 = true
		node.main.Extensions[RecoveryExtension].RecoveryManager[HyCubeRecoveryManager].RecoveryNSReturnNS = true
		node.main.Extensions[RecoveryExtension].RecoveryManager[HyCubeRecoveryManager].RecoveryNSReturnRT1 = true
		node.main.Extensions[RecoveryExtension].RecoveryManager[HyCubeRecoveryManager].RecoveryNSReturnRT2 = true
		node.main.Extensions[RecoveryExtension].RecoveryManager[HyCubeRecoveryManager].RecoveryIdReturnNS = true
		node.main.Extensions[RecoveryExtension].RecoveryManager[HyCubeRecoveryManager].RecoveryIdReturnRT1 = true
		node.main.Extensions[RecoveryExtension].RecoveryManager[HyCubeRecoveryManager].RecoveryIdReturnRT2 = true
		node.main.Extensions[RecoveryExtension].RecoveryManager[HyCubeRecoveryManager].SendNotifyToRecoveryReplyNodes = false
		node.main.Extensions[RecoveryExtension].RecoveryManager[HyCubeRecoveryManager].RecoveryEventKey = Recovery
		node.main.Extensions[RecoveryExtension].RecoveryManager[HyCubeRecoveryManager].RecoveryNodesMax = 100
		node.main.Extensions[RecoveryExtension].RecoveryManager[HyCubeRecoveryManager].MinRecoveryInterval = 0
		node.main.Extensions[RecoveryExtension].RecoveryManager[HyCubeRecoveryManager].MinNotifyNodeInterval = 10000
		node.main.Extensions[RecoveryExtension].RecoveryManager[HyCubeRecoveryManager].NotifyNodesCacheMaxSize = 300
		node.main.Extensions[RecoveryExtension].RecoveryManager[HyCubeRecoveryManager].NotifyNodesMax = 100
		node.main.Extensions[RecoveryExtension].RecoveryManager[HyCubeRecoveryManager].NotifyRecoveryReplyNodesMax = 16
		node.main.Extensions[RecoveryExtension].RecoveryManager[HyCubeRecoveryManager].RecoveryReplyNodesToProcessMax = 100
		node.main.Extensions[RecoveryExtension].RecoveryManager[HyCubeRecoveryManager].RecoveryReplyNodesMax = 100

		
		
		node.main.Extensions[MessageStatExtension].Class = net.hycube.simulator.stat.MessageStatExtension
		
		node.main.Extensions[NodeClearMemoryExtension].Class = net.hycube.simulator.optimization.NodeClearMemoryExtension
	


	node.extensions.HyCube.Class = net.hycube.extensions.HyCubeExtension
	node.extensions.HyCube.Dimensions = 4
	node.extensions.HyCube.Levels = 32
	node.extensions.HyCube.NSSize = 16
	node.extensions.HyCube.RoutingTableSlotSize = 1
	node.extensions.HyCube.UseRT1 = true
	node.extensions.HyCube.UseRT2 = true
	node.extensions.HyCube.UseNS = true
	node.extensions.HyCube.Metric = EUCLIDEAN
	node.extensions.HyCube.UseSteinhausTransform = true
	node.extensions.HyCube.DynamicSteinhausTransform = true
	node.extensions.HyCube.RouteWithRegularMetricAfterSteinhaus = true
	node.extensions.HyCube.PrefixMismatchHeuristicEnabled = true
	node.extensions.HyCube.PrefixMismatchHeuristicMode = AVG
	node.extensions.HyCube.PrefixMismatchHeuristicFactor = 1.5
	node.extensions.HyCube.PrefixMismatchHeuristicDisabledForJoinMessages = true
	node.extensions.HyCube.PrefixMismatchHeuristicWhenNoNextHop = true
	node.extensions.HyCube.UseSteinhausTransformOnlyWithPMH = false
	node.extensions.HyCube.RespectNumOfCommonBitsInNextGroup = true
	node.extensions.HyCube.ExcludeRT2ScopeFromRT1 = true
	node.extensions.HyCube.UseNSInFullScanWithoutPMH = true
	node.extensions.HyCube.UseRT1InFullScanWithoutPMH = true
	node.extensions.HyCube.UseRT2InFullScanWithoutPMH = true
	node.extensions.HyCube.UseNSInFullScanWithPMH = true
	node.extensions.HyCube.UseRT1InFullScanWithPMH = true
	node.extensions.HyCube.UseRT2InFullScanWithPMH = true
	#secure routing disabled
	node.extensions.HyCube.UseSecureRouting = false
	node.extensions.HyCube.UpdateRTENetworkAddressWhenDifferentOnNotify = true
	
	
	
	
	node.main.BackgroundProcesses = HyCubeAwaitingAcksBackgroundProcess, HyCubePingBackgroundProcess, HyCubeAwaitingPongsBackgroundProcess, HyCubeDHTBackgroundProcess, HyCubeDHTReplicationBackgroundProcess
	
		node.main.BackgroundProcesses[HyCubeAwaitingAcksBackgroundProcess].Class = net.hycube.messaging.ack.HyCubeAwaitingAcksBackgroundProcess
		node.main.BackgroundProcesses[HyCubeAwaitingAcksBackgroundProcess].ScheduleImmediately = false
		node.main.BackgroundProcesses[HyCubeAwaitingAcksBackgroundProcess].AckExtensionKey = AckExtension
		node.main.BackgroundProcesses[HyCubeAwaitingAcksBackgroundProcess].EventTypeKey = AwaitingAcksBackgroundProcess 
		node.main.BackgroundProcesses[HyCubeAwaitingAcksBackgroundProcess].ScheduleInterval = @node.main.ProcessAckInterval
	
		node.main.BackgroundProcesses[HyCubePingBackgroundProcess].Class = net.hycube.maintenance.HyCubePingBackgroundProcess
		node.main.BackgroundProcesses[HyCubePingBackgroundProcess].ScheduleImmediately = false
		node.main.BackgroundProcesses[HyCubePingBackgroundProcess].KeepAliveExtensionKey = KeepAliveExtension
		node.main.BackgroundProcesses[HyCubePingBackgroundProcess].EventTypeKey = HyCubePingBackgroundProcess
		node.main.BackgroundProcesses[HyCubePingBackgroundProcess].ScheduleInterval = @node.main.Extensions[KeepAliveExtension].PingInterval
	
		node.main.BackgroundProcesses[HyCubeAwaitingPongsBackgroundProcess].Class = net.hycube.maintenance.HyCubeAwaitingPongsBackgroundProcess
		node.main.BackgroundProcesses[HyCubeAwaitingPongsBackgroundProcess].ScheduleImmediately = false
		node.main.BackgroundProcesses[HyCubeAwaitingPongsBackgroundProcess].KeepAliveExtensionKey = KeepAliveExtension
		node.main.BackgroundProcesses[HyCubeAwaitingPongsBackgroundProcess].EventTypeKey = HyCubeAwaitingPongsBackgroundProcess
		node.main.BackgroundProcesses[HyCubeAwaitingPongsBackgroundProcess].ScheduleInterval = @node.main.Extensions[KeepAliveExtension].ProcessPongInterval
	
		node.main.BackgroundProcesses[HyCubePnsBackgroundProcess].Class = net.hycube.maintenance.HyCubePnsBackgroundProcess
		node.main.BackgroundProcesses[HyCubePnsBackgroundProcess].ScheduleImmediately = false
		node.main.BackgroundProcesses[HyCubePnsBackgroundProcess].PnsExtensionKey = PnsExtension
		node.main.BackgroundProcesses[HyCubePnsBackgroundProcess].EventTypeKey = HyCubePnsBackgroundProcess
		node.main.BackgroundProcesses[HyCubePnsBackgroundProcess].ScheduleInterval = 120000
	
		node.main.BackgroundProcesses[HyCubeRecoveryBackgroundProcess].Class = net.hycube.maintenance.HyCubeRecoveryBackgroundProcess
		node.main.BackgroundProcesses[HyCubeRecoveryBackgroundProcess].ScheduleImmediately = false
		node.main.BackgroundProcesses[HyCubeRecoveryBackgroundProcess].RecoveryExtensionKey = RecoveryExtension
		node.main.BackgroundProcesses[HyCubeRecoveryBackgroundProcess].EventTypeKey = HyCubeRecoveryBackgroundProcess
		node.main.BackgroundProcesses[HyCubeRecoveryBackgroundProcess].ScheduleInterval = 60000
		node.main.BackgroundProcesses[HyCubeRecoveryBackgroundProcess].SchedulePlan = RECOVERY_NS, RECOVERY_NS, RECOVERY_NS, RECOVERY_NS, RECOVERY_NS

		node.main.BackgroundProcesses[HyCubeDHTBackgroundProcess].Class = net.hycube.dht.HyCubeDHTBackgroundProcess
		node.main.BackgroundProcesses[HyCubeDHTBackgroundProcess].ScheduleImmediately = false
		node.main.BackgroundProcesses[HyCubeDHTBackgroundProcess].EventTypeKey = HyCubeDHTBackgroundProcess
		node.main.BackgroundProcesses[HyCubeDHTBackgroundProcess].ScheduleInterval = 600000
		
		node.main.BackgroundProcesses[HyCubeDHTReplicationBackgroundProcess].Class = net.hycube.dht.HyCubeDHTReplicationBackgroundProcess
		node.main.BackgroundProcesses[HyCubeDHTReplicationBackgroundProcess].ScheduleImmediately = false
		node.main.BackgroundProcesses[HyCubeDHTReplicationBackgroundProcess].EventTypeKey = HyCubeDHTReplicationBackgroundProcess
		node.main.BackgroundProcesses[HyCubeDHTReplicationBackgroundProcess].ScheduleInterval = 60000




	node.main.NodeProxyService = HyCubeNodeProxyService
	node.main.NodeProxyService[HyCubeNodeProxyService].RecoveryExtensionKey = RecoveryExtension




	#node.main.NodeService = SingleQueueNodeServiceConf1
	#node.main.NodeService = SingleQueueNodeServiceNonWakeableConf1
	#node.main.NodeService = MultiQueueNodeServiceConf1
	#node.main.NodeService = MultiQueueNodeServiceNonWakeableConf1
	#node.main.NodeService = SimpleNodeServiceConf1
	#node.main.NodeService = SimpleSchedulingNodeServiceConf1
	#node.main.NodeService = MultipleNodeServiceConf1
	#node.main.NodeService = SchedulingMultipleNodeServiceConf1
	
		node.main.NodeService[SingleQueueNodeServiceConf1].ThreadPool.PoolSize = 1
		node.main.NodeService[SingleQueueNodeServiceConf1].ThreadPool.KeepAliveTimeSec = 60
		
		node.main.NodeService[SingleQueueNodeServiceNonWakeableConf1].ThreadPool.PoolSize = 1
		node.main.NodeService[SingleQueueNodeServiceNonWakeableConf1].ThreadPool.KeepAliveTimeSec = 60
		
		node.main.NodeService[MultiQueueNodeServiceConf1].Queues = QueueMR, QueueOE
			node.main.NodeService[MultiQueueNodeServiceConf1].Queues[QueueMR].ThreadPool.PoolSize = 1
			node.main.NodeService[MultiQueueNodeServiceConf1].Queues[QueueMR].ThreadPool.KeepAliveTimeSec = 60
			node.main.NodeService[MultiQueueNodeServiceConf1].Queues[QueueMR].Wakeable = true
			node.main.NodeService[MultiQueueNodeServiceConf1].Queues[QueueMR].EventTypes = ReceiveMessageEvent
				node.main.NodeService[MultiQueueNodeServiceConf1].Queues[QueueMR].EventTypes[ReceiveMessageEvent].EventCategory = receiveMessageEvent
				node.main.NodeService[MultiQueueNodeServiceConf1].Queues[QueueMR].EventTypes[ReceiveMessageEvent].EventTypeKey = 
			node.main.NodeService[MultiQueueNodeServiceConf1].Queues[QueueOE].ThreadPool.PoolSize = 1		
			node.main.NodeService[MultiQueueNodeServiceConf1].Queues[QueueOE].ThreadPool.KeepAliveTimeSec = 60
			node.main.NodeService[MultiQueueNodeServiceConf1].Queues[QueueOE].Wakeable = false
			node.main.NodeService[MultiQueueNodeServiceConf1].Queues[QueueOE].EventTypes = ProcessReceivedMessageEvent, ProcessSendAndPushMessageEvent, ProcessSendAndPushSystemMessageEvent, ProcessAckCallbackEvent, ProcessMsgReceivedCallbackEvent, ExecuteBackgroundProcessEvent, ExtEventSpecialized1, ExtEvent
				node.main.NodeService[MultiQueueNodeServiceConf1].Queues[QueueOE].EventTypes[ProcessReceivedMessageEvent].EventCategory = processReceivedMessageEvent
				node.main.NodeService[MultiQueueNodeServiceConf1].Queues[QueueOE].EventTypes[ProcessReceivedMessageEvent].EventTypeKey = 
				node.main.NodeService[MultiQueueNodeServiceConf1].Queues[QueueOE].EventTypes[ProcessSendAndPushMessageEvent].EventCategory = processSendAndPushMessageEvent
				node.main.NodeService[MultiQueueNodeServiceConf1].Queues[QueueOE].EventTypes[ProcessSendAndPushMessageEvent].EventTypeKey = 
				node.main.NodeService[MultiQueueNodeServiceConf1].Queues[QueueOE].EventTypes[ProcessSendAndPushSystemMessageEvent].EventCategory = processSendAndPushSystemMessageEvent
				node.main.NodeService[MultiQueueNodeServiceConf1].Queues[QueueOE].EventTypes[ProcessSendAndPushSystemMessageEvent].EventTypeKey = 
				node.main.NodeService[MultiQueueNodeServiceConf1].Queues[QueueOE].EventTypes[ProcessAckCallbackEvent].EventCategory = processAckCallbackEvent
				node.main.NodeService[MultiQueueNodeServiceConf1].Queues[QueueOE].EventTypes[ProcessAckCallbackEvent].EventTypeKey = 
				node.main.NodeService[MultiQueueNodeServiceConf1].Queues[QueueOE].EventTypes[ProcessMsgReceivedCallbackEvent].EventCategory = processMsgReceivedCallbackEvent
				node.main.NodeService[MultiQueueNodeServiceConf1].Queues[QueueOE].EventTypes[ProcessMsgReceivedCallbackEvent].EventTypeKey = 
				node.main.NodeService[MultiQueueNodeServiceConf1].Queues[QueueOE].EventTypes[ExecuteBackgroundProcessEvent].EventCategory = executeBackgroundProcessEvent
				node.main.NodeService[MultiQueueNodeServiceConf1].Queues[QueueOE].EventTypes[ExecuteBackgroundProcessEvent].EventTypeKey = 
				node.main.NodeService[MultiQueueNodeServiceConf1].Queues[QueueOE].EventTypes[ExtEventSpecialized1].EventCategory = extEvent
				node.main.NodeService[MultiQueueNodeServiceConf1].Queues[QueueOE].EventTypes[ExtEventSpecialized1].EventTypeKey = ExtEventSpecialized1
				node.main.NodeService[MultiQueueNodeServiceConf1].Queues[QueueOE].EventTypes[ExtEvent].EventCategory = extEvent
				node.main.NodeService[MultiQueueNodeServiceConf1].Queues[QueueOE].EventTypes[ExtEvent].EventTypeKey =  
		
		node.main.NodeService[SchedilingMultiQueueNodeServiceConf1].Queues = QueueMR, QueueOE
			node.main.NodeService[SchedilingMultiQueueNodeServiceConf1].Queues[QueueMR].ThreadPool.PoolSize = 1
			node.main.NodeService[SchedilingMultiQueueNodeServiceConf1].Queues[QueueMR].ThreadPool.KeepAliveTimeSec = 60
			node.main.NodeService[SchedilingMultiQueueNodeServiceConf1].Queues[QueueMR].Wakeable = true
			node.main.NodeService[SchedilingMultiQueueNodeServiceConf1].Queues[QueueMR].EventTypes = ReceiveMessageEvent
				node.main.NodeService[SchedilingMultiQueueNodeServiceConf1].Queues[QueueMR].EventTypes[ReceiveMessageEvent].EventCategory = receiveMessageEvent
				node.main.NodeService[SchedilingMultiQueueNodeServiceConf1].Queues[QueueMR].EventTypes[ReceiveMessageEvent].EventTypeKey = 
			node.main.NodeService[SchedilingMultiQueueNodeServiceConf1].Queues[QueueOE].ThreadPool.PoolSize = 1		
			node.main.NodeService[SchedilingMultiQueueNodeServiceConf1].Queues[QueueOE].ThreadPool.KeepAliveTimeSec = 60
			node.main.NodeService[SchedilingMultiQueueNodeServiceConf1].Queues[QueueOE].Wakeable = false
			node.main.NodeService[SchedilingMultiQueueNodeServiceConf1].Queues[QueueOE].EventTypes = ProcessReceivedMessageEvent, ProcessSendAndPushMessageEvent, ProcessSendAndPushSystemMessageEvent, ProcessAckCallbackEvent, ProcessMsgReceivedCallbackEvent, ExecuteBackgroundProcessEvent, ExtEventSpecialized1, ExtEvent
				node.main.NodeService[SchedilingMultiQueueNodeServiceConf1].Queues[QueueOE].EventTypes[ProcessReceivedMessageEvent].EventCategory = processReceivedMessageEvent
				node.main.NodeService[SchedilingMultiQueueNodeServiceConf1].Queues[QueueOE].EventTypes[ProcessReceivedMessageEvent].EventTypeKey = 
				node.main.NodeService[SchedilingMultiQueueNodeServiceConf1].Queues[QueueOE].EventTypes[ProcessSendAndPushMessageEvent].EventCategory = processSendAndPushMessageEvent
				node.main.NodeService[SchedilingMultiQueueNodeServiceConf1].Queues[QueueOE].EventTypes[ProcessSendAndPushMessageEvent].EventTypeKey = 
				node.main.NodeService[SchedilingMultiQueueNodeServiceConf1].Queues[QueueOE].EventTypes[ProcessSendAndPushSystemMessageEvent].EventCategory = processSendAndPushSystemMessageEvent
				node.main.NodeService[SchedilingMultiQueueNodeServiceConf1].Queues[QueueOE].EventTypes[ProcessSendAndPushSystemMessageEvent].EventTypeKey = 
				node.main.NodeService[SchedilingMultiQueueNodeServiceConf1].Queues[QueueOE].EventTypes[ProcessAckCallbackEvent].EventCategory = processAckCallbackEvent
				node.main.NodeService[SchedilingMultiQueueNodeServiceConf1].Queues[QueueOE].EventTypes[ProcessAckCallbackEvent].EventTypeKey = 
				node.main.NodeService[SchedilingMultiQueueNodeServiceConf1].Queues[QueueOE].EventTypes[ProcessMsgReceivedCallbackEvent].EventCategory = processMsgReceivedCallbackEvent
				node.main.NodeService[SchedilingMultiQueueNodeServiceConf1].Queues[QueueOE].EventTypes[ProcessMsgReceivedCallbackEvent].EventTypeKey = 
				node.main.NodeService[SchedilingMultiQueueNodeServiceConf1].Queues[QueueOE].EventTypes[ExecuteBackgroundProcessEvent].EventCategory = executeBackgroundProcessEvent
				node.main.NodeService[SchedilingMultiQueueNodeServiceConf1].Queues[QueueOE].EventTypes[ExecuteBackgroundProcessEvent].EventTypeKey = 
				node.main.NodeService[SchedilingMultiQueueNodeServiceConf1].Queues[QueueOE].EventTypes[ExtEventSpecialized1].EventCategory = extEvent
				node.main.NodeService[SchedilingMultiQueueNodeServiceConf1].Queues[QueueOE].EventTypes[ExtEventSpecialized1].EventTypeKey = ExtEventSpecialized1
				node.main.NodeService[SchedilingMultiQueueNodeServiceConf1].Queues[QueueOE].EventTypes[ExtEvent].EventCategory = extEvent
				node.main.NodeService[SchedilingMultiQueueNodeServiceConf1].Queues[QueueOE].EventTypes[ExtEvent].EventTypeKey =  
		
		node.main.NodeService[MultiQueueNodeServiceNonWakeableConf1].Queues = QueueMR, QueueOE
			node.main.NodeService[MultiQueueNodeServiceNonWakeableConf1].Queues[QueueMR].ThreadPool.PoolSize = 1
			node.main.NodeService[MultiQueueNodeServiceNonWakeableConf1].Queues[QueueMR].ThreadPool.KeepAliveTimeSec = 60
			node.main.NodeService[MultiQueueNodeServiceNonWakeableConf1].Queues[QueueMR].EventTypes = ReceiveMessageEvent
				node.main.NodeService[MultiQueueNodeServiceNonWakeableConf1].Queues[QueueMR].EventTypes[ReceiveMessageEvent].EventCategory = receiveMessageEvent
				node.main.NodeService[MultiQueueNodeServiceNonWakeableConf1].Queues[QueueMR].EventTypes[ReceiveMessageEvent].EventTypeKey = 
			node.main.NodeService[MultiQueueNodeServiceNonWakeableConf1].Queues[QueueOE].ThreadPool.PoolSize = 1		
			node.main.NodeService[MultiQueueNodeServiceNonWakeableConf1].Queues[QueueOE].ThreadPool.KeepAliveTimeSec = 60
			node.main.NodeService[MultiQueueNodeServiceNonWakeableConf1].Queues[QueueOE].EventTypes = ProcessReceivedMessageEvent, ProcessSendAndPushMessageEvent, ProcessSendAndPushSystemMessageEvent, ProcessAckCallbackEvent, ProcessMsgReceivedCallbackEvent, ExecuteBackgroundProcessEvent, ExtEventSpecialized1, ExtEvent
				node.main.NodeService[MultiQueueNodeServiceNonWakeableConf1].Queues[QueueOE].EventTypes[ProcessReceivedMessageEvent].EventCategory = processReceivedMessageEvent
				node.main.NodeService[MultiQueueNodeServiceNonWakeableConf1].Queues[QueueOE].EventTypes[ProcessReceivedMessageEvent].EventTypeKey = 
				node.main.NodeService[MultiQueueNodeServiceNonWakeableConf1].Queues[QueueOE].EventTypes[ProcessSendAndPushMessageEvent].EventCategory = processSendAndPushMessageEvent
				node.main.NodeService[MultiQueueNodeServiceNonWakeableConf1].Queues[QueueOE].EventTypes[ProcessSendAndPushMessageEvent].EventTypeKey = 
				node.main.NodeService[MultiQueueNodeServiceNonWakeableConf1].Queues[QueueOE].EventTypes[ProcessSendAndPushSystemMessageEvent].EventCategory = processSendAndPushSystemMessageEvent
				node.main.NodeService[MultiQueueNodeServiceNonWakeableConf1].Queues[QueueOE].EventTypes[ProcessSendAndPushSystemMessageEvent].EventTypeKey = 
				node.main.NodeService[MultiQueueNodeServiceNonWakeableConf1].Queues[QueueOE].EventTypes[ProcessAckCallbackEvent].EventCategory = processAckCallbackEvent
				node.main.NodeService[MultiQueueNodeServiceNonWakeableConf1].Queues[QueueOE].EventTypes[ProcessAckCallbackEvent].EventTypeKey = 
				node.main.NodeService[MultiQueueNodeServiceNonWakeableConf1].Queues[QueueOE].EventTypes[ProcessMsgReceivedCallbackEvent].EventCategory = processMsgReceivedCallbackEvent
				node.main.NodeService[MultiQueueNodeServiceNonWakeableConf1].Queues[QueueOE].EventTypes[ProcessMsgReceivedCallbackEvent].EventTypeKey = 
				node.main.NodeService[MultiQueueNodeServiceNonWakeableConf1].Queues[QueueOE].EventTypes[ExecuteBackgroundProcessEvent].EventCategory = executeBackgroundProcessEvent
				node.main.NodeService[MultiQueueNodeServiceNonWakeableConf1].Queues[QueueOE].EventTypes[ExecuteBackgroundProcessEvent].EventTypeKey = 
				node.main.NodeService[MultiQueueNodeServiceNonWakeableConf1].Queues[QueueOE].EventTypes[ExtEventSpecialized1].EventCategory = extEvent
				node.main.NodeService[MultiQueueNodeServiceNonWakeableConf1].Queues[QueueOE].EventTypes[ExtEventSpecialized1].EventTypeKey = ExtEventSpecialized1
				node.main.NodeService[MultiQueueNodeServiceNonWakeableConf1].Queues[QueueOE].EventTypes[ExtEvent].EventCategory = extEvent
				node.main.NodeService[MultiQueueNodeServiceNonWakeableConf1].Queues[QueueOE].EventTypes[ExtEvent].EventTypeKey =  
		
		node.main.NodeService[SimpleNodeServiceConf1].BlockingExtEventsNum = 0
		node.main.NodeService[SimpleNodeServiceConf1].Wakeup = true
		
		node.main.NodeService[SimpleSchedulingNodeServiceConf1].BlockingExtEventsNum = 0
		node.main.NodeService[SimpleSchedulingNodeServiceConf1].Wakeup = true

		node.main.NodeService[MultipleNodeServiceConf1].Queues = QueueMR, QueueOE
			node.main.NodeService[MultipleNodeServiceConf1].Queues[QueueMR].ThreadPool.PoolSize = 1
			node.main.NodeService[MultipleNodeServiceConf1].Queues[QueueMR].ThreadPool.KeepAliveTimeSec = 60
			node.main.NodeService[MultipleNodeServiceConf1].Queues[QueueMR].Wakeable = true
			node.main.NodeService[MultipleNodeServiceConf1].Queues[QueueMR].EventTypes = ReceiveMessageEvent
				node.main.NodeService[MultipleNodeServiceConf1].Queues[QueueMR].EventTypes[ReceiveMessageEvent].EventCategory = receiveMessageEvent
				node.main.NodeService[MultipleNodeServiceConf1].Queues[QueueMR].EventTypes[ReceiveMessageEvent].EventTypeKey = 
			node.main.NodeService[MultipleNodeServiceConf1].Queues[QueueOE].ThreadPool.PoolSize = 1
			node.main.NodeService[MultipleNodeServiceConf1].Queues[QueueOE].ThreadPool.KeepAliveTimeSec = 60
			node.main.NodeService[MultipleNodeServiceConf1].Queues[QueueOE].Wakeable = false
			node.main.NodeService[MultipleNodeServiceConf1].Queues[QueueOE].EventTypes = ProcessReceivedMessageEvent, ProcessSendAndPushMessageEvent, ProcessSendAndPushSystemMessageEvent, ProcessAckCallbackEvent, ProcessMsgReceivedCallbackEvent, ExecuteBackgroundProcessEvent, ExtEventSpecialized1, ExtEvent
				node.main.NodeService[MultipleNodeServiceConf1].Queues[QueueOE].EventTypes[ProcessReceivedMessageEvent].EventCategory = processReceivedMessageEvent
				node.main.NodeService[MultipleNodeServiceConf1].Queues[QueueOE].EventTypes[ProcessReceivedMessageEvent].EventTypeKey = 
				node.main.NodeService[MultipleNodeServiceConf1].Queues[QueueOE].EventTypes[ProcessSendAndPushMessageEvent].EventCategory = processSendAndPushMessageEvent
				node.main.NodeService[MultipleNodeServiceConf1].Queues[QueueOE].EventTypes[ProcessSendAndPushMessageEvent].EventTypeKey = 
				node.main.NodeService[MultipleNodeServiceConf1].Queues[QueueOE].EventTypes[ProcessSendAndPushSystemMessageEvent].EventCategory = processSendAndPushSystemMessageEvent
				node.main.NodeService[MultipleNodeServiceConf1].Queues[QueueOE].EventTypes[ProcessSendAndPushSystemMessageEvent].EventTypeKey = 
				node.main.NodeService[MultipleNodeServiceConf1].Queues[QueueOE].EventTypes[ProcessAckCallbackEvent].EventCategory = processAckCallbackEvent
				node.main.NodeService[MultipleNodeServiceConf1].Queues[QueueOE].EventTypes[ProcessAckCallbackEvent].EventTypeKey = 
				node.main.NodeService[MultipleNodeServiceConf1].Queues[QueueOE].EventTypes[ProcessMsgReceivedCallbackEvent].EventCategory = processMsgReceivedCallbackEvent
				node.main.NodeService[MultipleNodeServiceConf1].Queues[QueueOE].EventTypes[ProcessMsgReceivedCallbackEvent].EventTypeKey = 
				node.main.NodeService[MultipleNodeServiceConf1].Queues[QueueOE].EventTypes[ExecuteBackgroundProcessEvent].EventCategory = executeBackgroundProcessEvent
				node.main.NodeService[MultipleNodeServiceConf1].Queues[QueueOE].EventTypes[ExecuteBackgroundProcessEvent].EventTypeKey = 
				node.main.NodeService[MultipleNodeServiceConf1].Queues[QueueOE].EventTypes[ExtEventSpecialized1].EventCategory = extEvent
				node.main.NodeService[MultipleNodeServiceConf1].Queues[QueueOE].EventTypes[ExtEventSpecialized1].EventTypeKey = ExtEventSpecialized1
				node.main.NodeService[MultipleNodeServiceConf1].Queues[QueueOE].EventTypes[ExtEvent].EventCategory = extEvent
				node.main.NodeService[MultipleNodeServiceConf1].Queues[QueueOE].EventTypes[ExtEvent].EventTypeKey =



		node.main.NodeService[SchedulingMultipleNodeServiceConf1].Queues = QueueMR, QueueOE
			node.main.NodeService[SchedulingMultipleNodeServiceConf1].Queues[QueueMR].ThreadPool.PoolSize = 1
			node.main.NodeService[SchedulingMultipleNodeServiceConf1].Queues[QueueMR].ThreadPool.KeepAliveTimeSec = 60
			node.main.NodeService[SchedulingMultipleNodeServiceConf1].Queues[QueueMR].Wakeable = true
			node.main.NodeService[SchedulingMultipleNodeServiceConf1].Queues[QueueMR].EventTypes = ReceiveMessageEvent
				node.main.NodeService[SchedulingMultipleNodeServiceConf1].Queues[QueueMR].EventTypes[ReceiveMessageEvent].EventCategory = receiveMessageEvent
				node.main.NodeService[SchedulingMultipleNodeServiceConf1].Queues[QueueMR].EventTypes[ReceiveMessageEvent].EventTypeKey = 
			node.main.NodeService[SchedulingMultipleNodeServiceConf1].Queues[QueueOE].ThreadPool.PoolSize = 1
			node.main.NodeService[SchedulingMultipleNodeServiceConf1].Queues[QueueOE].ThreadPool.KeepAliveTimeSec = 60
			node.main.NodeService[SchedulingMultipleNodeServiceConf1].Queues[QueueOE].Wakeable = false
			node.main.NodeService[SchedulingMultipleNodeServiceConf1].Queues[QueueOE].EventTypes = ProcessReceivedMessageEvent, ProcessSendAndPushMessageEvent, ProcessSendAndPushSystemMessageEvent, ProcessAckCallbackEvent, ProcessMsgReceivedCallbackEvent, ExecuteBackgroundProcessEvent, ExtEventSpecialized1, ExtEvent
				node.main.NodeService[SchedulingMultipleNodeServiceConf1].Queues[QueueOE].EventTypes[ProcessReceivedMessageEvent].EventCategory = processReceivedMessageEvent
				node.main.NodeService[SchedulingMultipleNodeServiceConf1].Queues[QueueOE].EventTypes[ProcessReceivedMessageEvent].EventTypeKey = 
				node.main.NodeService[SchedulingMultipleNodeServiceConf1].Queues[QueueOE].EventTypes[ProcessSendAndPushMessageEvent].EventCategory = processSendAndPushMessageEvent
				node.main.NodeService[SchedulingMultipleNodeServiceConf1].Queues[QueueOE].EventTypes[ProcessSendAndPushMessageEvent].EventTypeKey = 
				node.main.NodeService[SchedulingMultipleNodeServiceConf1].Queues[QueueOE].EventTypes[ProcessSendAndPushSystemMessageEvent].EventCategory = processSendAndPushSystemMessageEvent
				node.main.NodeService[SchedulingMultipleNodeServiceConf1].Queues[QueueOE].EventTypes[ProcessSendAndPushSystemMessageEvent].EventTypeKey = 
				node.main.NodeService[SchedulingMultipleNodeServiceConf1].Queues[QueueOE].EventTypes[ProcessAckCallbackEvent].EventCategory = processAckCallbackEvent
				node.main.NodeService[SchedulingMultipleNodeServiceConf1].Queues[QueueOE].EventTypes[ProcessAckCallbackEvent].EventTypeKey = 
				node.main.NodeService[SchedulingMultipleNodeServiceConf1].Queues[QueueOE].EventTypes[ProcessMsgReceivedCallbackEvent].EventCategory = processMsgReceivedCallbackEvent
				node.main.NodeService[SchedulingMultipleNodeServiceConf1].Queues[QueueOE].EventTypes[ProcessMsgReceivedCallbackEvent].EventTypeKey = 
				node.main.NodeService[SchedulingMultipleNodeServiceConf1].Queues[QueueOE].EventTypes[ExecuteBackgroundProcessEvent].EventCategory = executeBackgroundProcessEvent
				node.main.NodeService[SchedulingMultipleNodeServiceConf1].Queues[QueueOE].EventTypes[ExecuteBackgroundProcessEvent].EventTypeKey = 
				node.main.NodeService[SchedulingMultipleNodeServiceConf1].Queues[QueueOE].EventTypes[ExtEventSpecialized1].EventCategory = extEvent
				node.main.NodeService[SchedulingMultipleNodeServiceConf1].Queues[QueueOE].EventTypes[ExtEventSpecialized1].EventTypeKey = ExtEventSpecialized1
				node.main.NodeService[SchedulingMultipleNodeServiceConf1].Queues[QueueOE].EventTypes[ExtEvent].EventCategory = extEvent
				node.main.NodeService[SchedulingMultipleNodeServiceConf1].Queues[QueueOE].EventTypes[ExtEvent].EventTypeKey =
		




	node.main.Environment = SimEnvironment
	#node.main.Environment = DirectEnvironment
	node.main.Environment[DirectEnvironment].SchedulerThreadPoolSize = 2
	#...







© 2015 - 2024 Weber Informatics LLC | Privacy Policy