private void EnqueueEvents(ClientMessage.ReadStreamEventsForwardCompleted message) { for (int index = 0; index < message.Events.Length; index++) { var @event = message.Events[index].Event; var @link = message.Events[index].Link; EventRecord positionEvent = (link ?? @event); var queue = GetStreamQueue(positionEvent); //TODO: progress calculation below is incorrect. sum(current)/sum(last_event) where sum by all streams var tfPosition = positionEvent.Metadata.ParseCheckpointTagJson().Position; var progress = 100.0f * (link ?? @event).EventNumber / message.LastEventNumber; var pendingEvent = new PendingEvent(@event, positionEvent, tfPosition, progress); queue.Enqueue(pendingEvent); } }
/// <summary> /// Executes any pending events. /// </summary> /// <param name="maxDuration">The maximum amount of time (in milliseconds) to spend executing events. This method can run longer than this, /// no new events will be executed after the given time.</param> public void Execute(float maxDuration = 100f) { if (pendingEvents.Count > 0) { executionStopwatch.Reset(); executionStopwatch.Start(); while (pendingEvents.Count > 0 && executionStopwatch.ElapsedMilliseconds < maxDuration) { PendingEvent nextEvent = pendingEvents.Dequeue(); nextEvent.Callback(nextEvent.EventId, nextEvent.Data); } executionStopwatch.Stop(); } }
private SendGridMessage GetReplyAppointmentTemplate(bool isApproved, PendingEvent singleEvent) { string LineTwo = ""; if (!string.IsNullOrEmpty(singleEvent.Location.LineTwo)) { LineTwo = "< tr >< td ></ td >< td >" + singleEvent.Location.LineTwo + "</ td ></ tr >"; } string msg1 = "<table style='border:2px solid grey; width:100%; max-width: 550px; margin: 5px; text-align:left; padding: 20px'>" + "<tr><td><b>Service</b></td><td>" + singleEvent.ServiceType + "</td></tr>" + "<tr><td><b>Date</b></td><td>" + singleEvent.StartTime.ToShortDateString() + "</td></tr>" + "<tr><td><b>Start</b></td><td>" + singleEvent.StartTime.ToShortTimeString() + "</td></tr>" + "<tr><td><b>End</b></td><td>" + singleEvent.EndTime.ToShortTimeString() + "</td></tr>" + "<tr><td><b>Address</b></td><td>" + singleEvent.Location.LineOne + "</td></tr>" + LineTwo + "<tr><td></td><td>" + singleEvent.Location.City + ", " + singleEvent.Location.State.Code + ", " + singleEvent.Location.Zip + "</td></tr>" + "<tr><td colspan='2'>This was created " + (DateTime.Now - singleEvent.DateCreated).Days + " day(s) ago.</td></tr></table>"; string msg2 = (isApproved) ? "Your appointment is now set!" : "Unfortunately, we need to reschedule."; string path = _directory + "\\EmailTemplates\\ReplyAppointment.html"; string fileHtml = File.ReadAllText(path) .Replace("{{Sender_Name}}", "BodyWork") .Replace("{{loginUrl}}", "https://*****:*****@bodyworkbooker.com", "Example User"); string subject = "Appointment Status Update - BodyWork"; EmailAddress to = new EmailAddress(singleEvent.Email, "Example User"); string plainTextContent = "Login to see the details of your appointment."; string htmlContent = fileHtml; SendGridMessage msg = MailHelper.CreateSingleEmail(from, to, subject, plainTextContent, htmlContent); return(msg); }
private void OnRename(object sender, RenamedEventArgs e) { var pendingEvent = new PendingEvent { ChangeType = e.ChangeType, RenamedEventArgs = e }; _pendingEvents.AddOrUpdate(e.FullPath, pendingEvent, (key, existingEvent) => { existingEvent.ChangeType = pendingEvent.ChangeType; existingEvent.RenamedEventArgs = pendingEvent.RenamedEventArgs; return(existingEvent); }); if (!_timerStarted) { _timer.Change(100, 100); _timerStarted = true; } }
private void FireEvent(string path, PendingEvent evt) { switch (evt.ChangeType) { case WatcherChangeTypes.Changed: case WatcherChangeTypes.Created: case WatcherChangeTypes.All: if (Change != null) { Change(path); } break; case WatcherChangeTypes.Deleted: if (Delete != null) { Delete(path); } break; case WatcherChangeTypes.Renamed: if (!Directory.Exists(evt.RenamedEventArgs.FullPath)) { if (Rename != null) { Rename(evt.RenamedEventArgs.OldFullPath, evt.RenamedEventArgs.FullPath); } } else { foreach (var newFilePath in Directory.GetFiles(evt.RenamedEventArgs.FullPath, "*.*", SearchOption.AllDirectories)) { if (Rename != null) { Rename(newFilePath.Replace(evt.RenamedEventArgs.FullPath, evt.RenamedEventArgs.OldFullPath), newFilePath); } } } break; } }
public void setup() { evt = new PendingEvent { files = new List <Guid>() { Guid.NewGuid() }, time_start = new DateTime(2010, 10, 20, 12, 40, 50, DateTimeKind.Local), time_end = new DateTime(2010, 10, 22, 11, 22, 33, DateTimeKind.Local), title = "title", type = 1 }; util = new Mock <IPendingToResourceUtil>(); util.SetReturnsDefault <List <PendingFileData> >(new List <PendingFileData>()); util.SetReturnsDefault <string>(string.Empty); action = new PendingToResource(util.Object); }
private TFPos GetTargetEventPosition(PendingEvent head) { return(head.TfPosition); }
public Task QueueEvent(PendingEvent pendingEvent) { this.PendingEvents.Add(pendingEvent); return(Task.CompletedTask); }
public object PendingEventToEvent(PendingEvent pendingEvent) { return(JsonConvert.DeserializeObject(pendingEvent.Content, _typeResolver.Get(pendingEvent.EventType))); }
public async Task ReplyAppointmentEmail(bool isApproved, PendingEvent singleEvent) { SendGridMessage msg = GetReplyAppointmentTemplate(isApproved, singleEvent); await Send(msg); }