• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C++ rpc::request类代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了C++中msgpack::rpc::request的典型用法代码示例。如果您正苦于以下问题:C++ request类的具体用法?C++ request怎么用?C++ request使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。



在下文中一共展示了request类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: pop_queue_nowait

void QContentHubServer::pop_queue_nowait(msgpack::rpc::request &req, const std::string &name)
{
    std::string ret;
    queue_map_t &qmap = q_map.unsafe_ref();
    queue_map_it_t it = qmap.find(name);
    if (it == qmap.end()) {
        req.result(QCONTENTHUB_STRERROR);
    } else {
        queue_t *q = it->second;
        if (q->stop) {
            req.result(QCONTENTHUB_STRAGAIN);
            return;
        }
        pthread_mutex_lock(&(q->lock));
        if (q->str_q.size() == 0) {
            ret = QCONTENTHUB_STRAGAIN;
        } else {
            ret = q->str_q.front();
            q->str_q.pop();
            pthread_cond_signal(&q->not_full);
        }
        pthread_mutex_unlock(&(q->lock));
        req.result(ret);
    }
}
开发者ID:liseen,项目名称:qcontenthub,代码行数:25,代码来源:qcontenthub_rpc.cpp


示例2: dispatch

void WorkerServer::dispatch(msgpack::rpc::request req)
{
    try
    {
        std::string method;
        req.method().convert(&method);

        WorkerHandlerBase* handler = router_.find(method);
        if (handler)
        {
            //handler->invoke(req);
            worker_pool_.schedule_task(boost::bind(handler_wrapper, handler, req));
        }
        else
        {
            std::cerr << "[WorkerServer] Method not found: " << method << std::endl;
            req.error(msgpack::rpc::NO_METHOD_ERROR);
        }
    }
    catch (const msgpack::type_error& e)
    {
        std::cerr << "[WorkerServer] " << e.what() << std::endl;
        req.error(msgpack::rpc::ARGUMENT_ERROR);
    }
    catch (const std::exception& e)
    {
        std::cerr << "[WorkerServer] " << e.what() << std::endl;
        req.error(std::string(e.what()));
    }
}
开发者ID:RedSunCMX,项目名称:izenelib,代码行数:30,代码来源:WorkerServer.cpp


示例3: push_queue_nowait

void QContentHubServer::push_queue_nowait(msgpack::rpc::request &req, const std::string &name, const std::string &obj)
{
    queue_map_t &qmap = q_map.unsafe_ref();

    queue_map_it_t it = qmap.find(name);
    if (it == qmap.end()) {
        int ret = add_queue(name, DEFAULT_QUEUE_CAPACITY);
        if (ret == QCONTENTHUB_ERROR) {
            req.result(ret);
        } else {
            push_queue(req, name, obj);
        }
    } else {
        queue_t *q = it->second;
        pthread_mutex_lock(&q->lock);
        if ((int)q->str_q.size() > q->capacity) {
            pthread_mutex_unlock(&q->lock);
            req.result(QCONTENTHUB_AGAIN);
        } else {
            q->str_q.push(obj);
            pthread_cond_signal(&q->not_empty);
            pthread_mutex_unlock(&q->lock);
            req.result(QCONTENTHUB_OK);
        }
    }
}
开发者ID:liseen,项目名称:qcontenthub,代码行数:26,代码来源:qcontenthub_rpc.cpp


示例4: stat_queue

