本文整理汇总了C++中req_put函数的典型用法代码示例。如果您正苦于以下问题:C++ req_put函数的具体用法?C++ req_put怎么用?C++ req_put使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了req_put函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: req_recv_next
struct msg *
req_recv_next(struct context *ctx, struct conn *conn, bool alloc)
{
struct msg *msg;
ASSERT(conn->client && !conn->proxy);
if (conn->eof) {
msg = conn->rmsg;
/* client sent eof before sending the entire request */
if (msg != NULL) {
conn->rmsg = NULL;
ASSERT(msg->peer == NULL);
ASSERT(msg->request && !msg->done);
log_error("eof c %d discarding incomplete req %"PRIu64" len "
"%"PRIu32"", conn->sd, msg->id, msg->mlen);
req_put(msg);
}
/*
* TCP half-close enables the client to terminate its half of the
* connection (i.e. the client no longer sends data), but it still
* is able to receive data from the proxy. The proxy closes its
* half (by sending the second FIN) when the client has no
* outstanding requests
*/
if (!conn->active(conn)) {
conn->done = 1;
log_debug(LOG_INFO, "c %d is done", conn->sd);
}
return NULL;
}
msg = conn->rmsg;
if (msg != NULL) {
ASSERT(msg->request);
return msg;
}
if (!alloc) {
return NULL;
}
msg = req_get(conn);
if (msg != NULL) {
conn->rmsg = msg;
}
return msg;
}
示例2: mtp_tunnel_complete_in
static void mtp_tunnel_complete_in(struct usb_endpoint *ept, struct usb_request *req)
{
struct mtp_tunnel_context *ctxt = req->context;
if (req->status != 0)
ctxt->error = 1;
req_put(ctxt, &ctxt->tx_idle, req);
wake_up(&ctxt->write_wq);
}
示例3: acc_complete_in
static void acc_complete_in(struct usb_ep *ep, struct usb_request *req)
{
struct acc_dev *dev = _acc_dev;
if (req->status == -ESHUTDOWN) {
pr_debug("acc_complete_in set disconnected");
acc_set_disconnected(dev);
}
req_put(dev, &dev->tx_idle, req);
wake_up(&dev->write_wq);
}
示例4: rsp_make_error
static struct msg *
rsp_make_error(struct context *ctx, struct conn *conn, struct msg *msg)
{
struct msg *pmsg; /* peer message (response) */
struct msg *cmsg, *nmsg; /* current and next message (request) */
uint64_t id;
err_t err;
ASSERT(conn->client && !conn->proxy);
ASSERT(msg->request && req_error(conn, msg));
ASSERT(msg->owner == conn);
id = msg->frag_id;
if (id != 0) {
for (err = 0, cmsg = TAILQ_NEXT(msg, c_tqe);
cmsg != NULL && cmsg->frag_id == id;
cmsg = nmsg) {
nmsg = TAILQ_NEXT(cmsg, c_tqe);
/* dequeue request (error fragment) from client outq */
conn->dequeue_outq(ctx, conn, cmsg);
if (err == 0 && cmsg->err != 0) {
err = cmsg->err;
}
req_put(cmsg);
}
} else {
err = msg->err;
}
pmsg = msg->peer;
if (pmsg != NULL) {
ASSERT(!pmsg->request && pmsg->peer == msg);
msg->peer = NULL;
pmsg->peer = NULL;
rsp_put(pmsg);
}
#if 1 //shenzheng 2014-12-4 common
//attention: the new error macro we defined must be a negative number.
if(err >= 0)
{
#endif
return msg_get_error(conn->redis, err);
#if 1 //shenzheng 2014-12-4 common
}
else
{
return msg_get_error_other(conn->redis, err);
}
#endif
}
示例5: rsp_filter
static bool
rsp_filter(struct context *ctx, struct conn *conn, struct msg *msg)
{
struct msg *pmsg;
ASSERT(!conn->client && !conn->proxy);
if(conn->is_Select_Msg){
conn->is_Select_Msg = 0;
rsp_put(msg);
log_debug(LOG_VERB," select success rsp %"PRIu64" len %"PRIu32" on s %d ", msg->id,
msg->mlen, conn->sd);
//ignore first response
return true;
}
if (msg_empty(msg)) {
ASSERT(conn->rmsg == NULL);
log_debug(LOG_VERB, "filter empty rsp %"PRIu64" on s %d", msg->id,
conn->sd);
rsp_put(msg);
return true;
}
pmsg = TAILQ_FIRST(&conn->omsg_q);
if (pmsg == NULL) {
log_error("filter stray rsp %"PRIu64" len %"PRIu32" on s %d", msg->id,
msg->mlen, conn->sd);
rsp_put(msg);
errno = EINVAL;
conn->err = errno;
return true;
}
ASSERT(pmsg->peer == NULL);
ASSERT(pmsg->request && !pmsg->done);
if (pmsg->swallow) {
conn->dequeue_outq(ctx, conn, pmsg);
pmsg->done = 1;
log_debug(LOG_INFO, "swallow rsp %"PRIu64" len %"PRIu32" of req "
"%"PRIu64" on s %d", msg->id, msg->mlen, pmsg->id,
conn->sd);
rsp_put(msg);
req_put(pmsg);
return true;
}
return false;
}
示例6: req_filter
static bool
req_filter(struct context *ctx, struct conn *conn, struct msg *msg)
{
ASSERT(conn->client && !conn->proxy);
if (msg_empty(msg)) {
ASSERT(conn->rmsg == NULL);
log_debug(LOG_VERB, "filter empty req %"PRIu64" from c %d", msg->id,
conn->sd);
req_put(msg);
return true;
}
/*
* Handle "quit\r\n", which is the protocol way of doing a
* passive close
*/
if (msg->quit) {
ASSERT(conn->rmsg == NULL);
log_debug(LOG_INFO, "filter quit req %"PRIu64" from c %d", msg->id,
conn->sd);
conn->eof = 1;
conn->recv_ready = 0;
req_put(msg);
return true;
}
/*
* if this conn is not authenticated, we will mark it as noforward,
* and handle it in the redis_reply handler.
*
*/
if (conn->need_auth) {
msg->noforward = 1;
}
return false;
}
示例7: rsp_filter
static bool
rsp_filter(struct context *ctx, struct conn *conn, struct msg *msg)
{
struct msg *pmsg;
ASSERT(!conn->client && !conn->proxy);
if (msg_empty(msg)) {
ASSERT(conn->rmsg == NULL);
log_debug(LOG_VERB, "filter empty rsp %"PRIu64" on s %d", msg->id,
conn->sd);
rsp_put(msg);
return true;
}
pmsg = TAILQ_FIRST(&conn->omsg_q);
if (pmsg == NULL) {
log_debug(LOG_VERB, "filter stray rsp %"PRIu64" len %"PRIu32" on s %d",
msg->id, msg->mlen, conn->sd);
rsp_put(msg);
return true;
}
if (pmsg->noreply) {
conn->dequeue_outq(ctx, conn, pmsg);
rsp_put(pmsg);
rsp_put(msg);
return true;
}
ASSERT(pmsg->peer == NULL);
ASSERT(pmsg->request && !pmsg->done);
if (pmsg->swallow) {
conn->dequeue_outq(ctx, conn, pmsg);
pmsg->done = 1;
if (log_loggable(LOG_DEBUG)) {
log_debug(LOG_DEBUG, "swallow rsp %"PRIu64" len %"PRIu32" of req "
"%"PRIu64" on s %d", msg->id, msg->mlen, pmsg->id,
conn->sd);
}
rsp_put(msg);
req_put(pmsg);
return true;
}
return false;
}
示例8: dnode_rsp_swallow
static void
dnode_rsp_swallow(struct context *ctx, struct conn *peer_conn,
struct msg *req, struct msg *rsp)
{
peer_conn->dequeue_outq(ctx, peer_conn, req);
req->done = 1;
log_debug(LOG_VERB, "conn %p swallow %p", peer_conn, req);
if (rsp) {
log_debug(LOG_INFO, "dyn: swallow rsp %"PRIu64" len %"PRIu32" of req "
"%"PRIu64" on s %d", rsp->id, rsp->mlen, req->id,
peer_conn->sd);
dnode_rsp_put(rsp);
}
req_put(req);
}
示例9: mtp_in_complete
static void mtp_in_complete(struct usb_ep *ep, struct usb_request *req)
{
mtp_debug("status is %d %p %d\n", req->status, req, req->actual);
if (req->status == -ECONNRESET)
usb_ep_fifo_flush(ep);
if (req->status != 0) {
g_usb_mtp_context.error = 1;
mtp_err("status is %d %p len=%d\n",
req->status, req, req->actual);
}
req_put(&g_usb_mtp_context.tx_reqs, req);
wake_up(&g_usb_mtp_context.tx_wq);
}
示例10: start_out_receive
static void start_out_receive(void)
{
struct usb_request *req;
int ret;
/* if we have idle read requests, get them queued */
while ((req = req_get(&g_usb_mtp_context.rx_reqs))) {
req->length = BULK_BUFFER_SIZE;
ret = usb_ep_queue(g_usb_mtp_context.bulk_out, req, GFP_ATOMIC);
if (ret < 0) {
mtp_err("error %d\n", ret);
g_usb_mtp_context.error = 1;
req_put(&g_usb_mtp_context.rx_reqs, req);
}
}
}
示例11: rsp_filter
static bool
rsp_filter(struct context *ctx, struct conn *conn, struct msg *msg)
{
struct msg *pmsg;
ASSERT(!conn->client && !conn->proxy);
if (msg_empty(msg)) {
ASSERT(conn->rmsg == NULL);
log_debug(LOG_VERB, "filter empty rsp %"PRIu64" on s %d", msg->id,
conn->sd);
rsp_put(msg);
return true;
}
pmsg = TAILQ_FIRST(&conn->omsg_q);
if (pmsg == NULL) {
log_debug(LOG_ERR, "filter stray rsp %"PRIu64" len %"PRIu32" on s %d",
msg->id, msg->mlen, conn->sd);
rsp_put(msg);
return true;
}
ASSERT(pmsg->peer == NULL);
ASSERT(pmsg->request && !pmsg->done);
/* establish msg <-> pmsg (response <-> request) link */
msg->peer = pmsg;
pmsg->peer = msg;
if (pmsg->swallow) {
if (pmsg->pre_swallow != NULL) {
pmsg->pre_swallow(ctx, conn, msg);
}
conn->dequeue_outq(ctx, conn, pmsg);
pmsg->done = 1;
log_debug(LOG_INFO, "swallow rsp %"PRIu64" len %"PRIu32" of req "
"%"PRIu64" on s %d", msg->id, msg->mlen, pmsg->id,
conn->sd);
req_put(pmsg);
return true;
}
return false;
}
示例12: req_forward
static void
req_forward(struct context *ctx, struct conn *c_conn, struct msg *msg)
{
rstatus_t status;
struct conn *s_conn;
struct server_pool *pool;
uint8_t *key;
uint32_t keylen;
struct keypos *kpos;
ASSERT(c_conn->client && !c_conn->proxy);
/* enqueue message (request) into client outq, if response is expected */
if (!msg->noreply) {
c_conn->enqueue_outq(ctx, c_conn, msg);
}
pool = c_conn->owner;
ASSERT(array_n(msg->keys) > 0);
kpos = array_get(msg->keys, 0);
key = kpos->start;
keylen = (uint32_t)(kpos->end - kpos->start);
s_conn = msg->routing(ctx, pool, msg, key, keylen);
if (s_conn == NULL) {
req_forward_error(ctx, c_conn, msg);
return;
}
ASSERT(!s_conn->client && !s_conn->proxy);
status = req_enqueue(ctx, s_conn, c_conn, msg);
if (status != NC_OK) {
req_put(msg);
return;
}
req_forward_stats(ctx, s_conn->owner, msg);
log_debug(LOG_VERB, "forward from c %d to s %d req %"PRIu64" len %"PRIu32
" type %d with key '%.*s'", c_conn->sd, s_conn->sd, msg->id,
msg->mlen, msg->type, keylen, key);
return;
}
示例13: rsp_make_error
static struct msg *
rsp_make_error(struct context *ctx, struct conn *conn, struct msg *msg)
{
struct msg *pmsg; /* peer message (response) */
struct msg *cmsg, *nmsg; /* current and next message (request) */
uint64_t id;
err_t err;
ASSERT((conn->type == CONN_CLIENT) ||
(conn->type == CONN_DNODE_PEER_CLIENT));
ASSERT(msg->request && req_error(conn, msg));
ASSERT(msg->owner == conn);
id = msg->frag_id;
if (id != 0) {
for (err = 0, cmsg = TAILQ_NEXT(msg, c_tqe);
cmsg != NULL && cmsg->frag_id == id;
cmsg = nmsg) {
nmsg = TAILQ_NEXT(cmsg, c_tqe);
/* dequeue request (error fragment) from client outq */
conn_dequeue_outq(ctx, conn, cmsg);
if (err == 0 && cmsg->err != 0) {
err = cmsg->err;
}
req_put(cmsg);
}
} else {
err = msg->err;
}
pmsg = msg->selected_rsp;
if (pmsg != NULL) {
ASSERT(!pmsg->request && pmsg->peer == msg);
msg->selected_rsp = NULL;
pmsg->peer = NULL;
rsp_put(pmsg);
}
return msg_get_error(conn, msg->dyn_error, err);
}
示例14: rsp_make_error
static struct msg *
rsp_make_error(struct context *ctx, struct conn *conn, struct msg *msg)
{
struct msg *pmsg; /* peer message (response) */
struct msg *cmsg, *nmsg; /* current and next message (request) */
uint64_t id;
err_t err;
ASSERT(conn->client && !conn->proxy);
ASSERT(msg->request && req_error(conn, msg));
ASSERT(msg->owner == conn);
id = msg->frag_id;
/* 将属于同一分片的msg的都干掉 */
if (id != 0) {
for (err = 0, cmsg = TAILQ_NEXT(msg, c_tqe);
cmsg != NULL && cmsg->frag_id == id;
cmsg = nmsg) {
nmsg = TAILQ_NEXT(cmsg, c_tqe);
/* dequeue request (error fragment) from client outq */
conn->dequeue_outq(ctx, conn, cmsg);
if (err == 0 && cmsg->err != 0) {
err = cmsg->err;
}
req_put(cmsg);
}
} else {
err = msg->err;
}
pmsg = msg->peer;
if (pmsg != NULL) {
ASSERT(!pmsg->request && pmsg->peer == msg);
msg->peer = NULL;
pmsg->peer = NULL;
rsp_put(pmsg);
}
return msg_get_error(conn->redis, err);
}
示例15: dnode_rsp_filter
static bool
dnode_rsp_filter(struct context *ctx, struct conn *conn, struct msg *msg)
{
struct msg *pmsg;
ASSERT(!conn->dnode_client && !conn->dnode_server);
if (msg_empty(msg)) {
ASSERT(conn->rmsg == NULL);
log_debug(LOG_VERB, "dyn: filter empty rsp %"PRIu64" on s %d", msg->id,
conn->sd);
dnode_rsp_put(msg);
return true;
}
pmsg = TAILQ_FIRST(&conn->omsg_q);
if (pmsg == NULL) {
log_debug(LOG_INFO, "dyn: filter stray rsp %"PRIu64" len %"PRIu32" on s %d noreply %d",
msg->id, msg->mlen, conn->sd, msg->noreply);
dnode_rsp_put(msg);
return true;
}
ASSERT(pmsg->peer == NULL);
ASSERT(pmsg->request && !pmsg->done);
if (pmsg->swallow) {
conn->dequeue_outq(ctx, conn, pmsg);
pmsg->done = 1;
log_debug(LOG_INFO, "dyn: swallow rsp %"PRIu64" len %"PRIu32" of req "
"%"PRIu64" on s %d", msg->id, msg->mlen, pmsg->id,
conn->sd);
dnode_rsp_put(msg);
req_put(pmsg);
return true;
}
return false;
}