public static bool EndEvent(string name, string scriptend, string msgend, AdminClientServicePeer peer) { EventDataContext.StartProcessing(); Event @event = EventDataContext.GetEvent(name); if (@event == null) { if (peer != null) { peer.Transmit(SerializeWriter.ToBinary <AdminReportNotifyMessage>(new AdminReportNotifyMessage(NotifyCode.ERROR, string.Format("Event is Not Registered ! - \"{0}\"", name)))); } return(false); } if (scriptend != null) { @event.EndScript = scriptend; } if (msgend != null) { @event.EndMessage = msgend; } EventDataContext.EndEvent(name); EventDataContext.RemoveEvent(name); if (peer != null) { string msg = EventDataContext.SendEventListAndDetail(name, "Event is Ended !", false); peer.Transmit(SerializeWriter.ToBinary <AdminReportNotifyMessage>(new AdminReportNotifyMessage(NotifyCode.SUCCESS, msg))); } return(true); }
public static bool RemoveEvent(string name) { Event @event = EventDataContext.GetEvent(name); if (@event != null) { if (EventDataContext.IsRunning(name)) { EventDataContext.EndEvent(name); } return(EventDataContext.RemoveEvent(@event)); } return(false); }
private static void ProcessEvent() { try { DateTime now = DateTime.Now; int num = (now.Hour * 60 + now.Minute) * 60; int num2 = 0; List <Event> list = new List <Event>(); List <Event> list2 = new List <Event>(); List <Event> list3 = new List <Event>(); foreach (Event @event in EventDataContext.Instance.Event) { if (@event.StartTime == null && !(@event.StartCount > 0)) { if (@event.EndTime == null || now < @event.EndTime) { list.Add(@event); } else { list3.Add(@event); } } else if (@event.StartTime != null) { if (now >= @event.StartTime) { if (@event.EndTime == null || now < @event.EndTime) { if (@event.PeriodBegin == null) { list.Add(@event); } else if (now.TimeOfDay >= @event.PeriodBegin) { if (@event.PeriodEnd == null || now.TimeOfDay < @event.PeriodEnd) { list.Add(@event); } else { list2.Add(@event); } } else { list2.Add(@event); } } else { list3.Add(@event); } } else { list2.Add(@event); } } else if (@event.StartCount > 0) { if (@event.StartCount <= EventDataContext.Instance.GetEventCount(@event.Name)) { if (@event.EndTime == null || now < @event.EndTime) { if (@event.PeriodBegin == null) { list.Add(@event); } else if (now.TimeOfDay >= @event.PeriodBegin) { if (@event.PeriodEnd == null || now.TimeOfDay < @event.PeriodEnd) { list.Add(@event); } else { list2.Add(@event); } } else { list2.Add(@event); } } else { list3.Add(@event); } } else { list2.Add(@event); } } } foreach (Event event2 in list3) { EventDataContext.RemoveEvent(event2.Name); } foreach (Event event3 in list2) { EventDataContext.EndEvent(event3.Name); } foreach (KeyValuePair <string, Event> keyValuePair in EventDataContext.runnings) { Event value = keyValuePair.Value; if (value.NotifyMessage != null && value.NotifyMessage.Length > 0) { int num3 = 1800; if (value.NotifyInterval != null && value.NotifyInterval.Value >= 0) { num3 = value.NotifyInterval.Value; } num3 = num3 / 60 * 60; if (num3 != 0 && num % num3 == 0) { Scheduler.Schedule(EventDataContext.Thread, Job.Create <string, int>(new Action <string, int>(EventDataContext.BroadcastMessage), value.NotifyMessage, -1), ++num2 * 1000); } } } foreach (Event event4 in list) { EventDataContext.StartEvent(event4.Name, event4); } EventDataContext.processed = true; foreach (KeyValuePair <int, string> keyValuePair2 in EventDataContext.waitingServiceList) { Scheduler.Schedule(EventDataContext.Thread, Job.Create <int, string>(new Action <int, string>(EventDataContext.SendToFeatureMaxtrixUpdate), keyValuePair2.Key, keyValuePair2.Value), 10000); } EventDataContext.waitingServiceList.Clear(); } finally { EventDataContext.ScheduleNextProcess(); } }