Beispiel #1
0
 public RegisterData ConnectAsRegister(string nickname, string password)
 {
     try
     {
         LoginOrRegisterRequest request = new LoginOrRegisterRequest(0, password, ClientVersion);
         request.IsRegister = true;
         request.Nickname   = nickname;
         IPAddress[] addr = Dns.GetHostAddresses(ServerAddress);
         Socket      sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
         sock.Connect(addr, ServerPort);
         sock.SendOnce(request);
         RegisterCallback rcb = sock.ReceiveOnce <RegisterCallback>(512);
         try
         {
             sock.Close();
             sock.Dispose();
         }
         catch { }
         if (rcb.Success)
         {
             return(new RegisterData(RegisterResult.Success, rcb.Username));
         }
         else
         {
             return(new RegisterData((RegisterResult)rcb.Username, -1));
         }
     }
     catch
     {
         return(new RegisterData(RegisterResult.ConnectionError, -1));
     }
 }
Beispiel #2
0
 /// <summary>
 ///     Crea un handler debil para eventos de tipo <c>EventHandler</c>,
 /// </summary>
 /// <param name="eventHandler">Handler origen.</param>
 /// <param name="register">Delegado para registrar el evento.</param>
 /// <param name="unregister">Delegado para deregistrar el evento.</param>
 /// <returns>Handler debil.</returns>
 public static IWeakEventHandler <EventHandler> WeakListen(
     this EventHandler eventHandler,
     RegisterCallback <EventHandler> register,
     UnregisterCallback <EventHandler> unregister)
 {
     return(WeakListen <EventHandler, EventArgs>(eventHandler, register, unregister));
 }
Beispiel #3
0
 public RegisterData ConnectAsRegister <RequestType>(RequestType request)
     where RequestType : LoginOrRegisterRequest, IStorable, new()
 {
     try
     {
         request.IsRegister = true;
         IPAddress[] addr = Dns.GetHostAddresses(ServerAddress);
         Socket      sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
         sock.Connect(addr, ServerPort);
         sock.SendOnce(request);
         RegisterCallback rcb = sock.ReceiveOnce <RegisterCallback>(512);
         try
         {
             sock.Close();
             sock.Dispose();
         }
         catch { }
         if (rcb.Success)
         {
             return(new RegisterData(RegisterResult.Success, rcb.Username));
         }
         else
         {
             return(new RegisterData((RegisterResult)rcb.Username, -1));
         }
     }
     catch
     {
         return(new RegisterData(RegisterResult.ConnectionError, -1));
     }
 }
Beispiel #4
0
 /// <summary>
 ///     Gestiona los eventos de una propiedad.
 /// </summary>
 public RegisterForImp <TSender> RegisterProperty <TItem>(string propertyName, Func <TSender, TItem> getValue,
                                                          RegisterCallback <TSender, EventHandler_v2 <PropertyChangedExEventArgs> > register,
                                                          UnregisterCallback <TSender, EventHandler_v2 <PropertyChangedExEventArgs> > unregister,
                                                          bool valuesToManager = true)
 {
     return(this.RegisterProperty(propertyName, getValue, null, register, unregister, valuesToManager));
 }
Beispiel #5
0
 /// <summary>
 ///     Gestiona los eventos de multiples propiedades.
 /// </summary>
 public RegisterForImp <TSender> RegisterProperties(Type[] propertyTypes, string[] propertyNames, Func <TSender, object>[] getValues,
                                                    RegisterCallback <TSender, EventHandler_v2 <PropertyChangedExEventArgs> > register,
                                                    UnregisterCallback <TSender, EventHandler_v2 <PropertyChangedExEventArgs> > unregister,
                                                    bool valuesToManager = true)
 {
     return(this.RegisterProperties(propertyTypes, propertyNames, getValues, null, register, unregister, valuesToManager));
 }
