/** * inf_tcp_connection_new_and_open: (constructor) * @io: A #InfIo object used to watch for activity. * @remote_addr: The address to connect to. * @remote_port: The port to connect to. * @error: Location to store error information. * * Creates a new #InfTcpConnection and connects it to the given TCP endpoint. * Like inf_tcp_connection_new(), but calls inf_tcp_connection_open(). * * Returns: (transfer full): A new #InfTcpConnection, or %NULL on error. * Free with g_object_unref(). **/ InfTcpConnection* inf_tcp_connection_new_and_open(InfIo* io, const InfIpAddress* remote_addr, guint remote_port, GError** error) { InfTcpConnection* tcp; g_return_val_if_fail(INF_IS_IO(io), NULL); g_return_val_if_fail(remote_addr != NULL, NULL); g_return_val_if_fail(remote_port <= 65535, NULL); g_return_val_if_fail(error == NULL || *error == NULL, NULL); tcp = inf_tcp_connection_new(io, remote_addr, remote_port); if(inf_tcp_connection_open(tcp, error) == FALSE) { g_object_unref(tcp); return NULL; } return tcp; }
int main(int argc, char* argv[]) { InfStandaloneIo* io; InfNameResolver* resolver; InfTcpConnection* connection; GError* error; error = NULL; if(inf_init(&error) == FALSE) { fprintf(stderr, "%s", error->message); g_error_free(error); return 1; } io = inf_standalone_io_new(); resolver = inf_name_resolver_new(INF_IO(io), "0x539.de", "5223", "_jabber._tcp"); g_signal_connect( G_OBJECT(resolver), "resolved", G_CALLBACK(resolved_cb), io ); connection = inf_tcp_connection_new_resolve(INF_IO(io), resolver); g_object_unref(resolver); g_signal_connect( G_OBJECT(connection), "received", G_CALLBACK(received_cb), io ); g_signal_connect( G_OBJECT(connection), "sent", G_CALLBACK(sent_cb), io ); g_signal_connect( G_OBJECT(connection), "error", G_CALLBACK(error_cb), io ); g_signal_connect( G_OBJECT(connection), "notify::status", G_CALLBACK(notify_status_cb), io ); if(inf_tcp_connection_open(connection, &error) == FALSE) { fprintf(stderr, "Could not open connection: %s\n", error->message); g_error_free(error); } else { inf_standalone_io_loop(io); } g_object_unref(G_OBJECT(io)); g_object_unref(G_OBJECT(connection)); return 0; }
static InfXmppConnection* inf_test_certificate_validate_setup_client(InfIo* io, const gchar* ca_file, const gchar* remote_hostname, GError** error) { InfIpAddress* addr; InfTcpConnection* conn; InfXmppConnection* xmpp; InfCertificateCredentials* creds; GPtrArray* cas; int res; guint i; creds = inf_certificate_credentials_new(); if(ca_file != NULL) { cas = inf_cert_util_read_certificate(ca_file, NULL, error); if(cas == NULL) { inf_certificate_credentials_unref(creds); return NULL; } res = gnutls_certificate_set_x509_trust( inf_certificate_credentials_get(creds), (gnutls_x509_crt_t*)cas->pdata, cas->len ); for(i = 0; i < cas->len; ++i) gnutls_x509_crt_deinit(cas->pdata[i]); g_ptr_array_free(cas, TRUE); } addr = inf_ip_address_new_loopback4(); conn = inf_tcp_connection_new(io, addr, 6524); inf_ip_address_free(addr); xmpp = inf_xmpp_connection_new( conn, INF_XMPP_CONNECTION_CLIENT, g_get_host_name(), remote_hostname, INF_XMPP_CONNECTION_SECURITY_ONLY_TLS, creds, NULL, NULL ); inf_certificate_credentials_unref(creds); if(inf_tcp_connection_open(conn, error) == FALSE) { g_object_unref(conn); g_object_unref(xmpp); return NULL; } g_object_unref(conn); return xmpp; }
int main(int argc, char* argv[]) { InfIpAddress* addr; InfStandaloneIo* io; InfTcpConnection* connection; GError* error; g_type_init(); addr = inf_ip_address_new_loopback4(); io = inf_standalone_io_new(); error = NULL; connection = g_object_new( INF_TYPE_TCP_CONNECTION, "io", io, "remote-address", addr, "remote-port", 5223, NULL ); inf_ip_address_free(addr); g_signal_connect( G_OBJECT(connection), "received", G_CALLBACK(received_cb), io ); g_signal_connect( G_OBJECT(connection), "sent", G_CALLBACK(sent_cb), io ); g_signal_connect( G_OBJECT(connection), "error", G_CALLBACK(error_cb), io ); g_signal_connect( G_OBJECT(connection), "notify::status", G_CALLBACK(notify_status_cb), io ); if(inf_tcp_connection_open(connection, &error) == FALSE) { fprintf(stderr, "Could not open connection: %s\n", error->message); g_error_free(error); } else { inf_standalone_io_loop(io); } g_object_unref(G_OBJECT(io)); g_object_unref(G_OBJECT(connection)); return 0; }