Example #1
0
        static void Main(string[] args)
        {
            Eventer ev  = new Eventer();
            Two     two = new Two();

            ev.SomethingHappen += One.Handler;
            ev.SomethingHappen += two.Handler;
            Random rand = new Random();

            for (int i = 0; i < 10; i++)
            {
                ev.DoSmth(rand.Next(-10, 25));
            }

            ev.SomethingHappen -= One.Handler;
            ev.SomethingHappen += () => Console.WriteLine("Anonymous handler");
            ev.SomethingHappen += delegate
            {
                Console.WriteLine("delegate handler");
            };
            Console.WriteLine();
            Console.WriteLine();
            for (int i = 0; i < 10; i++)
            {
                ev.DoSmth(rand.Next(-10, 25));
            }
        }
Example #2
0
 protected override void DefineCareEvents(Eventer eventer)
 {
     eventer.RegisteEvent <int>(x =>
     {
         result = x;
     });
 }
Example #3
0
 private void OnDisconnect()
 {
     DestroyCurrentSocket();
     ChangeSocketTaskState(SocketTaskState.STS_IDLE);
     //设置重连状态
     Eventer.Fire("Disconnect");
 }
Example #4
0
 public void Initialize()
 {
     //虚拟驱动PlayerAnimBehaviour
     animControl = new TestAnimControl();
     control     = new PlayerAnimBehaviour(animControl);
     eventer     = new Eventer();
     control.RegisteEvent(eventer);
 }
Example #5
0
        static StateVariable BuildStateVariable(EventInfo eventInfo,
                                                object service,
                                                Dictionary <string, StateVariableInfo> stateVariables)
        {
            var attributes = eventInfo.GetCustomAttributes(typeof(UpnpStateVariableAttribute), false);

            if (attributes.Length == 0)
            {
                return(null);
            }

            var type = eventInfo.EventHandlerType;

            if (!type.IsGenericType || type.GetGenericTypeDefinition() != typeof(EventHandler <>))
            {
                throw new UpnpServiceDefinitionException(
                          "A event must be handled by the type EventHandler<StateVariableChangedArgs<T>>.");
            }

            type = type.GetGenericArguments()[0];
            if (!type.IsGenericType || type.GetGenericTypeDefinition() != typeof(StateVariableChangedArgs <>))
            {
                throw new UpnpServiceDefinitionException(
                          "A event must be handled by the type EventHandler<StateVariableChangedArgs<T>>.");
            }

            var attribute = (UpnpStateVariableAttribute)attributes[0];

            if (Omit(eventInfo.DeclaringType, service, attribute.OmitUnless))
            {
                return(null);
            }

            type = type.GetGenericArguments()[0];
            var eventer = new Eventer();
            var method  = Eventer.HandlerMethod.MakeGenericMethod(new[] { type });
            var handler = Delegate.CreateDelegate(eventInfo.EventHandlerType, eventer, method);

            eventInfo.AddEventHandler(service, handler);
            var name      = string.IsNullOrEmpty(attribute.Name) ? eventInfo.Name : attribute.Name;
            var data_type = string.IsNullOrEmpty(attribute.DataType) ? GetDataType(type) : attribute.DataType;
            StateVariableInfo info;

            if (stateVariables.TryGetValue(name, out info))
            {
                // TODO check type
                info.StateVariable.SetEventer(eventer, attribute.IsMulticast);
                return(null);
            }
            else
            {
                return(new StateVariable(name, data_type,
                                         new StateVariableOptions {
                    Eventer = eventer, IsMulticast = attribute.IsMulticast
                }));
            }
        }
