예제 #1
0
void Msg20::reset() {
	// not allowed to reset one in progress
	if ( m_inProgress ) { 
		// do not core on abrupt exits!
		if (g_process.m_mode == Process::EXIT_MODE ) {
			log("msg20: msg20 not being freed because exiting.");
			return;
		}
		// otherwise core
		g_process.shutdownAbort(true); 
	}

	m_launched = false;
	if ( m_request ) {
		mfree( m_request, m_requestSize, "Msg20rb1" );
	}

	freeReply();

	m_request      = NULL; // the request buf ptr
	m_gotReply     = false;
	m_errno        = 0;
	m_requestDocId = -1LL;
	m_callback     = NULL;
	m_state        = NULL;
	m_ownReply     = true;
	m_requestSize = 0;
	m_replySize = 0;
	m_replyMaxSize = 0;
	m_callback2 = NULL;
}
예제 #2
0
void Command<ReplyT>::processReply(redisReply* r) {

  reply_obj_ = r;

  if(reply_obj_ == nullptr) {
    reply_status_ = ERROR_REPLY;
    logger_.error() << "Received null redisReply* from hiredis.";
    Redox::disconnectedCallback(rdx_->ctx_, REDIS_ERR);

  } else {
    lock_guard<mutex> lg(reply_guard_);
    parseReplyObject();
  }

  invoke();

  pending_--;

  waiting_done_ = true;
  waiter_.notify_all();

  // Always free the reply object for repeating commands
  if(repeat_ > 0) {
    freeReply();

  } else {

    // User calls .free()
    if (!free_memory_) return;

    // Free non-repeating commands automatically
    // once we receive expected replies
    if(pending_ == 0) free();
  }
}
예제 #3
0
void Msg20::reset() { 

	//log("msg20: resetting msg20=0x%"PTRFMT" reply=0x%"PTRFMT"",
	//    (PTRTYPE)this,(PTRTYPE)m_r);

	if ( ! m_owningParent ) { char *xx=NULL;*xx=0; }

	// not allowed to reset one in progress
	if ( m_inProgress ) { 
		// do not core on abrupt exits!
		if (g_process.m_mode == EXIT_MODE ) {
			log("msg20: msg20 not being freed because exiting.");
			return;
		}
		// otherwise core
		char *xx=NULL;*xx=0; 
	}
	m_launched = false;
	if ( m_request && m_request   != m_requestBuf )
		mfree ( m_request , m_requestSize  , "Msg20rb1" );
	freeReply();
	//if ( m_r ) m_r->destructor();
	//if ( m_r && m_ownReply ) //&& (char *)m_r != m_replyBuf )
	//	mfree ( m_r       , m_replyMaxSize , "Msg20b"  );
	//m_r            = NULL; // the reply ptr
	m_request      = NULL; // the request buf ptr
	m_gotReply     = false;
	m_errno        = 0;
	m_requestDocId = -1LL;
	m_callback     = NULL;
	m_callback2    = NULL;
	m_state        = NULL;
	m_ownReply     = true;
	// resets
	m_pqr_old_score        = 0.0;
	m_pqr_factor_quality   = 1.0;
	m_pqr_factor_diversity = 1.0;
	m_pqr_factor_inlinkers = 1.0;
	m_pqr_factor_proximity = 1.0;
	m_pqr_factor_ctype     = 1.0;
	m_pqr_factor_lang      = 1.0; // includes country
}
예제 #4
0
int main(int argc, char *argv[]) {
	char c;
	redis_client_st *redis_client;
	char config_path[1024];

	if (argc <= 2) {
		printf("usage: ./%s -f xxx.conf", PROGRAME);
		return 1;
	}
	memset(config_path, 0, sizeof(config_path));
	while (-1 != (c = getopt(argc, argv, "f:h"))) {
		switch (c) {
		case 'f':
			snprintf(config_path, sizeof(config_path), "%s", optarg);
			break;
		case '?':
		case 'h':
			printf("usage: ./%s -f xxx.conf", PROGRAME);
			break;
		}

	}
	redis_reply_st *reply = NULL;
	redis_client = redis_client_init(config_path);
	redis_return_st rc;
	printf("test add conn\n");

	redis_add_conns(redis_client, "*****@*****.**", "*****@*****.**"
		);

	reply = redis_query(redis_client,
			"sismember {[email protected]}_conns [email protected]");
	assert(reply->integer == 1);
	freeReply(reply);
	printf("* ");

	printf("test add following\n");

	redis_add_following(redis_client, "*****@*****.**", "*****@*****.**");

	reply = redis_query(redis_client,
			"sismember {[email protected]}_followings [email protected]");
	assert(reply->integer == 1);
	freeReply(reply);

	reply
			= redis_query(redis_client,
					"sismember [email protected][email protected]  2233");
	assert(reply->integer == 0);
	freeReply(reply);
	printf("* ");




	printf("test del conns\n");

	redis_del_conns(redis_client, "*****@*****.**", "*****@*****.**");

	reply = redis_query(redis_client,
			"sismember {[email protected]}_conns [email protected]");
	assert(reply->integer == 0);
	freeReply(reply);

	reply = redis_query(redis_client,
			"sismember [email protected]_followings [email protected] ");
	assert(reply->integer == 0);
	freeReply(reply);

	printf("* ");

	printf("test add_block\n");

	redis_add_block(redis_client, "*****@*****.**", "*****@*****.**");

	reply = redis_query(redis_client,
			"sismember {[email protected]}_blocks [email protected]");
	assert(reply->integer == 1);
	freeReply(reply);

	printf("* ");

	printf("test del_block\n");

	redis_del_block(redis_client, "*****@*****.**", "*****@*****.**");

	reply = redis_query(redis_client,
			"sismember {[email protected]}_blocks [email protected]");
	assert(reply->integer == 0);
	freeReply(reply);
	printf("* ");

	printf("test get_guids\n");

	char **guid;
	int len;
	redis_get_guids(redis_client, "*****@*****.**", "*****@*****.**", &guid,
			&len);
	int i = 0;
	for (i = 0; i < len; i++) {
		printf("%s\n", guid[i]);
	}

	printf("* ");
	printf("test add_jid_to_group\n");

	redis_add_jid_to_group(redis_client, "*****@*****.**", "*****@*****.**",
			"1221");

	redis_add_jid_to_group(redis_client, "*****@*****.**", "*****@*****.**",
			"1221");
	reply = redis_query(redis_client,
			"sismember {[email protected]}_group_1221 [email protected]");
	assert(reply->integer == 1);
	freeReply(reply);
	//分組管理
	printf("* ");
	printf("test del_jid_from_group\n");

	redis_del_jid_from_group(redis_client, "*****@*****.**", "*****@*****.**",
			"1221");


	reply = redis_query(redis_client,
			"sismember {[email protected]}_group_1221 [email protected]");
	assert(reply->integer == 0);
	freeReply(reply);
	//分組管理
	printf("* ");
	printf("test del group\n");

	redis_del_group(redis_client, "*****@*****.**",
			"1221");


	reply = redis_query(redis_client,
			"sismember {[email protected]}_group_1221 [email protected]");
	assert(reply->integer == 0);
	freeReply(reply);
	//分組管理
	printf("* ");




	printf("\nend\n");

	return 1;

}
예제 #5
0
int main(int argc, char *argv[])
{
	char c;
	redis_client_st *redis_client;
	char config_path[1024];

	if (argc <= 2)
	{
		printf("usage: ./%s -f xxx.conf", PROGRAME);
		return 1;
	}
	memset(config_path, 0, sizeof(config_path));
	while (-1 != (c = getopt(argc, argv, "f:h")))
	{
		switch (c)
		{
		case 'f':
			snprintf(config_path, sizeof(config_path), "%s", optarg);
			break;
		case '?':
		case 'h':
			printf("usage: ./%s -f xxx.conf", PROGRAME);
			break;
		}

	}
	redis_reply_st *reply = NULL;
	redis_client = redis_client_init(config_path);
	redis_return_st rc;
	printf("test send_forbidden \n");
	rc = redis_add_send_forFeedtype(redis_client, "*****@*****.**", "sync.gozap.com");
	reply
			= redis_query(redis_client,
					"sismember {[email protected]}_send_forbidden_feeds sync.gozap.com");
	assert(reply->integer == 1);
	freeReply(reply);
	printf("* ");

	rc = redis_rem_send_forFeedtype(redis_client, "*****@*****.**", "sync.gozap.com");
	reply
			= redis_query(redis_client,
					"sismember {[email protected]}_send_forbidden_feeds sync.gozap.com");
	assert(reply->integer == 0);
	freeReply(reply);

	printf("* ");

	rc = redis_add_send_forJid(redis_client, "*****@*****.**", "*****@*****.**");
	reply = redis_query(redis_client,
			"sismember {[email protected]}_send_forbidden_jids [email protected]");
	assert(reply->integer == 1);
	assert(rc == REDIS_SUCCESS);
	freeReply(reply);
	printf("* ");

	rc = redis_rem_send_forJid(redis_client, "*****@*****.**", "*****@*****.**");
	reply = redis_query(redis_client,
			"sismember {[email protected]}_send_forbidden_jids [email protected]");
	assert(reply->integer == 0);
	assert(rc == REDIS_SUCCESS);
	freeReply(reply);
	printf("* ");

	rc = redis_add_send_forFeedtypeJid(redis_client, "*****@*****.**", "sync.gozap.com",
			"*****@*****.**");
	reply = redis_query(redis_client,
			"sismember {[email protected]}_send_forbidden_sync.gozap.com [email protected]");
	assert(reply->integer == 1);
	assert(rc == REDIS_SUCCESS);
	freeReply(reply);
	printf("* ");

	rc = redis_rem_send_forFeedtypeJid(redis_client, "*****@*****.**", "sync.gozap.com",
			"*****@*****.**");
	reply = redis_query(redis_client,
			"sismember {[email protected]}_send_forbidden_sync.gozap.com [email protected]");
	assert(reply->integer == 0);
	assert(rc == REDIS_SUCCESS);
	freeReply(reply);
	printf("* ");

	printf("\n end \n");

	printf("test receive_forbidden \n");
	rc = redis_add_receive_forFeedtype(redis_client, "*****@*****.**", "sync");
	reply = redis_query(redis_client,
			"sismember {[email protected]}_receive_forbidden_feeds sync");
	assert(reply->integer == 1);
	assert(rc == REDIS_SUCCESS);
	freeReply(reply);
	printf("* ");

	rc = redis_rem_receive_forFeedtype(redis_client, "*****@*****.**", "sync");
	reply = redis_query(redis_client,
			"sismember {[email protected]}_receive_forbidden_feeds sync");
	assert(reply->integer == 0);
	assert(rc == REDIS_SUCCESS);
	freeReply(reply);
	printf("* ");

	rc = redis_add_receive_forJid(redis_client, "*****@*****.**", "*****@*****.**");
	reply = redis_query(redis_client,
			"sismember {[email protected]}_receive_forbidden_jids [email protected]");
	assert(reply->integer == 1);
	assert(rc == REDIS_SUCCESS);
	freeReply(reply);
	printf("* ");
	rc
			= redis_rem_receive_forJid(redis_client, "*****@*****.**", "*****@*****.**");
	reply = redis_query(redis_client,
			"sismember {[email protected]}_receive_forbidden_jids [email protected]");
	assert(reply->integer == 0);
	assert(rc == REDIS_SUCCESS);
	freeReply(reply);
	printf("* ");

	rc = redis_add_receive_forFeedtypeJid(redis_client, "*****@*****.**", "sync",
			"*****@*****.**");
	reply = redis_query(redis_client,
			"sismember {[email protected]}_receive_forbidden_sync [email protected]");
	assert(reply->integer == 1);
	assert(rc == REDIS_SUCCESS);
	freeReply(reply);
	printf("* ");

	rc = redis_rem_receive_forFeedtypeJid(redis_client, "*****@*****.**", "sync",
			"*****@*****.**");
	reply = redis_query(redis_client,
			"sismember {[email protected]}_receive_forbidden_sync [email protected]");
	assert(reply->integer == 0);
	assert(rc == REDIS_SUCCESS);
	freeReply(reply);
	printf("* ");
	printf("\n end \n");

	printf("set auto\n");
	rc = redis_set_feed_auto(redis_client, "*****@*****.**", "1212",1);
	reply = redis_query(redis_client,
			"get {[email protected]}_1212_auto");
	assert(strcmp(reply->str,"1")==0 );
	assert(rc == REDIS_SUCCESS);
	freeReply(reply);
	printf("* ");

	
    char *feed = "10001";
	rc = redis_create_gozap_feed(redis_client, feed);
	reply = redis_query(redis_client, "sismember gozap_feeds %s", feed);
	assert(reply->integer == 1);
	freeReply(reply);
	printf("* ");
    char *comps[] = {"sync", "link"};
    rc  = redis_set_gozap_feed_comp(redis_client, feed, comps ,2);
  
	reply = redis_query(redis_client, "sismember {%s}_comps sync", feed);
	assert(reply->integer == 1);
	freeReply(reply);

	reply = redis_query(redis_client, "sismember {%s}_comps link", feed);
	assert(reply->integer == 1);
	freeReply(reply);
	printf("* ");

	rc  = redis_add_gozap_feed_process(redis_client, feed, "process2" );
	reply = redis_query(redis_client, "sismember {%s}_processes process2", feed);
	assert(reply->integer == 1);
	freeReply(reply);
	
	assert(rc == REDIS_SUCCESS);
	printf("* ");

	rc = redis_del_gozap_feed_type(redis_client, feed);
	reply = redis_query(redis_client, "sismember gozap_feeds %s", feed);
	assert(reply->integer == 0);
	freeReply(reply);
	printf("* ");

	reply = redis_query(redis_client, "EXISTS {%s}_comps", feed);
	assert(reply->integer == 0);
	freeReply(reply);
	printf("* ");

	reply = redis_query(redis_client, "EXISTS {%s}_processes", feed);
	assert(reply->integer == 0);
	freeReply(reply);
	printf("* ");

	assert(rc == REDIS_SUCCESS);
	printf("* ");


	printf("\nend\n");

	return 1;

}