Package com.bbn.openmap.layer.link

Source Code of com.bbn.openmap.layer.link.LinkServerStarter

// **********************************************************************
//
// <copyright>
//
//  BBN Technologies
//  10 Moulton Street
//  Cambridge, MA 02138
//  (617) 873-8000
//
//  Copyright (C) BBNT Solutions LLC. All rights reserved.
//
// </copyright>
// **********************************************************************
//
// $Source: /cvs/distapps/openmap/src/openmap/com/bbn/openmap/layer/link/LinkServerStarter.java,v $
// $RCSfile: LinkServerStarter.java,v $
// $Revision: 1.2.2.1 $
// $Date: 2004/10/14 18:27:08 $
// $Author: dietrick $
//
// **********************************************************************

package com.bbn.openmap.layer.link;

import java.net.ServerSocket;
import java.net.Socket;

/**
* The LinkServerStarter is the object that listens for Link clients
* on a specific port. If a Link client contacts it, it uses the
* startNewServer method to create a LinkServer to serve the client on
* it's own thread. If you want to create a new type of LinkServer,
* you should also create a new LinkServerStarter to launch it
* properly. Generally, the main() and startNewServer() methods are
* the only thing you would need to modify.
*/
public class LinkServerStarter {

    /** Default port that the server starter listens to. */
    public static final int DEFAULT_PORT = 3031;
    /** The port being listened to. */
    protected int serverPort;

    /** Starts the LinkServerStarter listening to the default port. */
    public LinkServerStarter() {
        serverPort = DEFAULT_PORT;
    }

    /** Starts the LinkServerStarter listening to the specified port. */
    public LinkServerStarter(int port) {
        serverPort = port;
    }

    /** Set the port to listen for a connection request. */
    public void setPort(int port) {
        serverPort = port;
    }

    /** Get the port that is being listened to. */
    public int getPort() {
        return serverPort;
    }

    /**
     * The method of the parent server that is listening for clients.
     * When a contact is made, a child thread is spawned off to handle
     * the client.
     */
    public void run() {
        try {
            ServerSocket serverSocket = new ServerSocket(serverPort);
            Socket socket;
            System.out.println("LinkServerStarter: running on port "
                    + serverPort);

            while (true) {
                socket = serverSocket.accept();
                System.out.println("LinkServer: fielding connection");
                ((Thread) startNewServer(socket)).start();
            }

        } catch (java.io.IOException ioe) {
            System.err.println("LinkServer: IOException while running:");
            System.err.println(ioe);
        }
    }

    /**
     * This method gets called to create a new server to handle a new
     * connection. Thread.start() will get called on the returned
     * thread. This method should always get overridden.
     *
     * @param sock the socket connection
     * @return a thread that will get started
     * @see java.lang.Thread#start()
     */
    public Thread startNewServer(Socket sock) {
        return new LinkServer(sock);
    }

    /**
     * Start up the server. This is the method to change if you want
     * to customize how the LinkServer will handle clients - port,
     * arguments, etc.
     */
    public static void main(String[] argv) {

        int pnumber = -1;

        com.bbn.openmap.util.Debug.init();

        for (int i = 0; i < argv.length; i++) {
            if (argv[i].equals("-port") && argv.length > i + 1) {
                try {
                    pnumber = Integer.parseInt(argv[i + 1]);
                    break;
                } catch (NumberFormatException e) {
                    pnumber = -1;
                }
            }
        }

        if (pnumber < 0) {
            System.out.println("Need to start the server with a port number.");
            System.out.println("Usage: java com.bbn.openmap.layer.link.LinkServerStarter -port <port number>");
            System.exit(0);
        }

        System.out.println("LinkServerStarter: Starting up on port " + pnumber
                + ".");
        LinkServerStarter serverStarter = new LinkServerStarter(pnumber);
        while (true) {
            serverStarter.run();
        }
    }

}
TOP

Related Classes of com.bbn.openmap.layer.link.LinkServerStarter

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.