THIS IS A TEST INSTANCE. ALL YOUR CHANGES WILL BE LOST!!!!
...
Code Block | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
/**
* A registry for async data change notifications
*/
trait ListenerRegistry {
/**
* Register permanent callback for data change event
* @param key the listenable data identifier
* @param eventListener see [[ValueChangeListener]]
*/
def addValueChangeListener(key: String, eventListener: ValueChangeListener): Unit
/**
* Deregister permanent callback for data change event
* @param key the listenable data identifier
* @param eventListener see [[EventListener]]
* @tparam T type of the data ID
*/
def removeValueChangeListener(key: String, eventListener: ValueChangeListener): Unit
/**
* Register permanent callback for key-set change event
* @param namespace the listenable key-set identifier (e.g. parent path in Zookeeper, table name in Database etc)
* @param eventListener see [[ValueChangeListener]]
*/
def addKeySetChangeListener(namespace: String, eventListener: KeySetChangeListener): Unit
/**
* Deregister permanent callback for key-set change event
* @param namespace the listenable key-set identifier (e.g. parent path in Zookeeper, table name in Database etc)
* @param eventListener see [[ValueChangeListener]]
*/
def removeKeySetChangeListener(namespace: String, eventListener: KeySetChangeListener): Unit
/**
* Setup everything needed for concrete implementation
* @param context TBD. Should be abstract enough to be used by different implementations and
* at the same time specific because will be uniformly called from the Kafka code,
* regardless of the implementation
*/
def init(context: Any): Unit
/**
* Release all acquired resources
*/
def close(): Unit
}
/**
* Callback on value change event
*/
trait ValueChangeListener {
def valueChanged(newValue: Option[String])
}
/**
* Callback on key-set change event
*/
trait KeySetChangeListener {
def keySetChanged(newKeySet: Set[String])
} |
...