Beispiel #6
0
 /// <summary>
 ///     Gestiona los eventos de una lista.
 /// </summary>
 public RegisterForImp <TSender> RegisterList <TItem>(Func <TSender, IList <TItem> > getValues,
                                                      RegisterCallback <TSender, EventHandler_v2 <ListEventArgs> > register,
                                                      UnregisterCallback <TSender, EventHandler_v2 <ListEventArgs> > unregister,
                                                      bool valuesToManager = true)
 {
     return(this.RegisterList(getValues, null, register, unregister, valuesToManager));
 }
 public ForSource <TSource> RegisterWeak(string name,
                                         EventHandler eventHandler,
                                         RegisterCallback <TSource, EventHandler> register,
                                         UnregisterCallback <TSource, EventHandler> unregister)
 {
     this.manager.RegisterWeak <TSource, EventHandler, EventArgs>(name, eventHandler, register, unregister);
     return(this);
 }
 public ForSource <TSource> RegisterWeak(string name,
                                         EventHandler <PropertyChangedExEventArgs> eventHandler,
                                         RegisterCallback <TSource, EventHandler <PropertyChangedExEventArgs> > register,
                                         UnregisterCallback <TSource, EventHandler <PropertyChangedExEventArgs> > unregister)
 {
     this.manager.RegisterWeak <TSource, EventHandler <PropertyChangedExEventArgs>, PropertyChangedExEventArgs>(name, eventHandler, register, unregister);
     return(this);
 }
Beispiel #9
0
 /// <summary>
 ///     Crea un handler debil para eventos de tipo <c>EventHandler_v2</c>,
 /// </summary>
 /// <param name="eventHandler">Handler origen.</param>
 /// <param name="register">Delegado para registrar el evento.</param>
 /// <param name="unregister">Delegado para deregistrar el evento.</param>
 /// <returns>Handler debil.</returns>
 public static IWeakEventHandler <EventHandler_v2 <T> > WeakListen <T>(
     this EventHandler_v2 <T> eventHandler,
     RegisterCallback <EventHandler_v2 <T> > register,
     UnregisterCallback <EventHandler_v2 <T> > unregister)
     where T : EventArgs
 {
     return(WeakListen <EventHandler_v2 <T>, T>(eventHandler, register, unregister));
 }
Beispiel #10
0
 public EventListener_v2(EventHandler_v2 <TEventArgs> eventHandler,
                         RegisterCallback <EventHandler_v2 <TEventArgs> > register,
                         UnregisterCallback <EventHandler_v2 <TEventArgs> > unregister)
 {
     this.register     = register;
     this.unregister   = unregister;
     this.eventHandler = eventHandler;
 }
Beispiel #11
0
 public EventListener(EventHandler eventHandler,
                      RegisterCallback <EventHandler> register,
                      UnregisterCallback <EventHandler> unregister)
 {
     this.eventHandler = eventHandler;
     this.register     = register;
     this.unregister   = unregister;
 }
Beispiel #12
0
 public AllPropertiesListener(EventHandler_v2 <PropertyChangedExEventArgs> eventHandler,
                              RegisterCallback <EventHandler_v2 <PropertyChangedExEventArgs> > register,
                              UnregisterCallback <EventHandler_v2 <PropertyChangedExEventArgs> > unregister,
                              bool valuesToManager)
     : base(eventHandler, register, unregister)
 {
     this.ValuesToManager = valuesToManager;
 }
 public ForSource <TSource> RegisterWeak <TEventArgs>(string name,
                                                      EventHandler_v2 <TEventArgs> eventHandler,
                                                      RegisterCallback <TSource, EventHandler_v2 <TEventArgs> > register,
                                                      UnregisterCallback <TSource, EventHandler_v2 <TEventArgs> > unregister)
     where TEventArgs : EventArgs
 {
     this.manager.RegisterWeak <TSource, EventHandler_v2 <TEventArgs>, TEventArgs>(name, eventHandler, register, unregister);
     return(this);
 }
    IEnumerator CoStartSDK(RegisterCallback _register)
    {
        InitBluetooth(m_supportedDevices);
        yield return(new WaitUntil(() => null != m_device));

        if (null != _register)
        {
            _register(m_device);
        }
    }
Beispiel #15
0
 /// <summary>
 ///     Gestiona los eventos genericos.
 /// </summary>
 public RegisterForImp <TSender> Register(EventHandler eventHandler,
                                          RegisterCallback <TSender, EventHandler> register,
                                          UnregisterCallback <TSender, EventHandler> unregister)
 {
     ListenerManager.EventListener listener = new ListenerManager.EventListener(eventHandler,
                                                                                (sender, h) => register((TSender)sender, h),
                                                                                (sender, h) => unregister((TSender)sender, h));
     this.manager.Add <TSender>(listener);
     return(this);
 }
