blob: 92373806fae5c0fdef4ab1dd15240b85e913af25 [file] [log] [blame]
# Lint as: python2, python3
# Copyright 2021 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""Simple observer base class."""
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
import logging
class ObserverBase:
"""Simple observer base class that provides the observer pattern."""
def __init__(self):
self.observers = {}
def add_observer(self, name, observer):
"""Add named observer if it doesn't already exist.
@param name: Unique name for the observer.
@param observer: Object that implements the observer callbacks.
@return True if observer was added.
"""
if name not in self.observers:
self.observers[name] = observer
return True
logging.warn('Observer {} already exists, not adding'.format(name))
return False
def remove_observer(self, name, observer):
"""Remove named observer."""
if name in self.observers:
del self.observers[name]