//=================以下函数需要重写========================= 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; }
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(); }
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); }
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); }
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; }
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) {
void catchSIGINT(int sigNum) { deleteMsg(MSG_ID); }