static void * sml_prof_obj_header_entry_parse_(sml_buffer *buf) {
	sml_prof_obj_header_entry *entry = sml_prof_obj_header_entry_init();

	if (sml_buf_get_next_type(buf) != SML_TYPE_LIST) {
		buf->error = 1;
		goto error;
	}

	if (sml_buf_get_next_length(buf) != 3) {
		buf->error = 1;
		goto error;
	}

	entry->obj_name = sml_octet_string_parse(buf);
	if (sml_buf_has_errors(buf)) goto error;
	entry->unit = sml_unit_parse(buf);
	if (sml_buf_has_errors(buf)) goto error;
	entry->scaler = sml_i8_parse(buf);
	if (sml_buf_has_errors(buf)) goto error;

	return entry;
error:
	buf->error = 1;
	sml_prof_obj_header_entry_free(entry);
	return 0;
}
Example #2
0
sml_period_entry *sml_period_entry_parse(sml_buffer *buf) {
	if (sml_buf_optional_is_skipped(buf)) {
		return 0;
	}

	sml_period_entry *period = sml_period_entry_init();

	if (sml_buf_get_next_type(buf) != SML_TYPE_LIST) {
		buf->error = 1;
		goto error;
	}

	if (sml_buf_get_next_length(buf) != 5) {
		buf->error = 1;
		goto error;
	}

	period->obj_name = sml_octet_string_parse(buf);
	if (sml_buf_has_errors(buf)) goto error;

	period->unit = sml_unit_parse(buf);
	if (sml_buf_has_errors(buf)) goto error;

	period->scaler = sml_i8_parse(buf);
	if (sml_buf_has_errors(buf)) goto error;

	period->value = sml_value_parse(buf);
	if (sml_buf_has_errors(buf)) goto error;

	period->value_signature = sml_octet_string_parse(buf);
	if (sml_buf_has_errors(buf)) goto error;

	return period;

error:
	sml_period_entry_free(period);
	return 0;
}
Example #3
0
sml_tupel_entry *sml_tupel_entry_parse(sml_buffer *buf) {
	if (sml_buf_optional_is_skipped(buf)) {
		return 0;
	}

	sml_tupel_entry *tupel = sml_tupel_entry_init();

	if (sml_buf_get_next_type(buf) != SML_TYPE_LIST) {
		buf->error = 1;
		goto error;
	}

	if (sml_buf_get_next_length(buf) != 23) {
		buf->error = 1;
		goto error;
	}

	tupel->server_id = sml_octet_string_parse(buf);
	if (sml_buf_has_errors(buf)) goto error;
	tupel->sec_index = sml_time_parse(buf);
	if (sml_buf_has_errors(buf)) goto error;
	tupel->status = sml_u64_parse(buf);
	if (sml_buf_has_errors(buf)) goto error;

	tupel->unit_pA = sml_unit_parse(buf);
	if (sml_buf_has_errors(buf)) goto error;
	tupel->scaler_pA = sml_i8_parse(buf);
	if (sml_buf_has_errors(buf)) goto error;
	tupel->value_pA = sml_i64_parse(buf);
	if (sml_buf_has_errors(buf)) goto error;

	tupel->unit_R1 = sml_unit_parse(buf);
	if (sml_buf_has_errors(buf)) goto error;
	tupel->scaler_R1 = sml_i8_parse(buf);
	if (sml_buf_has_errors(buf)) goto error;
	tupel->value_R1 = sml_i64_parse(buf);
	if (sml_buf_has_errors(buf)) goto error;

	tupel->unit_R4 = sml_unit_parse(buf);
	if (sml_buf_has_errors(buf)) goto error;
	tupel->scaler_R4 = sml_i8_parse(buf);
	if (sml_buf_has_errors(buf)) goto error;
	tupel->value_R4 = sml_i64_parse(buf);
	if (sml_buf_has_errors(buf)) goto error;

	tupel->signature_pA_R1_R4 = sml_octet_string_parse(buf);
	if (sml_buf_has_errors(buf)) goto error;

	tupel->unit_mA = sml_unit_parse(buf);
	if (sml_buf_has_errors(buf)) goto error;
	tupel->scaler_mA = sml_i8_parse(buf);
	if (sml_buf_has_errors(buf)) goto error;
	tupel->value_mA = sml_i64_parse(buf);
	if (sml_buf_has_errors(buf)) goto error;

	tupel->unit_R2 = sml_unit_parse(buf);
	if (sml_buf_has_errors(buf)) goto error;
	tupel->scaler_R2 = sml_i8_parse(buf);
	if (sml_buf_has_errors(buf)) goto error;
	tupel->value_R2 = sml_i64_parse(buf);
	if (sml_buf_has_errors(buf)) goto error;

	tupel->unit_R3 = sml_unit_parse(buf);
	if (sml_buf_has_errors(buf)) goto error;
	tupel->scaler_R3 = sml_i8_parse(buf);
	if (sml_buf_has_errors(buf)) goto error;
	tupel->value_R3 = sml_i64_parse(buf);
	if (sml_buf_has_errors(buf)) goto error;

	tupel->signature_mA_R2_R3 = sml_octet_string_parse(buf);
	if (sml_buf_has_errors(buf)) goto error;

	return tupel;

error:
	sml_tupel_entry_free(tupel);
	return 0;
}