Example #1
0
        public CrystalDifusionConnectionEvents(ICrystalDifusionConnectionBase conn,
                                               CrystalConnectionMessageHandle handle,
                                               ILogger <CrystalDifusionConnectionEvents> logger,
                                               string connectionId,
                                               DifusionCredential credential,
                                               ICrystalConnectionStatistics connectionStatistics)
        {
            this.conn         = conn;
            this.logger       = logger;
            this.connectionId = connectionId;
            this.handle       = handle;
            this.credential   = credential;

            Disconnected = DisconnectHandle;
            Connected    = ConnectedtHandle;

            crystalReader  = new CrystalConnectionReaderEvent(this, conn, logger, Disconnected, connectionId);
            crystalWriter  = new CrystalConnectionWriterEvent(conn, logger, Disconnected, queue, connectionId);
            crystalWatcher = new CrystalConnectionWatcher(queue, Disconnected, logger);

            reconnect = new AtomicRunBoolean(false);
            watch     = new AtomicRunBoolean(false);
            connected = new AtomicRunBoolean(false);

            this.connectionStatistics = connectionStatistics;
        }
Example #2
0
        public bool Load()
        {
            string user = config.GetSection("CrystalUserName").Value;
            string pass = config.GetSection("CrystalPassword").Value;

            int port = config.GetSection("CrystalPort").Value != null?Convert.ToInt16(config.GetSection("CrystalPort").Value) : 81;

            int qtdConnections = config.GetSection("qtd_connections").Value != null?Convert.ToInt16(config.GetSection("qtd_connections").Value) : 1;

            listHost = config.GetSection("CrystalHosts")
                       .GetChildren()
                       .Select(x => x.Value)
                       .ToList();

            if (string.IsNullOrEmpty(user) || string.IsNullOrEmpty(pass) || listHost == null || !listHost.Any())
            {
                return(false);
            }

            credential = new DifusionCredential(user, pass, "");

            LoadConnections(credential, qtdConnections, port);

            return(true);
        }
Example #3
0
        public static ICrystalDifusionConnectionBase CreateCrystalConnection(ILoggerFactory loggerFactory, PostmanThread postmanThread)
        {
            var builder = new ConfigurationBuilder()
                          .SetBasePath(Directory.GetCurrentDirectory())
                          .AddJsonFile("appsettings.json");

            IConfigurationRoot config = builder.Build();

            string user = config.GetSection("CrystalUserName").Value;
            string pass = config.GetSection("CrystalPassword").Value;

            IEnumerable <string> hosts = config.GetSection("CrystalHosts")
                                         .GetChildren()
                                         .Select(x => x.Value)
                                         .ToArray();

            string host = hosts.FirstOrDefault();
            int    port = config.GetSection("CrystalPort").Value != null?Convert.ToInt16(config.GetSection("CrystalPort").Value) : 81;

            DifusionCredential credential = new DifusionCredential(user, pass, "");

            ILogger <ICrystalDifusionConnectionBase>  logger     = loggerFactory.CreateLogger <ICrystalDifusionConnectionBase>();
            ILogger <CrystalDifusionConnectionEvents> loggerConn = loggerFactory.CreateLogger <CrystalDifusionConnectionEvents>();

            ListCircular <string> listCircular = new ListCircular <string>();

            listCircular.Add(host);

            ICrystalDifusionConnectionBase conn = new CrystalDifusionConnectionBase(new Streaming.Crystal.Connection.Manager.CrystalAddress(listCircular, port), logger);

            connEvent = new CrystalDifusionConnectionEvents(conn, new DirectNoficationMessage(postmanThread), loggerConn, "1", credential, new CrystalConnectionStatistics());

            return(conn);
        }
Example #4
0
        private void LoadConnections(DifusionCredential credential, int qtdConnections, int port)
        {
            connections = new ConcurrentQueue <ICrystalConnection>();

            for (var i = 0; i < qtdConnections; i++)
            {
                ICrystalDifusionConnectionBase connBase = new CrystalDifusionConnectionBase(CreateCrystalAddress(port), loggerFactory.CreateLogger <ICrystalDifusionConnectionBase>());

                CrystalDifusionConnectionEvents conn = new CrystalDifusionConnectionEvents(connBase,
                                                                                           messageHandle,
                                                                                           loggerFactory.CreateLogger <CrystalDifusionConnectionEvents>(),
                                                                                           "CrystalConnection " + (i + 1),
                                                                                           credential,
                                                                                           new CrystalConnectionStatistics());

                connections.Enqueue(conn);
                conn.Connect();
            }
        }