48 lines
1 KiB
Python
48 lines
1 KiB
Python
"""Implementation for Observer and Observables used for out events.
|
|
Generated by itemis CREATE code generator.
|
|
"""
|
|
|
|
|
|
class Observer():
|
|
"""Observer implementation.
|
|
"""
|
|
|
|
def next(self, value=None):
|
|
"""Abstract next method, which must be implemented."""
|
|
raise NotImplementedError('user must define next() to use this base class')
|
|
|
|
|
|
class Observable():
|
|
"""Observable implementation.
|
|
"""
|
|
|
|
def __init__(self):
|
|
self.observers = []
|
|
|
|
def next(self, value=None):
|
|
"""Calls next function from every observer.
|
|
"""
|
|
for observer in self.observers:
|
|
if observer is not None:
|
|
if value is None:
|
|
observer.next()
|
|
else:
|
|
observer.next(value)
|
|
|
|
def subscribe(self, observer):
|
|
"""Subscribe on specified observer.
|
|
"""
|
|
if observer is not None:
|
|
self.observers.append(observer)
|
|
return True
|
|
return False
|
|
|
|
def unsubscribe(self, observer):
|
|
"""Unsubscribe from specified observer.
|
|
"""
|
|
if observer is None:
|
|
return False
|
|
if observer in self.observers:
|
|
self.observers.remove(observer)
|
|
return True
|
|
return False
|