コード例 #1
0
        public void Initialize()
        {
            SetupNodeIds();

            var logManager = NullLogManager.Instance;

            //setting config to store 3 nodes in a bucket and for table to have one bucket//setting config to store 3 nodes in a bucket and for table to have one bucket

            _configurationProvider = new JsonConfigProvider();
            ((NetworkConfig)_configurationProvider.GetConfig <NetworkConfig>()).PongTimeout  = 50;
            ((NetworkConfig)_configurationProvider.GetConfig <NetworkConfig>()).BucketSize   = 3;
            ((NetworkConfig)_configurationProvider.GetConfig <NetworkConfig>()).BucketsCount = 1;

            _nodeFactory = new NodeFactory();
            var calculator = new NodeDistanceCalculator(_configurationProvider);

            _nodeTable = new NodeTable(_nodeFactory, new FileKeyStore(_configurationProvider, new JsonSerializer(logManager), new AesEncrypter(_configurationProvider, logManager), new CryptoRandom(), logManager), calculator, _configurationProvider, logManager);
            _nodeTable.Initialize();

            var evictionManager  = new EvictionManager(_nodeTable, logManager);
            var lifecycleFactory = new NodeLifecycleManagerFactory(_nodeFactory, _nodeTable, new DiscoveryMessageFactory(_configurationProvider), evictionManager, new NodeStatsProvider(_configurationProvider), _configurationProvider, logManager);

            _udpClient = Substitute.For <IMessageSender>();

            _discoveryManager = new DiscoveryManager(lifecycleFactory, _nodeFactory, _nodeTable, new DiscoveryStorage(_configurationProvider, _nodeFactory, logManager, new PerfService(logManager)), _configurationProvider, logManager);
            _discoveryManager.MessageSender = _udpClient;
        }
コード例 #2
0
 public NodesLocator(INodeTable?nodeTable, IDiscoveryManager?discoveryManager, IDiscoveryConfig?discoveryConfig, ILogManager?logManager)
 {
     _logger           = logManager?.GetClassLogger() ?? throw new ArgumentNullException(nameof(logManager));
     _nodeTable        = nodeTable ?? throw new ArgumentNullException(nameof(nodeTable));
     _discoveryConfig  = discoveryConfig ?? throw new ArgumentNullException(nameof(discoveryConfig));
     _discoveryManager = discoveryManager ?? throw new ArgumentNullException(nameof(discoveryManager));
 }
コード例 #3
0
        /// <summary>
        /// Converts an AttributeOperand to a displayable string.
        /// </summary>
        /// <param name="nodeTable">The node table.</param>
        /// <returns>AttributeOperand as a displayable string.</returns>
        public override string ToString(INodeTable nodeTable)
        {
            StringBuilder buffer = new StringBuilder();

            INode node = nodeTable.Find(m_nodeId);

            if (node != null)
            {
                buffer.AppendFormat("{0}", NodeId);
            }
            else
            {
                buffer.AppendFormat("{0}", NodeId);
            }

            if (!RelativePath.IsEmpty(BrowsePath))
            {
                buffer.AppendFormat("/{0}", BrowsePath.Format(nodeTable.TypeTree));
            }

            if (!String.IsNullOrEmpty(IndexRange))
            {
                buffer.AppendFormat("[{0}]", NumericRange.Parse(IndexRange));
            }

            if (!String.IsNullOrEmpty(Alias))
            {
                buffer.AppendFormat("- '{0}'", Alias);
            }

            return(buffer.ToString());
        }
コード例 #4
0
        /// <summary>
        /// Converts an AttributeOperand to a displayable string.
        /// </summary>
        public override string ToString(INodeTable nodeTable)
        {
            StringBuilder buffer = new StringBuilder();

            INode node = nodeTable.Find(TypeDefinitionId);

            if (node != null)
            {
                buffer.AppendFormat("{0}", TypeDefinitionId);
            }
            else
            {
                buffer.AppendFormat("{0}", TypeDefinitionId);
            }

            if (BrowsePath != null && BrowsePath.Count > 0)
            {
                buffer.AppendFormat("{0}", Format(BrowsePath));
            }

            if (!String.IsNullOrEmpty(IndexRange))
            {
                buffer.AppendFormat("[{0}]", NumericRange.Parse(IndexRange));
            }

            return(buffer.ToString());
        }
