internal void OnSessionOpen(
            long clusterSessionId,
            long correlationId,
            long timestampMs,
            int responseStreamId,
            string responseChannel,
            byte[] encodedPrincipal)
        {
            clusterTimeMs = timestampMs;

            ClientSession session = new ClientSession(
                clusterSessionId, correlationId, responseStreamId, responseChannel, encodedPrincipal, this);

            if (ClusterRole.Leader == role && ctx.IsRespondingService())
            {
                session.Connect(aeron);
            }

            sessionByIdMap[clusterSessionId] = session;
            service.OnSessionOpen(session, timestampMs);
        }