Changeset 648


Ignore:
Timestamp:
12/20/13 12:38:19 (11 years ago)
Author:
davidb
Message:

Refactored so server can be started from the command line, in addition to part of a graphical Expeditee run

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/expeditee/network/FrameShare.java

    r502 r648  
    3939        private int _port = Peer.DEFAULT_PORT;
    4040
    41         public static void init(Frame settingsFrame) {
    42                 if (disableNetworking || settingsFrame == null)
    43                         return;
    44 
    45                 if (_theSession == null)
    46                         _theSession = new FrameShare(settingsFrame);
    47         }
    48 
    49         private FrameShare(Frame settingsFrame) {
     41
     42        private void startServers() throws IOException
     43        {
     44            _servers.add(new FrameServer(_port));
     45            _servers.add(new FrameSaver(_port));
     46            _servers.add(new MessageReciever(_port));
     47            _servers.add(new InfServer(_port));
     48            _servers.add(new InfUpdate(_port));
     49
     50        }
     51
     52        private FrameShare() {
    5053                _peers = new HashMap<String, Peer>();
     54        }
     55
     56        private FrameShare(int port) {
     57                this();
     58                _port = port;
     59
     60                try {
     61                    startServers();
     62                   
     63                } catch (Exception e) {
     64                    e.printStackTrace();
     65                    System.err.println("Could not start servers [port: "
     66                                       + port + "]");
     67                }
     68
     69        }
     70
     71
     72        private FrameShare(Frame settingsFrame)
     73        {
     74                this();
    5175
    5276                // Set the settings
     
    6690                                        MessageBay.displayMessage("Starting Expeditee Server on port: " + _port);
    6791                                       
    68                                         _servers.add(new FrameServer(_port));
    69                                         _servers.add(new FrameSaver(_port));
    70                                         _servers.add(new MessageReciever(_port));
    71                                         _servers.add(new InfServer(_port));
    72                                         _servers.add(new InfUpdate(_port));
     92                                        startServers();
    7393                                } catch (Exception e) {
    7494                                        e.printStackTrace();
     
    326346                return result;
    327347        }
     348
     349        public static void init(Frame settingsFrame) {
     350                if (disableNetworking || settingsFrame == null)
     351                        return;
     352
     353                if (_theSession == null)
     354                        _theSession = new FrameShare(settingsFrame);
     355        }
     356
     357        public static void init(int port) {
     358
     359                if (_theSession == null) {
     360                        _theSession = new FrameShare(port);
     361                }
     362        }
     363
     364
     365        /**
     366         * Start a server running on the port number supplied on the command line
     367         *
     368         * @param args
     369         */
     370        public static void main(String[] args) {
     371
     372            if (args.length != 1) {
     373
     374                // Work out the 'program name' (i.e. this class), but done in a general
     375                //   way in case class name is changed at a later date
     376                StackTraceElement[] stack = Thread.currentThread ().getStackTrace ();
     377                StackTraceElement main = stack[stack.length - 1];
     378                String mainClass = main.getClassName ();
     379
     380                System.err.println("Usage: java " + mainClass + " port-number");
     381                System.exit(1);
     382            }
     383           
     384            String port_str = args[0];
     385
     386            try {
     387                int port = Integer.parseInt(port_str);
     388
     389                init(port);
     390            }
     391            catch (Exception e) {
     392                e.printStackTrace();
     393                System.exit(2);
     394            }
     395
     396        }
     397
    328398}
Note: See TracChangeset for help on using the changeset viewer.