Exemple #1
0
void muta_connect(libmuta_processing_callback f, void *priv)
{
  struct sockaddr_storage addr_storage;
  struct sockaddr *addr = NULL;
  uint32_t addrlen = 0;

  memset(&addr_storage, 0, sizeof(addr_storage));
  addr = (struct sockaddr *)&addr_storage;
  addrlen = sizeof(addr_storage);

  pomp_addr_parse(LIBMUTA_IMAGE_SOCKET, addr, &addrlen);

  s_app.ctx = pomp_ctx_new(client_event_cb, f);
  s_app.loop = pomp_ctx_get_loop(s_app.ctx);

  client_start(addr, addrlen);
  s_app.stop = 0;
  s_app.priv = priv;
  s_app.process = f;

  while (!s_app.stop) {
    pomp_loop_wait_and_process(s_app.loop, -1);
  }

  if (s_app.ctx != NULL) {
    pomp_ctx_stop(s_app.ctx);
    pomp_ctx_destroy(s_app.ctx);
  }
}
Exemple #2
0
int main(int argc, char *argv[])
{
	struct sockaddr_storage addr_storage;
	struct sockaddr *addr = NULL;
	uint32_t addrlen = 0;

	/* Check arguments */
	if (argc != 3 || (strcmp(argv[1], "-s") != 0
			&& strcmp(argv[1], "-c") != 0)) {
		usage(argv[0]);
		exit(EXIT_FAILURE);
	}

	/* Client/Server mode */
	bool isServer = (strcmp(argv[1], "-s") == 0);

	/* Create application BEFORE parsing address
	 * (required for WIN32 as it is the lib that initialize winsock API) */
	App app(isServer);

	/* Parse address */
	memset(&addr_storage, 0, sizeof(addr_storage));
	addr = reinterpret_cast<struct sockaddr *>(&addr_storage);
	addrlen = sizeof(addr_storage);
	if (pomp_addr_parse(argv[2], addr, &addrlen) < 0) {
		diag("Failed to parse address : %s", argv[2]);
		usage(argv[0]);
		exit(EXIT_FAILURE);
	}

	/* Run application */
	return app.run(addr, addrlen);
}