lib/rocketamf/remoting.rb in RocketAMF-0.1.0 vs lib/rocketamf/remoting.rb in RocketAMF-0.2.0
- old
+ new
@@ -1,43 +1,31 @@
module RocketAMF
- # Container for the AMF request.
- class Request
+ # Container for the AMF request/response.
+ class Envelope
attr_reader :amf_version, :headers, :messages
- def initialize
- @amf_version = 0
- @headers = []
- @messages = []
+ def initialize props={}
+ @amf_version = props[:amf_version] || 0
+ @headers = props[:headers] || []
+ @messages = props[:messages] || []
end
- # Populates the request from the given stream or string. Returns self for easy
+ # Populates the envelope from the given stream or string. Returns self for easy
# chaining.
#
# Example:
#
- # req = RocketAMF::Request.new.populate_from_stream(env['rack.input'].read)
+ # req = RocketAMF::Envelope.new.populate_from_stream(env['rack.input'].read)
#--
- # Implemented in pure/remoting.rb RocketAMF::Pure::Request
+ # Implemented in pure/remoting.rb RocketAMF::Pure::Envelope
def populate_from_stream stream
raise AMFError, 'Must load "rocketamf/pure"'
end
- end
- # Container for the response of the AMF call. Includes serialization and request
- # handling code.
- class Response
- attr_accessor :amf_version, :headers, :messages
-
- def initialize
- @amf_version = 0
- @headers = []
- @messages = []
- end
-
- # Serializes the response to a string and returns it
+ # Serializes the envelope to a string and returns it
#--
- # Implemented in pure/remoting.rb RocketAMF::Pure::Response
+ # Implemented in pure/remoting.rb RocketAMF::Pure::Envelope
def serialize
raise AMFError, 'Must load "rocketamf/pure"'
end
# Builds response from the request, iterating over each method call and using
@@ -64,18 +52,19 @@
command_msg = m.data
if command_msg.operation == Values::CommandMessage::CLIENT_PING_OPERATION
response_value = Values::AcknowledgeMessage.new(command_msg)
else
e = Exception.new("CommandMessage #{command_msg.operation} not implemented")
- e.set_backtrace ["RocketAMF::Response each_method_call"]
+ e.set_backtrace ["RocketAMF::Envelope each_method_call"]
response_value = Values::ErrorMessage.new(command_msg, e)
end
when Values::RemotingMessage
# Using RemoteObject style message calls
remoting_msg = m.data
acknowledge_msg = Values::AcknowledgeMessage.new(remoting_msg)
- body = dispatch_call :method => remoting_msg.source+'.'+remoting_msg.operation, :args => remoting_msg.body, :source => remoting_msg, :block => block
+ method_base = remoting_msg.source.to_s.empty? ? '' : remoting_msg.source+'.'
+ body = dispatch_call :method => method_base+remoting_msg.operation, :args => remoting_msg.body, :source => remoting_msg, :block => block
# Response should be the bare ErrorMessage if there was an error
if body.is_a?(Values::ErrorMessage)
response_value = body
else
@@ -93,11 +82,11 @@
end
@constructed = true
end
- # Return the serialized response as a string
+ # Return the serialized envelope as a string
def to_s
serialize
end
private
@@ -109,21 +98,35 @@
Values::ErrorMessage.new(p[:source], e)
end
end
end
- # RocketAMF::Request or RocketAMF::Response header
+ class Request < Envelope #:nodoc:
+ def initialize props={}
+ $stderr.puts("DEPRECATION WARNING: Use RocketAMF::Envelope instead of RocketAMF::Request")
+ super(props)
+ end
+ end
+
+ class Response < Envelope #:nodoc:
+ def initialize props={}
+ $stderr.puts("DEPRECATION WARNING: Use RocketAMF::Envelope instead of RocketAMF::Request")
+ super(props)
+ end
+ end
+
+ # RocketAMF::Envelope header
class Header
attr_accessor :name, :must_understand, :data
def initialize name, must_understand, data
@name = name
@must_understand = must_understand
@data = data
end
end
- # RocketAMF::Request or RocketAMF::Response message
+ # RocketAMF::Envelope message
class Message
attr_accessor :target_uri, :response_uri, :data
def initialize target_uri, response_uri, data
@target_uri = target_uri
\ No newline at end of file