Example #6
0
 void Update()
 {
     if (bPress)
     {
         if (UICamera.Raycast(new Vector3(Input.mousePosition.x, Input.mousePosition.y, 0)))
         {
             Eventer.Fire("BatchSelectCardHover", new object[] { UICamera.lastHit.collider.gameObject });
         }
     }
 }
 /// <summary>
 /// 注册事件
 /// </summary>
 /// <param name="eventer"></param>
 protected override void OnRegisteEvent(Eventer eventer)
 {
     eventer.RegisteEvent <IE_MovePos>(OnMoveToPos);
     eventer.RegisteEvent <IE_SpeedChange>((me) => {
         timeSpanCalculator.Operate(modifier =>
         {
             modifier.SetValue(speed, me.targetSpeed);
         });
     });
 }
Example #8
0
        public void 接收单一事件()
        {
            Eventer target = new Eventer();
            int     result = 0;

            target.RegisteEvent <int>(x =>
            {
                result = x;
            });
            target.NotifyEvent <int>(1);
            Assert.AreEqual(1, result);
        }
Example #9
0
    void Start()
    {
        UIEventListener.Get(gameObject).onPress = delegate(GameObject go, bool state)
        {
            bPress = state;

            if (state)
            {
                Eventer.Fire("BatchSelectCardBegin", new object[] { go });
            }
            else
            {
                Eventer.Fire("BatchSelectCardEnd", new object[] { go });
            }
        };
    }
Example #10
0
 void UpdateSelect(GameObject first, GameObject second)
 {
     if (first != null && second != null)
     {
         int fd = GetCardIndex(first);
         int sd = GetCardIndex(second);
         if (fd < sd)
         {
             Eventer.Fire("PlayerSelectCardList", new object[] { fd, sd });
         }
         else if (sd < fd)
         {
             Eventer.Fire("PlayerSelectCardList", new object[] { sd, fd });
         }
     }
 }
Example #11
0
 protected override void OnRegisteEvent(Eventer eventer)
 {
     eventer.RegisteEvent <IE_MovePos>(OnBeginWalk);
     eventer.RegisteEvent <IE_ArriveTarget>(OnArriveTarget);
 }
Example #12
0
 public Viewer(System.Windows.Threading.Dispatcher dispatcher)
 {
     ViewerEventer = new Eventer(dispatcher);
     FileInfo      = new FileAccess();
 }
Example #13
0
 protected MonoBehaviourX()
 {
     scope = Eventer.CreateScope();
 }
Example #14
0
 protected override void DefineCareEvents(Eventer eventer)
 {
     eventer.RegisteEvent <IE_PosChanged>(OnPosChanged);
 }
Example #15
0
 protected override void OnRegisteEvent(Eventer eventer)
 {
     eventer.RegisteEvent <int>(OnResult);
 }
Example #16
0
    public SocketConnect()
    {
        this.buffer = new byte[1024];
        bytesRecved = new ByteBuffer();
        transfer = new LinkedList<IByteBuffer>();
        receives = new LinkedList<IByteBuffer>();

        //this.events = new LinkedList<ClientEvent>();
        this.conCallBack = new AsyncCallback(ConnectCallBack);
        this.readCallback = new AsyncCallback(ReadCallback);
        this.sendCallback = new AsyncCallback(SendCallback);

        events = new Eventer(this);
    }
Example #17
0
 /// <summary>
 /// 强制要求子类定义关心的事件
 /// </summary>
 /// <param name="eventer"></param>
 protected abstract void DefineCareEvents(Eventer eventer);
Example #18
0
 protected override void OnRegisteEvent(Eventer eventer)
 {
     eventer.RegisteEvent <IE_PosChanged>(OnPosChanged);
 }
Example #19
0
 public void Init(Eventer eventer)
 {
     this.eventer = eventer;
 }
