Example #1
0
 /// <summary>
 /// Initializes a new instance of the <see cref="RabbitEventedExchangeGenerator" /> class.
 /// </summary>
 /// <param name="dependencyUtility">The dependency utility.</param>
 /// <param name="connectionParameters">The connection parameters.</param>
 /// <param name="connection">The connection.</param>
 public RabbitEventedExchangeGenerator(IDependencyUtility dependencyUtility, IParameterList connectionParameters, IConnection connection = null)
 {
     _dependencyUtility = dependencyUtility;
     _logger            = _dependencyUtility.Resolve <ILogger>();
     _exchangeCache     = _dependencyUtility.Resolve <ICacheHandler>().AddCache("rabbitmq-exchanges", CacheService.InMemory, -1);
     _connection        = connection ?? RabbitConnectionGenerator.CreateConnection(_dependencyUtility, connectionParameters);
 }
Example #2
0
        /// <summary>
        /// Initializes a new instance of the <see cref="WebSocketDataHandler" /> class.
        /// </summary>
        /// <param name="dependencyUtility">The dependency utility.</param>
        protected WebSocketDataHandler(IDependencyUtility dependencyUtility)
        {
            _dependencyUtility = dependencyUtility ?? throw new ArgumentNullException(nameof(dependencyUtility));

            Logger            = _dependencyUtility.Resolve <ILogger>();
            ConnectionManager = _dependencyUtility.Resolve <IWebSocketConnectionManager>();
        }
Example #3
0
        static void Main(string[] args)
        {
            _dependencyUtility = new DependencyUtility();

            HandleCacheHandler();
            HandleConfiguration();
            HandleSecurityContainer();
            HandleLogger();
            HandleSignalRouter();
            HandleExtensionLoader();

            //Set port and host from configuration
            int       port = Convert.ToInt32(_config.Get(PORT_CONFIGURATION_KEY));
            IPAddress host = IPAddress.Parse(_config.Get(HOST_CONFIGURATION_KEY));

            //Hook into our closing event
            AssemblyLoadContext.Default.Unloading += UnloadServer;
            Console.CancelKeyPress += (sender, eventArgs) => UnloadServer(AssemblyLoadContext.Default);

            //Start the server
            using (_server = new WebSocketServer("MyServerName", host, port, _dependencyUtility, 4))
            {
                _logger.Info($"Listening on {host}:{port}");

                //Initialize the router
                _router.Initialize();

                //Disable Nagle's Algorithm
                _server.NoDelay = true;

                //Start listening and blocking the main thread
                _server.Run();
            }
        }
Example #4
0
        /// <summary>
        /// Creates the connection.
        /// </summary>
        /// <param name="dependencyUtility">The dependency utility.</param>
        /// <param name="connectionParameters">The connection parameters.</param>
        /// <returns></returns>
        public static IConnection CreateConnection(IDependencyUtility dependencyUtility, IParameterList connectionParameters)
        {
            string host        = connectionParameters["Host"];
            string virtualHost = connectionParameters["VirtualHost"];
            string username    = connectionParameters["Username"];
            string password    = connectionParameters["Password"];

            IConnectionFactory connectionFactory = new ConnectionFactory
            {
                UserName    = username,
                Password    = password,
                VirtualHost = virtualHost,
                Endpoint    = new AmqpTcpEndpoint(host)
            };

            ILogger     logger = dependencyUtility.Resolve <ILogger>();
            IConnection connection;

            try
            {
                connection = connectionFactory.CreateConnection();
                logger.Debug($"Connected to RabbitMQ service: {host}{virtualHost}");
            }
            catch (Exception exception)
            {
                logger.Error(exception);
                throw;
            }

            return(connection);
        }
Example #5
0
        public HttpMetadata(Stream stream, IDependencyUtility dependencyUtility)
        {
            _dependencyUtility = dependencyUtility;
            _logger            = _dependencyUtility.Resolve <ILogger>();

            Parse(stream);
        }