Beispiel #16
0
 public ListListener(EventHandler_v2 <ListEventArgs> eventHandler,
                     Func <object, IList <TItem> > getValues,
                     RegisterCallback <EventHandler_v2 <ListEventArgs> > register,
                     UnregisterCallback <EventHandler_v2 <ListEventArgs> > unregister,
                     bool valuesToManager)
     : base(eventHandler, register, unregister)
 {
     this.ValuesToManager = valuesToManager;
     this.getValues       = getValues;
 }
Beispiel #17
0
        /// <summary>
        ///     Escucha con un handler debil para eventos de tipo <c>TEventHandler</c>,
        /// </summary>
        /// <param name="eventHandler">Handler origen.</param>
        /// <param name="register">Delegado para registrar el evento.</param>
        /// <param name="unregister">Delegado para deregistrar el evento.</param>
        /// <returns>Handler debil.</returns>
        public static IWeakEventHandler <TEventHandler> WeakListen <TEventHandler, TEventArgs>(
            TEventHandler eventHandler,
            RegisterCallback <TEventHandler> register,
            UnregisterCallback <TEventHandler> unregister)
            where TEventArgs : EventArgs
        {
            IWeakEventHandler <TEventHandler> weak = MakeWeak <TEventHandler, TEventArgs>(eventHandler, unregister);

            register(weak.Handler);
            return(weak);
        }
Beispiel #18
0
 /// <summary>
 ///     Gestiona los eventos genericos.
 /// </summary>
 public RegisterForImp <TSender> Register <TEventArgs>(EventHandler_v2 <TEventArgs> eventHandler,
                                                       RegisterCallback <TSender, EventHandler_v2 <TEventArgs> > register,
                                                       UnregisterCallback <TSender, EventHandler_v2 <TEventArgs> > unregister)
     where TEventArgs : EventArgs
 {
     ListenerManager.EventListener_v2 <TEventArgs> listener = new ListenerManager.EventListener_v2 <TEventArgs>(eventHandler,
                                                                                                                (sender, h) => register((TSender)sender, h),
                                                                                                                (sender, h) => unregister((TSender)sender, h));
     this.manager.Add <TSender>(listener);
     return(this);
 }
Beispiel #19
0
 /// <summary>
 /// 跳转页面
 /// </summary>
 /// <param name="key">跳转页面的Key</param>
 /// <param name="value">跳转传的参数</param>
 public static void Navigat(object key, object value = null)
 {
     if (views.ContainsKey(key))
     {
         object view = views[key];
         //页面分为 Uri 或者 类型 或者 对象
         if (view is Uri)
         {
             RegisterCallback?.Invoke(null, view);
         }
     }
 }
 public void StartSDK(RegisterCallback _register)
 {
     if (null == m_device)
     {
         DontDestroyOnLoad(gameObject);
         StartCoroutine(CoStartSDK(_register));
     }
     else
     {
         //  多次调用,则只是重新注册回调函数
         _register(m_device);
     }
 }
Beispiel #21
0
            /// <summary>
            ///     Gestiona los eventos de multiples propiedades.
            /// </summary>
            public RegisterForImp <TSender> RegisterAllProperties(EventHandler_v2 <PropertyChangedExEventArgs> eventHandler,
                                                                  RegisterCallback <TSender, EventHandler_v2 <PropertyChangedExEventArgs> > register,
                                                                  UnregisterCallback <TSender, EventHandler_v2 <PropertyChangedExEventArgs> > unregister,
                                                                  bool valuesToManager = false)
            {
                ListenerManager.AllPropertiesListener listener = new ListenerManager.AllPropertiesListener(eventHandler,
                                                                                                           (sender, h) => register((TSender)sender, h),
                                                                                                           (sender, h) => unregister((TSender)sender, h),
                                                                                                           valuesToManager);

                this.manager.Add <TSender>(listener);
                return(this);
            }
