int main(int argc, char *argv[]) { int ch, err, i, have_remote = 0; struct dnet_node *n = NULL; struct dnet_session *s = NULL; struct dnet_config cfg, rem; int max_id_idx = 1000, id_idx = 0; int timeout; unsigned char id[max_id_idx][DNET_ID_SIZE]; char *logfile = "/dev/stderr", *statfile = "/dev/stdout"; FILE *log = NULL, *stat; memset(&cfg, 0, sizeof(struct dnet_config)); cfg.sock_type = SOCK_STREAM; cfg.proto = IPPROTO_TCP; cfg.wait_timeout = 60*60; stat_logger.log_level = DNET_LOG_ERROR; timeout = 1; memcpy(&rem, &cfg, sizeof(struct dnet_config)); while ((ch = getopt(argc, argv, "MFAt:m:w:l:I:r:h")) != -1) { switch (ch) { case 'M': stat_mem = 1; break; case 'F': stat_fs = 1; break; case 'A': stat_la = 1; break; case 't': timeout = atoi(optarg); break; case 'm': stat_logger.log_level = strtoul(optarg, NULL, 0); break; case 'w': cfg.wait_timeout = atoi(optarg); break; case 'L': statfile = optarg; break; case 'l': logfile = optarg; break; case 'I': if (id_idx < max_id_idx) { err = dnet_parse_numeric_id(optarg, id[id_idx]); if (err) return err; id_idx++; } break; case 'r': err = dnet_parse_addr(optarg, &rem); if (err) return err; have_remote = 1; break; case 'h': default: stat_usage(argv[0]); return -1; } } if (!have_remote) { fprintf(stderr, "No remote node specified to route requests.\n"); return -ENOENT; } log = fopen(logfile, "a"); if (!log) { err = -errno; fprintf(stderr, "Failed to open log file %s: %s.\n", logfile, strerror(errno)); return err; } stat_logger.log_private = log; stat_logger.log = dnet_common_log; cfg.log = &stat_logger; stat = fopen(statfile, "a"); if (!stat) { err = -errno; fprintf(stderr, "Failed to open stat file %s: %s.\n", statfile, strerror(errno)); return err; } n = dnet_node_create(&cfg); if (!n) return -1; s = dnet_session_create(n); if (!s) return -1; err = dnet_add_state(n, &rem); if (err) return err; while (1) { struct dnet_id raw; if (!id_idx) { err = dnet_request_stat(s, NULL, DNET_CMD_STAT, 0, stat_complete, stat); if (err < 0) return err; } for (i=0; i<id_idx; ++i) { dnet_setup_id(&raw, 0, id[i]); err = dnet_request_stat(s, &raw, DNET_CMD_STAT, 0, stat_complete, stat); if (err < 0) return err; } sleep(timeout); } return 0; }
int main(int argc, char *argv[]) { int ch, err, have_remote = 0, i; struct dnet_node *n = NULL; struct dnet_config cfg, rem; int max_id_idx = 1000, id_idx = 0, group_id = 0; unsigned char id[max_id_idx][DNET_ID_SIZE]; char *logfile = "/dev/stderr", *notify_file = "/dev/stdout"; FILE *log = NULL, *notify; memset(&cfg, 0, sizeof(struct dnet_config)); cfg.sock_type = SOCK_STREAM; cfg.proto = IPPROTO_TCP; cfg.wait_timeout = 60*60; notify_logger.log_mask = DNET_LOG_ERROR | DNET_LOG_INFO; memcpy(&rem, &cfg, sizeof(struct dnet_config)); while ((ch = getopt(argc, argv, "g:m:w:l:I:a:r:h")) != -1) { switch (ch) { case 'm': notify_logger.log_mask = strtoul(optarg, NULL, 0); break; case 'w': cfg.wait_timeout = atoi(optarg); break; case 'L': notify_file = optarg; break; case 'l': logfile = optarg; break; case 'I': if (id_idx < max_id_idx) { err = dnet_parse_numeric_id(optarg, id[id_idx]); if (err) return err; id_idx++; } break; case 'g': group_id = atoi(optarg); break; case 'a': err = dnet_parse_addr(optarg, &cfg); if (err) return err; break; case 'r': err = dnet_parse_addr(optarg, &rem); if (err) return err; have_remote = 1; break; case 'h': default: notify_usage(argv[0]); return -1; } } if (!id_idx) { fprintf(stderr, "No ID specified to watch.\n"); return -EINVAL; } if (!have_remote) { fprintf(stderr, "No remote node specified to route requests.\n"); return -ENOENT; } log = fopen(logfile, "a"); if (!log) { err = -errno; fprintf(stderr, "Failed to open log file %s: %s.\n", logfile, strerror(errno)); return err; } notify_logger.log_private = log; notify_logger.log = dnet_common_log; cfg.log = ¬ify_logger; notify = fopen(notify_file, "a"); if (!notify) { err = -errno; fprintf(stderr, "Failed to open notify file %s: %s.\n", notify_file, strerror(errno)); return err; } n = dnet_node_create(&cfg); if (!n) return -1; err = dnet_add_state(n, &rem); if (err) return err; for (i=0; i<id_idx; ++i) { struct dnet_id raw; dnet_setup_id(&raw, group_id, id[i]); err = dnet_request_notification(n, &raw, notify_complete, notify); } while (1) { sleep(1); } return 0; }
elliptics_id* elliptics_id::from_hex(const std::string &hex) { dnet_id id; dnet_parse_numeric_id(hex.c_str(), id.id); return new elliptics_id(id); }