Exemplo n.º 1
0
//=================以下函数需要重写=========================
bool smsInit(int nCodeType)
{
	//删除短信,重置计数
	//如有需要,请重写

	//设备重启以后默认是PDU模式,如果需要TEXT模式,需要设置
	int i;
	if (AT_Set_CodeType(nCodeType)==FALSE)
	{
		return FALSE;
	}
	
	for (i=1;i<=SMSCapacity;i++)
	{
		if (deleteMsg(i)==FALSE)
		{
			return FALSE;
		}
	}
	
	nsmsCount=0;
	nSMSHeadIndex=1;
	return TRUE;

}
Exemplo n.º 2
0
	void HTTPClient::main(){
		std::vector<HTTPMsg*>::iterator it = _respondMsgs.begin();
		std::vector<HTTPMsg*>::iterator itEnd = _respondMsgs.end();
		for ( ; it != itEnd; ++it ){
			(*it)->getBuff()->readReset();
			(*it)->onRespond();
			deleteMsg(*it);
		}
		_respondMsgs.clear();
	}	
Exemplo n.º 3
0
int processDelete(int sockfd, char *msg) {
	msg = getParameters(msg, POP_DELE);
	if (strlen(msg) == 0) {
		return(-1);
	}
	else {
		int stat_details = 0;
		int msgCount = atoi(msg);
		if (msgCount > list[stat_details].mesgid || msgCount < 1) {
			writeClient(sockfd, POP_ERR, TRUE);
			return(0);
		}
		deleteMsg(username, list[msgCount].mesgid);
		getListMessages(username);
		writeClient(sockfd, POP_OK, TRUE);
	}
	return(0);
}
Exemplo n.º 4
0
void popupmsg::mousePressEvent(QMouseEvent *event)
{
    //if (!openMessage){
        if ((this->width()-event->pos().x()) < 20 && (this->height()-event->pos().y()) < 20 ){
            emit deleteMsg();            
            return;
        }
    //}
    if (bigMsg){
        if (openMessage)
            openMessage = false;
        else
            openMessage = true;
        showMessage();
        emit openedMsg(openMessage);
    }
    qDebug() << event->pos();
    QWidget::mousePressEvent(event);
}
Exemplo n.º 5
0
bool DealNewMsg()
{
	nsmsCount++;
	
	if (nsmsCount>=SMSMaxCount)
	{
		if (deleteMsg(nSMSHeadIndex)==FALSE)
		{
			return FALSE;
		}
		
		nsmsCount = SMSMaxCount -1;
		
		nSMSHeadIndex = (nSMSHeadIndex>=SMSMaxCount) ? 1 : nSMSHeadIndex+1;
		
	}
	
	//这里按照短信的内容,执行对应的操作
	printf("deal the cmd come from user sms\r\n");
	
	return TRUE;
}
Exemplo n.º 6
0
void ThreePC::doMaster(bool ongo) {
	//Tag *tag = new Tag(size, myid);  // used to record reply status
	bool ongoing = ongo; // every time there is only one outstanding commitment,
	while (true) {
		fd_set fdset;
		struct timeval timeout = { 2, 0 };  // time for time out
		if (TESTELECTION1) {
			testElection1();
		} else if (TESTELECTION2) {
			testElection2();
		} else if (TESTSUB) {
			testSubsequentFail();
		}
		if (isTermination == false) { // normal 3pc protocol
			if (ongoing == false && state == INIT) { // if sending queue is not empty and no outstanding msg pick one and send to all
				char t = 0;
				cin >> t;
				if (t != 'y') {
					continue;
				}
				tag->setAlltoFalse();
				times = TRY;
				ongoing = true;
				value++;  // set value;
				char *cancomit = mkMsg(CANCMT, value, myid);

				sendAllMsg(CANCMT, cancomit);
				state = WAIT;
				deleteMsg(CANCMT, cancomit);
			}
			FD_ZERO(&fdset);
			FD_SET(sockfd, &fdset);
			select(sockfd + 1, &fdset, NULL, NULL, &timeout);
			if (FD_ISSET(sockfd, &fdset)) {
				char *p = NULL;
				int type = recvMessage(p);
				if (type == REPLY && state == WAIT) {
					Reply *msg = (Reply *) p;
					assert(value == msg->val);
					if (msg->isyes == 1) {  // received a yes from cohort
						int sender = msg->senderid;
						tag->setTrue(sender);
						if (tag->checkAllTrue() && state == WAIT) { // all said yes

							char *precomit = mkMsg(PRECMT, msg->val, myid);
							tag->setAlltoFalse(); // reSet tag to all false except my
							sendAllMsg(PRECMT, precomit);
							state = PREP; // set state to prepare after sending preCommit
							deleteMsg(PRECMT, precomit); // garbage collection
							times = TRY;
						}
					} else if (msg->isyes == 0) {  // received a no from cohort
						tag->setAlltoFalse();
						char *abrt = mkMsg(ABORT, value, myid);
						sendAllMsg(ABORT, abrt);
						state = ABRT;
						deleteMsg(ABORT, abrt);
						times = TRY;
					}
				} else if (type == ACK && state == PREP) {  // in PREP(prepare)

					Ack *msg = (Ack *) p;
					assert(value == msg->val);
					int sender = msg->senderid;
					tag->setTrue(sender);
					if (tag->checkAllTrue() && state == PREP) { // all ack transmit to CMI commit
						char *docomit = mkMsg(DOCMT, msg->val, myid);
						tag->setAlltoFalse();
						sendAllMsg(DOCMT, docomit);
						state = CMT;  // set state to cmt
						deleteMsg(DOCMT, docomit);
						times = TRY;
					}

				} else if (type == HAVECMTED && state == CMT) {
					HaveCommitted *msg = (HaveCommitted *) p;
					assert(value == msg->val);
					int sender = msg->senderid;
					tag->setTrue(sender);
					if (tag->checkAllTrue() && state == CMT) { // all commit state transmit to INIT
					//tag->setAlltoFalse();
						ongoing = false;
						// do commit
						doFinal(C, value);
						state = INIT;
						times = TRY;
					}
				} else if (type == ABORTACK && state == ABRT) {
					AbortAck *msg = (AbortAck *) p;
					assert(value == msg->val);
					int sender = msg->senderid;
					tag->setTrue(sender);
					if (tag->checkAllTrue() && state == ABRT) {
						ongoing = false;
						// do abort
						doFinal(A, value);
						state = INIT;
						times = TRY;
					}
				}
			} else {  // lost some msg
				if (state == WAIT) {
					if (times-- > 0) { // re-transmit cancommit
						int *ids = tag->getUnsetId();
						char *cancomit = mkMsg(CANCMT, value, myid);

						for (int i = 0; i < size; ++i) {
							if (ids[i] != -1) {
								sendMessage(CANCMT, cancomit, ids[i]);
							}
						}
						deleteMsg(CANCMT, cancomit);
					} else {  // time out
						tag->setsitedown();
						char *abrt = mkMsg(ABORT, value, myid);
						tag->setAlltoFalse();
						sendAllMsg(ABORT, abrt);
						state = ABRT;   // to do
						deleteMsg(ABRT, abrt);
						times = TRY;
					}

				} else if (state == PREP) {
					if (times-- > 0) {
						int *ids = tag->getUnsetId();
						char *precomit = mkMsg(PRECMT, value, myid);

						for (int i = 0; i < size; ++i) {
							if (ids[i] != -1) {
								sendMessage(PRECMT, precomit, ids[i]);
							}
						}
						deleteMsg(PRECMT, precomit);
					} else {  // time out
						char *docomit = mkMsg(DOCMT, value, myid);
						tag->setsitedown();
						tag->setAlltoFalse();
						sendAllMsg(DOCMT, docomit);
						state = CMT;  // set state to cmt
						deleteMsg(DOCMT, docomit);
						times = TRY;

					}

				} else if (state == CMT) {
					if (times-- > 0) {
						int *ids = tag->getUnsetId();
						char *docomit = mkMsg(DOCMT, value, myid);
						for (int i = 0; i < size; ++i) {
							if (ids[i] != -1) {
								sendMessage(DOCMT, docomit, ids[i]);
							}
						}
						deleteMsg(DOCMT, docomit);
					} else {  // different
						tag->setsitedown();
						ongoing = false;
						// do commit
						doFinal(C, value);
						state = INIT;
						times = TRY;
					}
				} else if (state == ABRT) {
					if (times-- > 0) {
						int *ids = tag->getUnsetId();
						char *abrt = mkMsg(ABORT, value, myid);
						for (int i = 0; i < size; ++i) {
							if (ids[i] != -1) {
								sendMessage(ABORT, abrt, ids[i]);
							}
						}
						deleteMsg(ABORT, abrt);
					} else {
						tag->setsitedown();
						ongoing = false;
						// do abort
						doFinal(A, value);
						state = INIT;
						times = TRY;
					}
				}
			}
		} else {
			// phase 1
			// sends its state to other sites to make them transit to the state
			if (!transited && state != CMT && state != ABRT) {
Exemplo n.º 7
0
void catchSIGINT(int sigNum)
{
	deleteMsg(MSG_ID);
}