1 /** 2 * Logback: the reliable, generic, fast and flexible logging framework. 3 * Copyright (C) 1999-2015, QOS.ch. All rights reserved. 4 * 5 * This program and the accompanying materials are dual-licensed under 6 * either the terms of the Eclipse Public License v1.0 as published by 7 * the Eclipse Foundation 8 * 9 * or (per the licensee's choosing) 10 * 11 * under the terms of the GNU Lesser General Public License version 2.1 12 * as published by the Free Software Foundation. 13 */ 14 package ch.qos.logback.core.net.server; 15 16 import java.io.Serializable; 17 import java.util.concurrent.ArrayBlockingQueue; 18 import java.util.concurrent.Executor; 19 20 /** 21 * A {@link ServerRunner} that listens for connections from remote receiver 22 * component clients and delivers logging events to all connected clients. 23 * 24 * @author Carl Harris 25 */ 26 class RemoteReceiverServerRunner extends ConcurrentServerRunner<RemoteReceiverClient> { 27 28 private final int clientQueueSize; 29 30 /** 31 * Constructs a new server runner. 32 * 33 * @param listener the listener from which the server will accept new clients 34 * @param executor that will be used to execute asynchronous tasks on behalf of 35 * the runner. 36 * @param queueSize size of the event queue that will be maintained for each 37 * client 38 */ 39 public RemoteReceiverServerRunner(ServerListener<RemoteReceiverClient> listener, Executor executor, 40 int clientQueueSize) { 41 super(listener, executor); 42 this.clientQueueSize = clientQueueSize; 43 } 44 45 /** 46 * {@inheritDoc} 47 */ 48 @Override 49 protected boolean configureClient(RemoteReceiverClient client) { 50 client.setContext(getContext()); 51 client.setQueue(new ArrayBlockingQueue<Serializable>(clientQueueSize)); 52 return true; 53 } 54 55 }