Beispiel #1
0
        public virtual void Setup()
        {
            var ctx = new Context(this, _clientConfig.Domain.Id, _hostName,
                                  NetworkInterfaceManager.GetLocalHostAddress());

            _mContext.Value = ctx;
        }
Beispiel #2
0
        //public string Property(string name, string defaultValue)
        //{
        //    name = (name ?? string.Empty).ToLower();
        //    if ("host.address" == name)
        //    {
        //        return HostAddress ?? defaultValue;
        //    }
        //    else if ("host.name" == name)
        //    {
        //        return HostName ?? defaultValue;
        //    }
        //    else
        //    {
        //        return defaultValue;
        //    }
        //}

        void IProvider.Initialize()
        {
            try {
                NetworkInterfaceManager.Refresh();
            }
            catch (Exception ex)
            {
                logger.Error(ex);
            }
        }
        public void BasicExecutionTest()
        {
            // arrange
            INetworkInterfaceManager manager = new NetworkInterfaceManager(new DummyConfigHandler());

            // act
            var actual = manager.GatherNetworkData();

            // assert
            Assert.IsNotNull(actual);
        }
Beispiel #4
0
 private static string GetLocalIP()
 {
     try
     {
         return(NetworkInterfaceManager.GetLocalHostAddress());
     }
     catch
     {
         return(string.Empty);
     }
 }
Beispiel #5
0
 static public int constructor(IntPtr l)
 {
     try {
         NetworkInterfaceManager o;
         o = new NetworkInterfaceManager();
         pushValue(l, true);
         pushValue(l, o);
         return(2);
     }
     catch (Exception e) {
         return(error(l, e));
     }
 }
        public void CheckIfAtLeastOneIPWasReceived()
        {
            // arrange
            INetworkInterfaceManager manager = new NetworkInterfaceManager(new DummyConfigHandler());

            // act
            var actual = manager.GatherNetworkData();

            // assert
            CollectionAssert.AllItemsAreUnique(actual);
            CollectionAssert.AllItemsAreNotNull(actual);
            CollectionAssert.IsNotEmpty(actual);
            CollectionAssert.AllItemsAreInstancesOfType(actual, typeof(NetworkInterfaceData));
        }
        public void Notify(NetworkInterfaceManager.NetworkInterfaceStatusChangedEventArgs e)
        {
            var killedProcessNames = new List<string>();
            var networkInterface = e.NetworkInterface;
            foreach (var killerValue in _killerValues.Where(_ => _.NetworkInterface.Id == networkInterface.Id))
            {
                KillProcessByName(killerValue.ProcessName);
                killedProcessNames.Add(killerValue.ProcessName);
            }

            if (killedProcessNames.Count() == 0)
            {
                return;
            }

            ProcessesKilledEvent(new ProcessesKilledEventArgs(killedProcessNames));
        }
Beispiel #8
0
        public virtual void InitializeClient(ClientConfig clientConfig)
        {
            _clientConfig = clientConfig ?? new ClientConfig();

            _hostName   = NetworkInterfaceManager.GetLocalHostName();
            _statistics = new DefaultMessageStatistics();
            _sender     = new TcpMessageSender(_clientConfig, _statistics);
            _sender.Initialize();
            _factory          = new MessageIdFactory();
            _statusUpdateTask = new StatusUpdateTask(_statistics);

            _taggedTransactions = new ConcurrentDictionary <string, ITaggedTransaction>();

            // initialize domain and ip address
            _factory.Initialize(_clientConfig.Domain.Id);

            // start status update task
            ThreadPool.QueueUserWorkItem(_statusUpdateTask.Run);
            Logger.Info("Thread(StatusUpdateTask) started.");
        }