コード例 #5
0
        public void Initialize()
        {
            NetworkNodeDecoder.Init();
            SetupNodeIds();

            var logManager = NullLogManager.Instance;

            //setting config to store 3 nodes in a bucket and for table to have one bucket//setting config to store 3 nodes in a bucket and for table to have one bucket

            _configurationProvider = new ConfigProvider();
            INetworkConfig networkConfig = _configurationProvider.GetConfig <INetworkConfig>();

            networkConfig.PongTimeout  = 50;
            networkConfig.BucketSize   = 3;
            networkConfig.BucketsCount = 1;

            IKeyStoreConfig keyStoreConfig = _configurationProvider.GetConfig <IKeyStoreConfig>();
            IStatsConfig    statsConfig    = _configurationProvider.GetConfig <IStatsConfig>();

            var calculator = new NodeDistanceCalculator(networkConfig);

            _nodeTable = new NodeTable(new FileKeyStore(keyStoreConfig, new EthereumJsonSerializer(), new AesEncrypter(keyStoreConfig, logManager), new CryptoRandom(), logManager), calculator, networkConfig, logManager);
            _nodeTable.Initialize(TestItem.PublicKeyA);

            _timestamp = new Timestamp();

            var evictionManager  = new EvictionManager(_nodeTable, logManager);
            var lifecycleFactory = new NodeLifecycleManagerFactory(_nodeTable, new DiscoveryMessageFactory(networkConfig, _timestamp), evictionManager, new NodeStatsManager(statsConfig, logManager), networkConfig, logManager);

            _udpClient = Substitute.For <IMessageSender>();

            _discoveryManager = new DiscoveryManager(lifecycleFactory, _nodeTable, new NetworkStorage("test", networkConfig, logManager, new PerfService(logManager)), networkConfig, logManager);
            _discoveryManager.MessageSender = _udpClient;
        }
コード例 #6
0
        public void Initialize()
        {
            NetworkNodeDecoder.Init();
            PrivateKey privateKey = new(TestPrivateKeyHex);

            _publicKey = privateKey.PublicKey;
            LimboLogs?logManager = LimboLogs.Instance;

            IDiscoveryConfig discoveryConfig = new DiscoveryConfig();

            discoveryConfig.PongTimeout = 100;

            _msgSender = Substitute.For <IMsgSender>();
            NodeDistanceCalculator calculator = new(discoveryConfig);

            _networkConfig.ExternalIp = "99.10.10.66";
            _networkConfig.LocalIp    = "10.0.0.5";

            _nodeTable = new NodeTable(calculator, discoveryConfig, _networkConfig, logManager);
            _nodeTable.Initialize(TestItem.PublicKeyA);

            EvictionManager             evictionManager  = new(_nodeTable, logManager);
            ITimerFactory               timerFactory     = Substitute.For <ITimerFactory>();
            NodeLifecycleManagerFactory lifecycleFactory = new(_nodeTable, evictionManager,
                                                               new NodeStatsManager(timerFactory, logManager), new NodeRecord(), discoveryConfig, Timestamper.Default, logManager);

            _nodes = new[] { new Node(TestItem.PublicKeyA, "192.168.1.18", 1), new Node(TestItem.PublicKeyB, "192.168.1.19", 2) };

            IFullDb nodeDb = new SimpleFilePublicKeyDb("Test", "test_db", logManager);

            _discoveryManager           = new DiscoveryManager(lifecycleFactory, _nodeTable, new NetworkStorage(nodeDb, logManager), discoveryConfig, logManager);
            _discoveryManager.MsgSender = _msgSender;
        }
コード例 #7
0
        public void Initialize()
        {
            var privateKey = new PrivateKey(TestPrivateKeyHex);

            _publicKey = privateKey.PublicKey;
            var logManager = NullLogManager.Instance;
            //var config = new NetworkConfigurationProvider(new NetworkHelper(logger)) { PongTimeout = 100 };
            var config        = new JsonConfigProvider();
            var networkConfig = config.GetConfig <INetworkConfig>();

            networkConfig.PongTimeout = 100;

            var statsConfig = config.GetConfig <IStatsConfig>();

            _messageSender = Substitute.For <IMessageSender>();
            _nodeFactory   = new NodeFactory();
            var calculator = new NodeDistanceCalculator(config);

            _nodeTable = new NodeTable(_nodeFactory, new FileKeyStore(config, new JsonSerializer(logManager), new AesEncrypter(config, logManager), new CryptoRandom(), logManager), calculator, config, logManager);
            _nodeTable.Initialize();

            var evictionManager  = new EvictionManager(_nodeTable, logManager);
            var lifecycleFactory = new NodeLifecycleManagerFactory(_nodeFactory, _nodeTable, new DiscoveryMessageFactory(config), evictionManager, new NodeStatsProvider(statsConfig, _nodeFactory, logManager), config, logManager);

            _nodes = new[] { _nodeFactory.CreateNode("192.168.1.18", 1), _nodeFactory.CreateNode("192.168.1.19", 2) };

            _discoveryManager = new DiscoveryManager(lifecycleFactory, _nodeFactory, _nodeTable, new NetworkStorage("test", networkConfig, logManager, new PerfService(logManager)), config, logManager);
            _discoveryManager.MessageSender = _messageSender;
        }
