@Override public void onClose(final TyrusSession session, final CloseReason closeReason) { if (maxSessionsPerApp != null) { synchronized (counterLock) { counter.decrementAndGet(); } } if (maxSessionsPerRemoteAddr != null) { synchronized (remoteAddressCounters) { int remoteAddressCounter = remoteAddressCounters.get(session.getRemoteAddr()).decrementAndGet(); if (remoteAddressCounter == 0) { remoteAddressCounters.remove(session.getRemoteAddr()); } } } } };
@Override public void onClose(final TyrusSession session, final CloseReason closeReason) { if (maxSessionsPerApp != null) { synchronized (counterLock) { counter.decrementAndGet(); } } if (maxSessionsPerRemoteAddr != null) { synchronized (remoteAddressCounters) { int remoteAddressCounter = remoteAddressCounters.get(session.getRemoteAddr()).decrementAndGet(); if (remoteAddressCounter == 0) { remoteAddressCounters.remove(session.getRemoteAddr()); } } } } };
@Override public OnOpenResult onOpen(final TyrusSession session) { if (maxSessionsPerApp != null) { synchronized (counterLock) { if (counter.get() >= maxSessionsPerApp) { return OnOpenResult.MAX_SESSIONS_PER_APP_EXCEEDED; } else { counter.incrementAndGet(); } } } if (maxSessionsPerRemoteAddr != null) { synchronized (remoteAddressCounters) { AtomicInteger remoteAddressCounter = remoteAddressCounters.get(session.getRemoteAddr()); if (remoteAddressCounter == null) { remoteAddressCounter = new AtomicInteger(1); remoteAddressCounters.put(session.getRemoteAddr(), remoteAddressCounter); } else if (remoteAddressCounter.get() >= maxSessionsPerRemoteAddr) { return OnOpenResult.MAX_SESSIONS_PER_REMOTE_ADDR_EXCEEDED; } else { remoteAddressCounter.incrementAndGet(); } } } return OnOpenResult.SESSION_ALLOWED; }
@Override public OnOpenResult onOpen(final TyrusSession session) { if (maxSessionsPerApp != null) { synchronized (counterLock) { if (counter.get() >= maxSessionsPerApp) { return OnOpenResult.MAX_SESSIONS_PER_APP_EXCEEDED; } else { counter.incrementAndGet(); } } } if (maxSessionsPerRemoteAddr != null) { synchronized (remoteAddressCounters) { AtomicInteger remoteAddressCounter = remoteAddressCounters.get(session.getRemoteAddr()); if (remoteAddressCounter == null) { remoteAddressCounter = new AtomicInteger(1); remoteAddressCounters.put(session.getRemoteAddr(), remoteAddressCounter); } else if (remoteAddressCounter.get() >= maxSessionsPerRemoteAddr) { return OnOpenResult.MAX_SESSIONS_PER_REMOTE_ADDR_EXCEEDED; } else { remoteAddressCounter.incrementAndGet(); } } } return OnOpenResult.SESSION_ALLOWED; }
@OnOpen public void onOpen(Session userSession) throws InterruptedException { String clientIp = ((TyrusSession)userSession).getRemoteAddr(); InetAddress identity; try { identity = InetAddress.getByName(clientIp); } catch (UnknownHostException e) { try { userSession.close(); } catch (IOException er) { return; } return; } WebsocketPeer.WebsocketSession session = localOpenSessions.putOpenSession(identity, userSession); Send<Bytestring> receiver = listener.newSession(session); receiveMap.put(userSession, receiver); }
@OnClose public void onClose(Session userSession, CloseReason reason) throws InterruptedException { String sessionIp = ((TyrusSession)userSession).getRemoteAddr(); InetAddress identity; try { identity = InetAddress.getByName(sessionIp); } catch (UnknownHostException er) { return; } try { userSession.close(); } catch (IOException e) { return; } localOpenSessions.remove(identity); localPeers.remove(identity); receiveMap.get(userSession).close(); receiveMap.remove(userSession); }