Exemple #1
0
 private static async Task PostLog(ILoggingStore store, UssdRequest request, UssdResponse response,
     DateTime startTime, DateTime endTime, bool dispose)
 {
     if (store == null) return;
     var log = await store.Find(request.SessionId);
     if (log == null) return;
     log.EndTime = endTime;
     log.DurationInMilliseconds = endTime.Subtract(log.StartTime).TotalMilliseconds;
     log.ErrorStackTrace = response.Exception == null ? null : response.Exception.StackTrace;
     var entry = new UssdSessionLogEntry
     {
         StartTime = startTime,
         EndTime = endTime,
         DurationInMilliseconds = endTime.Subtract(startTime).TotalMilliseconds,
         UssdRequest = request,
         UssdResponse = response,
     };
     await store.Update(log);
     await store.AddEntry(request.SessionId, entry);
     if (dispose) store.Dispose();
 }
 public async Task AddEntry(string sessionId, UssdSessionLogEntry entry)
 {
     var filter = Builders<MongoDbSessionLog>.Filter.Where(x => x.SessionId == sessionId);
     var update = Builders<MongoDbSessionLog>.Update.AddToSet(x => x.Entries, entry);
     await Collection.UpdateOneAsync(filter, update);
 }