Beispiel #9
0
        public virtual void InitializeClient(ClientConfig clientConfig)
        {
            _mClientConfig = clientConfig ?? new ClientConfig();

            _mHostName = NetworkInterfaceManager.GetLocalHostName();

            _mStatistics = new DefaultMessageStatistics();
            _mSender = new TcpMessageSender(_mClientConfig, _mStatistics);
            _mSender.Initialize();
            _mFactory = new MessageIdFactory();
            _mStatusUpdateTask = new StatusUpdateTask(_mStatistics);

            // initialize domain and ip address
            _mFactory.Initialize(_mClientConfig.Domain.Id);

            // start status update task
            ThreadPool.QueueUserWorkItem(_mStatusUpdateTask.Run);

            Logger.Info("Thread(StatusUpdateTask) started.");
        }
Beispiel #10
0
        public void Initialize(string domain)
        {
            _mDomain = domain;

            if (_mIpAddress != null)
            {
                return;
            }

            byte[] bytes = NetworkInterfaceManager.GetAddressBytes();

            StringBuilder sb = new StringBuilder();

            foreach (byte b in bytes)
            {
                sb.Append(((b >> 4) & 0x0F).ToString("x"));
                sb.Append((b & 0x0F).ToString("x"));
            }

            _mIpAddress = sb.ToString();
        }
Beispiel #11
0
        public void ChannelManagementTask(object o)
        {
            int count = 0;

            while (true)
            {
                // For every 5 minutes
                try
                {
                    _messageIdFactory.SaveMark(true);
                    if (_mActive)
                    {
                        // 1. If TCP connection is down, try to reconnect.
                        if (_mActiveChannel == null || !_mActiveChannel.Connected)
                        {
                            _mClientConfig.Refresh();
                            serversFromRemoteConfig = _mClientConfig.Servers;
                            if (null != _mActiveChannel)
                            {
                                Logger.Warn("The current TCP connection to " + _mActiveChannel + " is no longer connected. Will try to re-connect to server.");
                            }

                            var channel = GetActiveConnection(_mClientConfig.Servers, serversFromRemoteConfig);
                            if (channel != null && channel != _mActiveChannel)
                            {
                                var lastChannel = _mActiveChannel;
                                _mActiveChannel = channel;
                                if (lastChannel != null)
                                {
                                    lastChannel.Close();
                                }
                                NetworkInterfaceManager.Refresh();
                            }
                        }
                        // 2.If TCP connection is up, rebalance by connecting to a better CAT server, if necessary.
                        else
                        {
                            // Rebalance step (1): for every one hour, refresh router config from CAT server.
                            if (count % (CatConstants.REFRESH_ROUTER_CONFIG_INTERVAL / CatConstants.TCP_RECONNECT_INTERVAL) == 0)
                            {
                                Logger.Info("Refreshing router config from CAT server");
                                _mClientConfig.Refresh();
                            }
                            // Rebalance step (2): for every 10 min, forcefully re-establish TCP connection, according to latest router config
                            if (count % (CatConstants.TCP_REBALANCE_INTERVAL / CatConstants.TCP_RECONNECT_INTERVAL) == 0)
                            {
                                serversFromRemoteConfig = _mClientConfig.Servers;
                                var channel = GetActiveConnection(_mClientConfig.Servers, serversFromRemoteConfig);
                                if (channel != null && channel != _mActiveChannel)
                                {
                                    var lastChannel = _mActiveChannel;
                                    _mActiveChannel = channel;
                                    if (lastChannel != null)
                                    {
                                        if (lastChannel.Client != null && channel.Client != null)
                                        {
                                            Logger.Info("Rebalancing by re-establising TCP connection. Old connection to: "
                                                        + lastChannel.Client.RemoteEndPoint + " New connection to: " + channel.Client.RemoteEndPoint);
                                        }
                                        lastChannel.Close();
                                    }
                                    NetworkInterfaceManager.Refresh();
                                }
                            }
                        }
                    }
                }
                catch (Exception ex) { Cat.lastException = ex; }
                finally { count++; }
                Thread.Sleep(CatConstants.TCP_RECONNECT_INTERVAL);
            }
        }