Package org.apache.vysper.xmpp.server

Examples of org.apache.vysper.xmpp.server.SessionContext


    final static Logger logger = LoggerFactory.getLogger(LocalDeliveryUtils.class);

    public static void relayToResourceDirectly(ResourceRegistry registry, String resource, Stanza push) {
        try {
            SessionContext targetContext = registry.getSessionContext(resource);
            if (targetContext == null) return;
            targetContext.getResponseWriter().write(push);
        } catch (RuntimeException e) {
            logger.warn("failed to directly relay stanza to resource " + resource, e);
        }
    }
View Full Code Here


    private Stanza enterRoom(Entity occupantJid, Entity roomJid) throws ProtocolException {
        return enterRoom(occupantJid, roomJid, null, null, false);
    }
   
    private Stanza enterRoom(Entity occupantJid, Entity roomJid, String password, History history, boolean oldProtocol) throws ProtocolException {
        SessionContext userSessionContext;
        if(occupantJid.equals(OCCUPANT1_JID)) {
            userSessionContext = sessionContext;
        } else {
            userSessionContext = sessionContext2;
        }
       
        StanzaBuilder stanzaBuilder = StanzaBuilder.createPresenceStanza(occupantJid, roomJid, null, null, null, null);
        if(!oldProtocol) {
          List<XMLElement> xInnerElms = new ArrayList<XMLElement>();
            if(password != null) {
              xInnerElms.add(new Password(password));
            }
            if(history != null) {
              xInnerElms.add(history);
            }
            stanzaBuilder.addPreparedElement(new X(xInnerElms));
        }
        Stanza presenceStanza = stanzaBuilder.build();
        ResponseStanzaContainer container = handler.execute(presenceStanza, userSessionContext.getServerRuntimeContext(), true, userSessionContext, null);
        if(container != null) {
            return container.getResponseStanza();
        } else {
            return null;
        }
View Full Code Here

    public boolean unbindResource(String resourceId) {
        boolean noResourceRemainsForSession = false;
    synchronized (boundResources) {
      synchronized (entityResources) {
          synchronized (sessionResources) {
                    SessionContext sessionContext = getSessionContext(resourceId);

                    // remove from entity's list of resources
                    List<String> resourceListForEntity = getResourceList(sessionContext.getInitiatingEntity());
                    resourceListForEntity.remove(resourceId);
                    if (resourceListForEntity.isEmpty()) entityResources.remove(sessionContext.getInitiatingEntity());

                    // remove from session's list of resources
                    List<String> resourceListForSession = sessionResources.get(sessionContext);
                    resourceListForSession.remove(resourceId);
                    noResourceRemainsForSession = resourceListForSession.isEmpty();
View Full Code Here

            messageReceivedNoStanza(ioSession, message);
            return;
        }

        Stanza stanza = (Stanza) message;
        SessionContext session = extractSession(ioSession);
        SessionStateHolder stateHolder = (SessionStateHolder) ioSession.getAttribute(ATTRIBUTE_VYSPER_SESSIONSTATEHOLDER);

        serverRuntimeContext.getStanzaProcessor().processStanza(serverRuntimeContext, session, stanza, stateHolder);
    }
View Full Code Here

        serverRuntimeContext.getStanzaProcessor().processStanza(serverRuntimeContext, session, stanza, stateHolder);
    }

    private void messageReceivedNoStanza(IoSession ioSession, Object message) {
        if (message == SslFilter.SESSION_SECURED) {
            SessionContext session = extractSession(ioSession);
            SessionStateHolder stateHolder = (SessionStateHolder) ioSession.getAttribute(ATTRIBUTE_VYSPER_SESSIONSTATEHOLDER);
            serverRuntimeContext.getStanzaProcessor().processTLSEstablished(session, stateHolder);
            return;
        } else if (message == SslFilter.SESSION_UNSECURED) {
            // TODO
View Full Code Here

        // TODO implement
    }

    public void sessionCreated(IoSession ioSession) throws Exception {
        SessionStateHolder stateHolder = new SessionStateHolder();
        SessionContext sessionContext = new MinaBackedSessionContext(serverRuntimeContext, stateHolder, ioSession);
        ioSession.setAttribute(ATTRIBUTE_VYSPER_SESSION, sessionContext);
        ioSession.setAttribute(ATTRIBUTE_VYSPER_SESSIONSTATEHOLDER, stateHolder);
    }
View Full Code Here

    public void sessionOpened(IoSession ioSession) throws Exception {
        logger.info("new session from {} has been opened", ioSession.getRemoteAddress());
    }

    public void sessionClosed(IoSession ioSession) throws Exception {
        SessionContext sessionContext = extractSession(ioSession);
        String sessionId = "UNKNOWN";
        if(sessionContext != null) {
            sessionId = sessionContext.getSessionId();
            sessionContext.endSession(SessionContext.SessionTerminationCause.CONNECTION_ABORT);
        }
        logger.info("session {} has been closed", sessionId);
    }
View Full Code Here

        assertTrue(sessionList.contains(sessionContext1));
        assertTrue(sessionList.contains(sessionContext2));

        List<SessionContext> highestPrioSessions = resourceRegistry.getHighestPrioSessions(entity, null);
        assertEquals(1, highestPrioSessions.size());
        SessionContext highestPrioSession = highestPrioSessions.get(0);
        assertSame(resourceRegistry.getSessionContext(resourceId2), highestPrioSession);

        resourceRegistry.setResourcePriority(resourceId1, 2); // make this highes prio
        highestPrioSessions = resourceRegistry.getHighestPrioSessions(entity, null);
        assertEquals(1, highestPrioSessions.size());
View Full Code Here

        assertTrue(sessionList.contains(sessionContext1));
        assertTrue(sessionList.contains(sessionContext2));

        List<SessionContext> highestPrioSessions = resourceRegistry.getHighestPrioSessions(entity, null);
        assertEquals(1, highestPrioSessions.size());
        SessionContext highestPrioSession = highestPrioSessions.get(0);
        assertSame(resourceRegistry.getSessionContext(resourceId2), highestPrioSession);

        resourceRegistry.setResourcePriority(resourceId1, 2); // make this highes prio
        highestPrioSessions = resourceRegistry.getHighestPrioSessions(entity, null);
        assertEquals(1, highestPrioSessions.size());
View Full Code Here

     * @param resource receiving resource ID
     * @param push stanza to be pushed
     */
    public static void relayToResourceDirectly(ResourceRegistry registry, String resource, Stanza push) {
        try {
            SessionContext targetContext = registry.getSessionContext(resource);
            if (targetContext == null)
                return;
            targetContext.getResponseWriter().write(push);
        } catch (RuntimeException e) {
            logger.warn("failed to directly relay stanza to resource " + resource, e);
        }
    }
View Full Code Here

TOP

Related Classes of org.apache.vysper.xmpp.server.SessionContext

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.