예제 #1
0
        private void HandleKeyInstruct(KeyInstructMessage msg)
        {
            if (!msg.Instructions.ContainsKey(_config.ID))
            {
                return;
            }

            var instructionSet = msg.Instructions[_config.ID];

            foreach (var instruction in instructionSet)
            {
                int count = instruction.KeyCount;
                var keys  = _processor.Get(count).ToList();

                var srcAddress = IPAddress.Parse(_config.TCPServerAddress);
                var srcPort    = Int32.Parse(_config.TCPServerPort);
                var dstAddress = IPAddress.Parse(instruction.Address);
                var dstPort    = Int32.Parse(instruction.Port);
                using (var tcpSocket = new TCPSocket(
                           srcAddress, srcPort,
                           dstAddress, dstPort))
                {
                    var distMsg = new KeyDistributeMessage()
                    {
                        SourceID      = _config.ID,
                        DestinationID = Constants.NULL_DESTINATION,
                        Keys          = keys
                    };

                    SendMessage(distMsg, tcpSocket);
                }
            }
        }
예제 #2
0
        private void HandleKeyInstruct(KeyInstructMessage msg)
        {
            var srcAddress = IPAddress.Parse(_config.TCPServerAddress);
            var srcPort    = Int32.Parse(_config.TCPServerPort);

            var instructionSet = msg.Instructions[_config.ID];

            foreach (var instruction in instructionSet)
            {
                var dstAddress = IPAddress.Parse(instruction.Address);
                var dstPort    = Int32.Parse(instruction.Port);

                using (var tcpSocket = new TCPSocket(
                           srcAddress, srcPort,
                           dstAddress, dstPort))
                {
                    var keys = _keys.Take(instruction.KeyCount).ToList();
                    _keys.RemoveRange(0, keys.Count);

                    var keyDistribute = new KeyDistributeMessage()
                    {
                        SourceID      = _config.ID,
                        DestinationID = Constants.NULL_DESTINATION,
                        Keys          = keys
                    };

                    SendMessage(keyDistribute, tcpSocket);
                }
            }

            _t.Stop();
            _leaveFinished = true;
        }