public virtual void OnConnect()

in FixAntenna/NetCore/FixEngine/Acceptor/FixConnectionHandler.cs [74:160]


		public virtual void OnConnect(ITransport transport)
		{
	//        // TODO the MAX_MESSAGE_SIZE and VALIDATE_CHECK_SUM should be taken from session parameters
	//        int maxMessageSize = Configuration.getGlobalConfiguration().getPropertyAsInt(Configuration.MAX_MESSAGE_SIZE);
	//        boolean validateCheckSum = Configuration.getGlobalConfiguration().getPropertyAsBoolean(Configuration.VALIDATE_CHECK_SUM, true);
	//        final AcceptorFIXTransport fixTransport = new AcceptorFIXTransport(transport, maxMessageSize, validateCheckSum);
			var config = (Config)_configuration.Clone();
			var fixTransport = _transportFactory.CreateAcceptorTransport(transport, config);
			try
			{
				var logon = new FixMessage();
				var readLogonTimeTicks = WaitForLogon(fixTransport, logon);
				if (readLogonTimeTicks <= 0)
				{
					return;
				}

				if (!FixMessageUtil.IsLogon(logon))
				{
					if (Log.IsInfoEnabled)
					{
						Log.Info(
							$"Initial message is not a logon: {logon.ToPrintableString()} received on local endpoint: {transport.LocalEndPoint.AsString()} from remote endpoint: {transport.RemoteEndPoint.AsString()}");
					}

					if (Log.IsDebugEnabled)
					{
						Log.Debug($"logon variable:{logon.ToPrintableString()}");
					}

					CloseTransport(fixTransport);
					return;
				}

				var parseResult = _logonMessageParser.ParseLogon(config, logon, transport.RemoteEndPoint.Address.AsString(), transport.LocalEndPoint.Port);
				var sessionParameters = parseResult.SessionParameters;
				sessionParameters.LogonReadTimeTicks = readLogonTimeTicks;

				if (Log.IsInfoEnabled)
				{
					Log.Info(
						$"Logon message received on local endpoint: {transport.LocalEndPoint.AsString()} from: {transport.RemoteEndPoint.AsString()} for sessionID: {sessionParameters.SessionId}");
				}

				// check if secured connection required
				var isSslConfigured = sessionParameters.Configuration.GetPropertyAsBoolean(Config.RequireSsl);
				var isConnectionSecure = transport.IsSecured;
				if (isSslConfigured && !isConnectionSecure)
				{
					Log.Error($"Session {sessionParameters.SessionId} configured as secure, but connected on unsecured connection from remote endpoint {transport.RemoteEndPoint.AsString()}.");

					CloseTransport(fixTransport);
					return;
				}

				if (Log.IsDebugEnabled)
				{
					Log.Debug($"Parameters: {sessionParameters}");
					Log.Debug($"App version: {sessionParameters.AppVersion}");
				}

				_sessionAcceptorStrategyHandler.HandleIncomingConnection(sessionParameters, fixTransport);
			}
			catch (ThreadInterruptedException)
			{
				// do nothing
				Log.Trace("Thread interrupted.");
			}
			catch (DuplicateSessionException e)
			{
				if (Log.IsDebugEnabled)
				{
					Log.Warn("DuplicatedSessionException", e);
				}
				else
				{
					Log.Warn(e);
				}

				CloseTransport(fixTransport);
			}
			catch (Exception e)
			{
				Log.Error("Exception:", e);
				CloseTransport(fixTransport);
			}
		}