Пример #1
0
        public override void CreateSession(ISessionPushPrx proxy, Current current = null)
        {
            if (!(current.con.getInfo() is Ice.TCPConnectionInfo connection))
            {
                logger.error($"A ## Type of current.con is not TCPConnectionInfo!!!");
                return;
            }

            var session = new SessionI(proxy);

            // Never close this connection from the client and turn on heartbeats with a timeout of 30s
            current.con.getInfo().connectionId = session.Id;
            current.con.setACM(30, ACMClose.CloseOff, ACMHeartbeat.HeartbeatAlways);
            current.con.setCloseCallback(_ => DestroySessionCallback(session));

            IceFrontSessionExtensions.sessions.TryAdd(session.Id, session);
            logger.print($"Create session :{session.Id},{serverName}");
        }
Пример #2
0
 private void DestroySessionCallback(SessionI session)
 {
     IceFrontSessionExtensions.sessions.Remove(session.Id);
     IceFrontSessionExtensions.sessionBinds.TryRemove(session.Identity, out _);
     logger.print($"{session.Id} is destroyed from thread " + $"{Thread.CurrentThread.ManagedThreadId}");
 }