Ocean server - lapis25/study-ocean GitHub Wiki
run
$self->initialize;
$self->start;
$self->wait;
$self->finalize;
initialize
-
$self->{_stream_manager}->set_delegate($self);
-
$self->{_context}->set_delegate($self);
-
$self->{_timer}->set_delegate($self);
-
$self->{_listener}->set_delegate($self);
-
$self->{_signal_handler}->set_delegate($self);
-
$self->{_context}->initialize();
-
$self->{_daemonizer}->initialize();
start
-
$self->{_exit_guard} = AE::cv;
-
$self->{_exit_guard}->begin();#AE::cv
-
$self->{_listener}->start();
-
$self->{_timer}->start();
-
$self->{_signal_handler}->setup();
wait
- $self->{_exit_guard}->recv();#AE::cv
finalize
-
my $args = Ocean::HandlerArgs::NodeExit->new
$self->{_event_dispatcher}->dispatch(
Ocean::Constants::EventType::NODE_EXIT,
$self->{_context},
$args); -
$self->{_context}->finalize();
-
$self->{_daemonizer}->finalize();
DESTROY -> release
on_*
my $args = Ocean::HandlerArgs::*->new
$self->{_event_dispatcher}->dispatch(
Ocean::Constants::EventType::*,
$self->{_context},
$args);