コード例 #8
0
        public void Initialize()
        {
            NetworkNodeDecoder.Init();
            SetupNodeIds();

            var logManager = NullLogManager.Instance;

            //setting config to store 3 nodes in a bucket and for table to have one bucket//setting config to store 3 nodes in a bucket and for table to have one bucket

            _configurationProvider = new ConfigProvider();
            IDiscoveryConfig discoveryConfig = _configurationProvider.GetConfig <IDiscoveryConfig>();

            discoveryConfig.PongTimeout  = 50;
            discoveryConfig.BucketSize   = 3;
            discoveryConfig.BucketsCount = 1;

            IStatsConfig statsConfig = _configurationProvider.GetConfig <IStatsConfig>();

            var calculator = new NodeDistanceCalculator(discoveryConfig);

            _nodeTable = new NodeTable(calculator, discoveryConfig, logManager);
            _nodeTable.Initialize(TestItem.PublicKeyA);

            _timestamp = new Timestamp();

            var evictionManager  = new EvictionManager(_nodeTable, logManager);
            var lifecycleFactory = new NodeLifecycleManagerFactory(_nodeTable, new DiscoveryMessageFactory(_timestamp), evictionManager, new NodeStatsManager(statsConfig, logManager), discoveryConfig, logManager);

            _udpClient = Substitute.For <IMessageSender>();

            var discoveryDb = new SimpleFilePublicKeyDb("test", logManager);

            _discoveryManager = new DiscoveryManager(lifecycleFactory, _nodeTable, new NetworkStorage(discoveryDb, logManager), discoveryConfig, logManager);
            _discoveryManager.MessageSender = _udpClient;
        }
コード例 #9
0
 public NodesLocator(INodeTable nodeTable, IDiscoveryManager discoveryManager, IConfigProvider configurationProvider, ILogManager logManager)
 {
     _logger = logManager?.GetClassLogger();
     _configurationProvider = configurationProvider.GetConfig <INetworkConfig>();
     _nodeTable             = nodeTable;
     _discoveryManager      = discoveryManager;
 }
コード例 #10
0
        public void Initialize()
        {
            NetworkNodeDecoder.Init();
            var privateKey = new PrivateKey(TestPrivateKeyHex);

            _publicKey = privateKey.PublicKey;
            var logManager = LimboLogs.Instance;

            IDiscoveryConfig discoveryConfig = new DiscoveryConfig();

            discoveryConfig.PongTimeout = 100;

            _messageSender = Substitute.For <IMessageSender>();
            var calculator = new NodeDistanceCalculator(discoveryConfig);

            _networkConfig.ExternalIp = "99.10.10.66";
            _networkConfig.LocalIp    = "10.0.0.5";

            _nodeTable = new NodeTable(calculator, discoveryConfig, _networkConfig, logManager);
            _nodeTable.Initialize(TestItem.PublicKeyA);

            _timestamper = Timestamper.Default;

            _ipResolver = new IPResolver(_networkConfig, logManager);

            var evictionManager  = new EvictionManager(_nodeTable, logManager);
            var lifecycleFactory = new NodeLifecycleManagerFactory(_nodeTable, new DiscoveryMessageFactory(_timestamper), evictionManager, new NodeStatsManager(logManager), discoveryConfig, logManager);

            _nodes = new[] { new Node("192.168.1.18", 1), new Node("192.168.1.19", 2) };

            IFullDb nodeDb = new SimpleFilePublicKeyDb("Test", "test_db", logManager);

            _discoveryManager = new DiscoveryManager(lifecycleFactory, _nodeTable, new NetworkStorage(nodeDb, logManager), discoveryConfig, logManager, _ipResolver);
            _discoveryManager.MessageSender = _messageSender;
        }
コード例 #11
0
ファイル: DiscoveryApp.cs プロジェクト: vicnaum/nethermind
 public DiscoveryApp(
     INodesLocator nodesLocator,
     IDiscoveryManager discoveryManager,
     INodeTable nodeTable,
     IMessageSerializationService messageSerializationService,
     ICryptoRandom cryptoRandom,
     INetworkStorage discoveryStorage,
     INetworkConfig networkConfig,
     IDiscoveryConfig discoveryConfig,
     ITimestamper timestamper,
     ILogManager logManager,
     IPerfService perfService)
 {
     _logManager                  = logManager ?? throw new ArgumentNullException(nameof(logManager));
     _logger                      = _logManager.GetClassLogger();
     _perfService                 = perfService ?? throw new ArgumentNullException(nameof(perfService));
     _discoveryConfig             = discoveryConfig ?? throw new ArgumentNullException(nameof(discoveryConfig));
     _timestamper                 = timestamper ?? throw new ArgumentNullException(nameof(timestamper));
     _nodesLocator                = nodesLocator ?? throw new ArgumentNullException(nameof(nodesLocator));
     _discoveryManager            = discoveryManager ?? throw new ArgumentNullException(nameof(discoveryManager));
     _nodeTable                   = nodeTable ?? throw new ArgumentNullException(nameof(nodeTable));
     _messageSerializationService = messageSerializationService ?? throw new ArgumentNullException(nameof(messageSerializationService));
     _cryptoRandom                = cryptoRandom ?? throw new ArgumentNullException(nameof(cryptoRandom));
     _discoveryStorage            = discoveryStorage ?? throw new ArgumentNullException(nameof(discoveryStorage));
     _networkConfig               = networkConfig ?? throw new ArgumentNullException(nameof(networkConfig));
     _discoveryStorage.StartBatch();
 }
コード例 #12
0
ファイル: NodesLocator.cs プロジェクト: StateProof/nethermind
 public NodesLocator(INodeTable nodeTable, IDiscoveryManager discoveryManager, IDiscoveryConfigurationProvider configurationProvider, ILogger logger)
 {
     _nodeTable             = nodeTable;
     _discoveryManager      = discoveryManager;
     _configurationProvider = configurationProvider;
     _logger = logger;
 }
