Ejemplo n.º 1
0
        public ClientForm(Client client)
        {
            //
            // Required for Windows Form Designer support
            //
            InitializeComponent();

            this.client = client;

            client.MessageReceived += new MessageReceivedEventHandler(client_MessageReceived);
            client.PrivateMessageReceived += new PrivateMessageReceivedEventHandler(client_PrivateMessageReceived);
            this.Text = client.Name;
            this.client.ServerChanged += new EventHandler(client_ServerChanged);
            updateEnabled();
        }
Ejemplo n.º 2
0
        public void ExitClient(Client client)
        {
            if (client==null)
                throw new ArgumentNullException("client");
            lock (this)
            {
                if (client.Server == null)
                    throw new InvalidOperationException("client has not entered a server");

                client.Server = null;
                clients.Remove(client);

                Console.WriteLine("client left: {0}", client.Name);
            }
        }
Ejemplo n.º 3
0
        public void EnterClient(Client client)
        {
            if (client==null)
                throw new ArgumentNullException("client");
            lock (this)
            {
                if (client.Server != null)
                    throw new InvalidOperationException("client has already entered a server");

                string name = client.Name;
                foreach (Client c in clients)
                    if (c.Name == name)
                        throw new InvalidOperationException("client with that name has already entered");
                clients.Add(client);

                client.Server = this;

                Console.WriteLine("client entered: {0}", name);
            }
        }
Ejemplo n.º 4
0
        public void PostMessage(Client sender, string text)
        {
            if (sender==null)
                throw new ArgumentNullException("sender");
            if (text==null)
                throw new ArgumentNullException("text");

            lock (this)
            {
                Console.WriteLine("message posted by {0}: {1}", sender.Name, text);
                foreach (Client c in clients)
                {
                    ClientReceiveMessageSender crms = new ClientReceiveMessageSender(false, c, sender, text);
                    Thread t = new Thread(new ThreadStart(crms.Run));
                    t.Start();
                }
            }
        }
Ejemplo n.º 5
0
 public ClientReceiveMessageSender(bool privateMessage, Client c, Client sender, string text)
 {
     this.privateMessage = privateMessage;
     this.c = c;
     this.sender = sender;
     this.text = text;
 }
Ejemplo n.º 6
0
        public void PostPrivateMessage(Client sender, string receiver, string text)
        {
            if (sender==null)
                throw new ArgumentNullException("sender");
            if (receiver==null)
                throw new ArgumentNullException("receiver");
            if (text==null)
                throw new ArgumentNullException("text");

            lock (this)
            {
                Console.WriteLine("private message for {0} posted by {1}: {2}", receiver, sender.Name, text);
                foreach (Client c in clients)
                    if (c.Name == receiver)
                    {
                        ClientReceiveMessageSender crms = new ClientReceiveMessageSender(true, c, sender, text);
                        Thread t = new Thread(new ThreadStart(crms.Run));
                        t.Start();
                    }
            }
        }
Ejemplo n.º 7
0
 public void Notify(Client clientCreated)
 {
     ClientCreatedEventHandler cc = this.ClientCreated;
     if (cc!=null)
         cc(clientCreated);
 }
Ejemplo n.º 8
0
        public void ReceivePrivateMessage(Client sender, string text)
        {
            if (sender==null)
                throw new ArgumentNullException("sender");

            if (text==null)
                throw new ArgumentNullException("text");

            PrivateMessageReceivedEventHandler textReceived = this.PrivateMessageReceived;
            if (textReceived!=null)
                textReceived(this, sender, text);
        }
Ejemplo n.º 9
0
        static void Main(string[] args)
        {
            IDictionary props = new Hashtable();
            props["port"] = 0;
            BinaryClientFormatterSinkProvider clientFormatterProvider = new BinaryClientFormatterSinkProvider();
            BinaryServerFormatterSinkProvider serverFormatterProvider = new BinaryServerFormatterSinkProvider();
            serverFormatterProvider.TypeFilterLevel = TypeFilterLevel.Full;
            TcpChannel chan = new TcpChannel(props, clientFormatterProvider, serverFormatterProvider);
            ChannelServices.RegisterChannel(chan,false);
            string clientName = args.Length>0 ? args[0] : ("client#" + new Random().Next().ToString());
            Client client = new Client(clientName);

            if (args.Length>2)
            {
                string uri = args[2];
                ClientCreationNotifier notifier = (ClientCreationNotifier)Activator.GetObject(
                    typeof(ClientCreationNotifier),
                    uri);
                try
                {
                    //System.Diagnostics.Debugger.Break();//---
                    notifier.Notify(client);
                }
                catch (Exception e)
                {
                    MessageBox.Show(e.ToString());
                }
            }

            using (ClientForm clientForm = new ClientForm(client))
            {
                if (args.Length>1)
                {
                    int pos = int.Parse(args[1]);
                    Rectangle screen = Screen.PrimaryScreen.WorkingArea;

                    clientForm.Location = new Point(
                        8+screen.Left + screen.Width/2*(pos&1),
                        8+screen.Top + screen.Height/2*((pos&2)>>1));
                    //clientForm.Size = new Size(screen.Width/2-16, screen.Height/2-16);
                    clientForm.StartPosition = FormStartPosition.Manual;
                }

                Application.Run(clientForm);
            }
        }
Ejemplo n.º 10
0
 private void client_PrivateMessageReceived(Client c, Client sender, string text)
 {
     if (this.InvokeRequired)
         this.BeginInvoke(new PrivateMessageReceivedEventHandler(this.client_PrivateMessageReceived), new object[]{c, sender, text});
     else
         display(sender.Name + ": " + text + "\r\n");
 }