Ejemplo n.º 1
0
        private void PublishImpl(Subscription subscription, IPublishrMessage value)
        {
            var client  = new RestClient(subscription.CallbackUrl.TrimEnd('/') + "/publishr/connect");
            var request = new RestRequest(Method.GET)
            {
                RequestFormat = DataFormat.Json
            };

            request.AddParameter("_", JsonSerializer.SerializeToString(value));

            client.Execute(request);
        }
Ejemplo n.º 2
0
        public void Publish(IPublishrMessage message)
        {
            string handleType = message.GetType().FullName;
            IEnumerable <ISubscription> filtered =
                Configuration.Subscriptions.Where(subscription => subscription.Handles.Contains(handleType));

            foreach (Subscription subscription in filtered)
            {
                message.HubName   = subscription.HubName;
                message.HubMethod = subscription.HubMethod;

                message.HandleType = handleType;
                PublishImpl(subscription, message);
            }
        }
Ejemplo n.º 3
0
        private void Handle(IPublishrMessage message)
        {
            IHubContext hubContext = GlobalHost.ConnectionManager.GetHubContext <PublishrHub>();
            MethodExecutionDefinition methodExecution = _reflector.GetTargetMethod(GetType(), message.HandleType);

            if (methodExecution.Method != null)
            {
                object messageObj = ServiceStack.Text.JsonSerializer.DeserializeFromString(message.Raw, methodExecution.ParameterType);
                methodExecution.Method.Invoke(this, new[] { messageObj });
            }
            else
            {
                if (hubContext != null)
                {
                    hubContext.Clients.All.Invoke(message.HubMethod, new { data = message.Raw });
                }
            }
        }
Ejemplo n.º 4
0
        protected virtual void Handle(IPublishrMessage message)
        {
            CurrentHubContext = GlobalHost.ConnectionManager.GetHubContext(message.HubName);

            IEnumerable <MethodExecutionDefinition> methodExecutionDefinations = _globalRegistry.FindByMessageType(message.HandleType);


            foreach (MethodExecutionDefinition methodExecution in methodExecutionDefinations)
            {
                if (methodExecution.Method != null)
                {
                    object messageObj = JsonSerializer.DeserializeFromString(message.Raw, methodExecution.ParameterType);

                    PublishrModule moduleInstance = (PublishrModule)Activator.CreateInstance(methodExecution.OwnerType);
                    moduleInstance.CurrentHubContext = CurrentHubContext;

                    methodExecution.Method.Invoke(moduleInstance, new[] { messageObj });
                }
                else
                {
                    CurrentHubContext.Clients.All.Invoke(message.HubMethod, new { data = message.Raw });
                }
            }
        }
Ejemplo n.º 5
0
 public void Publish(IPublishrMessage message)
 {
     _pubSubContext.Publish(message);
 }