Beispiel #22
0
 /// <summary>
 ///     Gestiona los eventos de una coleccion.
 /// </summary>
 public RegisterForImp <TSender> RegisterCollection <TItem>(Func <TSender, ICollection <TItem> > getValues,
                                                            EventHandler_v2 <CollectionEventArgs> eventHandler,
                                                            RegisterCallback <TSender, EventHandler_v2 <CollectionEventArgs> > register,
                                                            UnregisterCallback <TSender, EventHandler_v2 <CollectionEventArgs> > unregister,
                                                            bool valuesToManager = true)
 {
     ListenerManager.CollectionListener <TItem> listener = new ListenerManager.CollectionListener <TItem>(eventHandler,
                                                                                                          sender => getValues((TSender)sender),
                                                                                                          (sender, h) => register((TSender)sender, h),
                                                                                                          (sender, h) => unregister((TSender)sender, h),
                                                                                                          valuesToManager);
     this.manager.Add <TSender>(listener);
     return(this);
 }
Beispiel #23
0
            public PropertyListener(Type propertyType,
                                    EventHandler_v2 <PropertyChangedExEventArgs> eventHandler,
                                    string propertyName, Func <object, object> getValue,
                                    RegisterCallback <EventHandler_v2 <PropertyChangedExEventArgs> > register,
                                    UnregisterCallback <EventHandler_v2 <PropertyChangedExEventArgs> > unregister,
                                    bool valuesToManager)
                : base(eventHandler, register, unregister)
            {
                this.PropertyType = propertyType;

                this.ValuesToManager = valuesToManager;
                this.PropertyName    = propertyName;
                this.GetValue        = getValue;
            }
Beispiel #24
0
 public PropertiesListener(EventHandler_v2 <PropertyChangedExEventArgs> eventHandler,
                           Type[] propertyTypes, string[] propertyNames, Func <object, object>[] getValues,
                           RegisterCallback <EventHandler_v2 <PropertyChangedExEventArgs> > register,
                           UnregisterCallback <EventHandler_v2 <PropertyChangedExEventArgs> > unregister,
                           bool valuesToManager)
     : base(eventHandler, register, unregister)
 {
     this.ValuesToManager = valuesToManager;
     this.propertyTypes   = propertyTypes;
     this.propertyNames   = new Dictionary <string, int>();
     for (int i = 0; i < propertyNames.Length; i++)
     {
         this.propertyNames.Add(propertyNames[i], i);
     }
     this.getValues = getValues;
 }
Beispiel #25
0
            /// <summary>
            ///     Gestiona los eventos de multiples propiedades.
            /// </summary>
            public RegisterForImp <TSender> RegisterProperties(Type[] propertyTypes, string[] propertyNames, Func <TSender, object>[] getValues,
                                                               EventHandler_v2 <PropertyChangedExEventArgs> eventHandler,
                                                               RegisterCallback <TSender, EventHandler_v2 <PropertyChangedExEventArgs> > register,
                                                               UnregisterCallback <TSender, EventHandler_v2 <PropertyChangedExEventArgs> > unregister,
                                                               bool valuesToManager = true)
            {
                ListenerManager.PropertiesListener listener = new ListenerManager.PropertiesListener(eventHandler,
                                                                                                     propertyTypes,
                                                                                                     propertyNames,
                                                                                                     getValues.Select(getValue => (Func <object, object>)(sender => getValue((TSender)sender))).ToArray(),
                                                                                                     (sender, h) => register((TSender)sender, h),
                                                                                                     (sender, h) => unregister((TSender)sender, h),
                                                                                                     valuesToManager);

                this.manager.Add <TSender>(listener);
                return(this);
            }
