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]; }
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); }