Esempio n. 1
0
        void Handle(ResendMessage msg)
        {
            //  Console.WriteLine("______SENDING");
            if (_messageQueue.Count > 0 && _working)
            {
                int tosend = _messageQueue.Count > 10 ? 10 : _messageQueue.Count;

                for (int i = 0; i < tosend; i++)
                {
                    var msnd = _messageQueue.Dequeue();

                    _client.SendBehaviourMessagePackToClient(msnd);
                }
            }

            if (!_working)
            {
                //Console.WriteLine("___DESTROY FOR:" + _clientId);
                //   _client.DestroyObject();
                Self.GracefulStop(TimeSpan.FromSeconds(100), InterfacedPoisonPill.Instance).Wait();
                //  RunTask(async () =>
                //  {
                //      await Task.Delay(MainSettings.TickDelay);
                //      Self.Tell(new ResendMessage(), null);
                //
                //  }, isReentrant: true);
            }
            else
            {
            }
        }
Esempio n. 2
0
    public static void AddResendMessage <T>(T data, string removeMT, CallBack <MessageClassInterface> callBack, bool noSend = false)
    {
        string        content  = JsonUtils.ToJson(data);
        string        mt       = typeof(T).Name;
        ResendMessage msgResnd = null;

        foreach (ResendMessage m in msgs)
        {
            if (m.content == content)
            {
                msgResnd = m;
                break;
            }
        }

        //Debug.LogError("noSend:" + noSend);
        if (msgResnd != null)
        {
            msgResnd.removeMT = removeMT;
            msgResnd.content  = content;
            msgResnd.callBack = callBack;
            msgResnd.noSend   = noSend;
            //Debug.LogError("msgResnd.noSend:" + msgResnd.noSend);
        }
        else
        {
            ResendMessage msg = new ResendMessage(removeMT, mt, content, callBack, noSend);
            msgs.Add(msg);
        }
        SaveRecord();
    }
Esempio n. 3
0
        public void OnMessageReceived(object sender, MessageEventArgs args)
        {
            Message response = null;

            if (args.message is ReadyMessage)
            {
                ReadyMessage readyMessage = args.message as ReadyMessage;
                RemoveFromBackup(readyMessage.idReceived);

                if (messageQueue.Count == 0)
                {
                    ThreadPool.QueueUserWorkItem(new WaitCallback(WaitSend));
                }
                else
                {
                    response = messageQueue.Take();
                }
            }
            else if (args.message is RecordMessage)
            {
                RecordMessage recordMessage = args.message as RecordMessage;

                EventHandler <HtmlRecord> updateReceived = UpdateReceived;
                if (updateReceived != null)
                {
                    var delegates = updateReceived.GetInvocationList();
                    foreach (EventHandler <HtmlRecord> receiver in delegates)
                    {
                        receiver.BeginInvoke(null, recordMessage.htmlRecord, OnDatabaseUpdated, null);
                    }
                }

                response = new ReadyMessage(recordMessage.id);
            }
            else if (args.message is StatusReport)
            {
                StatusReport report = args.message as StatusReport;

                EventHandler <KeyValuePair <ObjectId, JobStatus> > statusReceived = StatusReceived;
                if (statusReceived != null)
                {
                    statusReceived.Invoke(null, report.statusReport);
                }

                response = new ReadyMessage(report.id);
            }
            else if (args.message is DestroyedBuffer)
            {
                response = new ResendMessage();
            }
            else if (args.message is ResendMessage)
            {
                response = RetrieveFromBackup();
            }

            if (response != null)
            {
                Send(response);
            }
        }
Esempio n. 4
0
    public static void AddResendMessage <T>(T data, string removeMT, CallBack <MessageClassInterface> callBack, bool noSend = false)
    {
        string        mt       = typeof(T).Name;
        ResendMessage msgResnd = null;

        foreach (ResendMessage m in msgs)
        {
            if (m.mt == mt)
            {
                msgResnd = m;
                break;
            }
        }
        string content = JsonUtils.ToJson(data);

        if (msgResnd != null)
        {
            msgResnd.removeMT = removeMT;
            msgResnd.content  = content;
            msgResnd.callBack = callBack;
            msgResnd.noSend   = noSend;
        }
        else
        {
            ResendMessage msg = new ResendMessage(removeMT, mt, content, callBack, noSend);
            msgs.Add(msg);
        }
        // JsonMessageProcessingController.SendMessage(mt, content);
        //indexCode++;
    }
Esempio n. 5
0
        public void OnMessageReceived(object sender, MessageEventArgs args)
        {
            Message response = null;

            if (args.message is ReadyMessage)
            {
                ReadyMessage readyMessage = args.message as ReadyMessage;

                RemoveFromBackup(readyMessage.idReceived);
                if (messageQueue.Count == 0)
                {
                    ThreadPool.QueueUserWorkItem(new WaitCallback(WaitSend));
                }
                else
                {
                    response = messageQueue.DequeueValue();
                }
            }
            else if (args.message is RecordMessage)
            {
                RecordMessage recordMessage = args.message as RecordMessage;

                EnqueueWork(recordMessage.htmlRecord);
                TrackJob(recordMessage.htmlRecord);

                response = new ReadyMessage(recordMessage.id);
            }
            else if (args.message is StatusRequest)
            {
                StatusRequest statusRequest = args.message as StatusRequest;

                ObjectId  jobId  = statusRequest.requestedId;
                JobStatus status = GetJobStatus(jobId);

                if (status == JobStatus.ErrorLoading || status == JobStatus.ErrorRequesting || status == JobStatus.LoadingPages)
                {
                    StopTrackingJob(jobId);
                }
                KeyValuePair <ObjectId, JobStatus> statusPair = new KeyValuePair <ObjectId, JobStatus>
                                                                    (key: jobId, value: status);
                response = new StatusReport(statusPair);
            }
            else if (args.message is DestroyedBuffer)
            {
                response = new ResendMessage();
            }
            else if (args.message is ResendMessage)
            {
                response = RetrieveFromBackup();
            }

            if (response != null)
            {
                Send(response);
            }

            PrintJobs();
        }
Esempio n. 6
0
    public static void AddResendMessage <T>(T data, string removeMT, CallBack <MessageClassInterface> callBack)
    {
        string        mt      = typeof(T).Name;
        string        content = JsonUtils.ToJson(data); //Serializer.Serialize(data);
        ResendMessage msg     = new ResendMessage(removeMT, mt, content, callBack);

        msgs.Add(msg);
        JsonMessageProcessingController.SendMessage(mt, content);
        //indexCode++;
    }