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