- User* u = (User*)item;
- /* Cleanup only happens on unload (before dtor), so keep this O(n) instead of O(n^2) which deferring to OnUserQuit would do. */
- RemoveData(u);
- }
-
- virtual void OnSyncUserMetaData(User* user, Module* proto, void* opaque, const std::string& extname, bool displayable)
- {
- if (extname == "callerid_data")
- {
- callerid_data* dat = GetData(user, false);
- if (dat)
- {
- std::string str = dat->ToString(displayable);
- proto->ProtoSendMetaData(opaque, TYPE_USER, user, extname, str);
- }
- }
- }
-
- virtual void OnDecodeMetaData(int target_type, void* target, const std::string& extname, const std::string& extdata)
- {
- if (target_type == TYPE_USER && extname == "callerid_data")
- {
- User* u = (User*)target;
- callerid_data* dat = new callerid_data(extdata, ServerInstance);
- u->Extend("callerid_data", dat);
- }