GithubHelp home page GithubHelp logo

gserver's Introduction

Gserver

GServer implements a generic server, featuring thread pool management, simple logging, and multi-server management. See HttpServer in sample/xmlrpc.rb in the Ruby standard library for an example of GServer in action.

Installation

Add this line to your application's Gemfile:

gem 'gserver'

And then execute:

$ bundle

Or install it yourself as:

$ gem install gserver

Usage

Using GServer is simple. Below we implement a simple time server, run it, query it, and shut it down. Try this code in irb:

require 'gserver'

#
# A server that returns the time in seconds since 1970.
#
class TimeServer < GServer
  def initialize(port=10001, *args)
    super(port, *args)
  end
  def serve(io)
    io.puts(Time.now.to_i)
  end
end

# Run the server with logging enabled (it's a separate thread).
server = TimeServer.new
server.audit = true                  # Turn logging on.
server.start

Now, point your browser to http://localhost:10001 to see it working.

# See if it's still running.
GServer.in_service?(10001)           # -> true
server.stopped?                      # -> false

# Shut the server down gracefully.
server.shutdown

# Alternatively, stop it immediately.
GServer.stop(10001)
# or, of course, "server.stop".

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.

Contributing

  1. Fork it ( https://github.com/ruby/gserver/fork )
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request

gserver's People

Contributors

hsbt avatar olleolleolle avatar

Stargazers

Murdho Savila avatar Arin avatar Jeremy Clark avatar Rustam Ibragimov avatar Igor Zubkov avatar Tiago Guedes avatar Juanito Fatas avatar Erwin Kroon avatar Mitch Dempsey avatar James Mead avatar Alex Shemetovskiy avatar Vinicius CZB avatar Masato Ohba avatar Coolfix avatar Vladislav Andreev avatar Tobias Schäfer avatar Gareth Griffiths avatar OftenGuy avatar Fang Lu avatar ccmywish avatar  avatar Sergey Konotopov avatar Sai Ram Kunala avatar  avatar Aaron Covrig avatar Pierre Jambet avatar Liu Lantao avatar Aaron Cruz avatar  avatar Grzegorz Kopeć avatar OKAMURA Naoki aka nyarla / kalaclista avatar

Watchers

Yuki Yugui Sonoda avatar Koichi Sasada avatar Charles Oliver Nutter avatar  avatar Akira Matsuda avatar Kazuhiro NISHIYAMA avatar  avatar Nobuyoshi Nakada avatar Yusuke Endoh avatar nagachika avatar Takeyuki FUJIOKA avatar Sorah Fukumori avatar Masatoshi SEKI avatar Kentaro Goto avatar Hiroshi Nakamura avatar Jun Aruga avatar Soutaro Matsumoto avatar WATANABE Hiroaki avatar Masaya TARUI avatar Masaki Matsushita avatar Martin Bosslet avatar James Cloos avatar Kazuki Yamaguchi avatar Marcus Stollsteimer avatar Masataka Pocke Kuwabara avatar Kazuki Tanaka avatar Yuichiro Kaneko avatar Hiroya Fujinami avatar  avatar Rustam Ibragimov avatar

gserver's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.