[gnome-network]Including libgnetwork in 2.5.0



I realize this is very late, but I'm trying to get libgnetwork into
2.5.0. It's a rename/rework of the GTcpSocket library, and is available
at:

http://esco.mine.nu/downloads/libgnetwork-0.0.0.tar.gz

and the 'libgnetwork' module in CVS.

It's currently broken due to the massive API/code organization changes I
spent the last week on, but it does build, and will definately be stable
(code- and API-wise) enough to use before 2.6.0 (The stuff that's left
is filling in the missing pieces, and some thread issues re: closing
sockets).

The pros/cons vs some other networking libs:

GNet:
    + Uses GObject.
    + Multi-threaded.
    + Automatic proxy traversal (nearly transparent to apps).
    + Easily extensible.
    + GNUTLS *or* OpenSSL.
    - Doesn't handle URIs or UDP (yet).
    - Doesn't support UDP or Unix sockets (yet).

Link:
    + Not private to ORBit :-).
    + More detailed signals and error reporting.
    + Automatic proxy traversal (nearly transparent to apps).
    + DNS API (it's sexy :-)).
    + GNUTLS *or* OpenSSL.
    - Doesn't support UDP or Unix sockets (yet).

GTcpSocket:
    + Much cleaner object hierarchy & signals (using
      GNetwork{Connection,Server}Iface).

GnomeVFS:
    + GObject.
    + (Eventually) more complete SSL support (X509 certificate
      verification, for example).
    + Non-HTTP Proxy support: currently supports HTTP, SOCKS4, and
      SOCKS5 (HTTPS/SSL & FTP are planned).

And most importantly, it'll be used by gnome-network :-).

To get an idea of how it's used:

void sent_cb (GNetworkConnection * cxn, gconstpointer data,
              gulong length, gpointer user_data);
void recv_cb (GNetworkConnection * cxn, gconstpointer data,
              gulong length, gpointer user_data);
void error_cb (GNetworkConnection * cxn, GError * error,
	       gpointer user_data);

void cxn_starter (gpointer data)
{
  GObject *cxn;

  cxn = gnetwork_tcp_connection_new (GNETWORK_TCP_PROXY_HTTP,
				     "127.0.0.1", 80);

  g_signal_connect (cxn, "notify::tcp-status", notify_tcp_status_cb,
		    NULL);
  g_signal_connect (cxn, "sent", sent_cb, NULL);
  g_signal_connect (cxn, "received", recv_cb, NULL);
  g_signal_connect (cxn, "error", error_cb, NULL);

  gnetwork_connection_open (GNETWORK_CONNECTION (cxn));
}

There's also a server object :-).

-- 
Peace,

    Jim Cape
    http://ignore-your.tv

    "It is literally true that, like Christianity, Socialism
     has conquered the world by defeating itself."
        -- Alexander Berkman, ABC of Anarchism

Attachment: signature.asc
Description: This is a digitally signed message part



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]