示例#1
0
        public void OnPadintRead(Object sender, EventArgs e)
        {
            PadIntLocal oldPadint    = (PadIntLocal)sender;
            int         updatedValue = ReadPadInt(oldPadint.Uid);

            Console.WriteLine(updatedValue);
            oldPadint.changeHandler -= OnPadintChange;
            oldPadint.Write(updatedValue);
            oldPadint.changeHandler += OnPadintChange;
        }
示例#2
0
        public void OnPadintChange(Object sender, EventArgs e)
        {
            Console.WriteLine("change event  called!");

            PadIntLocal changedPadInt = (PadIntLocal)sender;

            changedPadInt.readHandler -= OnPadintRead;
            WritePadInt(changedPadInt.Uid, changedPadInt.Read());
            changedPadInt.readHandler += OnPadintRead;
        }
示例#3
0
        public PadInt AccessPadInt(int uid)
        {
            IServer server = null;
            PadInt  remote = null;


            try
            {
                server = lookupService.GetServer(uid);

                Console.WriteLine("server: " + uid + " ");

                remote = server.AccessPadInt(currentTid, uid);
                if (remote == null)
                {
                    Console.WriteLine("remote null");
                }
                Console.WriteLine("remote uid: " + uid);
            }
            catch (SocketException e)
            {
                Console.WriteLine("exception: " + e.Message);

                //Recuperacao
                masterService.Master.RemoveServer(lookupService.GetServerEndpoint(uid));

                //Recuperacao concluida
                //Tenta executar novamente
                //lookupService.AddParticipant(currentTid, uid);

                server = lookupService.GetServer(uid);



                AccessPadInt(uid);

                //throw new NotImplementedException(); //////////////////////////////////////////////tEMOS DE IMPLEMENTAR ISTO!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
            }


            if (remote == null)
            {
                return(null);
            }

            int value = remote.Read();

            PadIntLocal local = new PadIntLocal(uid, value);

            local.changeHandler += this.OnPadintChange;
            local.readHandler   += this.OnPadintRead;

            return(local);
        }
示例#4
0
        public PadInt CreatePadInt(int uid)
        {
            IServer server = null;
            PadInt  padInt = null;

            try
            {
                server = lookupService.GetServer(uid);

                if (currentTid == 0)
                {
                    currentTid = server.GetTid();
                }

                lookupService.AddParticipant(currentTid, uid);
                padInt = server.CreatePadInt(currentTid, uid);
            }
            catch (SocketException e)
            {
                //Recuperacao
                masterService.Master.RemoveServer(lookupService.GetServerEndpoint(uid));

                CreatePadInt(uid);


                //throw new NotImplementedException(); //////////////////////////////////////////////tEMOS DE IMPLEMENTAR ISTO!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
            }


            if (padInt == null)
            {
                return(null);
            }


            PadIntLocal local = new PadIntLocal(uid);

            if (local == null)
            {
                return(null);
            }


            local.changeHandler += this.OnPadintChange;
            local.readHandler   += this.OnPadintRead;

            return(local);
        }