/* * Basic broadcast. The broadcast takes N turns, all sends are done by the * same node (one at each turn). * Note that like every functions defined here, they have the type NodesFct. */ void BasicBroadcast(int id, Message m){ char* event; Message msgOut; int i; //Events Rules while((event = getNextExternalEvent(id)) != NULL){ printf("event received %d %s\n", id, event); //Read the first event if(!strcmp(event, "broadcast")){ //start a basic broadcast: //send hello to every nodes for(i = 0; i < getNbNodes(); i++){ msgOut = initMessage("Hello\0", id, id, i); if(i != id){ Send(msgOut); } else { deliver(msgOut,id); deleteMessage(msgOut); } } } free(event); } //Message Rules if(NULL != m){ deliver(m,id); deleteMessage(m); } }
int pull_game(pPlayer player,int second_of_player,void* data) { if (player->game->local) return 0; if (player->kicked) return 2; //kicked; pMessage message = NULL; numToMessage(&message,"game_id",player->game->id); numToMessage(&message,"player_id",player->id); numToMessage(&message,"second_of_player",second_of_player); pMessage result = sendMessage(message,"data",data,-1536,"pull_game.php",hase_url); deleteMessage(&message); if (result) { int kicked = 0; if (result->name[0] == 'K') { kicked = 2; printf("player %s kicked or not available\n",player->name); player->kicked = 1; } deleteMessage(&result); return kicked; //0 Okay, 2 Kicked } return 1;//Error }
int push_game(pPlayer player,int second_of_player,void* data) { if (player->game->local) return 0; pMessage message = NULL; numToMessage(&message,"game_id",player->game->id); numToMessage(&message,"player_id",player->id); numToMessage(&message,"player_pw",player->pw); numToMessage(&message,"second_of_player",second_of_player); #ifdef INPUT_COMPRESSION if (hase_gzip) numToMessage(&message,"gzip",1); #endif pMessage result = sendMessage(message,"data",data,1536,"push_game.php",hase_url); deleteMessage(&message); if (result) { int r = 0; if (atoi(result->content) == 1) //kicked! r = 2; deleteMessage(&result); return r; } return 1; //Error! }
void kick(pPlayer player) { player->game->sprite_count[player->nr-1]--; if (player->game->local == 0) { pMessage message = NULL; numToMessage(&message,"game_id",player->game->id); numToMessage(&message,"player_id",player->id); numToMessage(&message,"admin_pw",player->game->admin_pw); pMessage result = NULL; int i; for (i = 0; i < 3 && result == NULL;i++) result = sendMessage(message,NULL,NULL,0,"kick.php",hase_url); deleteMessage(&message); deleteMessage(&result); } if (player->input_thread) end_pull_thread(player); while (player->input_data) { pThreadData next = player->input_data->next; free(player->input_data); player->input_data = next; } }
void change_game(pGame game,Uint32 options,int seconds_per_turn,int hares_per_player) { if (game->local == 0) { pMessage message = NULL; numToMessage(&message,"game_id",game->id); numToMessage(&message,"admin_pw",game->admin_pw); numToMessage(&message,"options",options); numToMessage(&message,"seconds_per_turn",seconds_per_turn); numToMessage(&message,"hares_per_player",hares_per_player); pMessage result = NULL; int i; for (i = 0; i < 3 && result == NULL;i++) result = sendMessage(message,NULL,NULL,0,"change_game.php",hase_url); deleteMessage(&message); if (result) { game->options.compressed = options; game->seconds_per_turn = seconds_per_turn; game->hares_per_player = hares_per_player; } deleteMessage(&result); } else { game->options.compressed = options; game->seconds_per_turn = seconds_per_turn; game->hares_per_player = hares_per_player; } }
void recibirSolicitarPaginas(int cpu_socket, int pidActivo){ char* bytesAEnviar; int32_t nroPagina; int32_t offset; int32_t tamanio; message* nroPaginaMessage = receiveMessage(cpu_socket); nroPagina = convertToInt32(nroPaginaMessage->contenido); message* offsetMessage = receiveMessage(cpu_socket); offset = convertToInt32(offsetMessage->contenido); message* tamanioMessage = receiveMessage(cpu_socket); tamanio = convertToInt32(tamanioMessage->contenido); deleteMessage(nroPaginaMessage); deleteMessage(offsetMessage); deleteMessage(tamanioMessage); log_trace(logger, "Pedido recibir paginas [pid: %d, nroPagina %d, offset %d, tamanio %d]", pidActivo, nroPagina, offset, tamanio); //Esto es solo una validacion tabla_de_paginas* tablaDePaginas = buscarPorPID(pidActivo); if(tablaDePaginas==NULL){ enviarFAIL(cpu_socket, PID_NO_EXISTE); return; } if(TLBEnable){ //Buscar en TLB. Si esta, ir a buscar a memoria y enviar bytes int frame = buscarEnTLB(nroPagina, pidActivo); if(frame!=-1){ bytesAEnviar = obtenerBytesDeMemoriaPrincipal(frame, offset, tamanio); enviarOKConContenido(cpu_socket, tamanio, bytesAEnviar); return; } } //TLB Miss demorarSolicitud(); umcResult result = getPageEntry(tablaDePaginas, nroPagina); if(!result.ok){ enviarFAIL(cpu_socket, result.codError); return; } //Actualizar TLB if(TLBEnable) actualizarTLB(nroPagina, pidActivo, result.frameEntry->nroFrame); demorarSolicitud(); enviarOKConContenido(cpu_socket, tamanio, result.frameEntry->direccion_real + offset); }
pGame create_game(char* game_name,Uint32 options,int seconds_per_turn,char* level_string,int local,int hares_per_player) { pMessage result = NULL; if (local == 0) { pMessage message = NULL; addToMessage(&message,"game_name",game_name); numToMessage(&message,"options",options); numToMessage(&message,"seconds_per_turn",seconds_per_turn); numToMessage(&message,"hares_per_player",hares_per_player); addToMessage(&message,"level_string",level_string); int i; for (i = 0; i < 3 && result == NULL;i++) result = sendMessage(message,NULL,NULL,0,"create_game.php",hase_url); deleteMessage(&message); if (result == NULL) return NULL; } pGame game = (pGame)malloc(sizeof(tGame)); game->id = -1; sprintf(game->name,"%s",game_name); sprintf(game->level_string,"%s",level_string); game->options.compressed = options; game->player_count = 0; game->create_date = 0; game->seconds_per_turn = seconds_per_turn; game->hares_per_player = hares_per_player; game->status = 0; game->local = local; if (local) game->admin_pw = 12345; else game->admin_pw = 0; game->local_player = NULL; game->local_counter = 0; game->next = NULL; memset(game->sprite_count,0,sizeof(int)*SPRITE_COUNT); pMessage now = result; while (now) { if (strcmp(now->name,"game_id") == 0) game->id = atoi(now->content); if (strcmp(now->name,"admin_pw") == 0) game->admin_pw = atoi(now->content); if (strcmp(now->name,"create_date") == 0) game->create_date = atoi(now->content); now = now->next; } deleteMessage(&result); return game; }
int server_info() { pMessage result = sendMessage(NULL,NULL,NULL,0,"",gop_server()); if (result == NULL) return -1; pMessage mom = result; while (mom) { if (strcmp(mom->name,"gzip") == 0 && strcmp(mom->content,"yes") == 0) hase_gzip = 1; else if (strcmp(mom->name,"irc_server") == 0) sprintf(irc_server,"%s",mom->content); else if (strcmp(mom->name,"irc_channel") == 0) sprintf(irc_channel,"%s",mom->content); else if (strcmp(mom->name,"irc_port") == 0) { char* content = mom->content; for (irc_port_count = 0; irc_port_count < HASE_MAX_IRC_PORT; irc_port_count++) { irc_port[irc_port_count] = strtol (content, &content, 10); if (content[0] != ',') { irc_port_count++; break; } else content++; } } else if (strcmp(mom->name,"version") == 0) { int version = atoi(mom->content); if (version == CLIENT_VERSION) { sprintf(hase_url,"%s",mom->next->content); printf("Using server %s with Version %i\n",hase_url,version); deleteMessage(&result); return version; } } mom = mom->next; } deleteMessage(&result); return 0; }
int get_games(pGame *gameList) { pMessage result = NULL; int i; for (i = 0; i < 3 && result == NULL;i++) result = sendMessage(NULL,NULL,NULL,0,"get_games.php",hase_url); if (result == NULL) return 0; pMessage now = result; *gameList = NULL; pGame game = NULL; int game_count = 0; while (now) { if (strcmp(now->name,"game_count") == 0) game_count = atoi(now->content); if (strcmp(now->name,"game_id") == 0) { if (game) { game->next = (pGame)malloc(sizeof(tGame)); game = game->next; } else { *gameList = (pGame)malloc(sizeof(tGame)); game = *gameList; } game->id = atoi(now->content); game->name[0] = 0; game->level_string[0] = 0; game->options.compressed = 0; game->player_count = 0; game->create_date = 0; game->seconds_per_turn = 0; game->status = 0; game->admin_pw = 0; game->next = NULL; game->local = 0; memset(game->sprite_count,0,sizeof(int)*SPRITE_COUNT); } if (strcmp(now->name,"game_name") == 0) sprintf(game->name,"%s",now->content); if (strcmp(now->name,"options") == 0) game->options.compressed = atoi(now->content); if (strcmp(now->name,"player_count") == 0) game->player_count = atoi(now->content); if (strcmp(now->name,"create_date") == 0) game->create_date = atoi(now->content); if (strcmp(now->name,"seconds_per_turn") == 0) game->seconds_per_turn = atoi(now->content); if (strcmp(now->name,"hares_per_player") == 0) game->hares_per_player = atoi(now->content); if (strcmp(now->name,"status") == 0) game->status = atoi(now->content); now = now->next; } deleteMessage(&result); return game_count; }
void MessagePanel::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) { if(gMessage==NULL){ this->hide(); return; } painter->setPen(QColor(0,255,0,alpha)); painter->setBrush(QBrush(QColor(0,255,0,alpha))); QPixmap pixmap(":/res/divinecraft/textures/blocks/planks_spruce.png"); // painter->drawRect(rect); painter->drawPixmap(rect,pixmap,QRectF(0,0,pixmap.width(),pixmap.height())); painter->setPen(QColor(gMessage->textColor.red() ,gMessage->textColor.green(),gMessage->textColor.blue(),alpha)); painter->setFont(font); QRectF texRect(rect.x()+rect.width()*0.05,rect.y()+rect.height()*0.05,rect.width()*0.9,rect.height()*0.9); painter->drawText(texRect,Qt::AlignCenter ,gMessage->text); if(beginTime.secsTo(QTime::currentTime())>=gMessage->showTime){ if(alpha>0){ //消失动画 alpha-=5; if(alpha<0) alpha=0; } else{ this->hide(); deleteMessage(); } } }
/* * Pipeline broadcast. This protocol takes 1 turn to broadcast, the node * performing the broadcast sends the message to the next note, which in turn * transmits the message to its neighbour and so on. * Note that like every functions defined here, they have the type NodesFct. */ void PipelineBroadcast(int id, Message m){ char* event; Message msg, fwd; int neighbor; // Event Rules while((event = getNextExternalEvent(id)) != NULL){ printf("event received %i %s\n",id, event); // Read the first event if(0 == strcmp(event, "broadcast")){ neighbor = (id + 1) % getNbNodes(); msg = initMessage("Hello\0", id, id, neighbor); Send(msg); deliver(msg,id); } free(event); } // Message Rules if(NULL != m){ deliver(m, id); // Forward the message if need be neighbor = (id + 1) % getNbNodes(); if(neighbor != m->origin){ fwd = initMessage(m->msg, m->origin, id, neighbor); Send(fwd); } // Free the local message deleteMessage(m); } }
int GM862::executeCommand(String command){ // Serial.println("command: '" + command + "'\nlength: " + command.length()); // parse command and execute int state = -1; if(command.equalsIgnoreCase("reboot")){ switchOff(); delay(8000); switchOn(); delay(16000); init(); state = 97; } else if(command.equalsIgnoreCase("delete messages")){ deleteMessage("0"); state = 96; } else if(command.equalsIgnoreCase("help")){ state = 95; } for(int i=0;i<=numOfCommands;i++){ // Serial.println("'" + command + "' ?? '" + commands[i] + "'"); if(command.equalsIgnoreCase(commands[i])){ state = i; break; } } return state; }
void MessageHandler::deleteAllMessagesTo(MessageListener* listener){ for(int i = 0;i < m_Messages->size();i++){ if((*m_Messages)[i]->reciever == listener){ deleteMessage((*m_Messages)[i]); } } }
void MessageHandler::update(){ for(int i = 0;i < m_MessagesToDelete->size();i++){ for(int j = 0;j < m_Messages->size();j++){ if((*m_Messages)[j] == (*m_MessagesToDelete)[i]){ SafePtrRelease((*m_Messages)[j]); m_Messages->erase(m_Messages->begin()+j); break; } } } m_MessagesToDelete->clear(); bool pass = false; for(int i = 0;i < m_Messages->size();i++){ (*m_Messages)[i]->timeToSend -= Util::instance()->getDelta()*100; for(int j = 0;j < m_MessagesToDelete->size();j++){//we don't want to send any messages that are in m_MessagesToDelete if((*m_Messages)[i] == (*m_MessagesToDelete)[j]){ pass = true; break; } } if(!pass){ if((*m_Messages)[i]->timeToSend <= 0){ sendMessage((*m_Messages)[i]); deleteMessage((*m_Messages)[i]); } } } }
PAPIMessage * sendRequest( PAPIConnection * inConnection, PAPIMessage * inRequestMessage, PAPIStatus * outStatus ) { int theContentLength; char theContentLengthString[ MAX_CONTENT_LENGTH_SIZE ]; char * theRequest; PAPIMessage * theResponse = 0; *outStatus = PAPISuccess; if ( inConnection == 0 || inConnection->mFD == INVALID_SOCKET ) { *outStatus = PAPIConnectionFailure; return 0; } theRequest = messageToString( inRequestMessage ); if ( theRequest != 0 && ( theContentLength = strlen( theRequest ) ) > 0 ) { char * theBuf; int theSize; snprintf( theContentLengthString, MAX_CONTENT_LENGTH_SIZE, "%s%d\r\n", CONTENTLENGTH, theContentLength ); deleteMessage( inConnection->mSavedMessage ); inConnection->mSavedMessage = 0; theSize = strlen( theContentLengthString ) + theContentLength + 1; theBuf = ( char * )malloc( theSize ); if ( theBuf == 0 ) { *outStatus = PAPIOutOfMemoryFailure; free( ( void * )theRequest ); return 0; } snprintf( theBuf, theSize, "%s%s", theContentLengthString, theRequest ); if ( send( inConnection->mFD, ( void * )theBuf, theSize - 1, 0 ) == SOCKET_ERROR ) { *outStatus = PAPIConnectionFailure; free( ( void * )theBuf ); free( ( void * )theRequest ); return 0; } free( ( void * )theBuf ); free( ( void * )theRequest ); theResponse = getResponse( inConnection, outStatus ); } else { free( ( void * )theRequest ); } return theResponse; }
void MessageHandler::deleteMessage(const std::string& name){ std::vector<Message*> msgs = *m_Messages; for(int i = 0;i < msgs.size();i++){ if(msgs[i]->name == name){ deleteMessage(msgs[i]); } } }
/* * Total Order Broadcast with good throughput. * Note that like every functions defined here, they have the type NodesFct. */ void TOBThroughputRodBroadcast(int id, Message m){ char* event; Message msgOut; //Events Rules while((event = getNextExternalEvent(id)) != NULL){ printf("Event received %d %s\n", id, event); //Read the first event if(!strcmp(event, "broadcast")){ if(0 == id){ // The broadcast is your own, deliver msgOut = initMessage("Hello\0", id, id, id); deliver(msgOut, id); deleteMessage(msgOut); // Pass the message to your successor if(1 != getNbNodes()){ msgOut = initMessage("Hello\0", 0, 0, 1); Send(msgOut); } } else { // Send the message to process 0 msgOut = initMessage("Hello\0", id, id, 0); Send(msgOut); } } free(event); } // Message Rules if(NULL != m){ if(0 == id) printf("0 receives a message to relay from %i\n", m->sender); deliver(m, id); // If not the last of the pipeline... if(id != getNbNodes() - 1){ // Transfer the message to you successor msgOut = initMessage(m->msg, m->origin, id, id + 1 % getNbNodes()); Send(msgOut); } deleteMessage(m); } }
/* * Tree broadcast. This protocol needs log(NbNodes) turn to broadcast. * Every node sends to its succesors. * Note that like every functions defined here, they have the type NodesFct. */ void TreeBroadcast(int id, Message m){ char* event; Message msgOut; int nTurn; //Events Rules while((event = getNextExternalEvent(id)) != NULL){ printf("Event received %d %s\n", id, event); //Read the first event if(!strcmp(event, "broadcast")){ //start a tree broadcast: //Iniatialize the message for(nTurn = 0; nTurn < log2(getNbNodes()); nTurn++){ //at the first step of the tree broadcast, we send a message //to our successor msgOut = initMessage("Hello\0", id, id, (int)(pow(2,nTurn)+id)%getNbNodes()); Send(msgOut); } // Deliver the message localy msgOut = initMessage("Hello\0", id, id, id); deliver(msgOut,id); deleteMessage(msgOut); } free(event); } //Message Rules if(NULL != m){ deliver(m,id); //at a step n, a message is sent at a distance 2^n //the distance is not exactly the difference between the sender and the //receiver id because of the mod N if(m->sender < m->receiv) nTurn=log2(m->receiv-m->sender); else nTurn=log2(getNbNodes()-m->sender+m->receiv); //this turn is done, let's do the others //now we can send all the others messages for(nTurn++; nTurn<log2(getNbNodes()); nTurn++){ msgOut = initMessage(m->msg, m->origin, id, ((int)(pow(2,nTurn)+id))%getNbNodes()); Send(msgOut); } deleteMessage(m); } }
void set_status(pGame game,int status) { int old_status = game->status; game->status = status; if (game->local == 0) { pMessage message = NULL; numToMessage(&message,"game_id",game->id); numToMessage(&message,"admin_pw",game->admin_pw); numToMessage(&message,"status",game->status); pMessage result = NULL; int i; for (i = 0; i < 3 && result == NULL;i++) result = sendMessage(message,NULL,NULL,0,"set_status.php",hase_url); deleteMessage(&message); deleteMessage(&result); } else if (status == 1 && old_status != 1) { int positions[game->player_count]; int i; for (i=0;i<game->player_count;i++) positions[i] = i; //Shuffle for (i=0;i<game->player_count*10;i++) { int a = spRand()%game->player_count; int b = spRand()%game->player_count; if (a == b) continue; int temp = positions[a]; positions[a] = positions[b]; positions[b] = temp; } i = 0; pPlayer p = game->local_player; while (p) { p->position_in_game = positions[i]; p = p->next; i++; } } }
void leave_game(pPlayer player) { player->game->sprite_count[player->nr-1]--; if (player->game->local == 0) { pMessage message = NULL; numToMessage(&message,"game_id",player->game->id); numToMessage(&message,"player_id",player->id); numToMessage(&message,"player_pw",player->pw); pMessage result = NULL; int i; for (i = 0; i < 3 && result == NULL;i++) result = sendMessage(message,NULL,NULL,0,"leave_game.php",hase_url); deleteMessage(&message); deleteMessage(&result); } else { pPlayer last_player = NULL; pPlayer mom_player = player->game->local_player; while (mom_player) { if (mom_player->id == player->id) { if (last_player) last_player->next = mom_player->next; else player->game->local_player = mom_player->next; free(mom_player); break; } last_player = mom_player; mom_player = mom_player->next; } } if (player->input_thread) end_pull_thread(player); while (player->input_data) { pThreadData next = player->input_data->next; free(player->input_data); player->input_data = next; } free(player); }
void delete_game(pGame game) { if (game->local == 0) { pMessage message = NULL; numToMessage(&message,"game_id",game->id); numToMessage(&message,"admin_pw",game->admin_pw); pMessage result = NULL; int i; for (i = 0; i < 3 && result == NULL;i++) result = sendMessage(message,NULL,NULL,0,"delete_game.php",hase_url); deleteMessage(&message); deleteMessage(&result); } else delete_player_list(game->local_player); delete_game_list(game); }
/* * Total Order Broadcast with good latency. * Note that like every functions defined here, they have the type NodesFct. */ void TOBLatencyBroadcast(int id, Message m){ char* event; Message msgOut; int i; //Events Rules while((event = getNextExternalEvent(id)) != NULL){ printf("Event received %d %s\n", id, event); //Read the first event if(!strcmp(event, "broadcast")){ if(0 == id){ // The broadcast is your own, deliver msgOut = initMessage("Hello\0", id, id, id); deliver(msgOut, id); deleteMessage(msgOut); // Pass the message to your childs for(i = 1; i < getNbNodes(); i *= 2){ msgOut = initMessage("Hello\0", id, id, i); Send(msgOut); } } else { // Send the message to process 0 msgOut = initMessage("Hello\0", id, id, 0); Send(msgOut); } } free(event); } // Message Rules if(NULL != m){ if(0 == id) printf("0 receives a message to relay from %i\n", m->sender); deliver(m, id); for(i = 2 * id + 1; i < getNbNodes(); i *= 2){ msgOut = initMessage(m->msg, m->origin, id, i); Send(msgOut); } deleteMessage(m); } }
uint8_t SIMCOM::getGeo(geoSmsData *retSms, char *pwd) { static uint8_t l = 1; retSms->smsDataValid = false; retSms->smsCmdNum = 0xFF; retSms->smsPending = checkForMessages(); if(!retSms->smsPending) { l = 1; return 0;//no messages } if(retSms->smsPending == 0xFF) { retSms->smsPending = 0x00; return 1; //there was an error } while(retSms->smsPending && (l <= SIMSIZE)) { if(readMessageBreakOut(l) == 0xFF) { l++; continue; } confirmAtCommand("\"",100); atRxBuffer[strlen(atRxBuffer) - 1] = '\0'; strcpy(retSms->smsNumber,atRxBuffer); confirmAtCommand("\r\n",100); /* if(!strstr(retSms->smsNumber,"+") != NULL) { // confirmAtCommand("/",500); confirmAtCommand("/",500); }*/ confirmAtCommand(DELIMITER,100); atRxBuffer[strlen(atRxBuffer) - 1] = '\0'; if(strncmp((atRxBuffer + (strlen(atRxBuffer)-4)),pwd,4) != 0) retSms->smsNumber[0] = '\0'; else { retSms->smsDataValid = true; confirmAtCommand(DELIMITER,100); atRxBuffer[strlen(atRxBuffer) - 1] = '\0'; retSms->smsCmdNum = atoi(atRxBuffer); confirmAtCommand("\r\n",100); strcpy(retSms->smsCmdString,atRxBuffer); } deleteMessage(l); retSms->smsPending--; l++; if(!retSms->smsPending) l = 1; return 0; //message read } deleteAllMessages(); // too many messages on SIM card return 2; }
void heartbeat(pPlayer player) { pMessage message = NULL; numToMessage(&message,"game_id",player->game->id); numToMessage(&message,"player_id",player->id); pMessage result = NULL; int i; for (i = 0; i < 3 && result == NULL;i++) result = sendMessage(message,NULL,NULL,0,"heartbeat.php",hase_url); deleteMessage(&result); }
void set_level(pGame game,char* level_string) { if (game->local == 0) { pMessage message = NULL; numToMessage(&message,"game_id",game->id); numToMessage(&message,"admin_pw",game->admin_pw); addToMessage(&message,"level_string",level_string); pMessage result = NULL; int i; for (i = 0; i < 3 && result == NULL;i++) result = sendMessage(message,NULL,NULL,0,"set_level.php",hase_url); deleteMessage(&message); if (result) sprintf(game->level_string,"%s",level_string); deleteMessage(&result); } else sprintf(game->level_string,"%s",level_string); }
DWORD WINAPI MailHandler::clientHandler(LPVOID param){ SOCKET client_socket = (SOCKET)param; if (client_socket == INVALID_SOCKET) { printf("error with accept socket. GetLasterror= %d\n", GetLastError()); return 1003; } char buf[SIZE_OF_BUF] = "/0"; //пересылаем код ответа номер 2 (ready) через клиентский сокет //POP3-коды ответа отпределены в Responses.h как двумерный массив sendLine(client_socket, responses[2]); //значение устанавливается в answer(), по смыслу номер состояния после принятия запроса int status = 1; int aut; User curUs = User(); do { aut = authentication(client_socket, status, curUs); //процесс аутентификации клиента if (status == 0) { break;//Проверка на выход } } while (aut < 0); while (recvLine(client_socket, buf, SIZE_OF_BUF)>0){ //принимаем сообщения размером buf из клиентского сокета, записываем в buf //int len = recvLine(client_socket, buf, SIZE_OF_BUF); //if (len > 2){ //если что-то пришло, отвечаем string request=string(buf); request.erase(request.size() - 1); if (request.find("STAT") != string::npos){ MailHandler::status(client_socket, curUs); } else if (request.find("LIST") != string::npos){ getList(client_socket, request, curUs); } else if (request.find("RETR") != string::npos){ getMessage(client_socket, request, curUs); } else if (request.find("DELE") != string::npos){ deleteMessage(client_socket, request, curUs); } else if (request.find("RSET") != string::npos){ reset(client_socket, curUs); } else if (request.find("QUIT") != string::npos){ disconnect(client_socket, status, curUs); } //} if (status == 0) { break;//Проверка на выход } } closesocket(client_socket); }
KornSubjectsDlg::KornSubjectsDlg(QWidget *parent) : KDialogBase(parent, "urldialog", true, "test", Close, Close, true), _mailDrop(new QPtrList< KMailDrop >), _subjects(0), _delete(0), mailDlg(0), _canDeleteMaildrop(true) { _loadSubjectsCanceled = false; setModal(true); // The dialog contains a list view and several buttons. // Two box layouts hol dthem. QWidget *page = new QWidget(this); setMainWidget(page); invertSelButton = new KPushButton(i18n("&Invert Selection"), page); clearSelButton = new KPushButton(i18n("&Remove Selection"), page); deleteButton = new KPushButton(i18n("&Delete"), page); showButton = new KPushButton(i18n("&Show"), page); deleteButton->setEnabled(false); showButton->setEnabled(false); QVBoxLayout *topLayout = new QVBoxLayout(page, 0, spacingHint()); QHBoxLayout *buttons = new QHBoxLayout(); _list = new KListView(page); topLayout->addWidget(_list, 10); topLayout->addLayout(buttons, 0); buttons->addWidget(invertSelButton, 0); buttons->addWidget(clearSelButton, 0); buttons->addWidget(deleteButton, 0); buttons->addWidget(showButton, 0); buttons->addStretch(10); // feed the list view with its colums _list->setSelectionMode(QListView::Multi); _list->addColumn(i18n("From")); _list->addColumn(i18n("Subject")); _list->addColumn(i18n("Date")); _list->addColumn(i18n("Size (Bytes)")); // column 3 contains a number (change alignment) _list->setColumnAlignment(3, Qt::AlignRight); _list->setItemMargin(3); // connect the selection changed and double click events of the list view connect(_list, SIGNAL(selectionChanged()), this, SLOT(listSelectionChanged())); connect(_list, SIGNAL(executed(QListViewItem *)), this, SLOT(doubleClicked(QListViewItem *))); // connect the buttons connect(invertSelButton, SIGNAL(clicked()), this, SLOT(invertSelection())); connect(clearSelButton, SIGNAL(clicked()), this, SLOT(removeSelection())); connect(showButton, SIGNAL(clicked()), this, SLOT(showMessage())); connect(deleteButton, SIGNAL(clicked()), this, SLOT(deleteMessage())); setInitialSize(QSize(QApplication::desktop()->width(), QApplication::desktop()->height())); }
void CDoodChatManagerModel::deleteAllMessage() { QList<CDoodChatItem*> list = m_pChatMap.values(); QStringList msgs; int len = list.size(); for(int i =0;i<len;i++){ CDoodChatItem* item = list.at(i); if(item != NULL){ msgs.push_back(item->msgId()); } } if(msgs.size()>0){ emit deleteMessage(id(),msgs); } }
void CDoodChatManagerModel::removeItemsByFromId(QString fromId) { QList<CDoodChatItem*> list = m_pChatMap.values(); QStringList msgs; int len = list.size(); for(int i =0;i<len;i++){ CDoodChatItem* item = list.at(i); if(item != NULL && item->fromId() == fromId){ removeItem(item); msgs.push_back(item->msgId()); m_pChatMap.remove(item->localId()); delete item; } } if(msgs.size()>0){ emit deleteMessage(id(),msgs); } }
void MessageHandler::update(){ for(int i = 0;i < m_MessagesToDelete->size();i++){ for(int j = 0;j < m_Messages->size();j++){ if((*m_Messages)[j] == (*m_MessagesToDelete)[i]){ SafePtrRelease((*m_Messages)[j]); m_Messages->erase(m_Messages->begin()+j); break; } } } m_MessagesToDelete->clear(); for(int i = 0;i < m_Messages->size();i++){ (*m_Messages)[i]->timeToSend -= Util::instance()->getDelta()*100; if((*m_Messages)[i]->timeToSend <= 0){ sendMessage((*m_Messages)[i]); deleteMessage((*m_Messages)[i]); } } }