public void ProcessMsg(object obj, StanMsgHandlerArgs args) { if (args.Message.Redelivered) { Log("Received redelivered message: " + args.Message.Sequence); } if (sw == null) { sw = new Stopwatch(); sw.Start(); } try { args.Message.Ack(); } catch (Exception e) { Log("Subscriber Ack Exception: {0}", e.Message); } counter++; if (counter % 500 == 0) { Log("Subscriber Received {0} msgs at {1:0} msgs/sec.", counter, counter / sw.Elapsed.TotalSeconds); } }
private void EventReceived(object sender, StanMsgHandlerArgs args) { try { // extract event-type and payload from the message // Event-type is embedded in the message: // <event-type>#<value>|<value>|<value> string message = Encoding.UTF8.GetString(args.Message.Data); string eventTypeName = message.Split('#').First(); string eventData = message.Substring(message.IndexOf('#') + 1); // determine event CLR type string fullEventTypeName = $"Store.OrdersQueryService.Events.{eventTypeName}"; Type eventType = Type.GetType(fullEventTypeName, true); // Call event-handler dynamic e = JsonSerializer.Deserialize(eventData, eventType); Handle(e); } catch (Exception ex) { Console.WriteLine($"Error: {ex.Message}"); if (ex.InnerException != null) { Console.WriteLine($"Error: {ex.InnerException.Message}"); } } }
//private void DBTableWatcher_VehicleChange(object sender, EventArgs e) //{ // ObjCacheManager.updateVehicle(); //} private void ProcCurrentAlarm(object sender, StanMsgHandlerArgs handler) { //List<sc.ALARM> alarms = getCurrentAlarmFromRedis(); List <sc.ALARM> alarms = AlarmBLL.loadSetAlarm(); ObjCacheManager.updateAlarm(alarms); CurrentAlarmChange?.Invoke(this, alarms); }
public void PingCheckInfo(object sender, StanMsgHandlerArgs handler) { var bytes = handler.Message.Data; sc.ProtocolFormat.OHTMessage.PING_CHECK_INFO ping_info = sc.BLL.LineBLL.Convert2Object_PingCheckInfo(bytes); app.ObjCacheManager.putPingCheckInfo(ping_info); }
private void ProcLineInfo(object sender, StanMsgHandlerArgs e) { var bytes = e.Message.Data; var line_info_gpb = BLL.LineBLL.Convert2Object_LineInfo(bytes); ALINE line = scApp.getEQObjCacheManager().getLine(); line.Put(line_info_gpb); }
public void MTLMTSInfo(object sender, StanMsgHandlerArgs handler) { var bytes = handler.Message.Data; sc.ProtocolFormat.OHTMessage.MTL_MTS_INFO mtlmts_info = sc.BLL.LineBLL.Convert2Object_MTLMTSInfo(bytes); app.ObjCacheManager.putMTL_MTSCheckInfo(mtlmts_info); }
public void ProcTipMessageInfo(object sender, StanMsgHandlerArgs handler) { var bytes = handler.Message.Data; //var vehicle_obj_info = sc.BLL.VehicleBLL.Convert2Object_VehicleInfo(bytes); // var vh_obj = ZeroFormatterSerializer.Deserialize<AVEHICLE>(bytes); sc.ProtocolFormat.OHTMessage.TIP_MESSAGE_COLLECTION msg_collection = sc.BLL.LineBLL.Convert2Object_TipMsgInfoCollection(bytes); app.ObjCacheManager.putTipMessageInfos(msg_collection); }
public void OnlineCheckInfo(object sender, StanMsgHandlerArgs handler) { var bytes = handler.Message.Data; //var vehicle_obj_info = sc.BLL.VehicleBLL.Convert2Object_VehicleInfo(bytes); // var vh_obj = ZeroFormatterSerializer.Deserialize<AVEHICLE>(bytes); sc.ProtocolFormat.OHTMessage.ONLINE_CHECK_INFO online_info = sc.BLL.LineBLL.Convert2Object_OnlineCheckInfo(bytes); app.ObjCacheManager.putOnlineCheckInfo(online_info); }
public void SystemLogInfo(object sender, StanMsgHandlerArgs handler) { var bytes = handler.Message.Data; //var vehicle_obj_info = sc.BLL.VehicleBLL.Convert2Object_VehicleInfo(bytes); // var vh_obj = ZeroFormatterSerializer.Deserialize<AVEHICLE>(bytes); sc.ProtocolFormat.OHTMessage.TRANSFER_INFO transfer_info = sc.BLL.LineBLL.Convert2Object_TransferInfo(bytes); app.ObjCacheManager.putTransferInfo(transfer_info); }
private async void MessageReceived(object sender, StanMsgHandlerArgs args) { var message = ParseMessage(args.Message.Data); _monitor?.Information(message); _storingData.WaitOne(); //из разных потоков нельзя обращаться к одному DbContext - синхронизируем await _repository.Add(message); _storingData.Set(); }
public void ProcVehicleInfo(object sender, StanMsgHandlerArgs handler) { var bytes = handler.Message.Data; //var workItem = new BackgroundWorkItem // (app, bytes); //app.BackgroundWork_ProcessVhPositionUpdate.triggerBackgroundWork("ProcVehicleInfo", workItem); sc.ProtocolFormat.OHTMessage.VEHICLE_INFO vh_info = sc.BLL.VehicleBLL.Convert2Object_VehicleInfo(bytes); app.ObjCacheManager.PutVehicle(vh_info); }
private void EventReceived(object sender, StanMsgHandlerArgs args) { try { // extract event-type and payload from the message // Event-type is embedded in the message: // <event-type>#<value>|<value>|<value> string message = Encoding.UTF8.GetString(args.Message.Data); string eventTypeName = message.Split('#').First(); string eventData = message.Substring(message.IndexOf('#') + 1); // skip already handled events based on last handled sequence-number ulong sequenceNumber = args.Message.Sequence; ulong?lastSeqNr = GetLastSequenceNumber(); if (lastSeqNr.HasValue) { if (sequenceNumber <= lastSeqNr) { return; } } // determine event CLR type string fullEventTypeName = $"Store.ShippingService.Events.{eventTypeName}"; Type eventType = Type.GetType(fullEventTypeName, true); // handle event dynamic e = JsonSerializer.Deserialize(eventData, eventType); Handle(e); // update progress UpdateLastSequenceNumber(sequenceNumber); } catch (Exception ex) { Console.WriteLine($"Error: {ex.Message}"); if (ex.InnerException != null) { Console.WriteLine($"Error: {ex.InnerException.Message}"); } } }
void LogMsgHandler(object obj, StanMsgHandlerArgs handler) { _log.Trace(new { direction = "Subscriber", subject = handler.Message.Subject, data = System.Text.Encoding.UTF8.GetString(handler.Message.Data) }); }
internal void OnIncomingMessage(object _, StanMsgHandlerArgs e) => InvokeObservers(e.Message);
private void onReceived(object sender, StanMsgHandlerArgs args) { Console.WriteLine("Received seq #{0}: {1}", args.Message.Sequence, System.Text.Encoding.UTF8.GetString(args.Message.Data)); }
private void AMS_EVENT_HANDLER(object sender, StanMsgHandlerArgs e) { var bytes = e.Message.Data; string sillegalInfoValue = System.Text.Encoding.Default.GetString(bytes); string[] eventInfo = sillegalInfoValue.Split(','); string vh_id = eventInfo[0]; string illegal_code = eventInfo[1]; string time = eventInfo[2]; string messageValue = eventInfo[3]; switch (illegal_code) { case SCAppConstants.REDIS_EVENT_CODE_ADVANCE_NOTICE_OBSTRUCT_VH: break; case SCAppConstants.REDIS_EVENT_CODE_VEHICLE_IDEL_WARNING: string[] idel_warning_info = getMessageList(messageValue); string current_section = idel_warning_info[0]; string section_last_update_time = idel_warning_info[1]; VHActionStatus action_status; Enum.TryParse(idel_warning_info[2], out action_status); bool isWarning = bool.Parse(idel_warning_info[3]); if (isWarning) { if (action_status != VHActionStatus.NoCommand) { AVEHICLE vh = app.VehicleBLL.cache.getVehicle(vh_id); //app.VehicleBLL.DoIdleVehicleHandle_InAction(vh.HAS_CST == 1 ? // VhLoadCSTStatus.Exist : VhLoadCSTStatus.NotExist); } else { //TODO 要加入回Home點的動作 //app.VehicleBLL.DoIdleVehicleHandle_NoAction(vh_id); } bcf.App.BCFApplication.onWarningMsg ($"{vh_id} is idle for a long time,current sec id [{current_section}]."); } else { bcf.App.BCFApplication.onInfoMsg ($"{vh_id} resume the move."); } break; case SCAppConstants.REDIS_EVENT_CODE_VEHICLE_LOADUNLOAD_TOO_LONG_WARNING: string[] loadunload_toolong_info = getMessageList(messageValue); string mcs_cmd = loadunload_toolong_info[0]; string current_sec_id = loadunload_toolong_info[1]; string recent_tran_event = loadunload_toolong_info[1]; bcf.App.BCFApplication.onWarningMsg ($"{vh_id} is {recent_tran_event} for a long time,current sec id [{current_sec_id}]."); break; case SCAppConstants.REDIS_EVENT_CODE_EARTHQUAKE_ON: string[] earthquake_info = getMessageList(messageValue); bool isHappend = bool.Parse(earthquake_info[0]); ALINE line = app.getEQObjCacheManager().getLine(); line.IsEarthquakeHappend = isHappend; if (isHappend) { bcf.App.BCFApplication.onErrorMsg("An earthquake has occurred !!!"); app.VehicleService.PauseAllVehicleByNormalPause(); } else { app.VehicleService.ResumeAllVehicleByNormalPause(); } break; case SCAppConstants.REDIS_EVENT_CODE_ADVANCE_NOTICE_OBSTRUCTED_VH: string[] obstructed_vh_info = getMessageList(messageValue); string obstructed_vh = vh_id; string obstruct_vh = obstructed_vh_info[0]; app.VehicleService.Send.Pause(obstructed_vh, PauseEvent.Pause, PauseType.Normal); break; case SCAppConstants.REDIS_EVENT_CODE_NOTICE_OBSTRUCTED_VH_CONTINUE: string _obstructed_vh = vh_id; app.VehicleService.Send.Pause(_obstructed_vh, PauseEvent.Continue, PauseType.Normal); break; case SCAppConstants.REDIS_EVENT_CODE_NOTICE_THE_VH_NEEDS_TO_CHANGE_THE_PATH: string need_change_the_path_vh = vh_id; //尚未實作 break; default: break; } }
private void AMS_EVENT_HANDLER(object sender, StanMsgHandlerArgs e) { var bytes = e.Message.Data; string sillegalInfoValue = System.Text.Encoding.Default.GetString(bytes); string[] eventInfo = sillegalInfoValue.Split(','); string vh_id = eventInfo[0]; string illegal_code = eventInfo[1]; string time = eventInfo[2]; string messageValue = eventInfo[3]; switch (illegal_code) { case SCAppConstants.REDIS_EVENT_CODE_ILLEGAL_ENTRY_BLOCK_ZONE: string[] Illegal_Entry_Section = getMessageList(messageValue); List <BLOCKZONEQUEUE> queues = app.MapBLL.loadNonReleaseBlockQueueBySecIds(Illegal_Entry_Section.ToList()); foreach (BLOCKZONEQUEUE queue in queues) { //app.VehicleService.PAUSE_REQ // (queue.CAR_ID.Trim(), // ProtocolFormat.OHTMessage.PauseEvent.Pause, // ProtocolFormat.OHTMessage.PauseType.OhxC); } // bcf.App.BCFApplication.onWarningMsg($"{vh_id} illegal entry block zone:{messageValue}"); break; case SCAppConstants.REDIS_EVENT_CODE_ADVANCE_NOTICE_OBSTRUCT_VH: if (System.Threading.Interlocked.Exchange(ref ADVANCE_NOTICE_OBSTRUCT_SyncPoint, 1) == 0) { try { string blocked_vh_id = vh_id; string[] obstacles_vh_ids = getMessageList(messageValue); foreach (string obstacles_vh in obstacles_vh_ids) { //app.VehicleBLL.whenVhObstacle(blocked_vh); app.VehicleBLL.whenVhObstacle(obstacles_vh, blocked_vh_id); } } catch (Exception ex) { NLog.LogManager.GetCurrentClassLogger().Error(ex, "Exception:"); } finally { System.Threading.Interlocked.Exchange(ref ADVANCE_NOTICE_OBSTRUCT_SyncPoint, 0); } } break; case SCAppConstants.REDIS_EVENT_CODE_VEHICLE_IDEL_WARNING: string[] idel_warning_info = getMessageList(messageValue); string current_section = idel_warning_info[0]; string section_last_update_time = idel_warning_info[1]; VHActionStatus action_status; Enum.TryParse(idel_warning_info[2], out action_status); bool isWarning = bool.Parse(idel_warning_info[3]); if (isWarning) { if (action_status != VHActionStatus.NoCommand) { AVEHICLE vh = app.VehicleBLL.getVehicleByID(vh_id); app.VehicleBLL.DoIdleVehicleHandle_InAction(vh.HAS_CST == 1 ? VhLoadCSTStatus.Exist : VhLoadCSTStatus.NotExist); } else { //TODO 要加入回Home點的動作 //app.VehicleBLL.DoIdleVehicleHandle_NoAction(vh_id); } bcf.App.BCFApplication.onWarningMsg ($"{vh_id} is idle for a long time,current sec id [{current_section}]."); } else { bcf.App.BCFApplication.onInfoMsg ($"{vh_id} resume the move."); } break; case SCAppConstants.REDIS_EVENT_CODE_VEHICLE_LOADUNLOAD_TOO_LONG_WARNING: string[] loadunload_toolong_info = getMessageList(messageValue); string mcs_cmd = loadunload_toolong_info[0]; string current_sec_id = loadunload_toolong_info[1]; string recent_tran_event = loadunload_toolong_info[1]; bcf.App.BCFApplication.onWarningMsg ($"{vh_id} is {recent_tran_event} for a long time,current sec id [{current_sec_id}]."); break; case SCAppConstants.REDIS_EVENT_CODE_EARTHQUAKE_ON: string[] earthquake_info = getMessageList(messageValue); bool isHappend = bool.Parse(earthquake_info[0]); ALINE line = app.getEQObjCacheManager().getLine(); line.IsEarthquakeHappend = isHappend; if (isHappend) { bcf.App.BCFApplication.onErrorMsg("An earthquake has occurred !!!"); app.VehicleService.PauseAllVehicleByOHxCPause(); } else { app.VehicleService.ResumeAllVehicleByOhxCPause(); } break; case SCAppConstants.REDIS_EVENT_CODE_ADVANCE_NOTICE_OBSTRUCTED_VH: string[] obstructed_vh_info = getMessageList(messageValue); string obstructed_vh = vh_id; string obstruct_vh = obstructed_vh_info[0]; app.VehicleService.OHxCPauseRequest(obstructed_vh, PauseEvent.Pause, SCAppConstants.OHxCPauseType.Obstacle); break; case SCAppConstants.REDIS_EVENT_CODE_NOTICE_OBSTRUCTED_VH_CONTINUE: string _obstructed_vh = vh_id; app.VehicleService.OHxCPauseRequest(_obstructed_vh, PauseEvent.Continue, SCAppConstants.OHxCPauseType.Obstacle); break; case SCAppConstants.REDIS_EVENT_CODE_NOTICE_THE_VH_NEEDS_TO_CHANGE_THE_PATH: string need_change_the_path_vh = vh_id; app.VehicleService.VhicleChangeThePath(vh_id, true); break; case SCAppConstants.REDIS_EVENT_CODE_NOTICE_BLOCKING_RELEASE_TIMEOUT: string[] block_release_timeout_info = getMessageList(messageValue); string block_id = block_release_timeout_info[1]; string block_status = block_release_timeout_info[2]; string block_status_change_time = block_release_timeout_info[3]; DateTime dt_status_change_time = default(DateTime); DateTime.TryParseExact (block_status_change_time, ibg3k0.sc.App.SCAppConstants.TimestampFormat_17, System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None, out dt_status_change_time); AVEHICLE blocking_release_timeout_vh = app.VehicleBLL.cache.getVhByID(vh_id); if (blocking_release_timeout_vh != null) { app.LineService.ProcessAlarmReport( blocking_release_timeout_vh.NODE_ID, blocking_release_timeout_vh.VEHICLE_ID, blocking_release_timeout_vh.Real_ID, "", SCAppConstants.SystemAlarmCode.OHT_Issue.OHTBlockingRelaseTimeout, ProtocolFormat.OHTMessage.ErrorStatus.ErrSet); } bcf.App.BCFApplication.onWarningMsg ($"vh:{vh_id} blocking time out,block id:{block_id}, block status{block_status}, block time:{dt_status_change_time.ToString(SCAppConstants.DateTimeFormat_22)}."); break; default: break; } }
private void onReceived(object sender, StanMsgHandlerArgs args) { Console.WriteLine("Received sequence:{0}, redelivered:{1}, message:{2}", args.Message.Sequence, args.Message.Redelivered, System.Text.Encoding.UTF8.GetString(args.Message.Data)); args.Message.Ack(); }
private void AMS_EVENT_HANDLER(object sender, StanMsgHandlerArgs e) { var bytes = e.Message.Data; string sillegalInfoValue = System.Text.Encoding.Default.GetString(bytes); string[] eventInfo = sillegalInfoValue.Split(','); string vh_id = eventInfo[0]; string illegal_code = eventInfo[1]; string time = eventInfo[2]; string messageValue = eventInfo[3]; switch (illegal_code) { case SCAppConstants.REDIS_EVENT_CODE_ILLEGAL_ENTRY_BLOCK_ZONE: string[] Illegal_Entry_Section = getMessageList(messageValue); List <BLOCKZONEQUEUE> queues = app.MapBLL.loadNonReleaseBlockQueueBySecIds(Illegal_Entry_Section.ToList()); foreach (BLOCKZONEQUEUE queue in queues) { //app.VehicleService.PAUSE_REQ // (queue.CAR_ID.Trim(), // ProtocolFormat.OHTMessage.PauseEvent.Pause, // ProtocolFormat.OHTMessage.PauseType.OhxC); } // bcf.App.BCFApplication.onWarningMsg($"{vh_id} illegal entry block zone:{messageValue}"); break; case SCAppConstants.REDIS_EVENT_CODE_ADVANCE_NOTICE_OBSTRUCT_VH: break; case SCAppConstants.REDIS_EVENT_CODE_VEHICLE_IDEL_WARNING: string[] idel_warning_info = getMessageList(messageValue); string current_section = idel_warning_info[0]; string section_last_update_time = idel_warning_info[1]; VHActionStatus action_status; Enum.TryParse(idel_warning_info[2], out action_status); bool isWarning = bool.Parse(idel_warning_info[3]); if (isWarning) { if (action_status != VHActionStatus.NoCommand) { AVEHICLE vh = app.VehicleBLL.getVehicleByID(vh_id); app.VehicleBLL.DoIdleVehicleHandle_InAction(vh.HAS_CST == 1 ? VhLoadCarrierStatus.Exist : VhLoadCarrierStatus.NotExist); } else { //TODO 要加入回Home點的動作 //app.VehicleBLL.DoIdleVehicleHandle_NoAction(vh_id); } bcf.App.BCFApplication.onWarningMsg ($"{vh_id} is idle for a long time,current sec id [{current_section}]."); } else { bcf.App.BCFApplication.onInfoMsg ($"{vh_id} resume the move."); } break; case SCAppConstants.REDIS_EVENT_CODE_VEHICLE_LOADUNLOAD_TOO_LONG_WARNING: string[] loadunload_toolong_info = getMessageList(messageValue); string mcs_cmd = loadunload_toolong_info[0]; string current_sec_id = loadunload_toolong_info[1]; string recent_tran_event = loadunload_toolong_info[1]; bcf.App.BCFApplication.onWarningMsg ($"{vh_id} is {recent_tran_event} for a long time,current sec id [{current_sec_id}]."); break; case SCAppConstants.REDIS_EVENT_CODE_EARTHQUAKE_ON: string[] earthquake_info = getMessageList(messageValue); bool isHappend = bool.Parse(earthquake_info[0]); ALINE line = app.getEQObjCacheManager().getLine(); line.IsEarthquakeHappend = isHappend; if (isHappend) { bcf.App.BCFApplication.onErrorMsg("An earthquake has occurred !!!"); app.VehicleService.PauseAllVehicleByOHxCPause(); } else { app.VehicleService.ResumeAllVehicleByOhxCPause(); } break; case SCAppConstants.REDIS_EVENT_CODE_ADVANCE_NOTICE_OBSTRUCTED_VH: string[] obstructed_vh_info = getMessageList(messageValue); string obstructed_vh = vh_id; string obstruct_vh = obstructed_vh_info[0]; app.VehicleService.OHxCPauseRequest(obstructed_vh, PauseEvent.Pause, SCAppConstants.OHxCPauseType.Obstacle); break; case SCAppConstants.REDIS_EVENT_CODE_NOTICE_OBSTRUCTED_VH_CONTINUE: string _obstructed_vh = vh_id; app.VehicleService.OHxCPauseRequest(_obstructed_vh, PauseEvent.Continue, SCAppConstants.OHxCPauseType.Obstacle); break; case SCAppConstants.REDIS_EVENT_CODE_NOTICE_THE_VH_NEEDS_TO_CHANGE_THE_PATH: string need_change_the_path_vh = vh_id; app.VehicleService.VhicleChangeThePath(vh_id, true); break; default: break; } }