Class: RServiceBus::HandlerManager

Inherits:
Object
  • Object
show all
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

Constructor Details

#initialize(host, resourceManager, stateManager) ⇒ HandlerManager

Constructor

Parameters:

  • host (RServiceBus::Host)

    instance

  • appResources (Hash)

    As hash where k is the name of a resource, and v is the resource



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

Parameters:

  • handler (RServiceBus::Handler)


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

#getListOfMsgNamesObject



134
135
136
# File 'lib/rservicebus/HandlerManager.rb', line 134

def getListOfMsgNames
    return @handlerList.keys
end

#getListOfResourcesNeededToProcessMsg(msgName) ⇒ Object

As named

Parameters:

  • msgName (String)
  • appResources (Array)

    A list of appResource



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

#getStatsObject



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

Parameters:

  • handler (RServiceBus::Handler)


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

Parameters:

  • handler (RServiceBus::Handler)


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