Example #1
0
char *test_message_size() {

  message m;
  m.type = 1;
  m.body = "01234567890123456789";
  m.body_size = strlen(m.body);
  m.crc32 = 0;

  u_int32_t len = 0;
  len += sizeof(u_int8_t);
  len += sizeof(size_t);
  len += m.body_size;
  len += sizeof(u_int32_t);

  mu_assert(message_size(&m) == len, "message size should match memory layout");

  return NULL;
}
Example #2
0
int main(void) {
	// read data (this is outside time measurements, since the data comes from anywhere and is assumed in (virtual) memory)
	Mapipbtest__QueryResult query_result;
	create_result_from_csv(&query_result, DATA_FILE, DATA_COLS, DATA_ROWS,
			DATA_TYPES, 1);

	struct snappy_env se;
	snappy_init_env(&se);

	// react on queries
	void *context = zmq_ctx_new();
	void *socket = zmq_socket(context, ZMQ_REP);
	int rc;
	rc = zmq_bind(socket, SERVER_SOCKET);
	if (rc != 0) {
		fprintf(stderr, "Failed to bind to socket %s\n", SERVER_SOCKET);
		perror("Socket error ");
		return -1;
	}

	long s_time, c_time, req_time;
	struct timeval start, req_start;

	while (1) {
		gettimeofday(&req_start, NULL );
		// receive request
		message query_msg;
		message_receive(socket, &query_msg);
		size_t query_msg_size = message_size(&query_msg);
		void * query_msg_data = message_data(&query_msg);
		if (COMPRESS) {
			query_msg_data = message_uncompress(query_msg_data,
					&query_msg_size);
		}
		Mapipbtest__ExecuteQuery * request = mapipbtest__execute_query__unpack(
				NULL, query_msg_size, query_msg_data);
		message_close(&query_msg);
		if (COMPRESS) {
			free(query_msg_data);
		}
		//printf("%s\n", request->sqlquery);
		//mapipbtest__execute_query__free_unpacked(request, NULL );

		// send response
		gettimeofday(&start, NULL );
		size_t query_response_msg_size =
				mapipbtest__query_result__get_packed_size(&query_result);
		void * query_response_msg_data = malloc(query_response_msg_size);
		mapipbtest__query_result__pack(&query_result, query_response_msg_data);

		s_time = end_timer_ms(&start);
		gettimeofday(&start, NULL );
		char * free_ptr;
		if (COMPRESS) {
			free_ptr = query_response_msg_data;
			query_response_msg_data = message_compress(&se,
					query_response_msg_data, &query_response_msg_size);
		}
		c_time = end_timer_ms(&start);

		message_send(socket, query_response_msg_data, query_response_msg_size);
		//free(query_response_msg_data);
		req_time = end_timer_ms(&req_start);

		//free(query_response_msg_data);
		if (COMPRESS) {
			free(free_ptr);
		}

	}
	zmq_close(socket);
	zmq_ctx_destroy(context);
	return 0;
}