VOL-1176: Ported callback mechanism
- Updated some files with the license block
Change-Id: I61db400b3a72c4915f4f3f17cc7a110313c2d25e
diff --git a/db/model/root.go b/db/model/root.go
index 5adb99d..d10e9f1 100644
--- a/db/model/root.go
+++ b/db/model/root.go
@@ -31,8 +31,8 @@
KvStore *Backend
Loading bool
RevisionClass interface{}
- Callbacks []func()
- NotificationCallbacks []func()
+ Callbacks []CallbackTuple
+ NotificationCallbacks []CallbackTuple
}
func NewRoot(initialData interface{}, kvStore *Backend, revisionClass interface{}) *Root {
@@ -44,8 +44,8 @@
revisionClass = reflect.TypeOf(PersistedRevision{})
}
root.RevisionClass = revisionClass
- root.Callbacks = []func(){}
- root.NotificationCallbacks = []func(){}
+ root.Callbacks = []CallbackTuple{}
+ root.NotificationCallbacks = []CallbackTuple{}
root.Node = NewNode(root, initialData, false, "")
@@ -88,12 +88,12 @@
for len(r.Callbacks) > 0 {
callback := r.Callbacks[0]
r.Callbacks = r.Callbacks[1:]
- callback()
+ callback.Execute(nil)
}
for len(r.NotificationCallbacks) > 0 {
callback := r.NotificationCallbacks[0]
r.NotificationCallbacks = r.NotificationCallbacks[1:]
- callback()
+ callback.Execute(nil)
}
}
@@ -101,11 +101,11 @@
return len(r.Callbacks) == 0
}
-func (r *Root) addCallback(callback func()) {
- r.Callbacks = append(r.Callbacks, callback)
+func (r *Root) addCallback(callback CallbackFunction, args ...interface{}) {
+ r.Callbacks = append(r.Callbacks, CallbackTuple{callback, args})
}
-func (r *Root) addNotificationCallback(callback func()) {
- r.NotificationCallbacks = append(r.NotificationCallbacks, callback)
+func (r *Root) addNotificationCallback(callback CallbackFunction, args ...interface{}) {
+ r.NotificationCallbacks = append(r.NotificationCallbacks, CallbackTuple{callback, args})
}
func (r *Root) Update(path string, data interface{}, strict bool, txid string, makeBranch t_makeBranch) Revision {
@@ -200,7 +200,7 @@
return r
}
-func (r *Root) MakeLatest(branch *Branch, revision Revision, changeAnnouncement map[CallbackType][]interface{}) {
+func (r *Root) MakeLatest(branch *Branch, revision Revision, changeAnnouncement []ChangeTuple) {
r.Node.MakeLatest(branch, revision, changeAnnouncement)
if r.KvStore != nil && branch.Txid == "" {