Beispiel #26
0
            /// <summary>
            ///     Gestiona los eventos de una propiedad.
            /// </summary>
            public RegisterForImp <TSender> RegisterProperty <TItem>(string propertyName, Func <TSender, TItem> getValue,
                                                                     EventHandler_v2 <PropertyChangedExEventArgs> eventHandler,
                                                                     RegisterCallback <TSender, EventHandler_v2 <PropertyChangedExEventArgs> > register,
                                                                     UnregisterCallback <TSender, EventHandler_v2 <PropertyChangedExEventArgs> > unregister,
                                                                     bool valuesToManager = true)
            {
                ListenerManager.PropertyListener <TItem> listener = new ListenerManager.PropertyListener <TItem>(eventHandler,
                                                                                                                 propertyName,
                                                                                                                 sender => getValue((TSender)sender),
                                                                                                                 (sender, h) => register((TSender)sender, h),
                                                                                                                 (sender, h) => unregister((TSender)sender, h),
                                                                                                                 valuesToManager);

                foreach (ListenerManager.Listener aux in this.manager.FindListenersOfExactType(typeof(TSender)))
                {
                    if (aux is ListenerManager.PropertyListener)
                    {
                        ListenerManager.PropertyListener aux2 = (ListenerManager.PropertyListener)aux;
                        if (aux2.Compatible(listener))
                        {
                            ListenerManager.PropertiesListener newListener = ListenerManager.PropertiesListener.Join(aux2, listener);
                            this.manager.Remove <TSender>(aux2);
                            this.manager.Add <TSender>(newListener);
                            return(this);
                        }
                    }
                    else if (aux is ListenerManager.PropertiesListener)
                    {
                        ListenerManager.PropertiesListener aux2 = (ListenerManager.PropertiesListener)aux;
                        if (aux2.Compatible(listener))
                        {
                            ListenerManager.PropertiesListener newListener = ListenerManager.PropertiesListener.Join(aux2, listener);
                            this.manager.Remove <TSender>(aux2);
                            this.manager.Add <TSender>(newListener);
                            return(this);
                        }
                    }
                }

                this.manager.Add <TSender>(listener);
                return(this);
            }
            public SourceManager(TEventHandler eventHandler,
                                 RegisterCallback <TSource, TEventHandler> register,
                                 UnregisterCallback <TSource, TEventHandler> unregister)
            {
                Delegate delEventHandler = (Delegate)(object)eventHandler;

                this.staticHandler = (delEventHandler.Target == null);
                if (!this.staticHandler)
                {
                    this.targetRef   = new WeakReference <T>((T)delEventHandler.Target);
                    this.openHandler = (OpenEventHandler)Delegate.CreateDelegate(typeof(OpenEventHandler), null, delEventHandler.Method);
                }
                else
                {
                    this.targetRef     = null;
                    this.closedHandler = (ClosedEventHandler)Delegate.CreateDelegate(typeof(ClosedEventHandler), null, delEventHandler.Method);
                }

                this.handler = (TEventHandler)(object)Delegate.CreateDelegate(typeof(TEventHandler), this, invokeMth);

                this.register   = register;
                this.unregister = unregister;
            }
Beispiel #28
0
 public extern static void get_cmd_register(RegisterCallback cb);
        public WeakEventHandlerManager RegisterWeak <TSource, TEventHandler, TEventArgs>(string name,
                                                                                         TEventHandler eventHandler,
                                                                                         RegisterCallback <TSource, TEventHandler> register,
                                                                                         UnregisterCallback <TSource, TEventHandler> unregister)
            where TEventArgs : EventArgs
        {
            Delegate delEventHandler = eventHandler as Delegate;

            Contract.Requires(delEventHandler != null);
            //// Only instance methods are supported.
            //Contract.Requires(!delEventHandler.Method.IsStatic && (delEventHandler.Target != null));
            if (delEventHandler.Method.IsStatic || (delEventHandler.Target == null))
            {
            }

            Contract.Assert(!this.mapDelegates.ContainsKey(name));

            Type sourceManagerType = typeof(SourceManager <, , ,>).MakeGenericType(
                delEventHandler.Method.DeclaringType,
                typeof(TSource),
                typeof(TEventHandler),
                typeof(TEventArgs));

            ConstructorInfo sourceManagerConstructor = sourceManagerType.GetConstructor(new[]
            {
                typeof(TEventHandler),
                typeof(RegisterCallback <TSource, TEventHandler>),
                typeof(UnregisterCallback <TSource, TEventHandler>)
            });

            Contract.Assert(sourceManagerConstructor != null);

            ISourceManager sourceManager = (ISourceManager)sourceManagerConstructor.Invoke(new object[]
            {
                eventHandler,
                register,
                unregister
            });

            this.mapDelegates.Add(name, sourceManager);
            return(this);
        }
Beispiel #30
0
 public MultiPropertyListener(RegisterCallback <EventHandler_v2 <PropertyChangedExEventArgs> > register,
                              UnregisterCallback <EventHandler_v2 <PropertyChangedExEventArgs> > unregister)
 {
     this.register   = register;
     this.unregister = unregister;
 }