Example #6
0
        /// <summary>
        /// Initializes a new instance of the <see cref="WebSocketServer"/> class.
        /// </summary>
        /// <param name="id">The identifier.</param>
        /// <param name="host">The host.</param>
        /// <param name="port">The port.</param>
        /// <param name="dependencyUtility">The dependency utility.</param>
        /// <param name="listenerThreads">The listener threads.</param>
        /// <param name="clientThreadMultiplier">The client thread multiplier.</param>
        public WebSocketServer(string id, string host, int port, IDependencyUtility dependencyUtility = null, int listenerThreads = 1, int clientThreadMultiplier = 3)
        {
            Id   = id;
            Host = host;
            Port = port;

            _listenerThreads        = listenerThreads;
            _clientThreadMultiplier = clientThreadMultiplier;
            _dependencyUtility      = dependencyUtility ?? new DependencyUtility();

            _logger = _dependencyUtility.Resolve <ILogger>() ??
                      _dependencyUtility.Register <ILogger>(new Logger());

            _securityContainer = _dependencyUtility.Resolve <ISecurityContainer>() ??
                                 _dependencyUtility.Register <ISecurityContainer>(new SecurityContainer(null, SslProtocols.None, false, false, false));

            _clientHandler = _dependencyUtility.Resolve <ITcpHandler>() ??
                             _dependencyUtility.Register <ITcpHandler>(new TcpHandler(IPAddress.Parse(Host), Port));

            _connectionManager = _dependencyUtility.Resolve <IWebSocketConnectionManager>() ??
                                 _dependencyUtility.Register <IWebSocketConnectionManager>(new WebSocketConnectionManager(_dependencyUtility));

            _threadHelper = _dependencyUtility.Resolve <IThreadHelper>() ??
                            _dependencyUtility.Register <IThreadHelper>(new ThreadHelper());

            _routeTable = _dependencyUtility.Resolve <IRouteTable>() ??
                          _dependencyUtility.Register <IRouteTable>(BuildRouteTable());
        }
