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.



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

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.



197
198
199
# File 'lib/pantheios/core.rb', line 197

def back_end
  @back_end
end

#front_endObject (readonly)

Returns the value of attribute front_end.



196
197
198
# File 'lib/pantheios/core.rb', line 196

def front_end
  @front_end
end

#serviceObject (readonly)

Returns the value of attribute service.



195
196
197
# File 'lib/pantheios/core.rb', line 195

def service
  @service
end

Instance Method Details

#discriminatorObject



182
183
184
185
186
187
188
189
190
191
192
193
# File 'lib/pantheios/core.rb', line 182

def discriminator

	@mx_service.synchronize do

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

			return @service
		end

		@front_end
	end
end

#logObject



178
179
180
# File 'lib/pantheios/core.rb', line 178

def log

end

#requires_prefix?Boolean

Returns:

  • (Boolean)


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

def requires_prefix?; @requires_prefix; end

#set_back_end(be) ⇒ Object

Raises:

  • (::TypeError)


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

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)


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

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:

  • (::ArgumentError)


135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
# File 'lib/pantheios/core.rb', line 135

def set_service svc

	raise ::ArgumentError, 'service instance may not be nil' if svc.nil?

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

	nrcs	=	::Pantheios::Util::ReflectionUtil.non_root_classes svc

	raise ::TypeError, "service instance class - #{svc.class} - inherits some of the required messages - [ #{Constants_::REQUIRED_SERVICE_METHODS.join(', ')} ] - from the top-level" unless Constants_::REQUIRED_SERVICE_METHODS.all? { |m| nrcs.any? { |nr| nr.instance_methods(false).include? 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)


161
162
163
164
165
166
167
168
169
# File 'lib/pantheios/core.rb', line 161

def severity_logged? severity

	@mx_service.synchronize do

		return nil unless @front_end

		@front_end.severity_logged? severity
	end
end