def serialize_atom(bridge, atom): # Store as callback if callable if callable(atom): if getattr(atom, '_reference', None) is not None: return atom._reference._to_dict() else: return bridge._store_object(Callback(atom), ['callback'])._to_dict() # Call to_dict if reference elif isinstance(atom, reference.Reference): return atom._to_dict() # If not JSON serializeable store as service elif not util.is_primitive(atom): return bridge._store_object(atom, util.find_ops(atom))._to_dict() else: return atom
def hookChannelHandler(self, name, handler, func=None): # Store under channel name self._bridge._store['channel:' + name] = handler if func: # Send callback with reference to channel and handler operations func(reference.Reference(self._bridge, ['channel', name, 'channel:' + name], util.find_ops(handler)), name)