コード例 #13
0
        public void Initialize()
        {
            NetworkNodeDecoder.Init();
            var privateKey = new PrivateKey(TestPrivateKeyHex);

            _publicKey = privateKey.PublicKey;
            var logManager = NullLogManager.Instance;

            IKeyStoreConfig keyStoreConfig = new KeyStoreConfig();
            INetworkConfig  networkConfig  = new NetworkConfig();

            networkConfig.PongTimeout = 100;
            IStatsConfig statsConfig = new StatsConfig();

            _messageSender = Substitute.For <IMessageSender>();
            var calculator = new NodeDistanceCalculator(networkConfig);


            _nodeTable = new NodeTable(new FileKeyStore(keyStoreConfig, new EthereumJsonSerializer(), new AesEncrypter(keyStoreConfig, logManager), new CryptoRandom(), logManager), calculator, networkConfig, logManager);
            _nodeTable.Initialize(TestItem.PublicKeyA);

            _timestamp = new Timestamp();

            var evictionManager  = new EvictionManager(_nodeTable, logManager);
            var lifecycleFactory = new NodeLifecycleManagerFactory(_nodeTable, new DiscoveryMessageFactory(networkConfig, _timestamp), evictionManager, new NodeStatsManager(statsConfig, logManager), networkConfig, logManager);

            _nodes = new[] { new Node("192.168.1.18", 1), new Node("192.168.1.19", 2) };

            _discoveryManager = new DiscoveryManager(lifecycleFactory, _nodeTable, new NetworkStorage("test", networkConfig, logManager, new PerfService(logManager)), networkConfig, logManager);
            _discoveryManager.MessageSender = _messageSender;
        }
コード例 #14
0
        public void Initialize()
        {
            NetworkNodeDecoder.Init();
            var privateKey = new PrivateKey(TestPrivateKeyHex);

            _publicKey = privateKey.PublicKey;
            var logManager = NullLogManager.Instance;

            IDiscoveryConfig discoveryConfig = new DiscoveryConfig();

            discoveryConfig.PongTimeout = 100;

            IStatsConfig statsConfig = new StatsConfig();

            _messageSender = Substitute.For <IMessageSender>();
            var calculator = new NodeDistanceCalculator(discoveryConfig);

            _nodeTable = new NodeTable(calculator, discoveryConfig, logManager);
            _nodeTable.Initialize(TestItem.PublicKeyA);

            _timestamp = new Timestamp();

            var evictionManager  = new EvictionManager(_nodeTable, logManager);
            var lifecycleFactory = new NodeLifecycleManagerFactory(_nodeTable, new DiscoveryMessageFactory(_timestamp), evictionManager, new NodeStatsManager(statsConfig, logManager), discoveryConfig, logManager);

            _nodes = new[] { new Node("192.168.1.18", 1), new Node("192.168.1.19", 2) };

            IFullDb nodeDb = new SimpleFilePublicKeyDb("test_db", logManager);

            _discoveryManager = new DiscoveryManager(lifecycleFactory, _nodeTable, new NetworkStorage(nodeDb, logManager), discoveryConfig, logManager);
            _discoveryManager.MessageSender = _messageSender;
        }
コード例 #15
0
 public NodeLifecycleManagerFactory(INodeTable nodeTable, IDiscoveryMessageFactory discoveryMessageFactory, IEvictionManager evictionManager, INodeStatsManager nodeStatsManager, IDiscoveryConfig discoveryConfig, ILogManager logManager)
 {
     _logger                  = logManager?.GetClassLogger() ?? throw new ArgumentNullException(nameof(logManager));
     _nodeTable               = nodeTable ?? throw new ArgumentNullException(nameof(nodeTable));
     _discoveryConfig         = discoveryConfig ?? throw new ArgumentNullException(nameof(discoveryConfig));
     _discoveryMessageFactory = discoveryMessageFactory ?? throw new ArgumentNullException(nameof(discoveryMessageFactory));
     _evictionManager         = evictionManager ?? throw new ArgumentNullException(nameof(evictionManager));
     _nodeStatsManager        = nodeStatsManager ?? throw new ArgumentNullException(nameof(nodeStatsManager));
 }
コード例 #16
0
 /// <summary>
 /// Initializes the object.
 /// </summary>
 /// <param name="owner">The owner.</param>
 /// <param name="nodeId">The node identifier.</param>
 public RemoteNode(INodeTable owner, ExpandedNodeId nodeId)
 {
     m_nodeId           = nodeId;
     m_refs             = 0;
     m_nodeClass        = NodeClass.Unspecified;
     m_browseName       = new QualifiedName("(Unknown)");
     m_displayName      = new LocalizedText(m_browseName.Name);
     m_typeDefinitionId = null;
 }
