Class: Sumac::Message::Exchange::CallRequest

Inherits:
Base show all
Includes:
ID
Defined in:
lib/sumac/message/exchange/call_request.rb

Instance Method Summary collapse

Methods included from ID

#id, #id=

Methods inherited from Base

from_json_structure

Methods inherited from Sumac::Message::Exchange

from_json_structure

Methods inherited from Sumac::Message

from_json, #to_json

Constructor Details

#initialize(connection) ⇒ CallRequest

Returns a new instance of CallRequest.



7
8
9
10
11
12
13
# File 'lib/sumac/message/exchange/call_request.rb', line 7

def initialize(connection)
  super
  @exposed_object = nil
  @child = nil
  @method_name = nil
  @arguments = nil
end

Instance Method Details

#argumentsObject

Raises:



68
69
70
71
# File 'lib/sumac/message/exchange/call_request.rb', line 68

def arguments
  raise MessageError unless setup?
  @arguments.map(&:to_native_object)
end

#arguments=(new_arguments) ⇒ Object

Raises:



73
74
75
76
77
78
# File 'lib/sumac/message/exchange/call_request.rb', line 73

def arguments=(new_arguments)
  raise MessageError unless new_arguments.is_a?(Array)
  @arguments = new_arguments.map do |native_argument|
    Object.from_native_object(@connection, native_argument)
  end
end

#exposed_objectObject

Raises:



45
46
47
48
# File 'lib/sumac/message/exchange/call_request.rb', line 45

def exposed_object
  raise MessageError unless setup?
  @exposed_object.to_native_object
end

#exposed_object=(new_exposed_object) ⇒ Object



50
51
52
53
54
55
56
# File 'lib/sumac/message/exchange/call_request.rb', line 50

def exposed_object=(new_exposed_object)
  unless new_exposed_object.is_a?(RemoteObject) || new_exposed_object.is_a?(RemoteObjectChild) ||
         new_exposed_object.respond_to?(:__sumac_exposed_object__)
    raise MessageError
  end
  @exposed_object = Object.from_native_object(@connection, new_exposed_object)
end

#invert_orginObject

Raises:



80
81
82
83
84
85
# File 'lib/sumac/message/exchange/call_request.rb', line 80

def invert_orgin
  raise MessageError unless setup?
  @exposed_object.invert_orgin
  @arguments.each { |argument| argument.invert_orgin if argument.respond_to?(:invert_orgin) }
  nil
end

#method_nameObject

Raises:



58
59
60
61
# File 'lib/sumac/message/exchange/call_request.rb', line 58

def method_name
  raise MessageError unless setup?
  @method_name
end

#method_name=(new_method_name) ⇒ Object

Raises:



63
64
65
66
# File 'lib/sumac/message/exchange/call_request.rb', line 63

def method_name=(new_method_name)
  raise MessageError unless new_method_name.is_a?(String)
  @method_name = new_method_name
end

#parse_json_structure(json_structure) ⇒ Object

Raises:



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/sumac/message/exchange/call_request.rb', line 15

def parse_json_structure(json_structure)
  raise MessageError unless json_structure.is_a?(Hash) &&
    json_structure['message_type'] == 'exchange' &&
    json_structure['exchange_type'] == 'call_request'
  raise MessageError unless json_structure['id'].is_a?(Integer)
  @id = json_structure['id']
  exposed_object = Object.from_json_structure(@connection, json_structure['exposed_object'])
  raise MessageError unless exposed_object.is_a?(Object::Exposed) || exposed_object.is_a?(Object::ExposedChild)
  @exposed_object = exposed_object
  raise MessageError unless json_structure['method_name'].is_a?(String)
  @method_name = json_structure['method_name']
  raise MessageError unless json_structure['arguments'].is_a?(Array)
  @arguments = json_structure['arguments'].map do |argument_json_structure|
    Object.from_json_structure(@connection, argument_json_structure)
  end
  nil
end

#to_json_structureObject



33
34
35
36
37
38
39
40
41
42
43
# File 'lib/sumac/message/exchange/call_request.rb', line 33

def to_json_structure
  raise unless setup?
  {
    'message_type' => 'exchange',
    'exchange_type' => 'call_request',
    'id' => @id,
    'exposed_object' => @exposed_object.to_json_structure,
    'method_name' => @method_name,
    'arguments' => @arguments.map(&:to_json_structure)
  }
end