Class: Falcon::Service::Server

Inherits:
Async::Service::ManagedService
  • Object
show all
Defined in:
lib/falcon/service/server.rb

Instance Method Summary collapse

Constructor Details

#initializeServer

Returns a new instance of Server.



16
17
18
19
20
# File 'lib/falcon/service/server.rb', line 16

def initialize(...)
	super
	
	@bound_endpoint = nil
end

Instance Method Details

#run(instance, evaluator) ⇒ Object

Run the service logic.



40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/falcon/service/server.rb', line 40

def run(instance, evaluator)
	if evaluator.key?(:make_supervised_worker)
		Console.warn(self, "Async::Container::Supervisor is replaced by Async::Services::Supervisor, please update your service definition.")
		
		evaluator.make_supervised_worker(instance).run
	end
	
	server = evaluator.make_server(@bound_endpoint)
	
	Async do |task|
		server.run
		
		task.children.each(&:wait)
	end
	
	server
end

#startObject

Prepare the bound endpoint for the server.



23
24
25
26
27
28
29
30
31
32
33
# File 'lib/falcon/service/server.rb', line 23

def start
	@endpoint = @evaluator.endpoint
	
	Sync do
		@bound_endpoint = @endpoint.bound
	end
	
	Console.logger.info(self) {"Starting #{self.name} on #{@endpoint}"}
	
	super
end

#stopObject

Close the bound endpoint.



69
70
71
72
73
74
75
76
77
78
# File 'lib/falcon/service/server.rb', line 69

def stop(...)
	if @bound_endpoint
		@bound_endpoint.close
		@bound_endpoint = nil
	end
	
	@endpoint = nil
	
	super
end