Search in sources :

Example 1 with EzyHandlerGroup

use of com.tvd12.ezyfoxserver.nio.handler.EzyHandlerGroup in project ezyfox-server by youngmonkeys.

the class EzyHandlerGroupManagerImplTest method test.

@Test
public void test() {
    EzyNioSessionManager sessionManager = (EzyNioSessionManager) EzyNioSessionManagerImpl.builder().maxRequestPerSecond(new EzySimpleSessionManagementSetting.EzySimpleMaxRequestPerSecond()).tokenGenerator(new EzySimpleSessionTokenGenerator()).build();
    ExEzyByteToObjectDecoder decoder = new ExEzyByteToObjectDecoder();
    EzyCodecFactory codecFactory = mock(EzyCodecFactory.class);
    when(codecFactory.newDecoder(any())).thenReturn(decoder);
    ExecutorService statsThreadPool = EzyExecutors.newSingleThreadExecutor("stats");
    EzySocketStreamQueue streamQueue = new EzyBlockingSocketStreamQueue();
    EzySocketDisconnectionQueue disconnectionQueue = new EzyBlockingSocketDisconnectionQueue();
    EzySessionTicketsRequestQueues sessionTicketsRequestQueues = new EzySessionTicketsRequestQueues();
    EzySimpleSettings settings = new EzySimpleSettings();
    EzySimpleStreamingSetting streaming = settings.getStreaming();
    streaming.setEnable(true);
    EzySimpleServer server = new EzySimpleServer();
    server.setSettings(settings);
    server.setSessionManager(sessionManager);
    EzySimpleServerContext serverContext = new EzySimpleServerContext();
    serverContext.setServer(server);
    serverContext.init();
    EzySessionTicketsQueue socketSessionTicketsQueue = new EzyBlockingSessionTicketsQueue();
    EzySessionTicketsQueue webSocketSessionTicketsQueue = new EzyBlockingSessionTicketsQueue();
    EzyStatistics statistics = new EzySimpleStatistics();
    EzyHandlerGroupBuilderFactory handlerGroupBuilderFactory = EzyHandlerGroupBuilderFactoryImpl.builder().statistics(statistics).statsThreadPool(statsThreadPool).streamQueue(streamQueue).disconnectionQueue(disconnectionQueue).codecFactory(codecFactory).serverContext(serverContext).socketSessionTicketsQueue(socketSessionTicketsQueue).webSocketSessionTicketsQueue(webSocketSessionTicketsQueue).socketSessionTicketsQueue(webSocketSessionTicketsQueue).sessionTicketsRequestQueues(sessionTicketsRequestQueues).build();
    EzyHandlerGroupManager handlerGroupManager = EzyHandlerGroupManagerImpl.builder().handlerGroupBuilderFactory(handlerGroupBuilderFactory).build();
    handlerGroupManager.removeHandlerGroup(null);
    EzySession session1 = mock(EzyAbstractSession.class);
    handlerGroupManager.removeHandlerGroup(session1);
    EzySession session2 = mock(EzyAbstractSession.class);
    EzyChannel channel2 = mock(EzyChannel.class);
    when(session2.getChannel()).thenReturn(channel2);
    handlerGroupManager.removeHandlerGroup(session2);
    EzyChannel channel3 = mock(EzyChannel.class);
    Session connection3 = mock(Session.class);
    when(channel3.getConnection()).thenReturn(connection3);
    EzyHandlerGroup handlerGroup3 = handlerGroupManager.newHandlerGroup(channel3, EzyConnectionType.WEBSOCKET);
    EzySession session3 = mock(EzyAbstractSession.class);
    when(session3.getChannel()).thenReturn(channel3);
    assert handlerGroupManager.getDataHandlerGroup(null) == null;
    assert handlerGroupManager.getDataHandlerGroup(session1) == null;
    assert handlerGroupManager.getDataHandlerGroup(session2) == null;
    assert handlerGroupManager.getWriterGroup(session3) == handlerGroup3;
    InetSocketAddress udpAddress = new InetSocketAddress("127.0.0.1", 12345);
    handlerGroupManager.mapSocketChannel(udpAddress, session3);
    assert handlerGroupManager.getSocketChannel(udpAddress) != null;
    handlerGroupManager.unmapHandlerGroup(udpAddress);
    handlerGroupManager.removeHandlerGroup(session3);
    handlerGroupManager.destroy();
}
Also used : EzyHandlerGroupBuilderFactory(com.tvd12.ezyfoxserver.nio.factory.EzyHandlerGroupBuilderFactory) EzySimpleServerContext(com.tvd12.ezyfoxserver.context.EzySimpleServerContext) InetSocketAddress(java.net.InetSocketAddress) EzyStatistics(com.tvd12.ezyfoxserver.statistics.EzyStatistics) EzyHandlerGroup(com.tvd12.ezyfoxserver.nio.handler.EzyHandlerGroup) EzySimpleServer(com.tvd12.ezyfoxserver.EzySimpleServer) EzySimpleStreamingSetting(com.tvd12.ezyfoxserver.setting.EzySimpleStreamingSetting) EzyNioSessionManager(com.tvd12.ezyfoxserver.nio.wrapper.EzyNioSessionManager) EzyCodecFactory(com.tvd12.ezyfoxserver.codec.EzyCodecFactory) EzySimpleSettings(com.tvd12.ezyfoxserver.setting.EzySimpleSettings) EzySession(com.tvd12.ezyfoxserver.entity.EzySession) EzyHandlerGroupManager(com.tvd12.ezyfoxserver.nio.wrapper.EzyHandlerGroupManager) ExecutorService(java.util.concurrent.ExecutorService) EzySimpleStatistics(com.tvd12.ezyfoxserver.statistics.EzySimpleStatistics) EzySimpleSessionTokenGenerator(com.tvd12.ezyfoxserver.service.impl.EzySimpleSessionTokenGenerator) EzySession(com.tvd12.ezyfoxserver.entity.EzySession) Session(org.eclipse.jetty.websocket.api.Session) EzyAbstractSession(com.tvd12.ezyfoxserver.entity.EzyAbstractSession) Test(org.testng.annotations.Test) BaseTest(com.tvd12.test.base.BaseTest)

