void RWLock::unlock_read() { // repeatedly try to remove a reader (ignoring write lock) unsigned int old_rw = m_rw; unsigned int new_rw = mkrw(readers(old_rw) - 1, writing(old_rw)); while (!m_rw.compare_exchange_weak(old_rw, new_rw)) { new_rw = mkrw(readers(old_rw) - 1, writing(old_rw)); } }
void CPollingThread::doPoll() { //qDebug() << state; switch (state) { case CSerialPortPrivate::STATE_REQUESTING: requesting(); break; case CSerialPortPrivate::STATE_WRITING: writing(); break; case CSerialPortPrivate::STATE_POLLING: polling(); break; case CSerialPortPrivate::STATE_READING: reading(); break; case CSerialPortPrivate::STATE_NOTIFY_DATA: notifying(); break; case CSerialPortPrivate::STATE_NOTIFY_TIMEOUT: notifyingTimeout(); break; default: break; } usleep(100); }
void ot_receiver_test(SIMPLEOT_RECEIVER * receiver, int sockfd) { int i, j, k; unsigned char Rs_pack[ 4 * PACKBYTES ]; unsigned char keys[ 4 ][ HASHBYTES ]; unsigned char cs[ 4 ]; // reading(sockfd, receiver->S_pack, sizeof(receiver->S_pack)); receiver_procS(receiver); // receiver_maketable(receiver); for (i = 0; i < NOTS; i += 4) { simpleot_randombytes(cs, sizeof(cs)); for (j = 0; j < 4; j++) { cs[j] &= 1; if (VERBOSE) printf("%4d-th choose bit = %d\n", i+j, cs[j]); } receiver_rsgen(receiver, Rs_pack, cs); writing(sockfd, Rs_pack, sizeof(Rs_pack)); receiver_keygen(receiver, keys); // if (VERBOSE) { for (j = 0; j < 4; j++) { printf("%4d-th reciever key:", i+j); for (k = 0; k < HASHBYTES; k++) printf("%.2X", keys[j][k]); printf("\n"); } } } }
int main(int argc, char* argv[]) { if (argc<2) { std::cerr << "Not enough arguments." << std::endl; return 0; } if (strcmp(argv[1], "writing") == 0) { writing(argv[2], argv[3], argv[4]); } if (strcmp(argv[1], "reading") == 0) { reading(argv[2]); } if (strcmp(argv[1], "help") == 0) { help(); } }
void ot_sender_test(SIMPLEOT_SENDER * sender, int newsockfd) { int i, j, k; unsigned char S_pack[ PACKBYTES ]; unsigned char Rs_pack[4 * PACKBYTES]; unsigned char keys[ 2 ][ 4 ][ HASHBYTES ]; // sender_genS(sender, S_pack); writing(newsockfd, S_pack, sizeof(S_pack)); // for (i = 0; i < NOTS; i += 4) { reading(newsockfd, Rs_pack, sizeof(Rs_pack)); sender_keygen(sender, Rs_pack, keys); // if (VERBOSE) { for (j = 0; j < 4; j++) { printf("%4d-th sender keys:", i+j); for (k = 0; k < HASHBYTES; k++) printf("%.2X", keys[0][j][k]); printf(" "); for (k = 0; k < HASHBYTES; k++) printf("%.2X", keys[1][j][k]); printf("\n"); } printf("\n"); } } }
int main (int argc, char *argv[]) { int choice; printf("Welcome! Choose the operation you want to perform:\n1: Read\n2: Write\n"); scanf("%d", &choice); switch (choice) { case 1: printf("Reading.\n"); reading(); break; case 2: printf("Writing.\n"); writing(); break; default: printf("Wrong choice, exiting.\n"); break; } return 0; }
// CommunicationCenter reads HTTP message and writes the HTTP answer to client void Server::communicationCenter(int connection) { //first read, then respond appriopiately try { string dataReceived=reading(connection); string json; int HTTPcode; if (dataReceived[0] == 'P') { // POST Document document; cout << "parsuje" << endl; parsingJSONToDocument(document, dataReceived); if (document.HasMember("addresses")) { Task task; parsingAddressesJSONToTask(document, task); cout << "CommunicationCenter, Task nr: " << task.taskNumber << endl; for (int i=0; i<task.size; i++) { cout << "ip[" << i << "]: " <<task.ip[i] << endl; Packet packet; packet.ip_address =task.ip[i]; packet.identifier = task.taskNumber; packet.iterator = i; if (i+1 == task.size) packet.isLast = true; else packet.isLast = false; queueInto->push(packet); } json = createResponseToAddressesJSON(task.taskNumber, HTTPcode); writeJSON(connection, json, HTTPcode); } else if (document.HasMember("tasks")) { list<long long int> tasksList; cout << "parsujetoTask" << endl; parsingTasksJSONToParsedData(document, tasksList); list<Result> results; cout << "tworze resulty" << endl; while (!tasksList.empty()) { cout << tasksList.front() << endl; results.push_back(dataReciver->getData(tasksList.front())); tasksList.pop_front(); } cout << "creatuje" << endl; json = createResponseToTasksJSON(results, HTTPcode); cout << "wysylam" << endl; writeJSON(connection, json, HTTPcode); cout << "wyslalem" << endl; } } else if (dataReceived[0] == 'G') { // GET writing(connection); } else { writing(connection); } } catch (string e) { if(e==string("MESSAGE TOO LARGE")) { string json = "{\"error\":\"MESSAGE TOO LARGE\"}"; writeJSON(connection,json,400); } else { string json = "{\"error\":\"WRONG JSON STRUCTURE\"}"; writeJSON(connection, json, 400); } } return; }
int main(int argc, char** argv) { char ip_buff[16]; unsigned int port_cible; struct sockaddr_in cible; struct sockaddr_in my_infos; unsigned int sizeof_my_infos=sizeof(my_infos); int sock; short cont; char buff[BUF_LEN]; cible.sin_family=AF_INET; print("Client générique v1.0\n\n"); //choix de l'ip du serveur cible cont=0; //pas d'ip correcte while(!(cont!=0))//tant que pas d'ip correcte { //demande d'une IP d'une IP print("Ip à contacter -> "); scanf("%15s", ip_buff); flush(); //convertion en adresse cont=inet_aton(ip_buff, (struct in_addr*) &cible.sin_addr); if(cont==0) { //ip incorrecte print("Ip entrée incorrecte, recommencez :\n"); } else { print("Ip correcte\n"); } } //demande d'un port de connexion print("Port de connexion -> "); scanf("%6ud", &port_cible); flush(); cible.sin_port=htons(port_cible); //affichage print("\nConnection au serveur "); aff_info(&cible); print(" ...\n"); //création du socket sock=socket(AF_INET, SOCK_STREAM, 0); if(sock==-1) { fprintf(stderr,"Erreur -> socket : %s\n", msg_err); exit(-1); } //connection du socket if(connect(sock, (struct sockaddr*) &cible, sizeof(cible))<0) { fprintf(stderr,"Erreur -> connect : %s\n", msg_err); exit(-1); } //affichage de mes infos de connexion getsockname(sock, (struct sockaddr*) &my_infos, &sizeof_my_infos); print("connecté !\n\n##########################\n\nMes infos de connection : "); aff_info(&my_infos); print("\n\n"); print_man(); print("\n\n"); cont=1; while(cont!=0) //boucle principale { print("action -> "); fgets(buff, BUF_LEN-1, stdin); //récupération de la commande buff[strlen(buff)-1]='\0'; //flush(); switch(buff[0]) { case 'q' : //fermeture du programme cont=0; break; case 'h' : print_man(); //affichage de l'aide break; case 'r' : reading(sock); //reception de données break; case 'w' : writing(sock, buff); //envoi du message suivant 'w ' break; default : print("commande incorrecte :"); //Affichage du man si erreur print_man(); break; } } print("Arrêt du client ...\n"); return 0; }