Class: RServiceBus::HandlerManager
- Inherits:
-
Object
- Object
- RServiceBus::HandlerManager
- Defined in:
- lib/rservicebus/HandlerManager.rb
Overview
Given a directory, this class is responsible for finding msgnames, handlernames, and loading handlers
Instance Method Summary collapse
- #addHandler(msgName, handler) ⇒ Object
- #canMsgBeHandledLocally(msgName) ⇒ Object
-
#checkIfStateAttributeRequested(handler) ⇒ Object
checkIfStateAttributeRequested.
- #getHandlerListForMsg(msgName) ⇒ Object
- #getListOfMsgNames ⇒ Object
-
#getListOfResourcesNeededToProcessMsg(msgName) ⇒ Object
As named.
- #getStats ⇒ Object
-
#initialize(host, resourceManager, stateManager) ⇒ HandlerManager
constructor
Constructor.
- #interrogateHandlerForAppResources(handler) ⇒ Object
-
#setBusAttributeIfRequested(handler) ⇒ Object
setBusAttributeIfRequested.
- #setResourcesForHandlersNeededToProcessMsg(msgName) ⇒ Object
-
#setStateAttributeIfRequested(handler) ⇒ Object
setStateAttributeIfRequested.
Constructor Details
#initialize(host, resourceManager, stateManager) ⇒ HandlerManager
Constructor
13 14 15 16 17 18 19 20 |
# File 'lib/rservicebus/HandlerManager.rb', line 13 def initialize( host, resourceManager, stateManager ) @host = host @resourceManager = resourceManager @stateManager = stateManager @handlerList = Hash.new @resourceListByHandlerName = Hash.new end |
Instance Method Details
#addHandler(msgName, handler) ⇒ Object
71 72 73 74 75 76 77 78 79 |
# File 'lib/rservicebus/HandlerManager.rb', line 71 def addHandler( msgName, handler ) @handlerList[msgName] = Array.new if @handlerList[msgName].nil? return unless @handlerList[msgName].index{ |x| x.class.name == handler.class.name }.nil? @handlerList[msgName] << handler self.setBusAttributeIfRequested( handler ) self.checkIfStateAttributeRequested( handler ) self.interrogateHandlerForAppResources( handler ) end |
#canMsgBeHandledLocally(msgName) ⇒ Object
121 122 123 |
# File 'lib/rservicebus/HandlerManager.rb', line 121 def canMsgBeHandledLocally( msgName ) return @handlerList.has_key?(msgName) end |
#checkIfStateAttributeRequested(handler) ⇒ Object
checkIfStateAttributeRequested
50 51 52 53 54 |
# File 'lib/rservicebus/HandlerManager.rb', line 50 def checkIfStateAttributeRequested( handler ) @stateManager.Required if defined?( handler.State ) return self end |
#getHandlerListForMsg(msgName) ⇒ Object
110 111 112 113 114 115 116 117 118 119 |
# File 'lib/rservicebus/HandlerManager.rb', line 110 def getHandlerListForMsg( msgName ) # raise NoHandlerFound.new( msgName ) if @handlerList[msgName].nil? return Array.new if @handlerList[msgName].nil? list = self.getListOfResourcesNeededToProcessMsg( msgName ) self.setResourcesForHandlersNeededToProcessMsg( msgName ) return @handlerList[msgName] end |
#getListOfMsgNames ⇒ Object
134 135 136 |
# File 'lib/rservicebus/HandlerManager.rb', line 134 def getListOfMsgNames return @handlerList.keys end |
#getListOfResourcesNeededToProcessMsg(msgName) ⇒ Object
As named
85 86 87 88 89 90 91 92 93 94 95 |
# File 'lib/rservicebus/HandlerManager.rb', line 85 def getListOfResourcesNeededToProcessMsg( msgName ) return Array.new if @handlerList[msgName].nil? list = Array.new @handlerList[msgName].each do |handler| list = list + @resourceListByHandlerName[handler.class.name] unless @resourceListByHandlerName[handler.class.name].nil? end list.uniq! return list end |
#getStats ⇒ Object
125 126 127 128 129 130 131 132 |
# File 'lib/rservicebus/HandlerManager.rb', line 125 def getStats list = Array.new @handlerList.each do |k,v| list << v.inspect end return list end |
#interrogateHandlerForAppResources(handler) ⇒ Object
56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
# File 'lib/rservicebus/HandlerManager.rb', line 56 def interrogateHandlerForAppResources( handler ) RServiceBus.rlog "Checking app resources for: #{handler.class.name}" RServiceBus.rlog "If your attribute is not getting set, check that it is in the 'attr_accessor' list" @resourceListByHandlerName[handler.class.name] = Array.new @resourceManager.getAll.each do |k,v| if handler.class.method_defined?( k ) then @resourceListByHandlerName[handler.class.name] << k RServiceBus.log "Resource attribute, #{k}, found for: " + handler.class.name end end return self end |
#setBusAttributeIfRequested(handler) ⇒ Object
setBusAttributeIfRequested
26 27 28 29 30 31 32 33 |
# File 'lib/rservicebus/HandlerManager.rb', line 26 def setBusAttributeIfRequested( handler ) if defined?( handler.Bus ) then handler.Bus = @host RServiceBus.log 'Bus attribute set for: ' + handler.class.name end return self end |
#setResourcesForHandlersNeededToProcessMsg(msgName) ⇒ Object
97 98 99 100 101 102 103 104 105 106 107 108 |
# File 'lib/rservicebus/HandlerManager.rb', line 97 def setResourcesForHandlersNeededToProcessMsg( msgName ) @handlerList[msgName].each do |handler| self.setStateAttributeIfRequested( handler ) next if @resourceListByHandlerName[handler.class.name].nil? @resourceListByHandlerName[handler.class.name].each do |k| handler.instance_variable_set( "@#{k}", @resourceManager.get(k).getResource() ) RServiceBus.rlog "App resource attribute, #{k}, set for: " + handler.class.name end end end |
#setStateAttributeIfRequested(handler) ⇒ Object
setStateAttributeIfRequested
38 39 40 41 42 43 44 45 |
# File 'lib/rservicebus/HandlerManager.rb', line 38 def setStateAttributeIfRequested( handler ) if defined?( handler.State ) then handler.State = @stateManager.Get( handler ) RServiceBus.log 'Bus attribute set for: ' + handler.class.name end return self end |