Hi,
I know it is an old question, but maybe will help others in the future. Unfortunately I haven't found any matching procedure, but in maapi you can use a method called diff_iterate:
diff_iterate(sock, thandle, iter, flags)
With this method you can iterate through all the changes in the given transaction (which can be a create callback). The key is the iter argument, which is basically the method where you handle the changes. It can be defined this way:
def iter(keypath, operation, oldvalue, newvalue)
It is very similar to subscriber's iterate solution.
A code snippet how it looks like in pre-modification (it simply write the changes into log file):
class ServiceCallbacks(Service):
def iterate(self, keypath, operation, oldvalue, newvalue):
self.log.info("Pre-mod changes: keypath:{}, operation:{}, oldvalue:{}, newvalue:{}".
format(keypath, operation, oldvalue, newvalue))
@Service.pre_modification
def cb_pre_modification(self, tctx, op, kp, root, proplist):
self.log.info("Pre-mod started")
maapi = Maapi()
maapi.attach(tctx)
maapi.diff_iterate(tctx.th, self.iterate, 0)
You can find further infos in the maapi_doc.c file.