コード例 #17
0
 public NodeLifecycleManagerFactory(INodeFactory nodeFactory, INodeTable nodeTable, ILogger logger, IDiscoveryConfigurationProvider discoveryConfigurationProvider, IDiscoveryMessageFactory discoveryMessageFactory, IEvictionManager evictionManager, INodeStatsProvider nodeStatsProvider)
 {
     _nodeFactory = nodeFactory;
     _nodeTable   = nodeTable;
     _logger      = logger;
     _discoveryConfigurationProvider = discoveryConfigurationProvider;
     _discoveryMessageFactory        = discoveryMessageFactory;
     _evictionManager   = evictionManager;
     _nodeStatsProvider = nodeStatsProvider;
 }
コード例 #18
0
 public NodeLifecycleManager(Node node, IDiscoveryManager discoveryManager, INodeTable nodeTable, ILogger logger, IConfigProvider configurationProvider, IDiscoveryMessageFactory discoveryMessageFactory, IEvictionManager evictionManager, INodeStats nodeStats)
 {
     _discoveryManager        = discoveryManager;
     _nodeTable               = nodeTable;
     _logger                  = logger;
     _configurationProvider   = configurationProvider.GetConfig <NetworkConfig>();
     _discoveryMessageFactory = discoveryMessageFactory;
     _evictionManager         = evictionManager;
     NodeStats                = nodeStats;
     ManagedNode              = node;
     UpdateState(NodeLifecycleState.New);
 }
コード例 #19
0
 public NodeLifecycleManager(Node node, IDiscoveryManager discoveryManager, INodeTable nodeTable, IDiscoveryMessageFactory discoveryMessageFactory, IEvictionManager evictionManager, INodeStats nodeStats, IDiscoveryConfig discoveryConfig, ILogger logger)
 {
     _discoveryManager        = discoveryManager;
     _nodeTable               = nodeTable;
     _logger                  = logger;
     _discoveryConfig         = discoveryConfig;
     _discoveryMessageFactory = discoveryMessageFactory;
     _evictionManager         = evictionManager;
     NodeStats                = nodeStats;
     ManagedNode              = node;
     UpdateState(NodeLifecycleState.New);
 }
コード例 #20
0
 public DiscoveryApp(IDiscoveryConfigurationProvider configurationProvider, INodesLocator nodesLocator, ILogger logger, IDiscoveryManager discoveryManager, INodeFactory nodeFactory, INodeTable nodeTable, IMessageSerializationService messageSerializationService, ICryptoRandom cryptoRandom, IDiscoveryStorage discoveryStorage)
 {
     _configurationProvider = configurationProvider;
     _nodesLocator          = nodesLocator;
     _logger                      = logger;
     _discoveryManager            = discoveryManager;
     _nodeFactory                 = nodeFactory;
     _nodeTable                   = nodeTable;
     _messageSerializationService = messageSerializationService;
     _cryptoRandom                = cryptoRandom;
     _discoveryStorage            = discoveryStorage;
     _discoveryStorage.StartBatch();
 }
コード例 #21
0
 public DiscoveryManager(INodeLifecycleManagerFactory nodeLifecycleManagerFactory,
                         INodeTable nodeTable,
                         INetworkStorage discoveryStorage,
                         INetworkConfig networkConfig,
                         ILogManager logManager)
 {
     _logger = logManager.GetClassLogger();
     _configurationProvider       = networkConfig;
     _nodeLifecycleManagerFactory = nodeLifecycleManagerFactory;
     _nodeTable        = nodeTable;
     _discoveryStorage = discoveryStorage;
     _nodeLifecycleManagerFactory.DiscoveryManager = this;
 }
コード例 #22
0
        public void Initialize()
        {
            _discoveryManagerMock = Substitute.For <IDiscoveryManager>();
            _discoveryConfigMock  = Substitute.For <IDiscoveryConfig>();


            NetworkNodeDecoder.Init();
            SetupNodeIds();

            var logManager = LimboLogs.Instance;

            _loggerMock = Substitute.For <ILogger>();
            //setting config to store 3 nodes in a bucket and for table to have one bucket//setting config to store 3 nodes in a bucket and for table to have one bucket

            _configurationProvider    = new ConfigProvider();
            _networkConfig.ExternalIp = "99.10.10.66";
            _networkConfig.LocalIp    = "10.0.0.5";

            IDiscoveryConfig discoveryConfig = _configurationProvider.GetConfig <IDiscoveryConfig>();

            discoveryConfig.PongTimeout  = 50;
            discoveryConfig.BucketSize   = 3;
            discoveryConfig.BucketsCount = 1;

            _ipResolverMock = Substitute.For <IIPResolver>();

            IStatsConfig statsConfig = _configurationProvider.GetConfig <IStatsConfig>();

            var calculator = new NodeDistanceCalculator(discoveryConfig);

            _nodeTable = new NodeTable(calculator, discoveryConfig, _networkConfig, logManager);
            _nodeTable.Initialize(TestItem.PublicKeyA);
            _nodeStatsMock = Substitute.For <INodeStats>();

            _timestamper = Timestamper.Default;

            var evictionManager = new EvictionManager(_nodeTable, logManager);

            _evictionManagerMock = Substitute.For <IEvictionManager>();
            var lifecycleFactory = new NodeLifecycleManagerFactory(_nodeTable, new DiscoveryMessageFactory(_timestamper), evictionManager, new NodeStatsManager(statsConfig, logManager), discoveryConfig, logManager);

            _udpClient = Substitute.For <IMessageSender>();

            var discoveryDb = new SimpleFilePublicKeyDb("Test", "test", logManager);

            _discoveryManager = new DiscoveryManager(lifecycleFactory, _nodeTable, new NetworkStorage(discoveryDb, logManager), discoveryConfig, logManager, _ipResolverMock);
            _discoveryManager.MessageSender = _udpClient;

            _discoveryManagerMock = Substitute.For <IDiscoveryManager>();
        }
コード例 #23
0
        public void BuildHierarchy(INodeTable <string> table)
        {
            // TODO 부모 없는 모다 찾아서 붙이기
            var parentlist = new List <GameObjectNode>();

            foreach (var n in table.GetEnumerable <GameObjectNode>())
            {
                if (n.ParentObject == null)
                {
                    parentlist.Add(n);
                }
            }
            Children = parentlist.ToArray();
        }
コード例 #24
0
 public DiscoveryManager(
     INodeLifecycleManagerFactory nodeLifecycleManagerFactory,
     INodeTable nodeTable,
     INetworkStorage discoveryStorage,
     IDiscoveryConfig discoveryConfig,
     ILogManager logManager)
 {
     _logger                      = logManager.GetClassLogger() ?? throw new ArgumentNullException(nameof(logManager));
     _discoveryConfig             = discoveryConfig ?? throw new ArgumentNullException(nameof(discoveryConfig));
     _nodeLifecycleManagerFactory = nodeLifecycleManagerFactory ?? throw new ArgumentNullException(nameof(nodeLifecycleManagerFactory));
     _nodeTable                   = nodeTable ?? throw new ArgumentNullException(nameof(nodeTable));
     _discoveryStorage            = discoveryStorage ?? throw new ArgumentNullException(nameof(discoveryStorage));
     _nodeLifecycleManagerFactory.DiscoveryManager = this;
 }
コード例 #25
0
 public DiscoveryManager(
     ILogger logger,
     IDiscoveryConfigurationProvider configurationProvider,
     INodeLifecycleManagerFactory nodeLifecycleManagerFactory,
     INodeFactory nodeFactory, INodeTable nodeTable, IDiscoveryStorage discoveryStorage)
 {
     _logger = logger;
     _configurationProvider       = configurationProvider;
     _nodeLifecycleManagerFactory = nodeLifecycleManagerFactory;
     _nodeFactory      = nodeFactory;
     _nodeTable        = nodeTable;
     _discoveryStorage = discoveryStorage;
     _nodeLifecycleManagerFactory.DiscoveryManager = this;
 }
コード例 #26
0
 public NodeLifecycleManagerFactory(INodeTable nodeTable,
                                    IEvictionManager evictionManager,
                                    INodeStatsManager nodeStatsManager,
                                    NodeRecord self,
                                    IDiscoveryConfig discoveryConfig,
                                    ITimestamper timestamper,
                                    ILogManager?logManager)
 {
     _logger           = logManager?.GetClassLogger() ?? throw new ArgumentNullException(nameof(logManager));
     _nodeTable        = nodeTable ?? throw new ArgumentNullException(nameof(nodeTable));
     _discoveryConfig  = discoveryConfig ?? throw new ArgumentNullException(nameof(discoveryConfig));
     _timestamper      = timestamper ?? throw new ArgumentNullException(nameof(timestamper));
     _evictionManager  = evictionManager ?? throw new ArgumentNullException(nameof(evictionManager));
     _nodeStatsManager = nodeStatsManager ?? throw new ArgumentNullException(nameof(nodeStatsManager));
     _selfNodeRecord   = self ?? throw new ArgumentNullException(nameof(self));
 }
コード例 #27
0
        public void Setup()
        {
            _discoveryManagerMock = Substitute.For <IDiscoveryManager>();
            _discoveryConfigMock  = Substitute.For <IDiscoveryConfig>();

            NetworkNodeDecoder.Init();
            SetupNodeIds();

            LimboLogs?logManager = LimboLogs.Instance;

            _loggerMock = Substitute.For <ILogger>();
            //setting config to store 3 nodes in a bucket and for table to have one bucket//setting config to store 3 nodes in a bucket and for table to have one bucket

            IConfigProvider configurationProvider = new ConfigProvider();

            _networkConfig.ExternalIp = "99.10.10.66";
            _networkConfig.LocalIp    = "10.0.0.5";

            IDiscoveryConfig discoveryConfig = configurationProvider.GetConfig <IDiscoveryConfig>();

            discoveryConfig.PongTimeout  = 50;
            discoveryConfig.BucketSize   = 3;
            discoveryConfig.BucketsCount = 1;

            NodeDistanceCalculator calculator = new(discoveryConfig);

            _nodeTable = new NodeTable(calculator, discoveryConfig, _networkConfig, logManager);
            _nodeTable.Initialize(TestItem.PublicKeyA);
            _nodeStatsMock = Substitute.For <INodeStats>();

            EvictionManager evictionManager = new(_nodeTable, logManager);

            _evictionManagerMock = Substitute.For <IEvictionManager>();
            ITimerFactory timerFactory = Substitute.For <ITimerFactory>();
            NodeLifecycleManagerFactory lifecycleFactory = new(_nodeTable, evictionManager,
                                                               new NodeStatsManager(timerFactory, logManager), new NodeRecord(), discoveryConfig, Timestamper.Default, logManager);

            IMsgSender udpClient = Substitute.For <IMsgSender>();

            SimpleFilePublicKeyDb discoveryDb = new("Test", "test", logManager);

            _discoveryManager           = new DiscoveryManager(lifecycleFactory, _nodeTable, new NetworkStorage(discoveryDb, logManager), discoveryConfig, logManager);
            _discoveryManager.MsgSender = udpClient;

            _discoveryManagerMock = Substitute.For <IDiscoveryManager>();
        }
