Sha256: 7858c95e6ab06cf13ab47a17bc4275059536d054a927e011d38e28396755a143

Contents?: true

Size: 1.67 KB

Versions: 1

Compression:

Stored size: 1.67 KB

Contents

module Appcelerator
    class Dispatcher
    	include Singleton
    
		def serialize(session,body)
			queue = session['_app_mq']
			body << '<?xml version="1.0"?>'
			body << "<messages version='1.0' sessionid='#{session.session_id}'>"
			if queue
			  queue.each do |msg|
				body << msg
			  end
			  session['_app_mq']=[]
			end
			body << '</messages>'
		end
		
		def outgoing(obj,type,message)
			queue = obj['session']['_app_mq']
			if !queue
			  queue = [];
			  obj['session']['_app_mq'] = queue
			end
			#TODO requestid
			queue << "<message requestid='' direction='OUTGOING' datatype='JSON' type='#{type}'><![CDATA["
			queue << message.to_json
			queue << ']]></message>'
		end
		
		def incoming(session,request,response)
			body = request.env['RAW_POST_DATA']
			if body and body != ''
			   node = REXML::Document.new(body)
			   node.root.each_element('//message') do |message|
				  requestid = message.attributes['requestid']
				  type = message.attributes['type']
				  text = message.text
				  msg = JSON.parse(text)
				  req = {'requestid'=>requestid, 'session'=>session, 'orig_request'=>request}
				  ServiceBroker.send(req,type,msg)
			   end
			end      
		end
  end
end



# this is the rails dispatcher
require 'dispatcher'

module ClassMethods
  def reset_application_and_services!
    Appcelerator::Service.load_services
    reset_application_but_not_services!
  end
end

Dispatcher.extend(ClassMethods)
Dispatcher.class_eval do
  class << self
    unless method_defined? :reset_application_but_not_services!
      alias_method :reset_application_but_not_services!, :reset_application!
    end
    alias_method :reset_application!, :reset_application_and_services!
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
appcelerator-2.0.1.1 lib/appcelerator/dispatcher.rb