void QContentHubServer::stat_queue(msgpack::rpc::request &req, const std::string &name)
{
    char buf[64];
    std::string ret;
    int current = get_current_time();
    ret.append("STAT uptime ");
    sprintf(buf, "%d", current - m_start_time);
    ret.append(buf);
    ret.append("\n");
    ret.append("STAT time ");
    sprintf(buf, "%d", current);
    ret.append(buf);
    ret.append("\n");

    queue_map_t &qmap = q_map.unsafe_ref();
    queue_map_it_t it = qmap.find(name);
    if (it == qmap.end()) {
        req.result(ret);
    } else {
        ret.append("STAT name ");
        ret.append(name);
        ret.append("\n");
        ret.append("STAT size ");
        sprintf(buf, "%ld", it->second->str_q.size());
        ret.append(buf);
        ret.append("\n");
        req.result(ret);
    }
}
开发者ID:liseen,项目名称:qcontenthub,代码行数:29,代码来源:qcontenthub_rpc.cpp


示例5: start_dump_all

void QUrlQueueServer::start_dump_all(msgpack::rpc::request &req)
{
    if (m_dump_all_dumping) {
        req.result(QCONTENTHUB_ERROR);
    } else {
        m_dump_all_dumping = true;
        m_dump_all_it = m_site_map.unsafe_ref().begin();
        req.result(QCONTENTHUB_OK);
    }
}
开发者ID:Kayven,项目名称:qcontent,代码行数:10,代码来源:qurlqueue_rpc.cpp


示例6: set_queue_capacity

void QContentHubServer::set_queue_capacity(msgpack::rpc::request &req, const std::string &name, int capacity)
{
    queue_map_t &qmap = q_map.unsafe_ref();
    queue_map_it_t it = qmap.find(name);
    if (it == qmap.end()) {
        req.result(QCONTENTHUB_WARN);
    } else {
        queue_t *q = it->second;
        pthread_mutex_lock(&q->lock);
        q->capacity = capacity;
        pthread_mutex_unlock(&q->lock);
    }
    req.result(QCONTENTHUB_OK);
}
开发者ID:liseen,项目名称:qcontenthub,代码行数:14,代码来源:qcontenthub_rpc.cpp


示例7: stats

void QContentHubServer::stats(msgpack::rpc::request &req)
{
    char buf[64];
    std::string ret;
    int current = get_current_time();
    ret.append("STAT uptime ");
    sprintf(buf, "%d", current - m_start_time);
    ret.append(buf);
    ret.append("\n");
    ret.append("STAT time ");
    sprintf(buf, "%d", current);
    ret.append(buf);
    ret.append("\n");

    queue_map_t &qmap = q_map.unsafe_ref();
    for (queue_map_it_t it = qmap.begin(); it != qmap.end(); it++) {
        ret.append("STAT name ");
        ret.append(it->first);
        ret.append("\n");
        ret.append("STAT size ");
        sprintf(buf, "%ld", it->second->str_q.size());
        ret.append(buf);
        ret.append("\n");
    }
    req.result(ret);
}
开发者ID:liseen,项目名称:qcontenthub,代码行数:26,代码来源:qcontenthub_rpc.cpp


示例8: dump_all

void QUrlQueueServer::dump_all(msgpack::rpc::request &req)
{
    std::string content;
    if (!m_dump_all_dumping) {
        content = QCONTENTHUB_STRERROR;
    } else {
        mp::sync<SiteMap>::ref ref(m_site_map);
        while (m_dump_all_it != ref->end()) {
            Site *s = m_dump_all_it->second;
            while (!s->url_queue.empty()) {
                content = s->url_queue.top().value;
                s->url_queue.pop();
                return;
            }

            m_dump_all_it++;
        }

        if (m_dump_all_it == ref->end()) {
            content = QCONTENTHUB_STREND;
            m_dump_all_dumping = false;
        }
    }
    req.result(content);
}
开发者ID:Kayven,项目名称:qcontent,代码行数:25,代码来源:qurlqueue_rpc.cpp


示例9: stats