Example 2 with EzyHandlerGroup

use of com.tvd12.ezyfoxserver.nio.handler.EzyHandlerGroup in project ezyfox-server by youngmonkeys.

the class EzyHandlerGroupManagerImpl method newHandlerGroup.

@SuppressWarnings("unchecked")
@Override
public <T extends EzyHandlerGroup> T newHandlerGroup(EzyChannel channel, EzyConnectionType type) {
    EzyHandlerGroup group = handlerGroupBuilderFactory.newBuilder(channel, type).build();
    groupsByConnection.put(channel.getConnection(), group);
    return (T) group;
}
Also used : EzyHandlerGroup(com.tvd12.ezyfoxserver.nio.handler.EzyHandlerGroup)

Example 3 with EzyHandlerGroup

use of com.tvd12.ezyfoxserver.nio.handler.EzyHandlerGroup in project ezyfox-server by youngmonkeys.

the class EzyHandlerGroupManagerImpl method getHandlerGroup.

private EzyHandlerGroup getHandlerGroup(EzySession session) {
    if (session == null) {
        return null;
    }
    EzyChannel channel = session.getChannel();
    if (channel == null) {
        return null;
    }
    Object connection = channel.getConnection();
    if (connection == null) {
        return null;
    }
    return groupsByConnection.get(connection);
}
Also used : EzyChannel(com.tvd12.ezyfoxserver.socket.EzyChannel)

Example 4 with EzyHandlerGroup

use of com.tvd12.ezyfoxserver.nio.handler.EzyHandlerGroup in project ezyfox-server by youngmonkeys.

the class EzyHandlerGroupManagerImpl method removeHandlerGroup.

@Override
public EzySocketDataHandlerGroup removeHandlerGroup(EzySession session) {
    if (session == null) {
        return null;
    }
    EzyChannel channel = session.getChannel();
    if (channel == null) {
        return null;
    }
    Object connection = channel.getConnection();
    if (connection == null) {
        return null;
    }
    EzyHandlerGroup group = groupsByConnection.remove(connection);
    SocketAddress udpClientAddress = session.getUdpClientAddress();
    if (udpClientAddress != null) {
        socketChannelByUdpAddress.remove(udpClientAddress);
    }
    logger.debug("remove handler group: {} with session: {}, " + "groupsByConnection.size: {}, socketChannelByUdpAddress.size: {}", group, session, groupsByConnection.size(), socketChannelByUdpAddress.size());
    return group;
}
Also used : EzyChannel(com.tvd12.ezyfoxserver.socket.EzyChannel) SocketAddress(java.net.SocketAddress) EzyHandlerGroup(com.tvd12.ezyfoxserver.nio.handler.EzyHandlerGroup)

Aggregations

EzyHandlerGroup (com.tvd12.ezyfoxserver.nio.handler.EzyHandlerGroup)3 EzyChannel (com.tvd12.ezyfoxserver.socket.EzyChannel)2 EzySimpleServer (com.tvd12.ezyfoxserver.EzySimpleServer)1 EzyCodecFactory (com.tvd12.ezyfoxserver.codec.EzyCodecFactory)1 EzySimpleServerContext (com.tvd12.ezyfoxserver.context.EzySimpleServerContext)1 EzyAbstractSession (com.tvd12.ezyfoxserver.entity.EzyAbstractSession)1 EzySession (com.tvd12.ezyfoxserver.entity.EzySession)1 EzyHandlerGroupBuilderFactory (com.tvd12.ezyfoxserver.nio.factory.EzyHandlerGroupBuilderFactory)1 EzyHandlerGroupManager (com.tvd12.ezyfoxserver.nio.wrapper.EzyHandlerGroupManager)1 EzyNioSessionManager (com.tvd12.ezyfoxserver.nio.wrapper.EzyNioSessionManager)1 EzySimpleSessionTokenGenerator (com.tvd12.ezyfoxserver.service.impl.EzySimpleSessionTokenGenerator)1 EzySimpleSettings (com.tvd12.ezyfoxserver.setting.EzySimpleSettings)1 EzySimpleStreamingSetting (com.tvd12.ezyfoxserver.setting.EzySimpleStreamingSetting)1 EzySimpleStatistics (com.tvd12.ezyfoxserver.statistics.EzySimpleStatistics)1 EzyStatistics (com.tvd12.ezyfoxserver.statistics.EzyStatistics)1 BaseTest (com.tvd12.test.base.BaseTest)1 InetSocketAddress (java.net.InetSocketAddress)1 SocketAddress (java.net.SocketAddress)1 ExecutorService (java.util.concurrent.ExecutorService)1 Session (org.eclipse.jetty.websocket.api.Session)1