Object * Object::_cast(nm_node_t node) { if (node == NULL || nm_node_type(node) != &g_object_type) { return NULL; } else { return (Object*)nm_node_data(node); } }
static void object_destruct(nm_node_t node) { Object * object = (Object*)nm_node_data(node); try { object->~Object(); } catch(...) { } }
static void weibo_manage_clear(nm_node_t node) { weibo_manage_t mgr; mgr = (weibo_manage_t)nm_node_data(node); weibo_manage_set_persistent(mgr, NULL, NULL); weibo_msg_it_free_all(mgr); weibo_msg_id_page_list_free_all(mgr); weibo_manage_pages_free_all(mgr); }
weibo_manage_t weibo_manage_find( gd_app_context_t app, cpe_hash_string_t name) { nm_node_t node; if (name == NULL) name = (cpe_hash_string_t)&s_weibo_manage_default_name; node = nm_mgr_find_node(gd_app_nm_mgr(app), name); if (node == NULL || nm_node_type(node) != &s_nm_node_type_weibo_manage) return NULL; return (weibo_manage_t)nm_node_data(node); }
weibo_manage_t weibo_manage_find_nc( gd_app_context_t app, const char * name) { nm_node_t node; if (name == NULL) return weibo_manage_default(app); node = nm_mgr_find_node_nc(gd_app_nm_mgr(app), name); if (node == NULL || nm_node_type(node) != &s_nm_node_type_weibo_manage) return NULL; return (weibo_manage_t)nm_node_data(node); }
void * Object::operator new (size_t size, nm_mgr_t nmm, const char * name) { nm_node_t node = nm_instance_create(nmm, name, size); if (node == NULL) { if (nm_mgr_find_node_nc(nmm, name)) { ::std::ostringstream os; os << "named object " << name << " already exist!"; throw ::std::runtime_error(os.str()); } else { throw ::std::bad_alloc(); } } return nm_node_data(node); }
weibo_manage_t weibo_manage_create( gd_app_context_t app, const char * name, mem_allocrator_t alloc, error_monitor_t em) { weibo_manage_t mgr; nm_node_t mgr_node; if (name == 0) name = cpe_hs_data((cpe_hash_string_t)&s_weibo_manage_default_name); mgr_node = nm_instance_create(gd_app_nm_mgr(app), name, sizeof(struct weibo_manage)); if (mgr_node == NULL) return NULL; mgr = (weibo_manage_t)nm_node_data(mgr_node); mgr->m_alloc = alloc; mgr->m_app = app; mgr->m_em = em; mgr->m_debug = 0; mgr->m_pages_count = 0; mgr->m_pages_capacity = 0; mgr->m_pages_by_id = NULL; mgr->m_pages_by_time = NULL; TAILQ_INIT(&mgr->m_runing_it_list); mgr->m_msg_id_page_free_list = NULL; mgr->m_persistent = NULL; mgr->m_persistent_ctx = NULL; nm_node_set_type(mgr_node, &s_nm_node_type_weibo_manage); return mgr; }