Skip to content

Instantly share code, notes, and snippets.

@zhouji
Created November 29, 2012 07:50
Show Gist options
  • Save zhouji/4167451 to your computer and use it in GitHub Desktop.
Save zhouji/4167451 to your computer and use it in GitHub Desktop.
Retry with timeout and counter
int QueueCluster::Send(const char * queueName, const char * data, int timeout){
int rtn = 0;
uint startTime = time(NULL);
int elapsedTime;
int retryCount = 0;
do{
QueueServer * svr = SelectQueueServer();
if( svr != NULL ){
rtn = svr->Send(queueName,data,timeout);
if( rtn == SEND_SUCCESS ){
LOG4CXX_INFO(logger, "OK" );
return 0;
}
else{
DisableServer(svr);
}
}
else{
//TODO Send error
sleep(1);
ResetServerSelector();
}
elapsedTime = difftime(time(NULL), startTime);
LOG4CXX_INFO(logger, "elapsedTime=" << elapsedTime);
if( ++retryCount > 5 ){
sleep(1);
}
}while( elapsedTime < timeout );
return -1;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment