private void ConnectCentralMachineToOtherNodes(IEnumerable <uint> nodesIdConnectedToCentralMachine, uint centralMachineId)
        {
            foreach (var nodeId in nodesIdConnectedToCentralMachine)
            {
                var price    = ChannelParamsGenerator.GetRandomPrice();
                var capacity = ChannelParamsGenerator.GetCapactity(price) / 3;

                var channel = new Channel
                {
                    Id             = Guid.NewGuid(),
                    FirstNodeId    = centralMachineId,
                    SecondNodeId   = nodeId,
                    ConnectionType = ConnectionType.Duplex,
                    ChannelType    = ChannelType.Satellite,
                    ErrorChance    = AllConstants.RandomGenerator.NextDouble(),
                    Price          = price,
                    IsBusy         = false,
                    Capacity       = capacity
                };

                var metropolitanNode = _network.GetNodeById(nodeId);
                metropolitanNode.NodeType = NodeType.MainMetropolitanMachine;

                _network.AddChannel(channel);
            }
        }
Beispiel #2
0
        private void CreateChannels()
        {
            foreach (var node in _network.Nodes)
            {
                var numberOfChannels = GetNumberOfChannels(node);

                for (var i = 0; i < numberOfChannels; i++)
                {
                    var channel = GenerateChannel(node.Id);

                    _network.AddChannel(channel);
                }
            }
        }
        public void Setup()
        {
            Mapper.Initialize(MapperInitializer.InitializeMapper);

            _networkInfoRetriever = new NetworkInfoRetriever();

            _network = new Network();

            var nodes = new[]
            {
                new Node
                {
                    Id                   = 0,
                    LinkedNodesId        = new SortedSet <uint>(new uint[] { 1 }),
                    MessageQueueHandlers = new List <MessageQueueHandler>()
                },
                new Node
                {
                    Id                   = 1,
                    LinkedNodesId        = new SortedSet <uint>(new uint[] { 0 }),
                    MessageQueueHandlers = new List <MessageQueueHandler>()
                }
            };

            foreach (var node in nodes)
            {
                _network.AddNode(node);
            }

            var channels = new[]
            {
                new Channel
                {
                    Id             = Guid.Empty,
                    ConnectionType = ConnectionType.Duplex,
                    ChannelType    = ChannelType.Ground,
                    ErrorChance    = 0.5,
                    SecondNodeId   = 0,
                    FirstNodeId    = 1,
                    Price          = 20,
                    Capacity       = 20,
                }
            };

            foreach (var channel in channels)
            {
                _network.AddChannel(channel);
            }
        }
        private void ConvertMetropolianNetworksToWideAreaNetwork(IEnumerable <INetworkHandler> metropolitanNetworks)
        {
            _network = new Network();

            foreach (var metropolitanNetwork in metropolitanNetworks)
            {
                foreach (var node in metropolitanNetwork.Nodes)
                {
                    node.NodeType = NodeType.SimpleNode;
                    _network.AddNode(node);
                }

                foreach (var channel in metropolitanNetwork.Channels)
                {
                    _network.AddChannel(channel);
                }
            }
        }
Beispiel #5
0
        private void ParseChannels(JObject unparsedNetwork, INetworkHandler network)
        {
            foreach (var channelInfo in unparsedNetwork["ChannelIoDtos"])
            {
                var channel = new Channel
                {
                    Id             = (Guid)channelInfo["Id"],
                    Price          = (int)channelInfo["Price"],
                    ErrorChance    = (double)channelInfo["ErrorChance"],
                    FirstNodeId    = (uint)channelInfo["FirstNodeId"],
                    SecondNodeId   = (uint)channelInfo["SecondNodeId"],
                    ConnectionType = (ConnectionType)(int)channelInfo["ConnectionType"],
                    ChannelType    = (ChannelType)(int)channelInfo["ChannelType"],
                    IsBusy         = false,
                    Capacity       = (int)channelInfo["Capacity"]
                };

                network.AddChannel(channel);
            }
        }
Beispiel #6
0
 private void OnChannelAddEventHandler(Channel channel)
 {
     _network.AddChannel(channel);
     _channelDrawer.DrawComponents(GeneratedCanvas);
 }
Beispiel #7
0
        public void AddChannelShouldAddChannelBetweenTwoNodes()
        {
            // Arrange
            _network.AddNode(_node1);
            _network.AddNode(_node2);

            // Act
            _network.AddChannel(_channel);

            // Assert
            Assert.IsTrue(_network.Channels.Contains(_channel));
            Assert.IsTrue(_node1.LinkedNodesId.Contains(_node2.Id));
            Assert.IsTrue(_node2.LinkedNodesId.Contains(_node1.Id));
            Assert.IsTrue(_node1.LinkedNodesId.Contains(_node2.Id));
            Assert.IsTrue(_node2.LinkedNodesId.Contains(_node1.Id));
        }