Class: Aggro::Server

Inherits:
Object
  • Object
show all
Defined in:
lib/aggro/server.rb

Overview

Public: Binds a transport endpoint and handles incoming messages.

Constant Summary collapse

RAW_HANDLER =
:handle_raw
HANDLERS =
{
  Message::Command                  => :handle_command,
  Message::CreateAggregate          => :handle_create,
  Message::GetEvents                => :handle_get_events,
  Message::Heartbeat                => :handle_heartbeat,
  Message::PublisherEndpointInquiry => :handle_publisher_endpoint_inquiry,
  Message::Query                    => :handle_query,
  Message::StartSaga                => :handle_start_saga
}

Instance Method Summary collapse

Constructor Details

#initialize(endpoint, publisher_endpoint) ⇒ Server

Returns a new instance of Server.



16
17
18
19
20
21
22
# File 'lib/aggro/server.rb', line 16

def initialize(endpoint, publisher_endpoint)
  @endpoint = endpoint
  @publisher_endpoint = publisher_endpoint

  @transport_server = Aggro.transport.server endpoint, method(RAW_HANDLER)
  @transport_publisher = Aggro.transport.publisher publisher_endpoint
end

Instance Method Details

#bindObject



24
25
26
27
# File 'lib/aggro/server.rb', line 24

def bind
  @transport_server.start
  @transport_publisher.open_socket
end

#handle_message(message) ⇒ Object



29
30
31
# File 'lib/aggro/server.rb', line 29

def handle_message(message)
  message_router.route message
end

#publish(message) ⇒ Object



33
34
35
# File 'lib/aggro/server.rb', line 33

def publish(message)
  @transport_publisher.publish message
end

#stopObject



37
38
39
40
# File 'lib/aggro/server.rb', line 37

def stop
  @transport_publisher.close_socket
  @transport_server.stop
end