Class: Wamp::Client::Request::Call

Inherits:
Base
  • Object
show all
Defined in:
lib/wamp/client/request/call.rb

Instance Attribute Summary

Attributes inherited from Base

#on_success, #requests, #send_message_callback, #session

Instance Method Summary collapse

Methods inherited from Base

#error, #generate_id, #initialize, #request, #success

Constructor Details

This class inherits a constructor from Wamp::Client::Request::Base

Instance Method Details

#cancel(request_id, mode = 'skip') ⇒ Object

Method specific to this request that will cancel it



32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/wamp/client/request/call.rb', line 32

def cancel(request_id, mode='skip')

  # If the request is still in flight
  if self.requests[request_id]
    # Create the message
    message = Message::Cancel.new(request_id, { mode: mode })

    # Send it
    send_message(message)
  end

end

#create_request(request_id, procedure, args = nil, kwargs = nil, options = {}, &callback) ⇒ Object



45
46
47
48
49
50
51
52
53
54
55
# File 'lib/wamp/client/request/call.rb', line 45

def create_request(request_id, procedure, args=nil, kwargs=nil, options={}, &callback)

  # Create the lookup
  lookup = {p: procedure, a: args, k: kwargs, o: options, c: callback}

  # Create the message
  message = Message::Call.new(request_id, options, procedure, args, kwargs)

  # Return
  [lookup, message]
end

#process_error(message, lookup) ⇒ Object



89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
# File 'lib/wamp/client/request/call.rb', line 89

def process_error(message, lookup)
  if lookup
    # Get the params
    procedure = lookup[:p]
    callback = lookup[:c]

    # Create the details
    details = message.details || {}
    details[:procedure] = procedure unless details[:procedure]
    details[:type] = 'call'

    # Return the values
    [callback, details]
  else
    [nil, nil]
  end
end

#process_success(message, lookup) ⇒ Object



57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
# File 'lib/wamp/client/request/call.rb', line 57

def process_success(message, lookup)
  if lookup
    # Get the params
    procedure = lookup[:p]
    options = lookup[:o] || {}
    callback = lookup[:c]

    # Create the details
    details = message.details || {}
    details[:procedure] = procedure unless details[:procedure]
    details[:type] = 'call'

    # Set the should keep flag if this is a progress message
    should_keep = details[:progress]

    # Only return the information if not progress or receive progress is true
    if not details[:progress] or (details[:progress] and options[:receive_progress])

      # Create the response
      result = Response::CallResult.from_yield_message(message)

      # Return the values
      [callback, result.to_hash, details, should_keep]

    else
      [nil, nil, nil, should_keep]
    end
  else
    [nil, nil, nil]
  end
end