public Service JoinService(IChannel channel, int id, JArray address, int port)
{
if (id == -1)
{
//_servicesLock.EnterWriteLock();
id = ++_maxIndex;
if (_maxIndex >= _services.Length) //공간이 작다. 공간을 늘린다.
{
var temp = new Service[_services.Length];
System.Array.Copy(_services, temp, _services.Length);
_services = temp;
}
_services[id] = new Service(this, id, address, port);
dynamic packet = new JObject();
packet.type = "change_service_id";
packet.id = id;
channel.SendMessage(packet);
//_servicesLock.ExitWriteLock();
}
//_servicesLock.EnterReadLock();
var service = _services[id];
//_servicesLock.ExitReadLock();
service.AddChannel(channel);
return service;
}