예제 #1
0
파일: activity.c 프로젝트: elmux/yacm2
Activity *createActivity(ActivityDescriptor descriptor, MessageQueueMode messageQueueMode) {
	// Create new activity instance
	Activity *activity = (Activity *) malloc(sizeof(Activity));
	memset(activity, 0, sizeof(Activity));

	// Copy activity descriptor (from stack to heap)
	ActivityDescriptor *descriptorCopy = (ActivityDescriptor *)malloc(sizeof(ActivityDescriptor));
	memcpy(descriptorCopy, &descriptor, sizeof(ActivityDescriptor));
	activity->descriptor = descriptorCopy;

	if (descriptor.scope == activityScope_local) {
		// Create new message queue (= queue for incoming messages)
		mqd_t messageQueue = createMessageQueue(descriptor.name, messageQueueMode);
		if (messageQueue < 0) {
			logErr("[%s] Error creating activity's message queue for incoming messages: %s", descriptor.name, strerror(errno));

			// TODO Error handling
		}
		activity->messageQueue = messageQueue;
		activity->messageQueueMode = messageQueueMode;

		activity->polling = NULL_FILE_DESCRIPTOR;

		// Start new thread
		pthread_t thread;
		if (pthread_create(&thread, NULL, runThread, activity) < 0) {
			logErr("[%s] Error creating new thread for activity: %s", descriptor.name, strerror(errno));
			// TODO Error handling
		}
		activity->thread = thread;
	}

	return activity;
}
예제 #2
0
void RejectedPromises::dispose() {
  if (m_queue.isEmpty())
    return;

  std::unique_ptr<MessageQueue> queue = createMessageQueue();
  queue->swap(m_queue);
  processQueueNow(std::move(queue));
}
예제 #3
0
void RejectedPromises::processQueue()
{
    if (m_queue.isEmpty())
        return;

    OwnPtrWillBeRawPtr<MessageQueue> queue = createMessageQueue();
    queue->swap(m_queue);
    Platform::current()->currentThread()->scheduler()->timerTaskRunner()->postTask(BLINK_FROM_HERE, new Task(bind(&RejectedPromises::processQueueNow, PassRefPtrWillBeRawPtr<RejectedPromises>(this), queue.release())));
}
예제 #4
0
void RejectedPromises::dispose()
{
    if (m_queue.isEmpty())
        return;

    OwnPtrWillBeRawPtr<MessageQueue> queue = createMessageQueue();
    queue->swap(m_queue);
    processQueueNow(queue.release());
}
예제 #5
0
파일: Server.cpp 프로젝트: joao29a/S.O.S
void Server::createSharedMemory(){
	try{
		memoryRegion = new mapped_region(anonymous_shared_memory(MEMORY_SIZE));
		memset(memoryRegion->get_address(),0,memoryRegion->get_size());
		createMessageQueue();
	} catch (exception& e){
		cerr << "Exception: sharedMemory: " << e.what() << endl;
	}
}
예제 #6
0
void RejectedPromises::processQueue() {
  if (m_queue.isEmpty())
    return;

  std::unique_ptr<MessageQueue> queue = createMessageQueue();
  queue->swap(m_queue);
  Platform::current()
      ->currentThread()
      ->scheduler()
      ->timerTaskRunner()
      ->postTask(BLINK_FROM_HERE, WTF::bind(&RejectedPromises::processQueueNow,
                                            PassRefPtr<RejectedPromises>(this),
                                            passed(std::move(queue))));
}
예제 #7
0
int main (void)
{
	int msgId;
	system("clear");
	
	// Create message queue
	msgId = createMessageQueue();
	while(1)
	{
		printf("Waiting for OSPF packet to send \n");
		// Read message sent from Java server through tcpClient and send to server/router on network
		readMsgQueueAndSendOspfPkt(msgId);
	}
    return 0;
}
예제 #8
0
int main(int argc, char *argv[]){
  
  //Variables

  struct timeval startThread, endThread, startCipher, endCipher;
  //connectServer(argc, argv);
  char key[] = {"pAatOAgJqpdy7CECQbRojYLqy11O2W38nJm+Sfcz94QrNAH3EXhKFxx4t0FsjfiadGDlHkdLMG8jvgjG5jlNI72gkODO9IroRk+vy151xeBQoout9ZQ6wZktuqibySxKxGy7g0RcgfW6D7vnpV9bNfsxtOZDirJOhgQWErOq+GKYze25B9g0gheVEumbBpgz376VwJoHPZcFRVQw6lOc/EAaozgS1Uwh1/Zs1ThagZC4EP85ATVPfFJ45xNUAD1LsLqGjSOc1Y7MBU7EINwXDrDJIeKeyn+txKu0EoJ9QAgZyXqK4gOeUyZ1br1NMZ222Cgx+Q5unZA6qq8zUrHsi024wldyLJL0uqHpbHn6k3IrNrNcw45BLKBbsHf4JICaPIr825XeQbOw4tjk+VrNUS9eSCeErUIF7iNxryaW2H67EXKds2R7pGMh+JlogxUUMbJ5THV5HcV2rSPLugeCWDW8MACwW2Q3d6E2t1/v4recq3IohzX4rBoDTz4Px91wCajdgPdJpVwP82Cyv210fqI4KBZidEgtqEzJbbh7fQvGogS4IMtD7IkXPhcctk2QgBMXYYN1BebHuaP9PxREPCi1hwa87mBD2lF2YXGzyVSuRPL8GXYOOWS2m5HxerxAMZ4lIQC3FB2J4R+iVGhCXs5S6XihWadbfa2XyM5hF56O3kZNFG0UITbd0/cClVtfA7PDNEgg2pZNjVoNvwuR+/85b0YhDnlX6xawNBdO6xBUuRSs5oHvmd2aTTphlxlnjAlXnfgW9Oo0ACq5YbDgo+npCkcE4xEyO19Pf92YORUbbk4j+RJHcCuDqC0cdNDN5HGSTWvJn2KbzPpdg3UAcrLc7jd4usrTuiJ7QVu6uXT6FOl2h7hMGEy/1kol4v5KChHq6iQ5/jkQV2049c4kN03BLceIXkyXs+y5hyVlmx/QBNYa3etsAiw58yMVyojsB0AWgVnUkT00IY3nw2UIgaj5ENZtcZz/yhRNJOwDQwG4d0n2IHZYmwgD47wXW20g1o3avaThsshBMiI6dMmcogpb2R8gtCkuGvkjwIkCedcR/8cjGAA+wcVaOU9EndKUqT56uB4hcSQ96N63n1w07D1h6AK/CuELXE5wNtgPzQkgi83r+6qrY/rFeeO0dZAUUlR01Pyw15oGw7nmRBMBR2lak1Cjsi84I9K4JyW4t/LEuIvc122FB7YNCg9mRbTVMnUi3vWWcvVNur6/WQBtQllSdQ9Moo/mfYHA0TIyf9DBWBHtaJoWP7KvVfAgvjYyMU90ijiLDrASY8580Q1g3j6LioLEaXijfGst3Rp+c7K2gTk+V1KBZEEphGXQgFrJClZwoz/zohtn53xEooCME2cDEVaDvBf2B9Wch1BaOFJIcJdJ8JrheUM3l6eUBuUtoy5XNHb9oJsWfZ+azAOBU3mOEcXw7ZxoCNack1M/6atZOYkNUO9/zSnN/moVrYfqs+hcdUUJkZ4zk3tKdRVmFpohfW2dDF5+GhPZxlLDkogfSkQYZ5De6gNkwUi8qI3T0IaHjKs8tYOJU3+hlMSLSfUTwKn4JEx+V7FUiAUP0xI1Cxh5ySRQQoJqOA9eNj85"};
  int messageCipher = 1;
  int rc = createMessageQueue("cipher", messageCipher);
  gettimeofday(&startThread, NULL);
  gettimeofday(&startCipher, NULL);
  if(rc !=  0){
    printf("Problem creating message queue");
    return 1;
  }
 
  FILE *fp;
  fp = fopen("teste.txt", "r");
 
  // Starts thread cipher side 
 /** threadParameters dataThread; 
  dataThread.fileName = "cipher";
  dataThread.fileOut = "cipher.txt"; 
  dataThread.eof = 0;
  int type = 3;
  createThread(&dataThread, type); 
  **/
  //Message struct
  message msg; 
  char plaintext;
  RC4 params;
  int result, countTable = 0, count = 0;
  rc4Initializer(&params, key); 
  while( ( plaintext = fgetc(fp) ) != EOF ){
      rc4CipherAlgorithm(&params, plaintext);
  }
  msg.eof = 1;
  writeMessageToQueue(msg, count);
  fclose(fp);
  gettimeofday(&endCipher, NULL);

  //printf("Waiting thread ends\n");
  //do{
  //  usleep(100);
  //}while(dataThread.eof == 0);
  destroyMessageQueue();

  gettimeofday(&endThread, NULL);
  int threadx_ms = startThread.tv_sec*1000 + startThread.tv_usec/1000;
  int thready_ms = endThread.tv_sec*1000 + endThread.tv_usec/1000;
             
  int diffThread = thready_ms - threadx_ms;
  
  int cipherx_ms = startCipher.tv_sec*1000 + startCipher.tv_usec/1000;
  int ciphery_ms = endCipher.tv_sec*1000 + endCipher.tv_usec/1000;
             
  int diffCipher = ciphery_ms - cipherx_ms;
  
  printf("Execution with thread: %d\n",diffThread);
  printf("Execution without thread: %d\n", diffCipher);
}
예제 #9
0
int main() {
    int msgid = createMessageQueue("PATIENT");
    clearCalendar(&day);
    struct msgbuf patient;
    patient.pid = getpid();
    quit = false;
    bool log_on = false;
    while (!quit) {
        if (!log_on) {
            printf("---------\n");
            printf("MAIN MENU\n");
            printf("---------\n");
            printf("\tIf you want to login, enter 'l'.\n");
            printf("\tIf you want to register, enter 'r'.\n");
            printf("\tIf you want to quit, enter 'q': ");
            char choice;
            scanf("%s", &choice);
            if (choice == 'q') {
                quit = true;
            }
            else if (choice == 'r') {
                patient = registerNewPatient(msgid);
                log_on = true;
            }
            else if (choice == 'l') {
                patient = login(msgid, P_LOGIN_REQUEST);
                if (patient.index < 1000) {
                    log_on = true;
                }
            }
        }
        else if (log_on) {
            printf("------------\n");
            printf("HELLO %s!\n", patient.name);
            printf("------------\n");
            displayInstruction();
            while (true) {
                char decision;
                scanf("%s", &decision);
                if (decision == 'q') {
                    log_on = false;
                    printf("\tYou've logout successfully\n");
                    break;
                }
                else if (decision == 'd') {
                    requestForDoctorsList(msgid, &patient);
                }
                else if (decision == 's') {
                    displayStatusOfVisit(msgid, patient);
                    displayInstruction();
                }
                else if (decision == 'c') {
                    cancelVisit(msgid, &patient);
                    displayInstruction();
                }
                else if (decision == 'v') {
                    changeDateOfVisit(msgid, &patient);
                    displayInstruction();
                }
            }
        }
    }
    return 0;
}