Example #1
0
void
process_input(mdata_get_t *mdg, const char *buf)
{
	switch (mdg->mdg_state) {
	case MDGS_MESSAGE_HEADER:
		if (strcmp(buf, "NOTFOUND") == 0) {
			mdg->mdg_response = MDGR_NOTFOUND;
			mdg->mdg_state = MDGS_DONE;
		} else if (strcmp(buf, "SUCCESS") == 0) {
			mdg->mdg_response = MDGR_SUCCESS;
			mdg->mdg_state = MDGS_MESSAGE_DATA;
		} else {
			dynstr_append(mdg->mdg_data, buf);
			mdg->mdg_response = MDGR_UNKNOWN;
			mdg->mdg_state = MDGS_DONE;
		}
		break;
	case MDGS_MESSAGE_DATA:
		if (strcmp(buf, ".") == 0) {
			mdg->mdg_state = MDGS_DONE;
		} else {
			int offs = buf[0] == '.' ? 1 : 0;
			if (dynstr_len(mdg->mdg_data) > 0)
				dynstr_append(mdg->mdg_data, "\n");
			dynstr_append(mdg->mdg_data, buf + offs);
		}
		break;
	case MDGS_DONE:
		break;
	default:
		abort();
	}
}
Example #2
0
static int
print_response(mdata_response_t mdr, string_t *data)
{
	const char *cstr = dynstr_cstr(data);
	size_t len = dynstr_len(data);

	switch (mdr) {
	case MDR_SUCCESS:
		fprintf(stdout, "%s", cstr);
		if (len >= 1 && cstr[len - 1] != '\n')
			fprintf(stdout, "\n");
		return (MDEC_SUCCESS);
	case MDR_NOTFOUND:
		fprintf(stderr, "No metadata\n");
		return (MDEC_NOTFOUND);
	case MDR_UNKNOWN:
		fprintf(stderr, "Error getting metadata: %s\n", cstr);
		return (MDEC_ERROR);
	case MDR_INVALID_COMMAND:
		fprintf(stderr, "ERROR: host does not support KEYS\n");
		return (MDEC_ERROR);
	default:
		ABORT("print_response: UNKNOWN RESPONSE\n");
		return (MDEC_ERROR);
	}
}
Example #3
0
int
plat_send(mdata_plat_t *mpl, string_t *data)
{
	int len = dynstr_len(data);

	if (write(mpl->mpl_conn, dynstr_cstr(data), len) != len)
		return (-1);

	return (0);
}