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 { } }
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(); }
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); } }
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++; }
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(); }
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++; }