int INKRequestCreate(char *origin_server_host /* return */ , int max_hostname_size, char *origin_server_port /* return */ , int max_portname_size, char *request_buf /* return */ , int max_request_size, void **req_id /* return */ ) { User *user; int origin_server_num = (lrand48() % my_plugin.num_origin_server); long serial_number = generate_serial_number(); long doc_size = generate_size(); if (my_plugin.direct) { sprintf(origin_server_host, my_plugin.origin_host[origin_server_num]); sprintf(origin_server_port, my_plugin.origin_port[origin_server_num]); sprintf(request_buf, "GET /%d/length%d HTTP/1.0\r\nAccept: */*\r\nHost: %s:%s\r\n\r\n", serial_number, doc_size, origin_server_host, origin_server_port); } else { sprintf(origin_server_host, my_plugin.target_host); sprintf(origin_server_port, my_plugin.target_port); sprintf(request_buf, "GET http://%s:%s/%d/length%d HTTP/1.0\r\nAccept: */*\r\n\r\n", my_plugin.origin_host[origin_server_num], my_plugin.origin_port[origin_server_num], serial_number, doc_size); } user = (User *) malloc(sizeof(User)); user->doc_size_requested = doc_size; *req_id = (void *) user; my_plugin.requests++; return TRUE; }
DumpsterSize gen_out_size(Operation o) { switch (o) { case PickUp: case Replace: return generate_size(); default: return none; } }
DumpsterSize gen_in_size(Operation o) { switch (o) { case DropOff: case Replace: return generate_size(); default: return none; } }