int main(int argc, char **argv) { int bufsize = 1024*1024; char buffer[bufsize], *bstate; int n; Net_timeout_t dt; NetStream_t *ns; char cmd[512]; char *host; int port = 6714; int timeout = 15; if (argc < 2) { printf("get_version -a | host [port timeout]\n"); printf(" -a -Use the local host and default port\n"); return(0); } if (strcmp(argv[1], "-a") == 0) { host = (char *)malloc(1024); gethostname(host, 1023); } else { host = argv[1]; } if (argc > 2) port = atoi(argv[2]); if (argc == 4) timeout = atoi(argv[3]); set_net_timeout(&dt, timeout, 0); sprintf(cmd, "1 4 5 %d\n", timeout); // IBP_ST_VERSION command assert(apr_initialize() == APR_SUCCESS); dns_cache_init(10); ns = cmd_send(host, port, cmd, &bstate, timeout); if (ns == NULL) return(-1); if (bstate != NULL) free(bstate); //** Read the result. Termination occurs when the line "END" is read. //** Note that readline_netstream strips the "\n" from the end of the line n = NS_OK; while (n == NS_OK) { n = readline_netstream(ns, buffer, bufsize, dt); if (n == NS_OK) { if (strcmp(buffer, "END") == 0) { n = NS_OK+1; } else { printf("%s\n", buffer); } } } //** Close the connection close_netstream(ns); apr_terminate(); return(0); }
NetStream_t *cmd_send(char *host, int port, char *cmd, char **res_buffer, int timeout) { int bufsize = 10*1024; char buffer[bufsize]; char *bstate; int err, failed; int n, retry; double swait; Net_timeout_t dt; NetStream_t *ns; apr_time_t await, sec, usec; *res_buffer = NULL; //set_log_level(20); //int loop =0; do { //loop++; //printf("cmd_send: loop=%d\n", loop); failed = 0; //** Make the host connection retry = 3; do { ns = new_netstream(); ns_config_sock(ns, -1); set_net_timeout(&dt, 60, 0); err = net_connect(ns, host, port, dt); if (err != 0) { destroy_netstream(ns); printf("get_version: Can't connect to host! host=%s port=%d err=%d\n", host, port, err); if (retry <= 0) { printf("cmd_send: Aborting!\n"); return(NULL); } else { printf("cmd_send: Sleeping for 1 second and retrying(%d).\n", retry); sleep(1); retry--; } } } while ((err != 0) && (retry > -1)); //** Send the command dt = apr_time_now() + apr_time_make(timeout,0); n = write_netstream_block(ns, dt, cmd, strlen(cmd)); //** Get the result line set_net_timeout(&dt, timeout, 0); n = readline_netstream(ns, buffer, bufsize, dt); if (n == NS_OK) { n = atoi(string_token(buffer, " ", &bstate, &err)); if (n != IBP_OK) { if (n == IBP_E_OUT_OF_SOCKETS) { swait = atof(string_token(NULL, " ", &bstate, &err)); printf("Depot is busy. Sleeping for %lf sec and retrying.\n", swait); destroy_netstream(ns); failed = 1; sec = swait; usec = (swait-sec) * 1000000; await = apr_time_make(sec, usec); // printf("sec=" TT " usec=" TT " await=" TT "\n", sec, usec,await); apr_sleep(await); } else { printf("Error %d returned!\n", n); destroy_netstream(ns); return(NULL); } } } else { //printf("cmd_send: readline_netstream=%d\n", n); failed = 1; } } while (failed == 1); *res_buffer = strdup(bstate); return(ns); }
int main(int argc, char **argv) { int bufsize = 1024*1024; char buffer[bufsize], *bstate; int err; int n; Net_timeout_t dt; if (argc < 3) { printf("get_version host port [timeout]\n"); return(0); } char cmd[512]; char *host = argv[1]; int port = atoi(argv[2]); int timeout = 15; if (argc == 4) timeout = atoi(argv[3]); sprintf(cmd, "1 4 5 %d\n", timeout); // IBP_ST_VERSION command dns_cache_init(10); NetStream_t *ns = new_netstream(); ns_config_sock(ns, -1, 0); set_net_timeout(&dt, 5, 0); //** Make the host connection err = net_connect(ns, host, port, dt); if (err != 0) { printf("get_version: Can't connect to host! host=%s port=%d err=%d\n", host, port, err); return(err); } //** Send the command n = write_netstream(ns, cmd, strlen(cmd), dt); n = readline_netstream(ns, buffer, bufsize, dt); if (n == IBP_OK) { n = atoi(string_token(buffer, " ", &bstate, &err)); if (n != IBP_OK) { printf("Error %d returned!\n", n); close_netstream(ns); return(n); } } //** Read the result. Termination occurs when the line "END" is read. //** Note that readline_netstream strips the "\n" from the end of the line n = 1; while (n > 0) { n = readline_netstream(ns, buffer, bufsize, dt); if (n > 0) { if (strcmp(buffer, "END") == 0) { n = 0; } else { printf("%s\n", buffer); } } } //** Close the connection close_netstream(ns); return(0); }
int main(int argc, char **argv) { int bufsize = 1024*1024; char buffer[bufsize], *bstate; int err, i, mode; Net_timeout_t dt; time_t t; osd_id_t id; char print_time[128]; uint64_t bytes, total_bytes; double fb1, fb2; uint64_t base_unit; double units; if (argc < 7) { printf("expire_list host port RID mode time count\n"); printf("\n"); printf(" mode - abs or rel\n"); printf(" time - Future time with format of days:hours:min:sec\n"); printf(" count - Number of allocations to retreive\n"); printf("\n"); return(0); } base_unit = 1024 * 1024; units = base_unit; units = 1.0 / units; i = 1; char *host = argv[i]; i++; int port = atoi(argv[i]); i++; char *rid = argv[i]; i++; mode = 0; if (strcmp(argv[i], "abs") == 0) mode = 1; i++; t = parse_time(argv[i]); i++; int count = atoi(argv[i]); dns_cache_init(10); NetStream_t *ns = new_netstream(); ns_config_sock(ns, -1, 0); set_net_timeout(&dt, 5, 0); err = net_connect(ns, host, port, dt); if (err != 0) { printf("get_alloc: Can't connect to host! host=%s port=%d err=%d\n", host, port, err); return(err); } sprintf(buffer, "1 %d %s %d " TT " %d 10\n", INTERNAL_EXPIRE_LIST, rid, mode, t, count); err = write_netstream(ns, buffer, strlen(buffer), dt); err = readline_netstream(ns, buffer, bufsize, dt); if (err > 0) { err = atoi(string_token(buffer, " ", &bstate, &err)); if (err != IBP_OK) { printf("Error %d returned!\n", err); close_netstream(ns); return(err); } } //** Cycle through the data ** total_bytes = 0; printf("n Time date ID mb_max total_max_mb\n"); printf("------------------------------------------------------------------------------------------------------\n"); err = 0; i = 0; while (err != -1) { buffer[0] = '\0'; err = readline_netstream(ns, buffer, bufsize, dt); //printf("err=%d buf=%s\n", err, buffer); if (err > 0) { if (strcmp("END", buffer) == 0) { //** Finished err = -1; } else { parse_line(buffer, &t, &id, &bytes); ctime_r(&t, print_time); print_time[strlen(print_time)-1] = '\0'; total_bytes = total_bytes + bytes; fb1 = bytes * units; fb2 = total_bytes * units; printf("%4d " TT " * %s * " LU " * %lf * %lf\n", i, t, print_time, id, fb1, fb2); } } i++; } close_netstream(ns); printf("\n"); return(0); }