//Callback handler for battery information.
        private void ReceiveStatus(string status)
        {
            if (string.IsNullOrEmpty(status))
            {
                return;
            }

            if (OnStatusChanged != null)
            {
                OnStatusChanged.Invoke(status);
            }
        }
예제 #2
0
        /// <summary>
        /// 네트워크에서 발생하는 모든 이벤트를 클라이언트에게 알려주는 역할을 Update에서 진행한다.
        /// FreeNet엔진의 메시지 송수신 처리는 워커스레드에서 수행되지만 유니티의 로직 처리는 메인 스레드에서 수행되므로
        /// 큐잉처리를 통하여 메인 스레드에서 모든 로직 처리가 이루어지도록 구성하였다.
        /// </summary>
        void Update()
        {
            // 수신된 메시지에 대한 콜백.
            if (this.event_manager.has_message())
            {
                CPacket msg = this.event_manager.dequeue_network_message();
                appcallback_on_message?.Invoke(msg);
            }

            // 네트워크 발생 이벤트에 대한 콜백.
            if (this.event_manager.has_event())
            {
                NETWORK_EVENT status = this.event_manager.dequeue_network_event();
                appcallback_on_status_changed?.Invoke(status);
            }
        }
예제 #3
0
 private static void RaiseStatusChanged(IntPtr cPtr, IntPtr sender, IntPtr e)
 {
     try {
         if (Noesis.Extend.Initialized)
         {
             long ptr = cPtr.ToInt64();
             if (sender == IntPtr.Zero && e == IntPtr.Zero)
             {
                 _StatusChanged.Remove(ptr);
                 return;
             }
             StatusChangedHandler handler = null;
             if (!_StatusChanged.TryGetValue(ptr, out handler))
             {
                 throw new System.InvalidOperationException("Delegate not registered for StatusChanged event");
             }
             handler?.Invoke(Noesis.Extend.GetProxy(sender, false), new EventArgs(e, false));
         }
     }
     catch (Exception exception) {
         Noesis.Error.UnhandledException(exception);
     }
 }