void QUrlQueueServer::stats(msgpack::rpc::request &req)
{
    char buf[64];
    std::string ret;
    uint64_t current_time = get_current_time();
    uint64_t current = current_time / 1000;

    ret.append("STAT uptime ");
    sprintf(buf, "%ld", current - m_start_time);
    ret.append(buf);

    ret.append("\nSTAT time ");
    sprintf(buf, "%ld", current);
    ret.append(buf);

    ret.append("\nSTAT default_interval ");
    sprintf(buf, "%d", m_default_interval);
    ret.append(buf);

    ret.append("\nSTAT stop_all ");
    sprintf(buf, "%d", m_stop_all);
    ret.append(buf);

    ret.append("\nSTAT site_items ");
    sprintf(buf, "%ld", m_site_map.unsafe_ref().size());
    ret.append(buf);

    int ordered_site_size = 0;
    for (int i = 0; i < MAX_PRIORITY; i++) {
        sprintf(buf, "\nSTAT ordered_site_%d items ", i);
        ret.append(buf);
        sprintf(buf, "%ld", site_queues[i].size());
        ret.append(buf);

        ordered_site_size += site_queues[i].size();
    }

    ret.append("\nSTAT ordered_site_total items ");
    sprintf(buf, "%d", ordered_site_size);
    ret.append(buf);

    ret.append("\nSTAT enqueue_items ");
    sprintf(buf, "%ld", m_enqueue_items);
    ret.append(buf);

    ret.append("\nSTAT dequeue_items ");
    sprintf(buf, "%ld", m_dequeue_items);
    ret.append(buf);

    ret.append("\nSTAT clear_items ");
    sprintf(buf, "%ld", m_clear_items);
    ret.append(buf);

    // TODO:
    // STAT curr_connections 141

    ret.append("\nEND\r\n");
    req.result(ret);
}
开发者ID:Kayven,项目名称:qcontent,代码行数:59,代码来源:qurlqueue_rpc.cpp


示例10: handler_wrapper

void handler_wrapper(WorkerHandlerBase* handler, msgpack::rpc::request& req)
{
    try
    {
        handler->invoke(req);
    }
    catch (const msgpack::type_error& e)
    {
        std::cerr << "[WorkerServer] " << e.what() << std::endl;
        req.error(msgpack::rpc::ARGUMENT_ERROR);
    }
    catch (const std::exception& e)
    {
        std::cerr << "[WorkerServer] " << e.what() << std::endl;
        req.error(std::string(e.what()));
    }
}
开发者ID:RedSunCMX,项目名称:izenelib,代码行数:17,代码来源:WorkerServer.cpp


示例11: set_site_interval

void QUrlQueueServer::set_site_interval(msgpack::rpc::request &req, const std::string &site, int interval)
{
    {
        mp::sync<SiteMap>::ref ref(m_site_map);
        m_site_interval_map[site] = interval;
    }
    req.result(QCONTENTHUB_OK);
}
开发者ID:Kayven,项目名称:qcontent,代码行数:8,代码来源:qurlqueue_rpc.cpp


示例12: set_default_interval

void QUrlQueueServer::set_default_interval(msgpack::rpc::request &req, int interval)
{
    {
        mp::sync<SiteMap>::ref ref(m_site_map);
        m_default_interval = interval;
    }
    req.result(QCONTENTHUB_OK);
}
开发者ID:Kayven,项目名称:qcontent,代码行数:8,代码来源:qurlqueue_rpc.cpp


示例13: stop_site

void QUrlQueueServer::stop_site(msgpack::rpc::request &req, const std::string &site)
{
    {
        mp::sync<SiteMap>::ref ref(m_site_map);
        SiteMapIter it = ref->find(site);
        if (it != ref->end()) {
            it->second->stop = true;
        }
    }

    req.result(QCONTENTHUB_OK);
}
开发者ID:Kayven,项目名称:qcontent,代码行数:12,代码来源:qurlqueue_rpc.cpp


示例14: dispatch

