Module: R2CORBA::CORBA::Request

Defined in:
lib/corba/cbase/Request.rb,
lib/corba/jbase/Request.rb,
lib/corba/common/Request.rb

Constant Summary collapse

@@wrapper_klass =
Class.new do
  include CORBA::Request
  def initialize(nreq, target)
    @req_ = nreq
    @target = target
  end
  attr_reader :req_
  attr_reader :target
end

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

._wrap_native(nreq, target) ⇒ Object

Raises:

  • (ArgumentError)


25
26
27
28
29
# File 'lib/corba/jbase/Request.rb', line 25

def self._wrap_native(nreq, target)
  raise ArgumentError, 'Expected org.omg.CORBA.Request' unless nreq.nil? || nreq.is_a?(Native::Request)

  nreq.nil? ? nreq : @@wrapper_klass.new(nreq, target)
end

Instance Method Details

#add_in_arg(tc, val, nm = '') ⇒ Object



15
16
17
18
# File 'lib/corba/cbase/Request.rb', line 15

def add_in_arg(tc, val, nm = '')
  self._arguments << [nm, CORBA::ARG_IN, tc, val]
  self._arguments.size
end

#add_inout_arg(tc, val, nm = '') ⇒ Object



25
26
27
28
# File 'lib/corba/cbase/Request.rb', line 25

def add_inout_arg(tc, val, nm = '')
  self._arguments << [nm, CORBA::ARG_INOUT, tc, val]
  self._arguments.size
end

#add_out_arg(tc, nm = '') ⇒ Object



20
21
22
23
# File 'lib/corba/cbase/Request.rb', line 20

def add_out_arg(tc, nm = '')
  self._arguments << [nm, CORBA::ARG_OUT, tc]
  self._arguments.size
end

#argumentsObject



30
31
32
# File 'lib/corba/cbase/Request.rb', line 30

def arguments
  self._arguments
end

#arguments=(*args) ⇒ Object



34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/corba/cbase/Request.rb', line 34

def arguments=(*args)
  if args.size == 1
    raise ArgumentError, 'invalid argument list' unless ::Array === args.first && args.first.all? { |a| ::Array === a }

    args = args.first
  else
    raise ArgumentError, 'invalid argument list' unless args.all? { |a| ::Array === a }
  end
  # clear current arguments
  self._arguments.clear
  # add new arguments
  args.each do |nm, flag, tc, val|
    case flag
    when CORBA::ARG_IN
      self.add_in_arg(tc, val, nm)
    when CORBA::ARG_OUT
      self.add_out_arg(tc, nm)
    when CORBA::ARG_INOUT
      self.add_inout_arg(tc, val, nm)
    end
  end
end

#exceptionsObject



57
58
59
# File 'lib/corba/cbase/Request.rb', line 57

def exceptions
  self._exceptions
end

#exceptions=(exl) ⇒ Object



61
62
63
64
65
66
67
68
# File 'lib/corba/cbase/Request.rb', line 61

def exceptions=(exl)
  self._exceptions.clear
  begin
    self._exceptions.concat(exl)
  rescue
    raise CORBA::BAD_PARAM.new(0, CORBA::COMPLETED_NO)
  end
end

#get_responseObject



110
111
112
113
114
115
116
117
118
# File 'lib/corba/cbase/Request.rb', line 110

def get_response
  begin
    ret = self._get_response
  rescue ::NativeException
    CORBA::Exception.native2r($!)
  end
  @_args = self._get_arguments(@_args || [])
  ret
end

#invokeObject



80
81
82
83
84
85
86
# File 'lib/corba/cbase/Request.rb', line 80

def invoke
  self._invoke({
    arg_list: self._arguments,
    result_type: @_rettc,
    exc_list: self._exceptions
    })
end

#operationObject



31
32
33
34
35
36
37
# File 'lib/corba/jbase/Request.rb', line 31

def operation
  begin
    self.req_.operation
  rescue ::NativeException
    CORBA::Exception.native2r($!)
  end
end

#poll_responseObject



100
101
102
103
104
105
106
107
108
# File 'lib/corba/cbase/Request.rb', line 100

def poll_response
  begin
    ret = self._poll_response
  rescue ::NativeException
    CORBA::Exception.native2r($!)
  end
  @_args = self._get_arguments(@_args || []) if ret
  ret
end

#return_valueObject



74
75
76
77
78
# File 'lib/corba/cbase/Request.rb', line 74

def return_value
  return nil if @_rettc.nil? || @_rettc.kind == CORBA::TK_VOID || @_rettc.kind == CORBA::TK_NULL

  self._return_value(@_rettc)
end

#send_deferredObject



92
93
94
95
96
97
98
# File 'lib/corba/cbase/Request.rb', line 92

def send_deferred
  self._send_deferred({
    arg_list: self._arguments,
    result_type: @_rettc,
    exc_list: self._exceptions
    })
end

#send_onewayObject



88
89
90
# File 'lib/corba/cbase/Request.rb', line 88

def send_oneway
  self._send_oneway(self._arguments)
end

#set_return_type(tc) ⇒ Object



70
71
72
# File 'lib/corba/cbase/Request.rb', line 70

def set_return_type(tc)
  @_rettc = tc
end