Example #1
0
        private AeronClient(ClientServerConfig config)
        {
            _config = config;
            AeronDriver.DriverContext    driverContext = config.ToDriverContext();
            Adaptive.Aeron.Aeron.Context clientContext = config.ToClientContext();

            driverContext
            .LoggerInfo(_driverLog.Info)
            .LoggerWarning(_driverLog.Warn)
            .LoggerWarning(_driverLog.Error);

            _driver = AeronDriver.Start(driverContext);

            clientContext
            .ErrorHandler(OnError)
            .AvailableImageHandler(ConnectionOnImageAvailable)
            .UnavailableImageHandler(ConnectionOnImageUnavailable);

            _client = Adaptive.Aeron.Aeron.Connect(clientContext);

            const int sessionsLen =
#if DEBUG
                1;
#else
                64;
#endif

            _clientSessions = new AeronClientSession[sessionsLen];
        }
Example #2
0
        public static AeronDriver.DriverContext CreateDriverCtx(bool isServer = false)
        {
            var baseDir = AppDomain.CurrentDomain.BaseDirectory;
            var dir     = Path.Combine(baseDir, "mediadrivers", (isServer ? "server_" : "") + Guid.NewGuid().ToString("N"));

            var ctx = new AeronDriver.DriverContext()
                      .AeronDirectoryName(dir)
                      // .DebugTimeoutMs(60 * 1000)
                      .ThreadingMode(AeronThreadingModeEnum.AeronThreadingModeShared)
                      .SharedIdleStrategy(DriverIdleStrategy.SLEEPING)
                      .TermBufferLength(128 * 1024)
                      .DirDeleteOnStart(true)
                      .DirDeleteOnShutdown(true)
                      .PrintConfigurationOnStart(true)
                      .LoggerInfo(s => Console.WriteLine($"INFO: {s}"))
                      .LoggerWarning(s => Console.WriteLine($"WARN: {s}"))
                      .LoggerError(s => Console.Error.WriteLine($"ERROR: {s}"));

            return(ctx);
        }
        public AeronServer(int serverPort, ClientServerConfig config)
        {
            _config        = config;
            _driverContext = config.ToDriverContext();
            _clientContext = config.ToClientContext();

            _driverContext
            .LoggerInfo(_driverLog.Info)
            .LoggerWarning(_driverLog.Warn)
            .LoggerWarning(_driverLog.Error);

            _driver = AeronDriver.Start(_driverContext);

            _clientContext
            .ErrorHandler(OnError)
            .AvailableImageHandler(ConnectionOnImageAvailable)
            .UnavailableImageHandler(ConnectionOnImageUnavailable);

            _client = Adaptive.Aeron.Aeron.Connect(_clientContext);

            _publicationIdleStrategy = _config.ClientIdleStrategy.GetClientIdleStrategy();

            _subscription = _client.AddSubscription($"aeron:udp?endpoint=0.0.0.0:{serverPort}", ServerStreamId);
        }