Beispiel #1
0
        // this function should be called after locking the lock_ object.
        private OnCallback PopDelegateToCall()
        {
            OnCallback delegateToCall = null;

            if (State != States.Pending)
            {
                if (State == States.Fulfilled)
                {
                    if (onFulfill_ != null)
                    {
                        delegateToCall = onFulfill_;
                    }
                }
                else if (State == States.Rejected)
                {
                    if (onReject_ != null)
                    {
                        delegateToCall = onReject_;
                    }
                }

                onFulfill_ = null;
                onReject_  = null;
            }

            return(delegateToCall);
        }
Beispiel #2
0
 public Handler(OnCallback onCallback)
 {
     mLooper = Looper.Instance;
     mQueue  = mLooper.mQueue;
     if (onCallback == null)
     {
         throw new ArgumentNullException("Don't accept a null callback");
     }
     mOnCallback = onCallback;
 }
Beispiel #3
0
 public void On(string e, OnCallback cb)
 {
     if (messegesCallback.ContainsKey(e))
     {
         messegesCallback[e].Add(cb);
         return;
     }
     messegesCallback.Add(e, new List <OnCallback> {
         cb
     });
 }
Beispiel #4
0
        private void CallDelegate(OnCallback delegateToCall)
        {
            if (delegateToCall != null)
            {
#if ASYNC_THEN_CALL
                Task.Factory.StartNew(() => {
                    delegateToCall(result_);
                });
#else
                delegateToCall(result_);
#endif
            }
        }
Beispiel #5
0
        public bool emit(string eventName, string command, string message, OnCallback callback)
        {
            Message m = new Message(PacketType.S_sendEventForCallback, eventName, command, message);

            if (this.callbackQueue.TryAdd(m.id, callback))
            {
                return(this.sendMessage(m));
            }
            else
            {
                return(false);
            }
        }
Beispiel #6
0
        private void SetState(States newState, object result)
        {
            OnCallback delegateToCall = null;

            lock (lock_) {
                if (State == States.Pending)
                {
                    State = newState;

                    result_ = result;

                    delegateToCall = PopDelegateToCall();
                }
            }

            CallDelegate(delegateToCall);
        }
Beispiel #7
0
        private static Task HandleUpdates(ITelegramBotClient botClient, Update update, CancellationToken cancellationToken)
        {
            switch (update.Type)
            {
            case UpdateType.Message:
                OnMessage?.Invoke(api, new MessageEventArgs(update.Message));
                break;

            case UpdateType.EditedMessage:
                OnMessageEdit?.Invoke(api, new MessageEditEventArgs(update.EditedMessage));
                break;

            case UpdateType.CallbackQuery:
                OnCallback?.Invoke(api, new CallbackQueryEventArgs(update.CallbackQuery));
                break;
            }

            return(Task.CompletedTask);
        }
Beispiel #8
0
        internal void DoneImpl(Action <object> onFulfilled,
                               Action <object> onRejected)
        {
            OnCallback handlerToCall = null;

            lock (lock_) {
                if (onFulfilled != null)
                {
                    onFulfill_ += new OnCallback(onFulfilled);
                }

                if (onRejected != null)
                {
                    onReject_ += new OnCallback(onRejected);
                }

                handlerToCall = PopDelegateToCall();
            }

            // User delegate can take a long time,
            // we will call user delegate outside lock.
            CallDelegate(handlerToCall);
        }
 public void SetCallbackFunction(OnCallback function)
 {
     OnCallbackEvent = function;
 }
Beispiel #10
0
 public Handler()
 {
     mLooper     = Looper.Instance;
     mQueue      = mLooper.mQueue;
     mOnCallback = null;
 }