コード例 #28
0
        // child-parent
        public void BuildHierarchy(INodeTable <string> table)
        {
            if (ParentObject != null)
            {
                Parent = table.Get <GameObjectNode>(ParentObject.GetInstanceID().ToString());
            }

            var childlist = new List <GameObjectNode>();
            var tr        = CurrentObject.transform;

            for (int i = 0; i < tr.childCount; i++)
            {
                var childtr = tr.GetChild(i);
                var child   = table.Get <GameObjectNode>(childtr.gameObject.GetInstanceID().ToString());
                childlist.Add(child);
            }
            Children = childlist.ToArray();
        }
コード例 #29
0
        public override void Initialize <T1>(T1 comp, INodeTable <int> containerTable)
        {
            base.Initialize(comp, containerTable);

            // find mesh & material
            if (Value is MeshRenderer || Value is SkinnedMeshRenderer)
            {
                var mesh = ComponentHelper.GetMesh(Value.gameObject);
                Mesh = containerTable.Get <MeshContainer>(mesh.GetInstanceID());

                // TODO material이 여러개인 경우는?
                var mtl = Value.sharedMaterial;
                Material = containerTable.Get <MaterialContainer>(mtl.GetInstanceID());
            }
            else
            {
                throw new NotImplementedException("unknown renderer " + comp.GetType().ToString());
            }
        }
コード例 #30
0
 public NodeLifecycleManager(Node node,
                             IDiscoveryManager discoveryManager,
                             INodeTable nodeTable,
                             IEvictionManager evictionManager,
                             INodeStats nodeStats,
                             NodeRecord nodeRecord,
                             IDiscoveryConfig discoveryConfig,
                             ITimestamper timestamper,
                             ILogger logger)
 {
     _discoveryManager = discoveryManager ?? throw new ArgumentNullException(nameof(discoveryManager));
     _nodeTable        = nodeTable ?? throw new ArgumentNullException(nameof(nodeTable));
     _logger           = logger ?? throw new ArgumentNullException(nameof(logger));
     _discoveryConfig  = discoveryConfig ?? throw new ArgumentNullException(nameof(discoveryConfig));
     _timestamper      = timestamper ?? throw new ArgumentNullException(nameof(timestamper));
     _evictionManager  = evictionManager ?? throw new ArgumentNullException(nameof(evictionManager));
     _nodeRecord       = nodeRecord ?? throw new ArgumentNullException(nameof(nodeRecord));
     NodeStats         = nodeStats ?? throw new ArgumentNullException(nameof(nodeStats));
     ManagedNode       = node;
     UpdateState(NodeLifecycleState.New);
 }
コード例 #31
0
ファイル: ContentFilter.cs プロジェクト: yuriik83/UA-.NET
 /// <summary>
 /// Converts an FilterOperand to a displayable string.
 /// </summary>
 /// <param name="nodeTable">The node table.</param>
 /// <returns>ContentFilterElement as a displayable string.</returns>
 public virtual string ToString(INodeTable nodeTable)
 {
     return Utils.Format("{0}", this);
 }
