public void InvokeCallback(object args, CoreComUserInfo coreComUserInfo) { if (MethodInfo.IsStatic) { if (coreComUserInfo == null) { MethodInfo.Invoke(null, MethodInfo.GetParameters().Length == 1 ? new[] { args } : null); } else { MethodInfo.Invoke(null, MethodInfo.GetParameters().Length == 1 ? new[] { args, coreComUserInfo } : null); } return; } if (coreComUserInfo == null) { MethodInfo.Invoke(DelegateSource, new[] { args }); } else { MethodInfo.Invoke(DelegateSource, MethodInfo.GetParameters().Length == 1 ? new[] { coreComUserInfo } : new[] { args, coreComUserInfo }); } }
private async Task ParseClientToServerMessage(CoreComMessage request) { //this only hapend after first messages bin sent if (request.MessageSignature == CoreComInternalSignatures.CoreComInternal_PullQueue) { await ParseCoreComFrameworkMessage(request); return; } CoreComUserInfo coreComUserInfo = new CoreComUserInfo { ClientId = request.ClientId }; if (string.IsNullOrEmpty(request.JsonObject)) { CoreComMessagingCenter.Send(request.MessageSignature, coreComUserInfo); } else { var objectDeser = JsonSerializer.Deserialize(request.JsonObject, CoreComMessagingCenter.GetMessageArgType(request.MessageSignature)); CoreComMessagingCenter.Send(request.MessageSignature, coreComUserInfo, objectDeser); } }
private static async Task GetAllProjectsFromDb(object value, CoreComUserInfo coreComUserInfo) { var project = value as List <Project>; foreach (var item in project) { Console.WriteLine(item.Name); } }
void ICoreComMessagingCenter.Send <TArgs>(string message, CoreComUserInfo coreComUserInfo, TArgs args) { if (string.IsNullOrEmpty(message)) { throw new ArgumentNullException(nameof(message)); } InnerSend(message, coreComUserInfo, typeof(TArgs), args); }
void ICoreComMessagingCenter.Send(string message, CoreComUserInfo coreComUserInfo) { if (string.IsNullOrEmpty(message)) { throw new ArgumentNullException(nameof(message)); } InnerSend(message, coreComUserInfo, null, null); }
private async void GetAllProjectsFromDb(CoreComUserInfo coreComUserInfo) { using (var scope = _serviceScopeFactory.CreateScope()) { var dbContext = scope.ServiceProvider.GetService <MyDbContext>(); var list = dbContext.Projects.ToList(); await SendAsync(list, CoreComSignatures.ResponseAllProjects, coreComUserInfo); } }
private void DeleteProject(Project value, CoreComUserInfo arg) { using (var scope = _serviceScopeFactory.CreateScope()) { var dbContext = scope.ServiceProvider.GetService <MyDbContext>(); var remove = dbContext.Projects.FirstOrDefault(x => x.ProjectId == value.ProjectId); if (remove != null) { dbContext.Remove(remove); dbContext.SaveChangesAsync(); } } }
void InnerSend(string message, CoreComUserInfo coreComUserInfo, Type argType, object args) { if (string.IsNullOrEmpty(message)) { throw new ArgumentNullException(nameof(message)); } if (!_subscriptions.ContainsKey(message) || !_subscriptions.Any()) { return; } if (coreComUserInfo == null) { _subscriptions[message].InvokeCallback(args, null); } else { _subscriptions[message].InvokeCallback(args, coreComUserInfo); } }
private async void AddProjectsToDb(Project value, CoreComUserInfo arg) { //Validate input if (string.IsNullOrEmpty(value.Name)) { var error = new Result <Project>("The project need a name"); await SendAsync(error, CoreComSignatures.AddProject, arg); return; } using (var scope = _serviceScopeFactory.CreateScope()) { var dbContext = scope.ServiceProvider.GetService <MyDbContext>(); value.ProjectId = System.Guid.NewGuid(); dbContext.Projects.Add(value); dbContext.SaveChanges(); //send the new projet to client await SendAsync(new Result <Project>(value), CoreComSignatures.AddProject, new CoreComUserInfo { ClientId = arg.ClientId }); } }
public static void Send <TArgs>(string message, CoreComUserInfo coreComUserInfo, TArgs args) where TArgs : class { Instance.Send(message, coreComUserInfo, args); }
public static void Send(string message, CoreComUserInfo coreComUserInfo) { Instance.Send(message, coreComUserInfo); }
private async Task <bool> SendInternalAsync(object outgoingObject, string messageSignature, CoreComUserInfo coreComUserInfo) { string jsonObject = string.Empty; CoreComMessageResponse coreComMessage; //Build message try { //error report to client if (outgoingObject != null) { jsonObject = JsonSerializer.Serialize(outgoingObject); } coreComMessage = new CoreComMessageResponse { CoreComMessageResponseId = Guid.NewGuid().ToString(), ClientId = coreComUserInfo.ClientId, NewUtc = Helpers.DateTimeConverter.DateTimeUtcNowToUnixTime(), TransactionIdentifier = Guid.NewGuid().ToString(), MessageSignature = messageSignature, JsonObject = jsonObject }; using (var dbContext = new CoreComContext(_coreComOptions.DbContextOptions)) { LogEventOccurred(dbContext, coreComMessage); } } catch (Exception ex) { LogErrorOccurred(ex, new CoreComMessage { ClientId = coreComUserInfo.ClientId, MessageSignature = messageSignature }); return(false); } return(true); }
/// <summary> /// Queue outging message /// </summary> /// <param name="messageSignature"></param> /// <param name="coreComUserInfo"></param> /// <returns></returns> public async Task <bool> SendAsync(string messageSignature, CoreComUserInfo coreComUserInfo) { return(await SendInternalAsync(null, messageSignature, coreComUserInfo)); }
/// <summary> /// Queue outging message that has object as payload /// </summary> /// <param name="outgoingObject"></param> /// <param name="messageSignature"></param> /// <param name="coreComUserInfo"></param> /// <returns></returns> public async Task <bool> SendAsync(object outgoingObject, string messageSignature, CoreComUserInfo coreComUserInfo) { return(await SendInternalAsync(outgoingObject, messageSignature, coreComUserInfo)); }