Agnos.Servers.LibraryModeServer.Serve C# (CSharp) Method

Serve() public method

public Serve ( ) : void
return void
        public override void Serve()
        {
            TcpListener listener = ((SocketTransportFactory)transportFactory).listener;
            IPEndPoint ep = (IPEndPoint)listener.LocalEndpoint;

            System.Console.Out.Write("AGNOS\n{0}\n{1}\n", ep.Address, ep.Port);
            System.Console.Out.Flush();
            // XXX: i can't seem to find a way to actually close the underlying
            // filedesc, so we have to use readline() instead of read()
            // because read() will block indefinitely
            System.Console.Out.Close();
            ITransport transport = transportFactory.Accept();
            transportFactory.Close();

            Protocol.BaseProcessor processor = processorFactory.Create(transport);
            handleClient(processor);
        }

Usage Example

Example #1
0
        public void Main(string[] args)
        {
            Dictionary <string, object> options = parse_args(new Dictionary <string, ArgSpec> {
                { "-m", new ArgSpec {
                      name = "mode",
                      type = delegate(string val) {
                          val = val.ToLower();
                          if (val == "lib" || val == "library")
                          {
                              return(ServingMode.LIB);
                          }
                          else if (val == "simple")
                          {
                              return(ServingMode.SIMPLE);
                          }
                          else if (val == "threaded")
                          {
                              return(ServingMode.THREADED);
                          }
                          else
                          {
                              throw new ArgumentException("invalid mode: " + val);
                          }
                      },
                      defaultvalue = ServingMode.SIMPLE,
                  } },
                { "-h", new ArgSpec {
                      name         = "host",
                      type         = delegate(string val) { return(val); },
                      defaultvalue = "127.0.0.1",
                  } },
                { "-p", new ArgSpec {
                      name         = "port",
                      type         = delegate(string val) { return(Int32.Parse(val)); },
                      defaultvalue = 0,
                  } },
            },
                                                             args);

            ServingMode mode   = (ServingMode)options["mode"];
            BaseServer  server = null;

            switch (mode)
            {
            case ServingMode.SIMPLE:
                if ((int)options["port"] == 0)
                {
                    throw new ArgumentException("simple mode requires specifying a port");
                }
                server = new SimpleServer(processorFactory,
                                          new SocketTransportFactory((string)options["host"], (int)options["port"]));
                break;

            case ServingMode.THREADED:
                if ((int)options["port"] == 0)
                {
                    throw new ArgumentException("threaded mode requires specifying a port");
                }
                server = new ThreadedServer(processorFactory,
                                            new SocketTransportFactory((string)options["host"], (int)options["port"]));
                break;

            case ServingMode.LIB:
                server = new LibraryModeServer(processorFactory,
                                               new SocketTransportFactory((string)options["host"], (int)options["port"]));
                break;

            default:
                throw new ArgumentException("invalid mode: " + mode);
            }

            server.Serve();
        }
All Usage Examples Of Agnos.Servers.LibraryModeServer::Serve