コード例 #1
0
ファイル: ff_arch_tcp.c プロジェクト: nirvin/fiber-framework
struct ff_arch_tcp *ff_arch_tcp_accept(struct ff_arch_tcp *tcp, struct ff_arch_net_addr *remote_addr)
{
	int accepted_sd;
	socklen_t addrlen = sizeof(remote_addr->addr);
	struct ff_arch_tcp *accepted_tcp = NULL;

again:
	accepted_sd = accept(tcp->sd_rd, (struct sockaddr *) &remote_addr->addr, &addrlen);
	if (accepted_sd == -1)
	{
		if (errno == EINTR)
		{
			goto again;
		}
		if (errno == EAGAIN || errno == EWOULDBLOCK)
		{
			ff_linux_net_wait_for_io(tcp->sd_rd, FF_LINUX_NET_IO_READ);
			goto again;
		}
		ff_log_debug(L"cannot accept connection to the sd_rd=%d, remote_addr=%p. errno=%d", tcp->sd_rd, remote_addr, errno);
	}
	else
	{
		ff_assert(addrlen == sizeof(remote_addr->addr));
		accepted_tcp = create_tcp(accepted_sd);
	}

	return accepted_tcp;
}
コード例 #2
0
ファイル: ff_arch_tcp.c プロジェクト: nirvin/fiber-framework
struct ff_arch_tcp *ff_arch_tcp_create()
{
	struct ff_arch_tcp *tcp;
	int sd;

	sd = socket(PF_INET, SOCK_STREAM, 0);
	ff_linux_fatal_error_check(sd != -1, L"cannot create TCP socket");
	tcp = create_tcp(sd);

	return tcp;
}
コード例 #3
0
ファイル: emulator.c プロジェクト: alfonsosanchezbeato/ofono
static void powered_watch(struct ofono_modem *modem, gboolean powered,
				void *user)
{
	if (powered == FALSE) {
		DBG("Removing modem %p from the list", modem);
		modems = g_list_remove(modems, modem);

		if (modems == NULL && server_watch > 0) {
			DBG("Removing server watch: %u", server_watch);
			g_source_remove(server_watch);
			server_watch = 0;
		}
	} else {
		DBG("Adding modem %p to the list", modem);
		modems = g_list_append(modems, modem);

		if (modems->next == NULL) {
			create_tcp(DUN_PORT, OFONO_EMULATOR_TYPE_DUN);
			create_tcp(HFP_PORT, OFONO_EMULATOR_TYPE_HFP);
		}
	}
}
コード例 #4
0
ファイル: emulator.c プロジェクト: alfonsosanchezbeato/ofono
static void modem_watch(struct ofono_modem *modem, gboolean added, void *user)
{
	DBG("modem: %p, added: %d", modem, added);

	if (added == FALSE) {
		DBG("Removing modem %p from the list", modem);
		modems = g_list_remove(modems, modem);
		return;
	}

	if (ofono_modem_get_powered(modem) == TRUE) {
		DBG("Adding modem %p to the list", modem);
		modems = g_list_append(modems, modem);

		if (modems->next == NULL) {
			create_tcp(DUN_PORT, OFONO_EMULATOR_TYPE_DUN);
			create_tcp(HFP_PORT, OFONO_EMULATOR_TYPE_HFP);
		}
	}

	__ofono_modem_add_powered_watch(modem, powered_watch, NULL, NULL);
}
コード例 #5
0
ファイル: test-server.c プロジェクト: Conjuror/ofono
static void test_server(int type)
{
	switch (type) {
	case 0:
		if (create_tty("/phonesim1") == FALSE)
			exit(1);

		add_handler(server);
		break;
	case 1:
		if (create_tcp("/phonesim1", DEFAULT_TCP_PORT) == FALSE)
			exit(1);
		break;
	case 2:
		if (create_unix("/phonesim1", DEFAULT_SOCK_PATH) == FALSE)
			exit(1);
		break;
	}
}