class SocketIoMemoryAdapter extends SocketIoAdapter {

    @Override
    public synchronized void remove(String room, SocketIoSocket socket) throws IllegalArgumentException {
        if (room == null) {
            throw new IllegalArgumentException("room must not be null.");
        }
        if (socket == null) {
            throw new IllegalArgumentException("socket must not be null.");
        }

        if (mRoomSockets.containsKey(room)) {
            final Set<SocketIoSocket> roomSockets = mRoomSockets.get(room);

            roomSockets.remove(socket);
            if (roomSockets.size() == 0) {
                mRoomSockets.remove(room);
            }
        }
        if (mSocketRooms.containsKey(socket.getId())) {
            final Set<String> socketRooms = mSocketRooms.get(socket.getId());

            socketRooms.remove(room);
            if (socketRooms.size() == 0) {
                mSocketRooms.remove(socket.getId());
            }
        }
    }

    private  SocketIoMemoryAdapter(SocketIoNamespace namespace);

}