📄 sample_work_generator.c
字号:
// Berkeley Open Infrastructure for Network Computing// http://boinc.berkeley.edu// Copyright (C) 2007 University of California//// This is free software; you can redistribute it and/or// modify it under the terms of the GNU Lesser General Public// License as published by the Free Software Foundation;// either version 2.1 of the License, or (at your option) any later version.//// This software is distributed in the hope that it will be useful,// but WITHOUT ANY WARRANTY; without even the implied warranty of// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.// See the GNU Lesser General Public License for more details.//// To view the GNU Lesser General Public License visit// http://www.gnu.org/copyleft/lesser.html// or write to the Free Software Foundation, Inc.,// 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA// sample_work_generator.C: an example BOINC work generator.// This work generator has the following properties// (you may need to change some or all of these)://// - Runs as a daemon, and creates an unbounded supply of work.// It attempts to maintain a "cushion" of 100 unsent job instances.// (your app may not work this way; e.g. you might create work in batches)// - Creates work for the application "uppercase".// - Creates a new input file for each job;// the file (and the workunit names) contain a timestamp// and sequence number, so that they're unique./*
* ARTIFICIAL INTELLIGENCE SYSTEM
*
* Copyright (C) 2007-Present Intelligence Realm Inc. All rights reserved.
*
* See LICENSE.TXT document for licensing information.
*/#include <iostream>#include "boinc_db.h"#include "error_numbers.h"#include "backend_lib.h"#include "parse.h"#include "util.h"#include "sched_config.h"#include "sched_util.h"#include "sched_msgs.h"#include "filesys.h"using namespace std;#define CUSHION 100 // maintain at least this many unsent results#define REPLICATION_FACTOR 1struct folder_type
{
char *name;};struct folder_type **folder_list;// globals//char* wu_template;char work_gen_number[7]; // /home/ovi/aisystem/work[0..100000] folder numberDB_APP app;int start_time;int seqno;SCHED_CONFIG config;int len(char *src){ int l = 0; while(src[l++] != '\0'); return l;}char *left(char *src, int n){ static char *res = NULL; res = src; res[n] = '\0'; return res;}char *right(char *src, int n){ static char *res = NULL; int i = 0; int l = len(src) - n - 1; res = src; for(;i<l;i++) { res[i] = '\0'; } i=0; while((res[i++] == '\0') && (i < l)); return &res[i];}// create one new job//int make_job() { DB_WORKUNIT wu; char job_name[256], path[256]; const char *infiles[1]; char command_line[33]; char command[1000]; char file_name[36]; char folder_short[3]; int create_result; int result_code = 0; int retval; int i; // retrieve the first available xml file char* src_dir, *dst_dir; int is_found=0; int is_in_folder = 0; std::string filename; std::string filename1; char dst_path[256], src_path[256], file_id[32], file_path[255]; char work_folder[256]; // define the list of folders int dir_count = 257; folder_list = (struct folder_type **)malloc(dir_count * sizeof(struct folder_type *)); for (i=0; i<dir_count; ++i) { folder_list[i] = (struct folder_type *)malloc(1 * sizeof(struct folder_type));
folder_list[i]->name = (char *)malloc((2 + 1) * sizeof(char)); }
strcpy(folder_list[0]->name, "00"); strcpy(folder_list[1]->name, "01"); strcpy(folder_list[2]->name, "02"); strcpy(folder_list[3]->name, "03"); strcpy(folder_list[4]->name, "04"); strcpy(folder_list[5]->name, "05"); strcpy(folder_list[6]->name, "06"); strcpy(folder_list[7]->name, "07"); strcpy(folder_list[8]->name, "08"); strcpy(folder_list[9]->name, "09"); strcpy(folder_list[10]->name, "0a"); strcpy(folder_list[11]->name, "0b"); strcpy(folder_list[12]->name, "0c"); strcpy(folder_list[13]->name, "0d"); strcpy(folder_list[14]->name, "0e"); strcpy(folder_list[15]->name, "0f"); strcpy(folder_list[16]->name, "10"); strcpy(folder_list[17]->name, "11"); strcpy(folder_list[18]->name, "12"); strcpy(folder_list[19]->name, "13"); strcpy(folder_list[20]->name, "14"); strcpy(folder_list[21]->name, "15"); strcpy(folder_list[22]->name, "16"); strcpy(folder_list[23]->name, "17"); strcpy(folder_list[24]->name, "18"); strcpy(folder_list[25]->name, "19"); strcpy(folder_list[26]->name, "1a"); strcpy(folder_list[27]->name, "1b"); strcpy(folder_list[28]->name, "1c"); strcpy(folder_list[29]->name, "1d"); strcpy(folder_list[31]->name, "1e"); strcpy(folder_list[32]->name, "1f"); strcpy(folder_list[33]->name, "20"); strcpy(folder_list[34]->name, "21"); strcpy(folder_list[35]->name, "22"); strcpy(folder_list[36]->name, "23"); strcpy(folder_list[37]->name, "24"); strcpy(folder_list[38]->name, "25"); strcpy(folder_list[39]->name, "26"); strcpy(folder_list[40]->name, "27"); strcpy(folder_list[41]->name, "28"); strcpy(folder_list[42]->name, "29"); strcpy(folder_list[43]->name, "2a"); strcpy(folder_list[44]->name, "2b"); strcpy(folder_list[45]->name, "2c"); strcpy(folder_list[46]->name, "2d"); strcpy(folder_list[47]->name, "2e"); strcpy(folder_list[48]->name, "2f"); strcpy(folder_list[49]->name, "30"); strcpy(folder_list[50]->name, "31"); strcpy(folder_list[51]->name, "32"); strcpy(folder_list[52]->name, "33"); strcpy(folder_list[53]->name, "34"); strcpy(folder_list[54]->name, "35"); strcpy(folder_list[55]->name, "36"); strcpy(folder_list[56]->name, "37"); strcpy(folder_list[57]->name, "38"); strcpy(folder_list[58]->name, "39"); strcpy(folder_list[59]->name, "3a"); strcpy(folder_list[60]->name, "3b"); strcpy(folder_list[61]->name, "3c"); strcpy(folder_list[62]->name, "3d"); strcpy(folder_list[63]->name, "3e"); strcpy(folder_list[64]->name, "3f"); strcpy(folder_list[65]->name, "40"); strcpy(folder_list[66]->name, "41"); strcpy(folder_list[67]->name, "42"); strcpy(folder_list[68]->name, "43"); strcpy(folder_list[69]->name, "44"); strcpy(folder_list[70]->name, "45"); strcpy(folder_list[71]->name, "46"); strcpy(folder_list[72]->name, "47"); strcpy(folder_list[73]->name, "48"); strcpy(folder_list[74]->name, "49"); strcpy(folder_list[75]->name, "4a"); strcpy(folder_list[76]->name, "4b"); strcpy(folder_list[77]->name, "4c"); strcpy(folder_list[78]->name, "4d"); strcpy(folder_list[79]->name, "4e"); strcpy(folder_list[80]->name, "4f"); strcpy(folder_list[81]->name, "50"); strcpy(folder_list[82]->name, "51"); strcpy(folder_list[83]->name, "52"); strcpy(folder_list[84]->name, "53"); strcpy(folder_list[85]->name, "54"); strcpy(folder_list[86]->name, "55"); strcpy(folder_list[87]->name, "56"); strcpy(folder_list[88]->name, "57"); strcpy(folder_list[89]->name, "58"); strcpy(folder_list[90]->name, "59"); strcpy(folder_list[91]->name, "5a"); strcpy(folder_list[92]->name, "5b"); strcpy(folder_list[93]->name, "5c"); strcpy(folder_list[94]->name, "5d"); strcpy(folder_list[95]->name, "5e"); strcpy(folder_list[96]->name, "5f"); strcpy(folder_list[97]->name, "60"); strcpy(folder_list[98]->name, "61"); strcpy(folder_list[99]->name, "62"); strcpy(folder_list[100]->name, "63"); strcpy(folder_list[101]->name, "64"); strcpy(folder_list[102]->name, "65"); strcpy(folder_list[103]->name, "66"); strcpy(folder_list[104]->name, "67"); strcpy(folder_list[105]->name, "68"); strcpy(folder_list[106]->name, "69"); strcpy(folder_list[107]->name, "6a"); strcpy(folder_list[108]->name, "6b"); strcpy(folder_list[109]->name, "6c"); strcpy(folder_list[110]->name, "6d"); strcpy(folder_list[111]->name, "6e"); strcpy(folder_list[112]->name, "6f"); strcpy(folder_list[113]->name, "70"); strcpy(folder_list[114]->name, "71"); strcpy(folder_list[115]->name, "72"); strcpy(folder_list[116]->name, "73"); strcpy(folder_list[117]->name, "74"); strcpy(folder_list[118]->name, "75"); strcpy(folder_list[119]->name, "76"); strcpy(folder_list[120]->name, "77"); strcpy(folder_list[121]->name, "78"); strcpy(folder_list[122]->name, "79"); strcpy(folder_list[123]->name, "7a"); strcpy(folder_list[124]->name, "7b"); strcpy(folder_list[125]->name, "7c"); strcpy(folder_list[126]->name, "7d"); strcpy(folder_list[127]->name, "7e"); strcpy(folder_list[128]->name, "7f"); strcpy(folder_list[129]->name, "80"); strcpy(folder_list[130]->name, "81"); strcpy(folder_list[131]->name, "82"); strcpy(folder_list[132]->name, "83"); strcpy(folder_list[133]->name, "84"); strcpy(folder_list[134]->name, "85"); strcpy(folder_list[135]->name, "86"); strcpy(folder_list[136]->name, "87"); strcpy(folder_list[137]->name, "88"); strcpy(folder_list[138]->name, "89"); strcpy(folder_list[139]->name, "8a"); strcpy(folder_list[140]->name, "8b"); strcpy(folder_list[141]->name, "8c"); strcpy(folder_list[142]->name, "8d"); strcpy(folder_list[143]->name, "8e"); strcpy(folder_list[144]->name, "8f"); strcpy(folder_list[145]->name, "90"); strcpy(folder_list[146]->name, "91"); strcpy(folder_list[147]->name, "92"); strcpy(folder_list[148]->name, "93"); strcpy(folder_list[149]->name, "94"); strcpy(folder_list[150]->name, "95"); strcpy(folder_list[151]->name, "96"); strcpy(folder_list[152]->name, "97"); strcpy(folder_list[153]->name, "98"); strcpy(folder_list[154]->name, "99"); strcpy(folder_list[155]->name, "9a"); strcpy(folder_list[156]->name, "9b"); strcpy(folder_list[157]->name, "9c"); strcpy(folder_list[158]->name, "9d"); strcpy(folder_list[159]->name, "9e"); strcpy(folder_list[160]->name, "9f"); strcpy(folder_list[161]->name, "a0"); strcpy(folder_list[162]->name, "a1"); strcpy(folder_list[163]->name, "a2"); strcpy(folder_list[164]->name, "a3"); strcpy(folder_list[165]->name, "a4"); strcpy(folder_list[166]->name, "a5"); strcpy(folder_list[167]->name, "a6"); strcpy(folder_list[168]->name, "a7"); strcpy(folder_list[169]->name, "a8"); strcpy(folder_list[170]->name, "a9"); strcpy(folder_list[171]->name, "aa"); strcpy(folder_list[172]->name, "ab"); strcpy(folder_list[173]->name, "ac"); strcpy(folder_list[174]->name, "ad"); strcpy(folder_list[175]->name, "ae"); strcpy(folder_list[176]->name, "af"); strcpy(folder_list[177]->name, "b0"); strcpy(folder_list[178]->name, "b1"); strcpy(folder_list[179]->name, "b2"); strcpy(folder_list[180]->name, "b3"); strcpy(folder_list[181]->name, "b4"); strcpy(folder_list[182]->name, "b5"); strcpy(folder_list[183]->name, "b6"); strcpy(folder_list[184]->name, "b7"); strcpy(folder_list[185]->name, "b8"); strcpy(folder_list[186]->name, "b9"); strcpy(folder_list[187]->name, "ba"); strcpy(folder_list[188]->name, "bb"); strcpy(folder_list[189]->name, "bc"); strcpy(folder_list[190]->name, "bd"); strcpy(folder_list[191]->name, "be"); strcpy(folder_list[192]->name, "bf"); strcpy(folder_list[193]->name, "c0"); strcpy(folder_list[194]->name, "c1"); strcpy(folder_list[195]->name, "c2"); strcpy(folder_list[196]->name, "c3"); strcpy(folder_list[197]->name, "c4"); strcpy(folder_list[198]->name, "c5"); strcpy(folder_list[199]->name, "c6"); strcpy(folder_list[200]->name, "c7"); strcpy(folder_list[201]->name, "c8"); strcpy(folder_list[202]->name, "c9"); strcpy(folder_list[203]->name, "ca"); strcpy(folder_list[204]->name, "cb"); strcpy(folder_list[205]->name, "cc"); strcpy(folder_list[206]->name, "cd"); strcpy(folder_list[207]->name, "ce"); strcpy(folder_list[208]->name, "cf"); strcpy(folder_list[209]->name, "d0"); strcpy(folder_list[210]->name, "d1"); strcpy(folder_list[211]->name, "d2"); strcpy(folder_list[212]->name, "d3"); strcpy(folder_list[213]->name, "d4"); strcpy(folder_list[214]->name, "d5"); strcpy(folder_list[215]->name, "d6"); strcpy(folder_list[216]->name, "d7"); strcpy(folder_list[217]->name, "d8"); strcpy(folder_list[218]->name, "d9"); strcpy(folder_list[219]->name, "da"); strcpy(folder_list[220]->name, "db"); strcpy(folder_list[221]->name, "dc"); strcpy(folder_list[222]->name, "dd"); strcpy(folder_list[223]->name, "de"); strcpy(folder_list[224]->name, "df"); strcpy(folder_list[225]->name, "e0"); strcpy(folder_list[226]->name, "e1"); strcpy(folder_list[227]->name, "e2"); strcpy(folder_list[228]->name, "e3"); strcpy(folder_list[229]->name, "e4"); strcpy(folder_list[230]->name, "e5"); strcpy(folder_list[231]->name, "e6"); strcpy(folder_list[232]->name, "e7"); strcpy(folder_list[233]->name, "e8"); strcpy(folder_list[234]->name, "e9"); strcpy(folder_list[235]->name, "ea"); strcpy(folder_list[236]->name, "eb"); strcpy(folder_list[237]->name, "ec"); strcpy(folder_list[238]->name, "ed"); strcpy(folder_list[239]->name, "ee"); strcpy(folder_list[240]->name, "ef"); strcpy(folder_list[241]->name, "f0"); strcpy(folder_list[242]->name, "f1"); strcpy(folder_list[243]->name, "f2"); strcpy(folder_list[244]->name, "f3"); strcpy(folder_list[245]->name, "f4"); strcpy(folder_list[246]->name, "f5"); strcpy(folder_list[247]->name, "f6"); strcpy(folder_list[248]->name, "f7"); strcpy(folder_list[249]->name, "f8"); strcpy(folder_list[250]->name, "f9"); strcpy(folder_list[251]->name, "fa"); strcpy(folder_list[252]->name, "fb"); strcpy(folder_list[253]->name, "fc"); strcpy(folder_list[254]->name, "fd"); strcpy(folder_list[255]->name, "fe"); strcpy(folder_list[256]->name, "ff"); // browse through the list of folders and seach for files for (i=0; i<dir_count; ++i) { strcpy(work_folder, "../work"); strcat(work_folder, work_gen_number); strcat(work_folder, "/process/"); strcat(work_folder, folder_list[i]->name); DirScanner scanner(work_folder); while ((scanner.scan(filename)) && (is_found == 0)) { strcpy(file_id, ""); if (strstr(filename.c_str(), ".xml") != NULL) { strncpy(file_id, (const char *)filename.c_str(), 32); strcpy(folder_short, folder_list[i]->name); is_in_folder = 1; is_found = 1; } } if (is_found == 1) break; } // free memory if(folder_list)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -