/* * Copyright (C) 2016 NAUMEN. All rights reserved. * * This file may be distributed and/or modified under the terms of the * GNU General Public License version 2 as published by the Free Software * Foundation and appearing in the file LICENSE.GPL included in the * packaging of this file. * */ package ru.naumen.servacc.activechannel; import java.net.ServerSocket; import java.net.Socket; import ru.naumen.servacc.SocketUtils; import ru.naumen.servacc.activechannel.i.IActiveChannelThrough; /** * @author vtarasov * @since 16.02.16 */ public abstract class SocketActiveChannel extends ActiveChannel { private Socket socket; private ServerSocket server; public SocketActiveChannel(IActiveChannelThrough parent, ActiveChannelsRegistry registry, Socket socket, ServerSocket server) { super(parent, registry); this.socket = socket; this.server = server; } public SocketActiveChannel(IActiveChannelThrough parent, ActiveChannelsRegistry registry, Socket socket) { this(parent, registry, socket, null); } public SocketActiveChannel(IActiveChannelThrough parent, ActiveChannelsRegistry registry, ServerSocket server) { this(parent, registry, null, server); } @Override public void close() { super.close(); // TODO: Close socket/server } protected Socket getSocket() { return socket; } protected ServerSocket getServer() { return server; } @Override public boolean isActive() { if (socket != null && !SocketUtils.isPortFree(socket.getPort())) { return true; } if (server != null && !SocketUtils.isPortFree(server.getLocalPort())) { return true; } return false; } }