예제 #1
0
파일: Program.cs 프로젝트: zengjie/umundo
        static void Main(string[] args)
        {
            /*
             * Make sure this path contains the umundoNativeCSharp.dll!
             */
            if (System.Environment.Is64BitProcess)
            {
                SetDllDirectory("C:\\Program Files (x86)\\uMundo\\share\\umundo\\bindings\\csharp64");
            }
            else
            {
                SetDllDirectory("C:\\Program Files (x86)\\uMundo\\share\\umundo\\bindings\\csharp");
            }

            org.umundo.core.Node node = new org.umundo.core.Node();

            org.umundo.core.Discovery disc = new org.umundo.core.Discovery(Discovery.DiscoveryType.MDNS);
            disc.add(node);

            TypedPublisher pub = new TypedPublisher("s11ndemo");

            node.addPublisher(pub);

            TestTypedReceiver ttr = new TestTypedReceiver();
            TypedSubscriber   sub = new TypedSubscriber("s11ndemo", ttr);

            node.addSubscriber(sub);

            Console.WriteLine("Waiting for subscribers...");
            int subs = pub.waitForSubscribers(1);

            Console.WriteLine(subs + " subscribers");

            AMessage msg = new AMessage();

            msg.a = 42;
            msg.b = 43;
            sub.RegisterType(msg.GetType().Name, msg.GetType());
            while (true)
            {
                Console.WriteLine("s: " + msg.a + ", " + msg.b);
                pub.SendObject(msg);
                System.Threading.Thread.Sleep(1000);
            }
        }
예제 #2
0
        /// <summary>
        /// Handles the Click event of the Login control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="EventArgs"/> instance containing the event data.</param>
        private void btnLogin_Click(object sender, EventArgs e)
        {
            Globals.Username = txtName.Text;
            //If the user leaves the name empty show some error message
            if (String.IsNullOrWhiteSpace(Globals.Username))
            {
                MessageBox.Show("Please enter a valid username");
                return;
            }

            //Lock the text area and login button for further editing
            txtName.Enabled  = false;
            btnLogin.Enabled = false;

            #region Initialize uMundo
            org.umundo.core.Node      node = new org.umundo.core.Node();
            org.umundo.core.Discovery disc = new org.umundo.core.Discovery(Discovery.DiscoveryType.MDNS);
            disc.add(node);

            pub = new Publisher("coreGame");
            FlyHunterGreeter greeter = new FlyHunterGreeter(Globals.Username);
            greeter.UpdateScoreLocal += new FlyHunterGreeter.UpdateScoreLocalDelegate(UpdateScoreBoard);
            pub.setGreeter(greeter);
            FlyHunterReceiver recv = new FlyHunterReceiver();
            Globals.Players = new FlyHuntMessage();
            Globals.Players.Names.Add(Globals.Username);
            Globals.Players.Scores.Add("0");
            recv.UpdateScoreLocal += new FlyHunterReceiver.UpdateScoreLocalDelegate(UpdateScoreBoard);
            recv.RelocateFly      += new FlyHunterReceiver.RelocateFlyDelegate(RelocateFly);

            Globals.sub = new Subscriber("coreGame");
            Globals.sub.setReceiver(recv);
            node.addPublisher(pub);
            node.addSubscriber(Globals.sub);
            #endregion

            //Enable the main panel where fly appears
            panelMain.Enabled = true;
        }
예제 #3
0
        static void Main(string[] args)
        {
            /*
             * Make sure this path contains the umundoNativeCSharp.dll!
             */
            if (System.Environment.Is64BitProcess)
            {
                SetDllDirectory("C:\\Program Files (x86)\\uMundo\\share\\umundo\\bindings\\csharp64");
            }
            else
            {
                SetDllDirectory("C:\\Program Files (x86)\\uMundo\\share\\umundo\\bindings\\csharp");
            }

            org.umundo.core.Node      node = new org.umundo.core.Node();
            org.umundo.core.Discovery disc = new org.umundo.core.Discovery(Discovery.DiscoveryType.MDNS);
            disc.add(node);

            Publisher    pub  = new Publisher("pingpong");
            PingReceiver recv = new PingReceiver();
            Subscriber   sub  = new Subscriber("pingpong", recv);

            node.addPublisher(pub);
            node.addSubscriber(sub);

            while (!Console.KeyAvailable)
            {
                Message msg  = new Message();
                String  data = "data";
                System.Text.ASCIIEncoding enc = new System.Text.ASCIIEncoding();
                byte[] buffer = enc.GetBytes(data);
                msg.setData(buffer);
                msg.putMeta("foo", "bar");
                Console.Write("o");
                pub.send(msg);
                System.Threading.Thread.Sleep(1000);
            }
        }
예제 #4
0
        /// <summary>
        /// Handles the Click event of the Login control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="EventArgs"/> instance containing the event data.</param>
        private void btnLogin_Click(object sender, EventArgs e)
        {
            Globals.Username = txtName.Text;
            //If the user leaves the name empty show some error message
            if (String.IsNullOrWhiteSpace(Globals.Username))
            {
                MessageBox.Show("Please enter a valid username");
                return;
            }

            //Lock the text area and login button for further editing
            txtName.Enabled = false;
            btnLogin.Enabled = false;

            #region Initialize uMundo
            org.umundo.core.Node node = new org.umundo.core.Node();
            org.umundo.core.Discovery disc = new org.umundo.core.Discovery(Discovery.DiscoveryType.MDNS);
            disc.add(node);

            pub = new Publisher("coreGame");
            FlyHunterGreeter greeter = new FlyHunterGreeter(Globals.Username);
            greeter.UpdateScoreLocal += new FlyHunterGreeter.UpdateScoreLocalDelegate(UpdateScoreBoard);
            pub.setGreeter(greeter);
            FlyHunterReceiver recv = new FlyHunterReceiver();
            Globals.Players = new FlyHuntMessage();
            Globals.Players.Names.Add(Globals.Username);
            Globals.Players.Scores.Add("0");
            recv.UpdateScoreLocal += new FlyHunterReceiver.UpdateScoreLocalDelegate(UpdateScoreBoard);
            recv.RelocateFly += new FlyHunterReceiver.RelocateFlyDelegate(RelocateFly);

            Globals.sub = new Subscriber("coreGame");
            Globals.sub.setReceiver(recv);
            node.addPublisher(pub);
            node.addSubscriber(Globals.sub);
            #endregion

            //Enable the main panel where fly appears
            panelMain.Enabled = true;
        }