Class: Pantheios::Core::Internals_::State

Inherits:
Object
  • Object
show all
Defined in:
lib/pantheios/core.rb

Overview

:nodoc:

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(default_fe, **options) ⇒ State

Returns a new instance of State.



91
92
93
94
95
96
97
98
# File 'lib/pantheios/core.rb', line 91

def initialize default_fe, **options

  @mx_service      =  Mutex.new
  @front_end     = nil
  @back_end      =  nil
  @requires_prefix = false;
  @default_fe      =  default_fe
end

Instance Attribute Details

#back_endObject (readonly)

Returns the value of attribute back_end.



189
190
191
# File 'lib/pantheios/core.rb', line 189

def back_end
  @back_end
end

#front_endObject (readonly)

Returns the value of attribute front_end.



188
189
190
# File 'lib/pantheios/core.rb', line 188

def front_end
  @front_end
end

#serviceObject (readonly)

Returns the value of attribute service.



187
188
189
# File 'lib/pantheios/core.rb', line 187

def service
  @service
end

Instance Method Details

#discriminatorObject



174
175
176
177
178
179
180
181
182
183
184
185
# File 'lib/pantheios/core.rb', line 174

def discriminator

  @mx_service.synchronize do

    if @service && @service.respond_to?(:severity_logged?)

      return @service
    end

    @front_end
  end
end

#logObject



170
171
172
# File 'lib/pantheios/core.rb', line 170

def log

end

#requires_prefix?Boolean

Returns:

  • (Boolean)


190
# File 'lib/pantheios/core.rb', line 190

def requires_prefix?; @requires_prefix; end

#set_back_end(be) ⇒ Object

Raises:

  • (::TypeError)


118
119
120
121
122
123
124
125
126
127
128
129
130
131
# File 'lib/pantheios/core.rb', line 118

def set_back_end be

  raise ::TypeError, "back-end instance (#{fe.class}) does not respond to all the required messages (#{Constants_::REQUIRED_BACKEND_METHODS.join(', ')})" unless be && Constants_::REQUIRED_BACKEND_METHODS.all? { |m| be.respond_to? m }

  r  =  nil
  srp  =  svc.respond_to?(:requires_prefix?) ? svc.requires_prefix? : true

  @mx_service.synchronize do

    r, @back_end, @requires_prefix = @back_end, be, srp
  end

  return r
end

#set_front_end(fe) ⇒ Object

Raises:

  • (::TypeError)


100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
# File 'lib/pantheios/core.rb', line 100

def set_front_end fe

  raise ::TypeError, "front-end instance (#{fe.class}) does not respond to all the required messages (#{Constants_::REQUIRED_FRONTEND_METHODS.join(', ')})" unless fe && Constants_::REQUIRED_FRONTEND_METHODS.all? { |m| fe.respond_to? m }

  r  =  nil

  fe ||= @default_fe

  @mx_service.synchronize do

    r, @front_end = @front_end, fe
  end

  r = nil if r.object_id == @default_fe.object_id

  return r
end

#set_service(svc) ⇒ Object

Raises:

  • (::TypeError)


133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
# File 'lib/pantheios/core.rb', line 133

def set_service svc

  raise ::TypeError, "service instance (#{svc.class}) does not respond to all the required messages (#{Constants_::REQUIRED_SERVICE_METHODS.join(', ')})" unless svc && Constants_::REQUIRED_SERVICE_METHODS.all? { |m| svc.respond_to? m }

  r  =  []
  srp  =  svc.respond_to?(:requires_prefix?) ? svc.requires_prefix? : true

  @mx_service.synchronize do

    r << @front_end
    r << @back_end

    @front_end, @back_end, @requires_prefix = svc, svc, srp
  end

  return r
end

#severity_logged?(severity) ⇒ Boolean

Returns:

  • (Boolean)


153
154
155
156
157
158
159
160
161
# File 'lib/pantheios/core.rb', line 153

def severity_logged? severity

  @mx_service.synchronize do

    return nil unless @front_end

    @front_end.severity_logged? severity
  end
end