예제 #1
0
        public bool Connect(string name)
        {
            if (!clientsNames.Contains(name))
            {
                clientsNames.Add(name);
            }
            if (clientsAndNames.ContainsValue(clientsNames.IndexOf(name)))
            {
                return(false);
            }
            IchatClient clientCallback = OperationContext.Current.GetCallbackChannel <IchatClient>();

            clientsAndNames.Add(clientCallback, clientsNames.IndexOf(name));
            Post(clientsNames[clientsAndNames[clientCallback]] + " dolaczyl do rozmowy.");
            return(true);
        }
예제 #2
0
        public void Post(string message)
        {
            IchatClient clientCallback = OperationContext.Current.GetCallbackChannel <IchatClient>();
            string      name           = clientsNames[clientsAndNames[clientCallback]];

            Console.WriteLine(name + " : " + message);
            foreach (KeyValuePair <IchatClient, int> client in clientsAndNames)
            {
                Console.WriteLine(client.Key);
                try
                {
                    Thread callback = new Thread(callbackThread);
                    callback.Start(new info(clientCallback, name, message));
                    // client.Key.messagePosted(name, message);
                }
                catch (Exception e)
                {
                    Disconnect(client.Key);
                }
            }
        }
예제 #3
0
 public info(IchatClient c, string n, string m)
 {
     client  = c;
     name    = n;
     message = m;
 }
예제 #4
0
        public void Disconnect()
        {
            IchatClient clientCallback = OperationContext.Current.GetCallbackChannel <IchatClient>();

            Disconnect(clientCallback);
        }
예제 #5
0
 private void Disconnect(IchatClient client)
 {
     Post(clientsNames[clientsAndNames[client]] + " rozlaczyl sie...");
     clientsAndNames.Remove(client);
 }