Example #20
0
    void Update()
    {
        curTime = Time.time;
        switch (socketTaskState)
        {
        case SocketTaskState.STS_IDLE:
            //什么都不做
            break;

        case SocketTaskState.STS_CONNECTING:
            //套接字正在连接中
            //检测是否链接成功
            if (tcpSocket.ConncetSuccess())
            {
                //链接成功
                ChangeSocketTaskState(SocketTaskState.STS_WORKING);
                lastReceivePacketTime = Time.time;
                //判断是第一次链接成功还是重连成功
                Log.Logic("Connect success, startConnectTime={0}, curTime={1}", lastReconnectTime, lastReceivePacketTime);
                Eventer.Fire("ConnectSuccess", new object[] { });

                //ResetReconnectMask(false);
            }
            else
            {
                float now = Time.time;
                if (now > lastReconnectTime + CONNECT_TIMEOUT)
                {
                    //链接超时了
                    Log.Logic("Connect timeout, startConnectTime={0}, curTime={1}", lastReconnectTime, now);
                    DestroyCurrentSocket();
                    //ChangeSocketTaskState(SocketTaskState.STS_DISCONNECT);
                    ChangeSocketTaskState(SocketTaskState.STS_IDLE);
                    Eventer.Fire("ConnectFailed", new object[] {});
                }
            }
            break;

        //case SocketTaskState.STS_DISCONNECT:
        //    if (!reconnectMask || reconnectCount >= autoReconnectMaxCount)
        //    {
        //        Log.Logic("reconnectMask={0}, reconnectCount={1}, connectFailed", reconnectMask, reconnectCount);
        //        //不支持重连,或许重连达到最大次数
        //        Eventer.Fire("ConnectFailed", new object[] { reconnectMask });
        //        //进入空闲状态
        //        ChangeSocketTaskState(SocketTaskState.STS_IDLE);
        //    }
        //    else
        //    {
        //        //进行重连
        //        float now = Time.time;
        //        tcpSocket = new TcpSocket();
        //        if (tcpSocket.Connect(serverAddr))
        //        {
        //            reconnectCount++;
        //            Log.Logic("start reconnect, reconnectMask={0}, reconnectCount={1}, time={2}", reconnectMask, reconnectCount, now);
        //            ChangeSocketTaskState(SocketTaskState.STS_CONNECTING);
        //            lastReconnectTime = Time.time;
        //        }
        //        else
        //        {
        //            Log.Logic("reconnect failed, reconnectMask={0}, reconnectCount={1}, time={2}", reconnectMask, reconnectCount, now);
        //            //直接连接失败了。不用检查重试了
        //            DestroyCurrentSocket();
        //            Eventer.Fire("ConnectFailed", new object[] { reconnectMask });
        //            ChangeSocketTaskState(SocketTaskState.STS_IDLE);
        //        }
        //    }
        //    break;
        case SocketTaskState.STS_WORKING:
            //接收数据

            if (!tcpSocket.DoMessageRecv(ref msgQueue))
            {
                //读取数据失败了
                Log.Logic("tcpSocket.DoMessageRecv failed");
                OnDisconnect();
            }
            else
            {
                float now = Time.time;
                if (msgQueue.Count == 0)
                {
                    if (now >= lastReceivePacketTime + RECEIVE_TIMEOUT)
                    {
                        Log.Logic("tcpSocket.DoMessageRecv timeout, lastReceivePacketTime={0} now={1}", lastReceivePacketTime, now);
                        //接收数据超时,当作断开处理
                        OnDisconnect();
                    }
                }
                else
                {
                    //有消息
                    lastReceivePacketTime = now;
                    Log.Logic("tcpSocket.DoMessageRecv success, update lastReceivePacketTime={0}", lastReceivePacketTime);
                    foreach (IncomingPacket packet in msgQueue)
                    {
                        Eventer.Fire("CompletePacket", new object[] { packet });
                    }
                    msgQueue.Clear();
                }
            }
            break;
        }
    }
 public void RegisteEvent(Eventer eventer)
 {
     this.eventer = eventer;
     OnRegisteEvent(eventer);
     OnRegisteGameLoopEvent(GameLoopTrigger.inst);
 }
 protected abstract void OnRegisteEvent(Eventer eventer);