Example #1
0
        /// <summary>
        /// generates id for the component, adds it to an adequate list, and sends returning message
        /// </summary>
        /// <param name="client"></param>
        /// <param name="type"></param>
        /// <param name="parallelThreads"></param>
        /// <param name="solvableProblems"></param>
        public void RegisterComponent(TcpClient client, EComponentType type, int parallelThreads = 1, List <string> solvableProblems = null)
        {
            var componentsInfo = new ComponentsInfo(type, ++_maxComponentId, client, _timeout, parallelThreads, solvableProblems);

            componentsInfo.ComponentTimedOut += componentsInfo_ComponentTimedOut;
            switch (type.ToString())
            {
            case ("TaskManager"):
                _taskManagers.Add(componentsInfo);
                break;

            case ("ComputationalNode"):
                _computationalNodes.Add(componentsInfo);
                break;

            case ("ComputationalClient"):
                _computationalClients.Add(componentsInfo);
                break;
            }
            var responseMsg = new RegisterResponseMessage(_maxComponentId, DateTime.Now);

            SendMessage(responseMsg.Serialize(), client);
            EventLogger.GetLog().InfoFormat("Zarejestrowano {0} z Id:{1}", componentsInfo.Type, componentsInfo.Id);
        }