aboutsummaryrefslogtreecommitdiffstats
path: root/toj/center/src/center_judge.h
diff options
context:
space:
mode:
Diffstat (limited to 'toj/center/src/center_judge.h')
-rwxr-xr-x[-rw-r--r--]toj/center/src/center_judge.h34
1 files changed, 16 insertions, 18 deletions
diff --git a/toj/center/src/center_judge.h b/toj/center/src/center_judge.h
index 74b2daf..99a3cf9 100644..100755
--- a/toj/center/src/center_judge.h
+++ b/toj/center/src/center_judge.h
@@ -12,7 +12,7 @@ public:
judge_conn *conn_main;
std::list<judge_conn*> conn_list;
std::list<judge_info*>::iterator judge_it;
- std::map<int,center_pro_info*> pro_map;
+ std::map<int,int> pro_map;
std::map<std::string,center_jmod_info*> jmod_map;
judge_info();
@@ -21,6 +21,7 @@ public:
int setinfo(int avail);
int submit(judge_submit_info *submit_info);
int result(int subid,char *res_data);
+ int updatepro(std::vector<std::pair<int,int> > &pro_list);
};
class judge_conn : public netio{
@@ -31,6 +32,7 @@ private:
netio_iofn<judge_conn> *recv_result_fn;
netio_iofn<judge_conn> *recv_setpro_fn;
netio_iofn<judge_conn> *recv_reqpro_fn;
+ netio_iofn<judge_conn> *done_sendpro_fn;
netio_iofn<judge_conn> *recv_setjmod_fn;
netio_iofn<judge_conn> *recv_reqjmod_fn;
netio_iofn<judge_conn> *recv_reqcode_fn;
@@ -42,6 +44,7 @@ private:
void recv_result(void *buf,size_t len,void *data);
void recv_setpro(void *buf,size_t len,void *data);
void recv_reqpro(void *buf,size_t len,void *data);
+ void done_sendpro(void *buf,size_t len,void *data);
void recv_setjmod(void *buf,size_t len,void *data);
void recv_reqjmod(void *buf,size_t len,void *data);
void recv_reqcode(void *buf,size_t len,void *data);
@@ -54,7 +57,7 @@ public:
~judge_conn();
int send_setid(int judgeid);
int send_submit(judge_submit_info* submit_info);
- int send_setpro(int *proid,int *cacheid,int type,int count);
+ int send_setpro(std::vector<std::pair<int,int> > &pro_list,int type);
int send_setjmod(char **jmod_name,int *cacheid,int type,int count);
virtual int readidle();
};
@@ -64,23 +67,23 @@ public:
int subid;
int proid;
int lang;
- char set_data[JUDGE_SET_DATAMAX];
+ char *set_data;
size_t set_len;
judge_submit_info(int subid,int proid,int lang,char *setdata,size_t setlen){
this->subid = subid;
this->proid = proid;
this->lang = lang;
- if(setlen > JUDGE_SET_DATAMAX){
- memcpy(this->set_data,setdata,JUDGE_SET_DATAMAX);
- }else{
- memcpy(this->set_data,setdata,setlen);
- }
+ this->set_data = new char[setlen];
+ memcpy(this->set_data,setdata,setlen);
this->set_len = setlen;
}
+ ~judge_submit_info(){
+ delete this->set_data;
+ }
};
-static int judge_submit_waitqueue();
+static int judge_run_waitqueue();
static std::map<int,judge_info*> judge_idmap;
static std::list<judge_info*> judge_runlist;
@@ -90,17 +93,12 @@ int center_judge_init();
void* center_judge_addconn(int fd);
int center_judge_dispatch(int evflag,void *data);
int center_judge_submit(int subid,int proid,int lang,char *setdata,size_t setlen);
+int center_judge_updatepro(std::vector<std::pair<int,int> > &pro_list);
extern int center_manage_result(int subid,char *res_data);
+extern center_pro_info* center_manage_getprobyid(int proid);
+extern int center_manage_getpro(center_pro_info *pro_info);
+extern int center_manage_putpro(center_pro_info *pro_info);
extern std::map<std::string,center_jmod_info*> center_manage_jmodmap;
extern std::map<int,center_pro_info*> center_manage_promap;
-
-
-
-/*#define JUDGE_DB_MAXSCOREMAX 1024
-static int tmp_init();
-static int tmp_update(int submitid,int count,void *data);
-static int server_updatedb(PGconn *sqlc,int submitid,int result_count,struct judgx_line_result *result);
-
-static PGconn *tmp_sqlc;*/