Class: ActionWebService::Protocol::AbstractProtocolMessage

Inherits:
Object
  • Object
show all
Defined in:
lib/action_web_service/protocol/abstract.rb

Overview

:nodoc:

Direct Known Subclasses

ProtocolRequest, ProtocolResponse

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ AbstractProtocolMessage

Returns a new instance of AbstractProtocolMessage.



43
44
45
46
47
# File 'lib/action_web_service/protocol/abstract.rb', line 43

def initialize(options={})
  @signature = @return_signature = nil
  @options = options
  @type = @options[:type] || CheckedMessage
end

Instance Attribute Details

#optionsObject (readonly)

Returns the value of attribute options.



41
42
43
# File 'lib/action_web_service/protocol/abstract.rb', line 41

def options
  @options
end

#return_signatureObject

Returns the value of attribute return_signature.



39
40
41
# File 'lib/action_web_service/protocol/abstract.rb', line 39

def return_signature
  @return_signature
end

#signatureObject

Returns the value of attribute signature.



38
39
40
# File 'lib/action_web_service/protocol/abstract.rb', line 38

def signature
  @signature
end

#typeObject

Returns the value of attribute type.



40
41
42
# File 'lib/action_web_service/protocol/abstract.rb', line 40

def type
  @type
end

Instance Method Details

#check_compatibility(expected_class, received_class) ⇒ Object



76
77
78
79
80
81
82
83
84
85
# File 'lib/action_web_service/protocol/abstract.rb', line 76

def check_compatibility(expected_class, received_class)
  return if \
      (expected_class == TrueClass or expected_class == FalseClass) and \
      (received_class == TrueClass or received_class == FalseClass)
  unless received_class.ancestors.include?(expected_class) or \
         expected_class.ancestors.include?(received_class)
    raise(ProtocolError, "value of type #{received_class.name} is not " +
                         "compatible with expected type #{expected_class.name}")
  end
end

#check_parameter_types(values, signature) ⇒ Object



66
67
68
69
70
71
72
73
74
# File 'lib/action_web_service/protocol/abstract.rb', line 66

def check_parameter_types(values, signature)
  return unless checked? && signature
  unless signature.length == values.length
    raise(ProtocolError, "Signature and parameter lengths mismatch")
  end
  (1..signature.length).each do |i|
    check_compatibility(signature[i-1], values[i-1].class)
  end
end

#checked?Boolean

Returns:

  • (Boolean)


62
63
64
# File 'lib/action_web_service/protocol/abstract.rb', line 62

def checked?
  @type == CheckedMessage
end