void AMQPExchange::sendBindCommand(const char * queue, const char * key){ amqp_bytes_t queueByte = amqp_cstring_bytes(queue); amqp_bytes_t exchangeByte = amqp_cstring_bytes(name.c_str()); amqp_bytes_t keyByte = amqp_cstring_bytes(key); amqp_queue_bind_t s; s.ticket = 0; s.queue = queueByte; s.exchange = exchangeByte; s.routing_key = keyByte; s.nowait = ( AMQP_NOWAIT & parms ) ? 1:0; s.arguments.num_entries = 0; s.arguments.entries = NULL; amqp_method_number_t method_ok = AMQP_QUEUE_BIND_OK_METHOD; amqp_rpc_reply_t res = amqp_simple_rpc( *cnn, channelNum, AMQP_QUEUE_BIND_METHOD, &method_ok, &s ); AMQPBase::checkReply(&res); }
amqp_rpc_reply_t amqp_login(amqp_connection_state_t state, char const *vhost, int channel_max, int frame_max, int heartbeat, amqp_sasl_method_enum sasl_method, ...) { va_list vl; amqp_rpc_reply_t result; int status; va_start(vl, sasl_method); status = amqp_login_inner(state, channel_max, frame_max, heartbeat, sasl_method, vl); if (status < 0) { result.reply_type = AMQP_RESPONSE_LIBRARY_EXCEPTION; result.reply.id = 0; result.reply.decoded = NULL; result.library_error = -status; return result; } { amqp_method_number_t replies[] = { AMQP_CONNECTION_OPEN_OK_METHOD, 0 }; amqp_connection_open_t s; s.virtual_host = amqp_cstring_bytes(vhost); s.capabilities.len = 0; s.capabilities.bytes = NULL; s.insist = 1; result = amqp_simple_rpc(state, 0, AMQP_CONNECTION_OPEN_METHOD, (amqp_method_number_t *) &replies, &s); if (result.reply_type != AMQP_RESPONSE_NORMAL) return result; } amqp_maybe_release_buffers(state); va_end(vl); result.reply_type = AMQP_RESPONSE_NORMAL; result.reply.id = 0; result.reply.decoded = NULL; result.library_error = 0; return result; }
amqp_rpc_reply_t amqp_connection_close(amqp_connection_state_t state, int code) { char codestr[13]; amqp_method_number_t replies[2] = { AMQP_CONNECTION_CLOSE_OK_METHOD, 0}; amqp_channel_close_t req; req.reply_code = code; req.reply_text.bytes = codestr; req.reply_text.len = sprintf(codestr, "%d", code); req.class_id = 0; req.method_id = 0; return amqp_simple_rpc(state, 0, AMQP_CONNECTION_CLOSE_METHOD, replies, &req); }
amqp_rpc_reply_t amqp_basic_get(amqp_connection_state_t state, amqp_channel_t channel, amqp_bytes_t queue, amqp_boolean_t no_ack) { amqp_method_number_t replies[] = { AMQP_BASIC_GET_OK_METHOD, AMQP_BASIC_GET_EMPTY_METHOD, 0 }; amqp_basic_get_t req; req.ticket = 0; req.queue = queue; req.no_ack = no_ack; state->most_recent_api_result = amqp_simple_rpc(state, channel, AMQP_BASIC_GET_METHOD, replies, &req); return state->most_recent_api_result; }
void *amqp_simple_rpc_decoded(amqp_connection_state_t state, amqp_channel_t channel, amqp_method_number_t request_id, amqp_method_number_t reply_id, void *decoded_request_method) { amqp_method_number_t replies[2]; replies[0] = reply_id; replies[1] = 0; state->most_recent_api_result = amqp_simple_rpc(state, channel, request_id, replies, decoded_request_method); if (state->most_recent_api_result.reply_type == AMQP_RESPONSE_NORMAL) return state->most_recent_api_result.reply.decoded; else return NULL; }
void AMQPExchange::sendDeleteCommand(){ amqp_bytes_t exchange = amqp_cstring_bytes(name.c_str()); amqp_exchange_delete_t s; s.ticket = 0; s.exchange = exchange; s.if_unused = ( AMQP_IFUNUSED & parms ) ? 1:0; s.nowait = ( AMQP_NOWAIT & parms ) ? 1:0; amqp_method_number_t method_ok = AMQP_EXCHANGE_DELETE_OK_METHOD; amqp_rpc_reply_t res = amqp_simple_rpc( *cnn, channelNum, AMQP_EXCHANGE_DELETE_METHOD, &method_ok, &s ); AMQPBase::checkReply(&res); }