public WebSocketClientSSLConnection(X509Certificate2 cacert, IWebSocketMessageHandler wsMessageHandler)
     : base()
 {
     _cacert              = cacert;
     _wsMessageHandler    = wsMessageHandler;
     this.FullDataProcess = true;
 }
 public WebSocketClientSSLConnection(X509Certificate2 cacert, IWebSocketMessageHandler wsMessageHandler)
     : base()
 {
     _cacert = cacert;
     _wsMessageHandler = wsMessageHandler;
     this.FullDataProcess = true;
 }
 public ObserverExecuter(Type consumerType,
                         IWebSocketMessageHandler <TModel> instance,
                         Func <Type, object> factory,
                         Func <Action <Exception> > errorFactory)
 {
     _consumerType = consumerType;
     _instance     = instance;
     _factory      = factory;
     _errorFactory = errorFactory;
 }
        public override async Task Execute(object model, WebSocketMessage message, IHorseWebSocket client)
        {
            IWebSocketMessageHandler <TModel> handler = null;

            try
            {
                if (_instance != null)
                {
                    handler = _instance;
                }
                else if (_factory != null)
                {
                    handler = (IWebSocketMessageHandler <TModel>)_factory(_consumerType);
                }
                else
                {
                    return;
                }

                await handler.Handle((TModel)model, message, client);
            }
            catch (Exception e)
            {
                Action <Exception> errorAction = null;
                if (_errorFactory != null)
                {
                    try
                    {
                        errorAction = _errorFactory();
                    }
                    catch
                    {
                    }
                }

                if (handler == null)
                {
                    if (errorAction != null)
                    {
                        errorAction(e);
                    }

                    return;
                }

                try
                {
                    await handler.OnError(e, (TModel)model, message, client);

                    if (errorAction != null)
                    {
                        errorAction(e);
                    }
                }
                catch (Exception e2)
                {
                    if (errorAction != null)
                    {
                        errorAction(e2);
                    }
                }
            }
        }