Class: Bitcoin::Grpc::EventsReceiver

Inherits:
Concurrent::Actor::Context
  • Object
show all
Defined in:
lib/bitcoin/grpc/server.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(events, publisher) ⇒ EventsReceiver

Returns a new instance of EventsReceiver.



104
105
106
107
108
# File 'lib/bitcoin/grpc/server.rb', line 104

def initialize(events, publisher)
  @events = events
  @publisher = publisher
  @logger = Bitcoin::Logger.create(:debug)
end

Instance Attribute Details

#eventsObject (readonly)

Returns the value of attribute events.



102
103
104
# File 'lib/bitcoin/grpc/server.rb', line 102

def events
  @events
end

#loggerObject (readonly)

Returns the value of attribute logger.



102
103
104
# File 'lib/bitcoin/grpc/server.rb', line 102

def logger
  @logger
end

#publisherObject (readonly)

Returns the value of attribute publisher.



102
103
104
# File 'lib/bitcoin/grpc/server.rb', line 102

def publisher
  @publisher
end

Instance Method Details

#on_message(message) ⇒ Object



110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
# File 'lib/bitcoin/grpc/server.rb', line 110

def on_message(message)
  case message
  when Bitcoin::Grpc::EventsRequest
    clazz = Object.const_get("Bitcoin").const_get("Grpc").const_get(message.event_type)
    case message.operation
    when :SUBSCRIBE
      publisher << [:subscribe, clazz]
    when :UNSUBSCRIBE
      publisher << [:unsubscribe, clazz]
    else
      logger.error("unsupported operation")
    end
  else
    events << message
  end
end