Class: NotepadqqApi::MessageInterpreter

Inherits:
Object
  • Object
show all
Defined in:
lib/notepadqq_api/message_interpreter.rb

Instance Method Summary collapse

Constructor Details

#initialize(messageChannel) ⇒ MessageInterpreter

Returns a new instance of MessageInterpreter.



4
5
6
7
8
9
10
11
12
13
14
15
16
# File 'lib/notepadqq_api/message_interpreter.rb', line 4

def initialize(messageChannel)
  @messageChannel = messageChannel

  # Hash of event handlers, for example
  # {
  #   1: {
  #     "newWindow": [<callback1>, ..., <callbackn>]
  #   },
  #   ...
  # }
  # Where 1 is an objectId and "newWindow" is an event of that object
  @eventHandlers = {}
end

Instance Method Details

#invokeApi(objectId, method, args) ⇒ Object

Calls a method on the remote object objectId



29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/notepadqq_api/message_interpreter.rb', line 29

def invokeApi(objectId, method, args)
  message = {
    :objectId => objectId,
    :method => method,
    :args => args
  }

  @messageChannel.sendMessage(message)
  reply = @messageChannel.getNextResultMessage

  result = [reply["result"]]
  convertStubs!(result)
  result = result[0]

  # Fixme check for errors in reply["err"]

  return result
end

#processMessage(message) ⇒ Object



48
49
50
51
52
53
54
# File 'lib/notepadqq_api/message_interpreter.rb', line 48

def processMessage(message)
  if message.has_key?("event")
    processEventMessage(message)
  elsif message.has_key?("result")
    # We shouldn't have received it here... ignore it
  end
end

#registerEventHandler(objectId, event, callback) ⇒ Object

Assign an event of a particular objectId to a callback



19
20
21
22
23
24
25
26
# File 'lib/notepadqq_api/message_interpreter.rb', line 19

def registerEventHandler(objectId, event, callback)
  event = event.to_sym

  @eventHandlers[objectId] ||= {}
  @eventHandlers[objectId][event] ||= []

  @eventHandlers[objectId][event].push(callback)
end