示例#1
0
文件: battle.cpp 项目: ejrh/hex
void Battle::run() {
    last_attacking_health = 0;
    last_defending_health = 0;
    rounds_without_injury = 0;
    do {
        step();
    } while (!check_finished());
}
示例#2
0
void newlisp_init_wilddog(char*url)
{
	guu_is_wilddog_t gwd;
  init_guu_wilddog_t(&gwd);
  gwd.wd = init_wilddog(url);
  add_observer(&gwd);
	loop =1;
  while(loop == 1)
  {
    check_finished(&gwd);
    wilddog_trySync();
  }

  wilddog_close(&gwd);
}
示例#3
0
int main(int argc, char **argv)
{
    int opt;
    char url[1024];
   	
		guu_is_wilddog_t gwd; 
    memset( url, 0, sizeof(url));


    while ((opt = getopt(argc, argv, "hl:")) != -1) 
    {
        switch (opt) 
        {
		case 'h':
			fprintf(stderr, "Usage: %s  -l url\n",
		           argv[0]);
			return 0;
		case 'l':
			strcpy(url, (const char*)optarg);
			break;			
		default: /* '?' */
			fprintf(stderr, "Usage: %s  -l url\n",
		           argv[0]);
			return 0;
        }
    }

    if( argc <3 )
    {
        printf("Usage: %s  -l url\n", argv[0]);
        return 0;
    }

		init_guu_wilddog_t(&gwd);
    gwd.wd = init_wilddog(url);
		add_observer(&gwd);		

    while(1)
    {
      check_finished(&gwd); 
			wilddog_trySync();
    }

   	wilddog_close(&gwd); 
    return 0;
}
示例#4
0
int main(int, char **)
{
    fcntl(STDIN_FILENO, F_SETFL, fcntl(STDIN_FILENO, F_GETFL) & ~O_NONBLOCK);

    atexit(SDL_Quit);

    KInstance in("noatuntyler");

    finished = false;
    access_mutex = SDL_CreateMutex();

    init_renderer1();
    printf("%u\n", winID());
    fflush(stdout);
    init_renderer2();
    thread = SDL_CreateThread((int (*)(void *))renderer, NULL);

    fd_set set;
    struct timeval tv;
    while(check_finished() != 1)
    {
        FD_ZERO(&set);
        FD_SET(STDIN_FILENO, &set);
        tv.tv_sec = 0;
        tv.tv_usec = 250;
        if(0 < select(STDIN_FILENO + 1, &set, 0, 0, &tv))
        {
            SDL_mutexP(access_mutex);
            read(STDIN_FILENO, (void *)pcm_data, sizeof(short) * 2 * 512);
            SDL_mutexV(access_mutex);
        }
        usleep(5);
    }
    /*fprintf(stderr,"exiting main()\n");*/
    SDL_WaitThread(thread, NULL);
}
示例#5
0
int DataReaderListenerImpl::read_samples (::DDS::DataReader_ptr reader)
{
  int num_read = 0;

  switch ( num_floats_per_sample_ )
  {

  case 128:
    {
      num_read = read < ::Xyz::Pt128Seq,
                      ::Xyz::Pt128DataReader,
                      ::Xyz::Pt128DataReader_ptr,
                      ::Xyz::Pt128DataReaderImpl>
                        (
                        reader,
                        pub_finished_);
    }
    break;

  case 512:
    {
      num_read = read < ::Xyz::Pt512Seq,
                      ::Xyz::Pt512DataReader,
                      ::Xyz::Pt512DataReader_ptr,
                      ::Xyz::Pt512DataReaderImpl>
                        (
                        reader,
                        pub_finished_);
    }
    break;

  case 2048:
    {
      num_read = read < ::Xyz::Pt2048Seq,
                      ::Xyz::Pt2048DataReader,
                      ::Xyz::Pt2048DataReader_ptr,
                      ::Xyz::Pt2048DataReaderImpl>
                        (
                        reader,
                        pub_finished_);
    }
    break;

  case 8192:
    {
      num_read = read < ::Xyz::Pt8192Seq,
                      ::Xyz::Pt8192DataReader,
                      ::Xyz::Pt8192DataReader_ptr,
                      ::Xyz::Pt8192DataReaderImpl>
                        (
                        reader,
                        pub_finished_);
    }
    break;

  default:
    ACE_ERROR((LM_ERROR,"ERROR: bad data size %d\n", data_size_));
    return 0;
    break;
  };

  stats_.samples_received(num_read);

  if (num_read < read_interval_)
    {
      check_finished();
    }

  return num_read;
}
示例#6
0
int main(int argc, char *argv[]) {
  char* remote_ip = DEFAULT_IP;
  uint32_t remote_port = DEFAULT_PORT;
  struct sockaddr_in addr;

  OTRL_INIT;

  us = otrl_userstate_create();
  
  if (argc > 1) {
    our_account = argv[1];
  }

  if (argc > 2) {
    our_protocol = argv[2];
  }

  if (argc > 3) {
    remote_ip = argv[3];
  }

  if (argc > 4) {
    remote_port = atoi(argv[4]);
  }

  if (argc > 5) {
    logfd = fopen(argv[5], "w");
  } else {
    logfd = fopen(our_account, "w");
  }

  pthread_mutex_lock(&log_mutex);
  fprintf(logfd, "Connecting to dummy_im: %s:%u\n", remote_ip, remote_port);
  fflush(logfd);
  pthread_mutex_unlock(&log_mutex);
  
  if ((sockfd = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP)) < 0) {
    fprintf(stderr, "Cannot create socket\n");
    exit(1);
  }

  memset(&addr, 0, sizeof(addr));
  addr.sin_family = AF_INET;
  addr.sin_addr.s_addr = inet_addr(remote_ip);
  addr.sin_port = htons(remote_port);

  if (connect(sockfd, (struct sockaddr *) &addr, sizeof(addr)) < 0) {
    fprintf(stderr, "Cannot connect to server\n");
    exit(1);
  }

  pthread_mutex_init(&stdout_mutex, NULL);
  pthread_mutex_init(&log_mutex, NULL);
  

  /* pthread launch thread that receives from socket and wrties to stdout */
  pthread_t t_socker_reader;
  pthread_create(&t_socker_reader, NULL, receive_msgs, (void*) &sockfd);

  /* the main thread will receive commands from stdin and write to socket */
  while(1) {
    unsigned char buf[10];
    uint16_t command = 0;
    uint32_t id = 0;
    uint32_t size = 0;
    char* payload = 0;

    if (read_stdin(buf, 10) != 10) {
      fprintf(stderr, "Error reading from stdin\n");
      return;
    }

    command = ntohs(*((uint16_t*)(buf)));
    id = ntohl(*((uint32_t*)(buf+2)));
    size = ntohl(*((uint32_t*)(buf+6)));
    
    pthread_mutex_lock(&log_mutex);
    fprintf(logfd, "Received command msg: %X id: %u size: %u\n", command, id, size);
    fflush(logfd);
    pthread_mutex_unlock(&log_mutex);

    check_finished(command);
    payload = malloc(size);
    
    if (read_stdin(payload, size) != size) {
      fprintf(stderr, "Error reading from stdin\n");
      return;
    }
    
    pthread_mutex_lock(&log_mutex);
    
    fprintf(logfd, "Received payload\n");
    fflush(logfd);
    pthread_mutex_unlock(&log_mutex);
    
    process_command(command, id, size, &payload);

    free(payload);
  }

}
示例#7
0
int main(int argc, char *argv[])
{
	struct sockaddr_in addr;
	socklen_t addrlen;
	mxbp_packet_t *block_packet;
	char *group = NULL;
	char *cp;
	uint16_t port = DEFAULT_PORT;
	int nbytes;
	int epollfd;
	int sock;
	int ctlsock;
	int c;
	int rv;
	int fd;
	unsigned int no_sparse = 0;
	int timeoutms = DEFAULT_TIMEOUT;
	struct epoll_event ev;
	struct epoll_event events[10];

	progname = strdup(argv[0]);

	while ((c = getopt(argc, argv, "g:p:f:s:t:o:nh")) != -1) {
		switch (c) {
		case 'g':
			if (group) {
				free(group);
			}
			group = strdup(optarg);
			break;

		case 'p':
			port = atoi(optarg);
			break;

		case 't':
			timeoutms = atoi(optarg);
			break;

		case 'f':
			from_port = atoi(optarg);
			break;

		case 's':
			if ((cp = strrchr(optarg, ':'))) {
				*cp++ = 0;
				server_port = atoi(cp);
			}
			server = strdup(optarg);
			break;

		case 'o':
			if (outputname) {
				free(outputname);
			}
			outputname = strdup(optarg);
			break;

		case 'n':
			no_sparse = 1;
			break;

		default:
			printf("Error: Unrecognized option -%c\n", c);
			/* intentional fall through */
		case 'h':
			usage();
		}
	}

	if (!group) {
		group = DEFAULT_GROUP;
	}

	if (!server) {
		server = DEFAULT_SERVER;
	}

	if (!from_port) {
		srand(time(NULL));
		from_port = (rand() % 32767) + 32767;
	}

	mapreq.magic = htobe32(MXBP_MAGIC);
	mapreq.op = htobe16(MXBP_MAPREQ);
	mapreq.size = 0;
	mapreq.blockid = 0;

	if ((ctlsock = get_udp_socket(server, from_port)) < 0) {
		printf("Error:get_udp_socket(): failed.\n");
		exit(EXIT_FAILURE);
	}

	if ((epollfd = epoll_create(10)) < 0) {
		printf("%s:epoll_create(): failed: %s\n", progname,
		       strerror(errno));
		exit(EXIT_FAILURE);
	}

	ev.events = EPOLLIN;
	ev.data.fd = ctlsock;
	if (epoll_ctl(epollfd, EPOLL_CTL_ADD, ctlsock, &ev) == -1) {
		printf("%s:epoll_ctl(): failed: %s\n", progname,
		       strerror(errno));
		exit(EXIT_FAILURE);
	}

	for (send_mapreq(ctlsock); !mapdesc.filesize;) {
		rv = epoll_wait(epollfd, events, 10, timeoutms);
		if (rv < 0) {
			printf("%s:epoll_wait(): failed: %s\n", progname,
			       strerror(errno));
			exit(EXIT_FAILURE);
		}
		if (rv) {
			read_mapdesc(ctlsock);
		} else {
			/* Hit timeout, resend map request. */
			send_mapreq(ctlsock);
		}
	}

	close(epollfd);

	if (!(blockmap = calloc(1, mapdesc.nblocks))) {
		printf("Could not get %d bytes for block map: %s\n",
		       mapdesc.nblocks, strerror(errno));
		exit(EXIT_FAILURE);
	}

	cp = strrchr(recvfilename, '/');
	if (!cp) {
		cp = recvfilename;
	}

	printf("Received description: File %s length %ld blocks %d\n", cp,
	       mapdesc.filesize, mapdesc.nblocks);

	if (outputname) {
		cp = outputname;
		printf("Overriding output name with '%s'\n", cp);
	}

	/* There is no resume so we use O_TRUNC
	 * Note that we could periodically write out the blockmap
	 * and load that if present to be able to resume, but that's
	 * not a priority.
	 */
	if ((fd =
	     open(cp, O_WRONLY | O_CREAT | O_TRUNC | O_LARGEFILE, 0644)) < 0) {
		printf("Could not open %s : %s\n", cp, strerror(errno));
		exit(EXIT_FAILURE);
	}

	if (no_sparse) {
		/* Cannot use a sparse file, so now create a big zeroed file. */
		char zeros[MXBP_BLOCKSIZE];
		int bcount;

		memset(zeros, 0, sizeof(zeros));
		for (bcount = 0; bcount <= mapdesc.nblocks; ++bcount) {
			if (!write(fd, zeros, MXBP_BLOCKSIZE) != MXBP_BLOCKSIZE) {
				printf("Failed to write block %d: %s (continuing anyway)\n", bcount, strerror(errno));
			}
		}
		/* Rewind, just in case */
		lseek(fd, 0, SEEK_SET);

	}

	if ((sock = get_multicast_socket(group, port)) < 0) {
		printf("Could not get multicast socket.\n");
		exit(EXIT_FAILURE);
	}

	if ((epollfd = epoll_create(10)) < 0) {
		printf("%s:epoll_create(): failed: %s\n", progname,
		       strerror(errno));
		exit(EXIT_FAILURE);
	}
	ev.events = EPOLLIN;
	ev.data.fd = sock;
	if (epoll_ctl(epollfd, EPOLL_CTL_ADD, sock, &ev) == -1) {
		printf("%s:epoll_ctl(): failed: %s\n", progname,
		       strerror(errno));
		exit(EXIT_FAILURE);
	}

	/* now just enter a read-print loop */
	while (1) {
		addrlen = sizeof(addr);
		memset(msgbuf, 0, MAX_PACKET_SIZE);

		rv = epoll_wait(epollfd, events, 10, timeoutms);
		if (rv < 0) {
			printf("%s:epoll_wait(): failed: %s\n", progname,
			       strerror(errno));
			exit(EXIT_FAILURE);
		}

		if (rv) {

			if ((nbytes =
			     recvfrom(sock, msgbuf,
				      sizeof(mxbp_header_t) + MXBP_BLOCKSIZE, 0,
				      (struct sockaddr *)&addr,
				      &addrlen)) < 0) {
				printf("Failed to receive: %s",
				       strerror(errno));
				exit(EXIT_FAILURE);
			}

			if (nbytes < sizeof(mxbp_header_t)) {
				printf("Got short read, ignoring.\n");
				continue;
			}
			block_packet = (mxbp_packet_t *) msgbuf;
			block_packet->header.magic =
			    be32toh(block_packet->header.magic);
			if (block_packet->header.magic != MXBP_MAGIC) {
				printf("This is not an MXBP message.\n");
				continue;
			}

			block_packet->header.op =
			    be16toh(block_packet->header.op);
			if (block_packet->header.op != MXBP_BLOCK) {
				printf("Unexpected operation %d, ignoring.\n",
				       block_packet->header.op);
				continue;
			}

			block_packet->header.size =
			    be16toh(block_packet->header.size);
			block_packet->header.blockid =
			    be32toh(block_packet->header.blockid);

			if (block_packet->header.blockid > mapdesc.nblocks) {
				printf
				    ("Got Block ID %d past end of file %d, ignoring\n",
				     block_packet->header.blockid,
				     mapdesc.nblocks);
				continue;
			}

			if (!blockmap[block_packet->header.blockid]) {
				if (lseek64
				    (fd,
				     block_packet->header.blockid *
				     MXBP_BLOCKSIZE, SEEK_SET) && errno) {
					printf
					    ("Failed to seek to offset %d: %s\n",
					     block_packet->header.blockid *
					     MXBP_BLOCKSIZE, strerror(errno));
					exit(EXIT_FAILURE);
				}

				if (write
				    (fd, block_packet->data,
				     block_packet->header.size) !=
				    block_packet->header.size) {
					printf
					    ("Failed to write to offset %d: %s\n",
					     block_packet->header.blockid *
					     MXBP_BLOCKSIZE, strerror(errno));
					exit(EXIT_FAILURE);
				}

				blockmap[block_packet->header.blockid] = 1;
				if (check_finished()) {
					close(ctlsock);
					close(sock);
					close(epollfd);
					close(fd);
					printf("All done.\n");
					exit(EXIT_SUCCESS);
				}
			}
		} else {
			/* Hit the poll timeout, so send a block request. */
			send_block_req(ctlsock);
		}
	}
	exit(EXIT_SUCCESS);
}
示例#8
0
文件: mpijob.cpp 项目: athuls/gsra
  void mpijob::run_child() {
#ifndef __WINDOWS__
    // check that this child hasn't been finished by others
    if (check_finished()) {
      cout << "child " << conf.get_name() 
	   << " is already finished, do nothing." << endl;
      return ; // already finished, do nothing
    }
    // start timer
    t.start();
    string cmd, log, errlog;
    log << "out_" << conf.get_name() << ".log";
    errlog << "out_" << conf.get_name() << ".errlog";
    // prepare command
    cmd << "cd " << outdir << " && echo \"job=" << conf.get_name();
    if (conf.exists("meta_conf_shortname"))
      cmd << " meta_conf_shortname=" << conf.get_string("meta_conf_shortname");
    // not finished, check if it has been started in the past
    if (check_started()) {
      cout << "child " << conf.get_name() 
	   << " is already started but not finished, resuming." << endl;
      figure_resume_out();
      if (conf.exists("retrain_iteration") && conf.exists("retrain_weights")
	  && conf.exists("retrain")) {
	// add retrain params at the end of job's conf
	ofstream of(confname.c_str(), ios_base::app);
	if (!of)
	  eblerror("failed to open conf for appending retrain params: " 
		   << confname);
	of << endl 
	   << " retrain_iteration=" << conf.get_string("retrain_iteration")
	   << endl << " retrain_weights=" << conf.get_string("retrain_weights")
	   << endl << " retrain=" << conf.get_string("retrain") << endl;
	of.close();
      }
    }
    // set classe filename if defined
    if (rconf.exists("train") || rconf.exists("train_classes")) {
      string classesname = conf.get_output_dir();
      if (rconf.exists("train"))
	classesname << "/" << rconf.get_string("train");
      else if (rconf.exists("train_classes"))
	classesname << "/" << rconf.get_string("train_classes");
      classesname << CLASSES_NAME << MATRIX_EXTENSION;
      cmd << " classes=" << classesname;
    }
    // set rest of command
    cmd << " config=" << confname << "\" >> "
	<< log << " && ((" << exe << " " << confname
	<< " 3>&1 1>&2 2>&3 | tee /dev/tty | tee -a " << errlog
	<< ") 3>&1 1>&2 2>&3) >> " << log << " 2>&1 && exit 0";
    
    // execute child
    cout << endl << "(mpi) Executing job " << basename(confname.c_str()) 
	 << " with cmd:" << endl << cmd << endl;
    int ret = std::system(cmd.c_str());
    if (ret != 0) {
      cerr << "child command error: " << ret << endl;
      cerr << "WIFSIGNALED(" << ret << "): " << WIFSIGNALED(ret) << endl;
      cerr << "WTERMSIG(" << ret << "): " << WTERMSIG(ret) << endl;
    }
#else
    eblerror("not implemented");
#endif
  }