Пример #1
0
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);
    }
}
Пример #2
0
static void object_destruct(nm_node_t node) {
    Object * object = (Object*)nm_node_data(node);

    try {
        object->~Object();
    }
    catch(...) {
    }
}
Пример #3
0
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);
}
Пример #4
0
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);
}
Пример #5
0
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);
}
Пример #6
0
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);
}
Пример #7
0
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;
}