public int[] Join(int id) { bool isAdded = false; _myEventHandler = (sender, e) => { try { switch (e.MessageType) { case MessageType.Receive: _callbackInstance.Receive(e.Id, e.Data); break; case MessageType.ReceiveWhisper: _callbackInstance.ReceiveWhisper(e.Id, e.Data); break; case MessageType.ServiceEnter: _callbackInstance.ServiceEnter(e.Id); break; case MessageType.ServiceLeave: _callbackInstance.ServiceLeave(e.Id); break; case MessageType.Ping: _callbackInstance.Ping(e.Data); break; } } catch { Leave(); } }; lock (_syncObj) { if (id != 0) { if (!_services.ContainsKey(id)) { this._id = id; _services.Add(id, _myEventHandler); isAdded = true; } } } if (isAdded) { _callbackInstance = OperationContext.Current.GetCallbackChannel <IContactCenterCallback>(); Broadcast(this, new MessageEventArgs { Id = id, MessageType = MessageType.ServiceEnter }); MessageEvent += _myEventHandler; int[] list = new int[_services.Count]; lock (_syncObj) _services.Keys.CopyTo(list, 0); return(list); } else { return(null); } }
public int[] Join(int id) { bool isAdded = false; _myEventHandler = (sender, e) => { try { switch (e.MessageType) { case MessageType.Receive: _callbackInstance.Receive(e.Id, e.Data); break; case MessageType.ReceiveWhisper: _callbackInstance.ReceiveWhisper(e.Id, e.Data); break; case MessageType.ServiceEnter: _callbackInstance.ServiceEnter(e.Id); break; case MessageType.ServiceLeave: _callbackInstance.ServiceLeave(e.Id); break; case MessageType.Ping: _callbackInstance.Ping(e.Data); break; } } catch { Leave(); } }; lock (_syncObj) { if (id != 0) { if (!_services.ContainsKey(id)) { this._id = id; _services.Add(id, _myEventHandler); isAdded = true; } } } if (isAdded) { _callbackInstance = OperationContext.Current.GetCallbackChannel<IContactCenterCallback>(); Broadcast(this, new MessageEventArgs { Id = id, MessageType = MessageType.ServiceEnter }); MessageEvent += _myEventHandler; int[] list = new int[_services.Count]; lock (_syncObj) _services.Keys.CopyTo(list, 0); return list; } else { return null; } }