Exemple #1
0
        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);
            }
        }
Exemple #2
0
        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;
            }
        }