void server::dispatch(msgpack::rpc::request req)
try {
	std::string method;
	req.method().convert(&method);

	const table_type* table((table_type*)TABLE);

	table_type::const_iterator m = table->find(method);
	if(m == table->end()) {
		req.error(msgpack::rpc::NO_METHOD_ERROR);
		return;
	}

	(*m->second)(this, &req);

} catch (msgpack::type_error& e) {
	req.error(msgpack::rpc::ARGUMENT_ERROR);
	return;

} catch (std::exception& e) {
	req.error(std::string(e.what()));
	return;
}
开发者ID:EnsonRedShirt,项目名称:Segs,代码行数:23,代码来源:ChatServer.cpp


示例15: push_queue

void QContentHubServer::push_queue(msgpack::rpc::request &req, const std::string &name, const std::string &obj)
{
    queue_map_t &qmap = q_map.unsafe_ref();

    queue_map_it_t it = qmap.find(name);
    if (it == qmap.end()) {
        int ret = add_queue(name, DEFAULT_QUEUE_CAPACITY);
        if (ret == QCONTENTHUB_ERROR) {
            req.result(ret);
        } else {
            push_queue(req, name, obj);
        }
    } else {
        queue_t *q = it->second;
        pthread_mutex_lock(&q->lock);

        while ((int)q->str_q.size() > q->capacity) {
            struct timespec ts;
            clock_gettime(CLOCK_REALTIME, &ts);
            ts.tv_sec += 60;
            int rc = pthread_cond_timedwait(&q->not_full, &q->lock, &ts);
            if (rc == ETIMEDOUT) {
                pthread_mutex_unlock(&q->lock);
                req.result(QCONTENTHUB_STRAGAIN);
                return;
            } else if (rc != 0) {
                pthread_mutex_unlock(&q->lock);
                req.result(QCONTENTHUB_STRERROR);
                return;
            }
        }
        q->str_q.push(obj);
        pthread_cond_signal(&q->not_empty);
        pthread_mutex_unlock(&q->lock);
        req.result(QCONTENTHUB_OK);
    }
}
开发者ID:liseen,项目名称:qcontenthub,代码行数:37,代码来源:qcontenthub_rpc.cpp


示例16: pop_queue

void QContentHubServer::pop_queue(msgpack::rpc::request &req, const std::string &name)
{
    queue_map_t &qmap = q_map.unsafe_ref();
    queue_map_it_t it = qmap.find(name);
    if (it == qmap.end()) {
        req.result(QCONTENTHUB_STRAGAIN);
    } else {
        queue_t *q = it->second;
        if (q->stop) {
            req.result(QCONTENTHUB_STRAGAIN);
            return;
        }

        pthread_mutex_lock(&(q->lock));
        while (q->str_q.size() == 0) {
            struct timespec ts;
            clock_gettime(CLOCK_REALTIME, &ts);
            ts.tv_sec += 60;
            int rc = pthread_cond_timedwait(&q->not_empty, &q->lock, &ts);
            if (rc == ETIMEDOUT) {
                pthread_mutex_unlock(&(q->lock));
                req.result(QCONTENTHUB_STRAGAIN);
                return;
            } else if (rc != 0) {
                pthread_mutex_unlock(&(q->lock));
                req.result(QCONTENTHUB_STRERROR);
                return;
            }
        }
        //assert(q->str_q.size() > 0);
        std::string content = q->str_q.front();
        q->str_q.pop();
        pthread_cond_signal(&q->not_full);
        pthread_mutex_unlock(&(q->lock));
        req.result(content);
    }
}
开发者ID:liseen,项目名称:qcontenthub,代码行数:37,代码来源:qcontenthub_rpc.cpp


示例17: clear_queue

void QContentHubServer::clear_queue(msgpack::rpc::request &req, const std::string &name)
{
    queue_map_t &qmap = q_map.unsafe_ref();
    queue_map_it_t it = qmap.find(name);
    if (it == qmap.end()) {
        req.result(QCONTENTHUB_WARN);
    } else {
        queue_t *q = it->second;
        pthread_mutex_lock(&q->lock);
        while (!q->str_q.empty()) {
            q->str_q.pop();
        }
        pthread_mutex_unlock(&q->lock);
    }
}
开发者ID:liseen,项目名称:qcontenthub,代码行数:15,代码来源:qcontenthub_rpc.cpp


