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 });
                }
            }
Beispiel #2
0
        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);
            }
        }
Beispiel #3
0
        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);
        }
Beispiel #6
0
        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);
            }
        }
Beispiel #7
0
        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);
            }
        }
Beispiel #9
0
        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);
 }
Beispiel #12
0
        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);
        }
Beispiel #13
0
 /// <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));
 }
Beispiel #14
0
 /// <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));
 }