public static HubDescriptor EnsureHub(this IHubManager hubManager, string hubName, params IPerformanceCounter[] counters)
        {
            if (hubManager == null)
            {
                throw new ArgumentNullException("hubManager");
            }

            if (String.IsNullOrEmpty(hubName))
            {
                throw new ArgumentNullException("hubName");
            }

            if (counters == null)
            {
                throw new ArgumentNullException("counters");
            }

            var descriptor = hubManager.GetHub(hubName);

            if (descriptor == null)
            {
                for (var i = 0; i < counters.Length; i++)
                {
                    counters[i].Increment();
                }
                throw new InvalidOperationException(String.Format(CultureInfo.CurrentCulture, Resources.Error_HubCouldNotBeResolved, hubName));
            }

            return(descriptor);
        }
        public static HubDescriptor EnsureHub(this IHubManager hubManager, string hubName)
        {
            var descriptor = hubManager.GetHub(hubName);

            if (descriptor == null)
            {
                throw new InvalidOperationException(String.Format(CultureInfo.CurrentCulture, "'{0}' hub could not be resolved.", hubName));
            }

            return(descriptor);
        }
        public static HubDescriptor EnsureHub(this IHubManager hubManager, string hubName, params PerformanceCounter[] counters)
        {
            var descriptor = hubManager.GetHub(hubName);

            if (descriptor == null)
            {
                for (var i = 0; i < counters.Length; i++)
                {
                    counters[i].SafeIncrement();
                }
                throw new InvalidOperationException(String.Format(CultureInfo.CurrentCulture, "'{0}' hub could not be resolved.", hubName));
            }

            return(descriptor);
        }
        protected override Task OnReceived(HostContext context, string data)
        {
            Trace.WriteLine($"OnReceived : { data }");
            var request = Newtonsoft.Json.JsonConvert.DeserializeObject <Message>(data);

            var setting = new Newtonsoft.Json.JsonSerializerSettings
            {
                TypeNameHandling      = Newtonsoft.Json.TypeNameHandling.All,
                MissingMemberHandling = Newtonsoft.Json.MissingMemberHandling.Error
            };

            var hubDescriptor    = _manager.GetHub(request.Value.Hub);
            var methodDescriptor = _manager.GetHubMethod(hubDescriptor.Name, request.Value.Method, request.Value.Args.ToArray());
            var hub = _activator.Create(hubDescriptor);

            hub.Clients = new HubConnectionContextBase(hubDescriptor.Name, Connection, _pipelineInvoker);
            methodDescriptor.Invoke(hub, request.Value.Args.Select((r, index) =>
            {
                return(JsonSerializer.Deserialize(JToken.FromObject(r), methodDescriptor.Parameters[index].ParameterType));
            }).ToArray());
            hub.Dispose();

            return(base.OnReceived(context, data));
        }