Class: Citrus::Server::Server
- Inherits:
-
Object
- Object
- Citrus::Server::Server
- Includes:
- Utils::PathUtil, CitrusLoader
- Defined in:
- lib/citrus/server/server.rb
Overview
Server
Instance Method Summary collapse
-
#add_crons(crons) ⇒ Object
Add crons at runtime.
-
#after_start ⇒ Object
After the sever start.
-
#global_handle(msg, session, &block) ⇒ Object
Global handler.
-
#handle(msg, session, &block) ⇒ Object
Handle request.
-
#initialize(app) ⇒ Server
constructor
Create a new server.
-
#remove_crons(crons) ⇒ Object
Remove crons at runtime.
-
#start ⇒ Object
Start the server.
-
#stop ⇒ Object
Stop the server.
Methods included from Utils::PathUtil
#get_handler_path, #get_sys_remote_path, #get_user_remote_path, #remote_path_record
Constructor Details
#initialize(app) ⇒ Server
Create a new server
24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/citrus/server/server.rb', line 24 def initialize app @app = app @global_filter_service = nil @filter_service = nil @handler_service = nil @crons = [] @jobs = {} @state = :state_inited @app.on(:add_crons) { |crons| add_crons crons } @app.on(:remove_crons) { |crons| remove_crons crons } end |
Instance Method Details
#add_crons(crons) ⇒ Object
Add crons at runtime
113 114 |
# File 'lib/citrus/server/server.rb', line 113 def add_crons crons end |
#after_start ⇒ Object
After the sever start
51 52 |
# File 'lib/citrus/server/server.rb', line 51 def after_start end |
#global_handle(msg, session, &block) ⇒ Object
Global handler
63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 |
# File 'lib/citrus/server/server.rb', line 63 def global_handle msg, session, &block unless @state == :state_started block_given? and yield Exception.new 'server not started' return end route_record = parse_route msg['route'] unless route_record block_given? and yield Exception.new 'meet unknown route message' return end dispatch = Proc.new { |err, resp, args| if err handle_error(true, err, msg, session, resp, args) { |err, resp, args| response true, err, msg, session, resp, args, &block } return end unless @app.server_type == route_record['server_type'] do_forward(msg, session, route_record) { |err, resp, args| response true, err, msg, session, resp, args, &block } else do_handle(msg, session, route_record) { |err, resp, args| response true, err, msg, session, resp, args, &block } end } before_filter true, msg, session, &dispatch end |
#handle(msg, session, &block) ⇒ Object
Handle request
100 101 102 103 104 105 106 107 108 |
# File 'lib/citrus/server/server.rb', line 100 def handle msg, session, &block unless @state == :state_started block_given? and yield Exception.new 'server not started' return end route_record = parse_route msg['route'] do_handle msg, session, route_record, &block end |
#remove_crons(crons) ⇒ Object
Remove crons at runtime
119 120 |
# File 'lib/citrus/server/server.rb', line 119 def remove_crons crons end |
#start ⇒ Object
Start the server
40 41 42 43 44 45 46 47 48 |
# File 'lib/citrus/server/server.rb', line 40 def start return unless @state == :state_inited @global_filter_service = init_filter true @filter_service = init_filter false @handler_service = init_handler @state = :state_started end |
#stop ⇒ Object
Stop the server
55 56 57 |
# File 'lib/citrus/server/server.rb', line 55 def stop @state = :state_stoped end |