/** * BigBlueButton open source conferencing system - http://www.bigbluebutton.org/ * * Copyright (c) 2012 BigBlueButton Inc. and by respective authors (see below). * * This program is free software; you can redistribute it and/or modify it under the * terms of the GNU Lesser General Public License as published by the Free Software * Foundation; either version 3.0 of the License, or (at your option) any later * version. * * BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License along * with BigBlueButton; if not, see <http://www.gnu.org/licenses/>. * */ package org.bigbluebutton.deskshare.server.socket; import java.io.IOException; import java.net.InetSocketAddress; import org.apache.mina.core.service.IoHandlerAdapter; import org.apache.mina.core.session.IdleStatus; import org.apache.mina.filter.codec.ProtocolCodecFilter; import org.apache.mina.transport.socket.nio.NioSocketAcceptor; import org.red5.logging.Red5LoggerFactory; import org.slf4j.Logger; public class DeskShareServer { final private Logger log = Red5LoggerFactory.getLogger(DeskShareServer.class, "deskshare"); private int port = 1270; private IoHandlerAdapter screenCaptureHandler; private NioSocketAcceptor acceptor; public void start() { acceptor = new NioSocketAcceptor(); acceptor.getFilterChain().addLast( "codec", new ProtocolCodecFilter(new ScreenCaptureProtocolCodecFactory())); acceptor.setHandler( screenCaptureHandler); acceptor.getSessionConfig().setIdleTime( IdleStatus.BOTH_IDLE, 10 ); acceptor.setReuseAddress(true); try { acceptor.bind( new InetSocketAddress(port) ); } catch (IOException e) { log.error("IOException while binding to port {}", port); } } public void setScreenCaptureHandler(IoHandlerAdapter screenCaptureHandler) { this.screenCaptureHandler = screenCaptureHandler; } public void stop() { acceptor.unbind(); acceptor.dispose(); } public void setPort(int port) { this.port = port; } }