Beispiel #11
0
        private void Run()
        {
            TriggerParam triggerParam = null;

            while (!_toStop)
            {
                _running     = false;
                triggerParam = null;
                ReturnT executeResult = null;
                try
                {
                    if (_triggerQueue.TryDequeue(out triggerParam))
                    {
                        _running = true;
                        byte temp;
                        _triggerLogIdSet.TryRemove(triggerParam.logId, out temp);
                        JobLogger.SetLogFileName(triggerParam.logDateTim, triggerParam.logId);
                        var executionContext = new JobExecutionContext()
                        {
                            BroadcastIndex = triggerParam.broadcastIndex,
                            BroadcastTotal = triggerParam.broadcastTotal,
                            ExecutorParams = triggerParam.executorParams
                        };
                        // execute
                        JobLogger.Log("<br>----------- xxl-job job execute start -----------<br>----------- Param:" + triggerParam.executorParams);

                        var handler = _jobHandlerFactory.GetJobHandler(triggerParam.executorHandler);
                        executeResult = handler.Execute(executionContext);
                        JobLogger.Log("<br>----------- xxl-job job execute end(finish) -----------<br>----------- ReturnT:" + executeResult);
                    }
                    else
                    {
                        if (!_queueHasDataEvent.WaitOne(Constants.JobThreadWaitTime))
                        {
                            ToStop("excutor idel times over limit.");
                        }
                    }
                }
                catch (Exception ex)
                {
                    if (triggerParam != null)
                    {
                        if (_toStop)
                        {
                            JobLogger.Log("<br>----------- JobThread toStop, stopReason:" + _stopReason);
                        }
                        var errorMsg = ex.ToString();
                        executeResult = ReturnT.CreateFailedResult(errorMsg);
                        JobLogger.Log("<br>----------- JobThread Exception:" + errorMsg + "<br>----------- xxl-job job execute end(error) -----------");
                    }
                    else
                    {
                        _logger.LogError(ex, "JobThread exception.");
                    }
                }
                finally
                {
                    if (triggerParam != null)
                    {
                        OnCallback?.Invoke(this, new HandleCallbackParam(triggerParam.logId, triggerParam.logDateTim, executeResult ?? ReturnT.FAIL));
                    }
                }
            }

            // callback trigger request in queue
            while (_triggerQueue.TryDequeue(out triggerParam))
            {
                var stopResult = ReturnT.CreateFailedResult(_stopReason + " [job not executed, in the job queue, killed.]");
                OnCallback?.Invoke(this, new HandleCallbackParam(triggerParam.logId, triggerParam.logDateTim, stopResult));
            }
        }
 private void OnTick()
 {
     animate();
     OnCallback?.Invoke(this, EventArgs.Empty);
 }
Beispiel #13
0
        /// <summary>
        /// 服务开启
        /// </summary>
        public static void ServiceOpen()
        {
            //标识UDP信息的加密GUID
            const string broadcastMsg = "825C7B29-5B62-4242-AF76-EBDB489A6090";
            //------这里检查局域网内是否开启了多个服务器
            var client = new UdpClient
            {
                Client          = { ReceiveTimeout = 1000 },
                EnableBroadcast = true
            };
            IPAddress ip;
            var       refData = string.Empty;

            try
            {
                var requestData = Encoding.UTF8.GetBytes($"{broadcastMsg}|GetServiceIp");
                client.Send(requestData, requestData.Length, new IPEndPoint(IPAddress.Broadcast, 2875));
                var serverEp           = new IPEndPoint(IPAddress.Broadcast, 0);
                var serverResponseData = client.Receive(ref serverEp);
                ip      = serverEp.Address;
                refData = Encoding.UTF8.GetString(serverResponseData);
            }
            catch
            {
                ip = IPAddress.Broadcast;
            }
            if (!ip.Equals(IPAddress.Broadcast) && refData.Equals("true"))
            {
                Console.Write($@"当前局域网内已有服务器运行{Environment.NewLine}若要以当前机器为服务器请关闭 {ip} 上的服务器程序 !");
                Console.Read();
                return;
            }
            //------检查完毕

            //服务器默认端口
            var server = new UdpClient(2875);

            Console.Write("服务器运行中 ... ");
            //服务器端死循环监控消息
            while (true)
            {
                try
                {
                    var clientEp          = new IPEndPoint(IPAddress.Any, 0);
                    var clientRequestData = server.Receive(ref clientEp);
                    var clientRequest     = Encoding.UTF8.GetString(clientRequestData);
                    if (string.IsNullOrWhiteSpace(clientRequest))
                    {
                        continue;
                    }
                    var tmp = clientRequest.Split('|');
                    if (tmp[0] != broadcastMsg)
                    {
                        continue;
                    }
                    if (tmp[1] == "GetServiceIp")
                    {
                        var responseData = Encoding.UTF8.GetBytes("true");
                        server.Send(responseData, responseData.Length, clientEp);
                    }
                    else
                    {
                        OnCallback?.Invoke(tmp[1], tmp[2]);
                        var responseData = Encoding.UTF8.GetBytes(ReflexFunction(tmp[1], tmp[2]));
                        server.Send(responseData, responseData.Length, clientEp);
                    }
                }
                catch (Exception e)
                {
                    Console.Write("服务器异常,详细错误请看日志文件 !");
                    TyLog.Wlog(e);
                    return;
                }
            }
        }
Beispiel #14
0
 public bool emit(string eventName, OnCallback callback)
 {
     return(this.emit(eventName, "", "", callback));
 }
 public void invokeDotNetCallback(params object[] args)
 {
     OnCallback?.Invoke(args);
 }
Beispiel #16
0
 protected void Call()
 {
     OnCallback?.Invoke();
     AfterCall();
 }