int process() { int i; int j; DCBuffer * work = get_init_filter_broadcast(); std::string packet_size_and_num_packets; work->Extract(& packet_size_and_num_packets); std::vector<std::string> toks = dcmpi_string_tokenize(packet_size_and_num_packets); int num_packets = dcmpi_csnum(toks[1]); for (i = 0; i < num_packets; i++) { DCBuffer * b = readany(); char * p = b->getPtr(); for (j = 0; j < b->getUsedSize(); j++) { char expected = (char)(j%256); if (p[j] != expected) { sleep(2); std::cerr << "ERROR: expecting " << (int)expected << ", got " << (int)p[j] << ", j=" << j << " at " << __FILE__ << ":" << __LINE__ << std::endl << std::flush; std::cerr << *b; // b->extended_print(cerr); assert(0); } } b->consume(); printf("."); fflush(stdout); } printf("\n"); return 0; }
int ocvm_dim_writer::process() { std::string output_directory; int x1, y1, x2, y2, z; int i, j; DCBuffer * in; const char * mode; //while (1) { //in = read_until_upstream_exit("0"); in = read("0"); //if (!in) { // break; //} in->unpack("siiiii", &output_directory, &x1, &y1, &x2, &y2, &z); in->consume(); // cout << "dimwriter on " << dcmpi_get_hostname() // << ": writing to " // << output_filename << endl; std::string containing_dir = dcmpi_file_dirname(output_directory); if (!dcmpi_file_exists(containing_dir)) { if (dcmpi_mkdir_recursive(containing_dir)) { std::cerr << "ERROR: making directories on " << dcmpi_get_hostname() << " at " << __FILE__ << ":" << __LINE__ << std::endl << std::flush; } } assert(dcmpi_file_exists(containing_dir)); FILE * f; mode = "w"; for (i = y1; i <= y2; i++) { for (j = x1; j <= x2; j++) { std::string output_filename = output_directory + tostr(j) + "_" + tostr(i) + "_0"; if ((f = fopen(output_filename.c_str(), mode)) == NULL) { std::cerr << "ERROR: opening " << output_filename << " for mode " << mode << " on host " << dcmpi_get_hostname() << " at " << __FILE__ << ":" << __LINE__ << std::endl << std::flush; exit(1); } in = read("0"); if (compress) { in->decompress(); } if (fwrite(in->getPtr(), in->getUsedSize(), 1, f) < 1) { std::cerr << "ERROR: calling fwrite()" << " at " << __FILE__ << ":" << __LINE__ << std::endl << std::flush; exit(1); } in->consume(); if (fclose(f) != 0) { std::cerr << "ERROR: calling fclose()" << " at " << __FILE__ << ":" << __LINE__ << std::endl << std::flush; exit(1); } } } //} return 0; }