コード例 #32
0
ファイル: ContentFilter.cs プロジェクト: yuriik83/UA-.NET
        /// <summary>
        /// Converts an ContentFilterElement to a displayable string.
        /// </summary>
        /// <param name="nodeTable">The node table.</param>
        /// <returns>ContentFilterElement as a displayable string.</returns>
        public virtual string ToString(INodeTable nodeTable)
        {
            List<FilterOperand> operands = GetOperands();

            string operand1 = (operands.Count > 0)?operands[0].ToString(nodeTable):null;
            string operand2 = (operands.Count > 1)?operands[1].ToString(nodeTable):null;
            string operand3 = (operands.Count > 2)?operands[2].ToString(nodeTable):null;

            StringBuilder buffer = new StringBuilder();

            switch (FilterOperator)
            {
                case FilterOperator.OfType:
                case FilterOperator.InView:
                case FilterOperator.IsNull:
                case FilterOperator.Not:
                {
                    buffer.AppendFormat("{0} '{1}'", FilterOperator, operand1);
                    break;
                }
                    
                case FilterOperator.And:
                case FilterOperator.Equals:
                case FilterOperator.GreaterThan:
                case FilterOperator.GreaterThanOrEqual:
                case FilterOperator.LessThan:
                case FilterOperator.LessThanOrEqual:
                case FilterOperator.Like:
                case FilterOperator.Or:
                {
                    buffer.AppendFormat("'{1}' {0} '{2}'", FilterOperator, operand1, operand2);
                    break;
                }
                    
                case FilterOperator.Between:
                {
                    buffer.AppendFormat("'{1}' <= '{0}' <= '{2}'", operand1, operand2, operand3);
                    break;
                }
                    
                case FilterOperator.Cast:
                {
                    buffer.AppendFormat("({1}){0}", operand1, operand2);
                    break;
                }
                    
                case FilterOperator.InList:
                {
                    buffer.AppendFormat("'{0}' in {", operand1);

                    for (int ii = 1; ii < operands.Count; ii++)
                    {
                        if (ii < operands.Count-1)
                        {
                            buffer.Append(", ");
                        }

                        buffer.AppendFormat("'{0}'", operands[ii].ToString());
                    }
                            
                    buffer.Append("}");
                    break;
                }
                    
                case FilterOperator.RelatedTo:
                {
                    buffer.AppendFormat("'{0}' ", operand1);
                    
                    string referenceType = operand2;

                    if (operands.Count > 1)
                    {
                        LiteralOperand literalOperand = operands[1] as LiteralOperand;

                        if (literalOperand != null)
                        {
                            INode node = nodeTable.Find(literalOperand.Value.Value as NodeId);

                            if (node != null)
                            {
                                referenceType = Utils.Format("{0}", node);
                            }
                        }
                    }
                    
                    buffer.AppendFormat("{0} '{1}'", referenceType, operand2);

                    if (operand3 != null)
                    {
                        buffer.AppendFormat("Hops='{0}'", operand3);
                    }

                    break;
                }
            }

            return buffer.ToString();
        }
コード例 #33
0
ファイル: ContentFilter.cs プロジェクト: yuriik83/UA-.NET
        /// <summary>
        /// Converts an LiteralOperand to a displayable string.
        /// </summary>
        /// <param name="table">The table.</param>
        /// <returns>LiteralOperand as a displayable string.</returns>
        public override string ToString(INodeTable table)
        {
            ExpandedNodeId nodeId = Value.Value as ExpandedNodeId;
            
            if (nodeId == null)
            {
                nodeId = Value.Value as NodeId; 
            }

            if (nodeId != null)
            {
                INode node = table.Find(nodeId);

                if (node != null)
                {
                    return Utils.Format("{0} ({1})", node, nodeId);
                }
            }

            return Utils.Format("{0}", Value);
        }
コード例 #34
0
ファイル: ContentFilter.cs プロジェクト: yuriik83/UA-.NET
 /// <summary>
 /// Converts an ElementOperand to a displayable string.
 /// </summary>
 /// <param name="table">The table.</param>
 /// <returns>ElementOperand as a displayable string.</returns>
 public override string ToString(INodeTable table)
 {
     return Utils.Format("Element[{0}]", Index);
 }
コード例 #35
0
ファイル: ContentFilter.cs プロジェクト: yuriik83/UA-.NET
        /// <summary>
        /// Converts an AttributeOperand to a displayable string.
        /// </summary>
        /// <param name="nodeTable">The node table.</param>
        /// <returns>AttributeOperand as a displayable string.</returns>
        public override string ToString(INodeTable nodeTable)
        {
            StringBuilder buffer = new StringBuilder();

            INode node = nodeTable.Find(m_nodeId);

            if (node != null)
            {
                buffer.AppendFormat("{0}", NodeId);
            }
            else
            {
                buffer.AppendFormat("{0}", NodeId);
            }
             
            if (!RelativePath.IsEmpty(BrowsePath))
            {
                buffer.AppendFormat("/{0}", BrowsePath.Format(nodeTable.TypeTree));
            }

            if (!String.IsNullOrEmpty(IndexRange))
            {
                buffer.AppendFormat("[{0}]", NumericRange.Parse(IndexRange));
            }

            if (!String.IsNullOrEmpty(Alias))
            {
                buffer.AppendFormat("- '{0}'", Alias);
            }
            
            return buffer.ToString();
        }
コード例 #36
0
ファイル: MonitoringFilter.cs プロジェクト: yuriik83/UA-.NET
        /// <summary>
        /// Converts an AttributeOperand to a displayable string.
        /// </summary>
        public override string ToString(INodeTable nodeTable)
        {
            StringBuilder buffer = new StringBuilder();

            INode node = nodeTable.Find(TypeDefinitionId);

            if (node != null)
            {
                buffer.AppendFormat("{0}", TypeDefinitionId);
            }
            else
            {
                buffer.AppendFormat("{0}", TypeDefinitionId);
            }
             
            if (BrowsePath != null && BrowsePath.Count > 0)
            {
                buffer.AppendFormat("{0}", Format(BrowsePath));
            }

            if (!String.IsNullOrEmpty(IndexRange))
            {
                buffer.AppendFormat("[{0}]", NumericRange.Parse(IndexRange));
            }
            
            return buffer.ToString();
        }