示例18: dispatch

// rpc_server
//   Msgpack-RPC based server with 'hashed' dispatcher.
//   rpc_server can add RPC method on-the-fly.
//
void rpc_server::dispatch(msgpack::rpc::request req) {
  std::string method;
  req.method().convert(&method);

  func_map::iterator fun = funcs_.find(method);
  if (fun == funcs_.end()) {
    req.error(msgpack::rpc::NO_METHOD_ERROR, method);
    return;
  }

  try {
    fun->second->invoke(req);
  } catch(const msgpack::type_error& e) {
    req.error(msgpack::rpc::ARGUMENT_ERROR, std::string(e.what()));
  } catch(const jubatus::core::common::exception::jubatus_exception& e) {
    LOG(WARNING) << "exception in RPC thread: "
                 << e.diagnostic_information(true);
    req.error(std::string(e.what()));
  } catch(const std::exception& e) {
    LOG(ERROR) << "error in RPC thread: "
               << e.what();
    req.error(std::string(e.what()));
  }
}
开发者ID:airtoxin,项目名称:jubatus,代码行数:28,代码来源:rpc_server.cpp


示例19: stat_site

void QUrlQueueServer::stat_site(msgpack::rpc::request &req, const std::string &site)
{
    char buf[64];
    std::string ret;
    mp::sync<SiteMap>::ref ref(m_site_map);
    ret.append("STAT site ");
    ret.append(site);

    SiteIntervalMapIter interval_it = m_site_interval_map.find(site);
    ret.append("\nSTAT interval ");
    if (interval_it == m_site_interval_map.end()) {
        ret.append("default ");
        sprintf(buf, "%d", m_default_interval);
        ret.append(buf);
    } else {
        sprintf(buf, "%d", interval_it->second);
        ret.append(buf);
    }

    SiteMapIter it = ref->find(site);
    if (it != ref->end()) {
        ret.append("\nSTAT stop ");
        if (it->second->stop) {
            ret.append("1");
        } else {
            ret.append("0");
        }

        ret.append("\nSTAT enqueue_items ");
        sprintf(buf, "%ld", it->second->enqueue_items);
        ret.append(buf);

        ret.append("\nSTAT dequeue_items ");
        sprintf(buf, "%ld", it->second->dequeue_items);
        ret.append(buf);

        ret.append("\nSTAT clear_items ");
        sprintf(buf, "%ld", it->second->clear_items);
        ret.append(buf);

        ret.append("\nSTAT items_size ");
        sprintf(buf, "%ld", it->second->url_queue.size());
        ret.append(buf);
    }

    ret.append("\nEND\r\n");
    req.result(ret);
}
开发者ID:Kayven,项目名称:qcontent,代码行数:48,代码来源:qurlqueue_rpc.cpp


示例20: start_site

void QUrlQueueServer::start_site(msgpack::rpc::request &req, const std::string &site)
{
    {
        mp::sync<SiteMap>::ref ref(m_site_map);
        SiteMapIter it = ref->find(site);
        if (it != ref->end()) {
            Site * s = it->second;
            it->second->stop = false;
            s->ref_cnt++;
            if (!s->url_queue.empty()) {
                push_ordered_site(s->url_queue.top().priority, s);
            }
        }
    }

    req.result(QCONTENTHUB_OK);
}
开发者ID:Kayven,项目名称:qcontent,代码行数:17,代码来源:qurlqueue_rpc.cpp



注:本文中的msgpack::rpc::request类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C++ msxml::IXMLDOMElementPtr类代码示例发布时间:2022-05-31
下一篇:
C++ msgpack::packer类代码示例发布时间:2022-05-31
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap