Service.Manager.ServiceManager.AddService C# (CSharp) Method

AddService() private method

private AddService ( IChannel channel, Services services, int id, Newtonsoft.Json.Linq.JArray address, int port ) : void
channel IChannel
services Services
id int
address Newtonsoft.Json.Linq.JArray
port int
return void
        private void AddService(IChannel channel, Services services, int id, JArray address, int port)
        {
            var service = services.JoinService(channel, id, address, port);

            if (id == -1)
            {
                dynamic packet = new JObject();
                packet.type = "max_entity_id";
                packet.value = 10000;
                channel.SendMessage(packet);

                var networks = _networkManager.GetNetworks(service);

                int notifyServiceCount = 0;
                foreach (var network in networks)
                {
                    var remoteServiceName = network.Service1 == services.GetServicesName() ? network.Service2 : network.Service1;
                    var remoteService = GetServices(remoteServiceName);
                    if (remoteService == null)
                        continue;
                    notifyServiceCount += remoteService.NotifyJoinService(service, network);
                }
                //Interlocked.Increment
                //여기서 광역 락 시전!
                //추가 됬다고 정보를 알린 모든 서비스에서 승인이 떨어지면 다음꺼 처리.
                if (notifyServiceCount > 0)
                {
                    _addremoveService = service;
                    _notifyServiceCount = notifyServiceCount;
                    _nextAddRemoveProcessing = new AutoResetEvent(false);
                    _nextAddRemoveProcessing.WaitOne();
                }
            }
        }