Example #7
0
        /// <summary>
        /// Initializes a new instance of the <see cref="ConfigurationHandler"/> class.
        /// </summary>
        /// <param name="dependencyUtility">The dependency utility.</param>
        /// <param name="configurationPath">The configuration path.</param>
        public ConfigurationHandler(IDependencyUtility dependencyUtility, string configurationPath)
        {
            _dependencyUtility = dependencyUtility;
            _logger            = dependencyUtility.Resolve <ILogger>();

            AddConfigurationFile(configurationPath);
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="DirectMessagingExtension"/> class.
        /// </summary>
        /// <param name="extensionName">Name of the extension.</param>
        /// <param name="dependencyUtility">The dependency utility.</param>
        public DirectMessagingExtension(string extensionName, IDependencyUtility dependencyUtility) : base(extensionName, dependencyUtility)
        {
            this.RegisterAction("SendMessage", SendMessage);

            _connections  = dependencyUtility.Resolve <IWebSocketConnectionManager>();
            _queueHandler = dependencyUtility.Resolve <IEventedQueueHandler <ISignal> >();
        }
Example #9
0
        /// <summary>
        /// Initializes a new instance of the <see cref="Extension"/> class.
        /// </summary>
        /// <param name="extensionName">Name of the extension.</param>
        /// <param name="dependencyUtility">The dependency utility.</param>
        protected Extension(string extensionName, IDependencyUtility dependencyUtility)
        {
            Name = extensionName;

            DependencyUtility = dependencyUtility;

            Logger  = DependencyUtility.Resolve <ILogger>();
            Config  = DependencyUtility.Resolve <IConfigurationHandler>();
            _router = DependencyUtility.Resolve <ISignalRouter>();
        }
Example #10
0
        /// <summary>
        /// Initializes a new instance of the <see cref="WebSocketConnection" /> class.
        /// </summary>
        /// <param name="client">The client.</param>
        /// <param name="dependencyUtility">The dependency utility.</param>
        public WebSocketConnection(TcpClient client, IDependencyUtility dependencyUtility)
        {
            _client            = client;
            _dependencyUtility = dependencyUtility ?? new DependencyUtility();
            _securityContainer = _dependencyUtility.Resolve <ISecurityContainer>() ?? new SecurityContainer(null, SslProtocols.None, false, false, false);
            _routeTable        = _dependencyUtility.Resolve <IRouteTable>() ?? new RouteTable();
            _threadHelper      = _dependencyUtility.Resolve <IThreadHelper>() ?? new ThreadHelper();
            _logger            = _dependencyUtility.Resolve <ILogger>() ?? new Logger();

            _frameReader = new WebSocketFrameReader(_dependencyUtility);
            _frameWriter = new WebSocketFrameWriter(_dependencyUtility);
        }
Example #11
0
        /// <summary>
        /// Initializes a new instance of the <see cref="RedisCache"/> class.
        /// </summary>
        /// <param name="connectionString">The connection string.</param>
        /// <param name="expiryInSeconds">The expiry in seconds.</param>
        /// <param name="dependencyUtility">The dependency utility.</param>
        /// <exception cref="CacheConnectionException"></exception>
        public RedisCache(string connectionString, int expiryInSeconds, IDependencyUtility dependencyUtility)
        {
            _dependencyUtility = dependencyUtility;
            _logger            = _dependencyUtility.Resolve <ILogger>();

            _redis  = ConnectionMultiplexer.Connect(connectionString);
            _cache  = _redis.GetDatabase();
            _expiry = new TimeSpan(0, 0, expiryInSeconds);

            if (_redis.IsConnected)
            {
                _logger.Debug("Established Redis connection");
            }
            else
            {
                throw new CacheConnectionException(connectionString);
            }
        }
Example #12
0
 /// <summary>
 /// Initializes a new instance of the <see cref="WebSocketServer"/> class.
 /// </summary>
 /// <param name="id">The identifier.</param>
 /// <param name="host">The host.</param>
 /// <param name="port">The port.</param>
 /// <param name="dependencyUtility">The dependency utility.</param>
 /// <param name="listenerThreads">The listener threads.</param>
 /// <param name="clientThreadMultiplier">The client thread multiplier.</param>
 public WebSocketServer(string id, IPAddress host, int port, IDependencyUtility dependencyUtility = null, int listenerThreads = 1, int clientThreadMultiplier = 3)
     : this(id, host.ToString(), port, dependencyUtility, listenerThreads, clientThreadMultiplier)
 {
 }
Example #13
0
 /// <summary>
 /// Initializes a new instance of the <see cref="Default"/> class.
 /// </summary>
 /// <param name="dependencyUtility">The dependency utility.</param>
 public Default(IDependencyUtility dependencyUtility) : base(dependencyUtility)
 {
     _extensionLoader = dependencyUtility.Resolve <IExtensionLoader>();
     _signalRouter    = dependencyUtility.Resolve <ISignalRouter>();
 }
Example #14
0
        /// <summary>
        /// Initializes a new instance of the <see cref="RabbitEventedExchange{T}"/> class.
        /// </summary>
        /// <param name="exchangeId">The exchange identifier.</param>
        /// <param name="routeKey">The route key.</param>
        /// <param name="channel">The channel.</param>
        /// <param name="dependencyUtility">The dependency utility.</param>
        public RabbitEventedExchange(string exchangeId, string routeKey, IModel channel, IDependencyUtility dependencyUtility)
        {
            ExchangeId = exchangeId;
            RouteKey   = routeKey;
            Id         = exchangeId;

            _channel = channel;
            _jss     = dependencyUtility.Resolve <JsonSerializerSettings>();
            _logger  = dependencyUtility.Resolve <ILogger>();
        }
Example #15
0
 public DefaultRoute(IDependencyUtility dependencyUtility) : base(dependencyUtility)
 {
 }
Example #16
0
 /// <summary>
 /// Initializes a new instance of the <see cref="WebSocketFrameReader"/> class.
 /// </summary>
 /// <param name="dependencyUtility">The dependency utility.</param>
 public WebSocketFrameReader(IDependencyUtility dependencyUtility)
 {
     _logger = dependencyUtility.Resolve <ILogger>();
 }
Example #17
0
        /// <summary>
        /// Initializes a new instance of the <see cref="RabbitEventedQueue{T}" /> class.
        /// </summary>
        public RabbitEventedQueue(string exchangeId, string queueId, string routeKey, IModel channel, IDependencyUtility dependencyUtility)
        {
            _exchangeId = exchangeId;
            _queueId    = queueId;
            _routekey   = routeKey;
            _channel    = channel;

            _logger = dependencyUtility.Resolve <ILogger>();
            _jss    = dependencyUtility.Resolve <JsonSerializerSettings>();

            AddConsumer();
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="WebSocketConnectionManager" /> class.
 /// </summary>
 /// <param name="dependencyUtility">The dependency utility.</param>
 public WebSocketConnectionManager(IDependencyUtility dependencyUtility)
 {
     _dependencyUtility = dependencyUtility ?? new DependencyUtility();
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="ExtensionLoader"/> class.
 /// </summary>
 /// <param name="dependencyUtility">The dependency utility.</param>
 public ExtensionLoader(IDependencyUtility dependencyUtility)
 {
     _dependencyUtility = dependencyUtility;
     _logger            = _dependencyUtility.Resolve <ILogger>();
     _config            = _dependencyUtility.Resolve <IConfigurationHandler>();
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="SignalRouter"/> class.
 /// </summary>
 /// <param name="dependencyUtility">The dependency utility.</param>
 public SignalRouter(IDependencyUtility dependencyUtility)
 {
     _dependencyUtility = dependencyUtility;
 }
Example #21
0
 /// <summary>
 /// Initializes a new instance of the <see cref="CacheHandler"/> class.
 /// </summary>
 /// <param name="dependencyUtility">The dependency utility.</param>
 public CacheHandler(IDependencyUtility dependencyUtility)
 {
     _dependencyUtility = dependencyUtility;
 }