Example #1
0
        public Theme[] GetThemes()
        {
            if (_client == null)
                _client = new CentralServiceClient(new InstanceContext(new RegisterUser(_chatMembers)));

            try
            {
                return _client.GetThemes();
            }
            catch(CommunicationException)
            {
                _client = new CentralServiceClient(new InstanceContext(new RegisterUser(_chatMembers)));
                return _client.GetThemes();
            }
        }
Example #2
0
        public void Subscribe(string username)
        {
            var callback = OperationContext.Current.GetCallbackChannel<IMessageReceivedChannel>();
            _consumers = callback;

            var client = new CentralServiceClient(new InstanceContext(new RegisterUser()));
            User self;

            User[] members = client.LogOn(out self, "Sports", username);

            //foreach(var member in members.Select(p => new ChatServiceClient(new InstanceContext(callback),
            //                                                          new WSDualHttpBinding(),
            //                                                          new EndpointAddress(p.ChatService))))
            //{
            //    _chatMembers.AddLast(member);
            //}

            _user = self;

            client.Close();
        }
Example #3
0
        public void Subscribe(string username, string theme, string language)
        {
            _client = new CentralServiceClient(new InstanceContext(new RegisterUser(_chatMembers)));
            var callback = OperationContext.Current.GetCallbackChannel<IMessageReceivedChannel>();
            _clientCallback = callback;

            _language = language;

            User self;
            IEnumerable<User> members;
            try
            {
                members = _client.LogOn(theme, username, OperationContext.Current.EndpointDispatcher.EndpointAddress.Uri);
            }
            catch(FaultException<InvalidOperationException> e)
            {
                throw new FaultException<InvalidOperationException>(e.Detail);
            }

            self = members.ElementAt(0);
            members = members.Skip(1);

            InstanceContext context = new InstanceContext(new FakeCallback());
            WSDualHttpBinding binding = new WSDualHttpBinding();
            foreach (var s in members.Select((u, i) => new ChatServiceClient(   context,
                                                                                binding,
                                                                                new EndpointAddress(u.ChatService))))
            {
                lock(_chatMembers)
                {
                    _chatMembers.AddLast(s);
                }
            }

            _theme = theme;
            _user = self;
        }
Example #4
0
        public void Unsubscribe()
        {
            _clientCallback = null;

            try
            {
                _client.LogOff(_theme, _user.Id);
            }
            catch(CommunicationException)
            {
                _client = new CentralServiceClient(new InstanceContext(new RegisterUser(_chatMembers)));
                _client.LogOff(_theme, _user.Id);
            }

            _client.Close();
        }