use of com.tvd12.ezyfoxserver.socket.EzyRequestQueue in project ezyfox-server by youngmonkeys.
the class EzySocketRequestHandler method handleEvent.
@Override
public void handleEvent() {
EzySocketRequest request = null;
try {
EzySession session = sessionTicketsQueue.take();
EzyRequestQueue requestQueue = getRequestQueue(session);
// noinspection SynchronizationOnLocalVariableOrMethodParameter
synchronized (requestQueue) {
request = requestQueue.take();
if (requestQueue.size() > 0) {
sessionTicketsQueue.add(session);
}
}
processRequest(request);
} catch (InterruptedException e) {
logger.info("{}-request-handler thread interrupted", getRequestType());
} catch (Throwable throwable) {
logger.warn("problems in {}-request-handler", getRequestType(), throwable);
} finally {
if (request != null) {
request.release();
}
}
}
use of com.tvd12.ezyfoxserver.socket.EzyRequestQueue in project ezyfox-server by youngmonkeys.
the class EzySessionTicketsRequestQueues method addRequest.
public boolean addRequest(EzySocketRequest request) {
EzyRequestQueue queue;
EzySessionTicketsQueue ticketsQueue;
EzySession session = request.getSession();
if (request.isSystemRequest()) {
ticketsQueue = systemQueue;
queue = session.getSystemRequestQueue();
} else {
ticketsQueue = extensionQueue;
queue = session.getExtensionRequestQueue();
}
boolean success;
// noinspection SynchronizationOnLocalVariableOrMethodParameter
synchronized (queue) {
boolean empty = queue.isEmpty();
success = queue.add(request);
if (empty && success) {
ticketsQueue.add(session);
}
}
return success;
}
use of com.tvd12.ezyfoxserver.socket.EzyRequestQueue in project ezyfox-server by youngmonkeys.
the class EzySocketRequestHandlerTest method test.
@Test
public void test() {
ExEzySocketRequestHandler handler = new ExEzySocketRequestHandler();
EzySocketDataHandlerGroupFetcher dataHandlerGroupFetcher = mock(EzySocketDataHandlerGroupFetcher.class);
EzySocketDataHandlerGroup handlerGroup = mock(EzySocketDataHandlerGroup.class);
when(dataHandlerGroupFetcher.getDataHandlerGroup(any(EzySession.class))).thenReturn(handlerGroup);
EzySession session = spy(EzyAbstractSession.class);
session.setActivated(true);
EzyRequestQueue requestQueue = new EzyNonBlockingRequestQueue();
when(session.getExtensionRequestQueue()).thenReturn(requestQueue);
EzyArray array = EzyEntityFactory.newArrayBuilder().append(10).build();
EzySocketRequest request = new EzySimpleSocketRequest(session, array);
EzySessionTicketsRequestQueues sessionTicketsRequestQueues = new EzySessionTicketsRequestQueues();
handler.setSessionTicketsQueue(sessionTicketsRequestQueues.getExtensionQueue());
sessionTicketsRequestQueues.addRequest(request);
handler.setDataHandlerGroupFetcher(dataHandlerGroupFetcher);
handler.handleEvent();
handler.destroy();
}
use of com.tvd12.ezyfoxserver.socket.EzyRequestQueue in project ezyfox-server by youngmonkeys.
the class EzySocketRequestHandlerTest method processRequestQueue0RemainTest.
@Test
public void processRequestQueue0RemainTest() {
// given
ExEzySocketRequestHandler handler = new ExEzySocketRequestHandler();
EzySocketDataHandlerGroup handlerGroup = mock(EzySocketDataHandlerGroup.class);
EzySocketDataHandlerGroupFetcher dataHandlerGroupFetcher = mock(EzySocketDataHandlerGroupFetcher.class);
when(dataHandlerGroupFetcher.getDataHandlerGroup(any(EzySession.class))).thenReturn(handlerGroup);
EzySession session = spy(EzyAbstractSession.class);
when(session.isActivated()).thenReturn(Boolean.TRUE);
EzyRequestQueue requestQueue = new EzyNonBlockingRequestQueue();
when(session.getExtensionRequestQueue()).thenReturn(requestQueue);
EzyArray array = EzyEntityFactory.newArrayBuilder().append(10).build();
EzySocketRequest request = new EzySimpleSocketRequest(session, array);
EzySessionTicketsRequestQueues sessionTicketsRequestQueues = new EzySessionTicketsRequestQueues();
handler.setSessionTicketsQueue(sessionTicketsRequestQueues.getExtensionQueue());
sessionTicketsRequestQueues.addRequest(request);
sessionTicketsRequestQueues.addRequest(request);
handler.setDataHandlerGroupFetcher(dataHandlerGroupFetcher);
// when
handler.handleEvent();
// then
Asserts.assertEquals(sessionTicketsRequestQueues.getExtensionQueue().size(), 1);
}
use of com.tvd12.ezyfoxserver.socket.EzyRequestQueue in project ezyfox-server by youngmonkeys.
the class EzySocketRequestHandlerTest method handleGroupNullCaseTest.
@Test
public void handleGroupNullCaseTest() {
ExEzySocketRequestHandler handler = new ExEzySocketRequestHandler();
EzySocketDataHandlerGroupFetcher dataHandlerGroupFetcher = mock(EzySocketDataHandlerGroupFetcher.class);
when(dataHandlerGroupFetcher.getDataHandlerGroup(any(EzySession.class))).thenReturn(null);
EzySession session = spy(EzyAbstractSession.class);
when(session.isActivated()).thenReturn(Boolean.TRUE);
EzyRequestQueue requestQueue = new EzyNonBlockingRequestQueue();
when(session.getExtensionRequestQueue()).thenReturn(requestQueue);
EzyArray array = EzyEntityFactory.newArrayBuilder().append(10).build();
EzySocketRequest request = new EzySimpleSocketRequest(session, array);
EzySessionTicketsRequestQueues sessionTicketsRequestQueues = new EzySessionTicketsRequestQueues();
handler.setSessionTicketsQueue(sessionTicketsRequestQueues.getExtensionQueue());
sessionTicketsRequestQueues.addRequest(request);
handler.setDataHandlerGroupFetcher(dataHandlerGroupFetcher);
handler.handleEvent();
}
Aggregations