2004-01-21 Mikael Hallendal <micke@imendio.com>
authorhallski <hallski>
Wed, 21 Jan 2004 18:02:57 +0000
changeset 70 4d33d6915f49
parent 69 33c889a556cc
child 71 0c87c8ed4d99
2004-01-21 Mikael Hallendal <micke@imendio.com> * Makefile.am: * configure.in: Work on the C# bindings * NEWS: Preparing for 0.15 * loudmouth-1.0.pc.in: Versioned the library * loudmouth/Makefile.am: ditto * loudmouth/lm-connection.c: * loudmouth/lm-connection.h: Disabled the proxy support. * mono/Makefile: * mono/Makefile.am: * mono/loudmouth/Makefile.am: * mono/loudmouth/loudmouth-api.xml: * mono/loudmouth/loudmouth.metadata: * mono/sources/loudmouth-sources.xml: - WIP on the bindings, first cut of generated bindings.
ChangeLog
Makefile.am
NEWS
configure.in
loudmouth-1.0.pc.in
loudmouth/Makefile.am
loudmouth/lm-connection.c
loudmouth/lm-connection.h
mono/.cvsignore
mono/Makefile
mono/Makefile.am
mono/loudmouth/.cvsignore
mono/loudmouth/Makefile.am
mono/loudmouth/loudmouth-api.xml
mono/loudmouth/loudmouth.custom
mono/loudmouth/loudmouth.metadata
mono/sources/loudmouth-sources.xml
--- a/ChangeLog	Fri Jan 16 00:09:09 2004 +0000
+++ b/ChangeLog	Wed Jan 21 18:02:57 2004 +0000
@@ -1,3 +1,20 @@
+2004-01-21  Mikael Hallendal  <micke@imendio.com>
+
+	* Makefile.am:
+	* configure.in: Work on the C# bindings
+	* NEWS: Preparing for 0.15
+	* loudmouth-1.0.pc.in: Versioned the library
+	* loudmouth/Makefile.am: ditto
+	* loudmouth/lm-connection.c: 
+	* loudmouth/lm-connection.h: Disabled the proxy support.
+	* mono/Makefile:
+	* mono/Makefile.am:
+	* mono/loudmouth/Makefile.am:
+	* mono/loudmouth/loudmouth-api.xml:
+	* mono/loudmouth/loudmouth.metadata:
+	* mono/sources/loudmouth-sources.xml:
+	- WIP on the bindings, first cut of generated bindings.
+
 2004-01-16  Mikael Hallendal  <micke@imendio.com>
 
 	* loudmouth/lm-connection.c:
--- a/Makefile.am	Fri Jan 16 00:09:09 2004 +0000
+++ b/Makefile.am	Wed Jan 21 18:02:57 2004 +0000
@@ -1,4 +1,8 @@
-SUBDIRS = loudmouth docs
+if HAVE_MONO
+    MONO_SUBDIR = mono
+endif
+
+SUBDIRS = loudmouth docs $(MONO_SUBDIR)
 
 EXTRA_DIST =			\
 	loudmouth-1.0.pc.in     \
--- a/NEWS	Fri Jan 16 00:09:09 2004 +0000
+++ b/NEWS	Wed Jan 21 18:02:57 2004 +0000
@@ -1,3 +1,14 @@
+Changes in 0.15:
+----------------
+* Better Win32 instructions.
+* Fixed bug when disconnecting and then connecting again using the same 
+  LmConnection.
+* Documentation typos and errors fixed by Ross Burton.
+* Better SSL support, now gives the application the possibility to decide
+  if it wants to connect on bogus SSL certificates.
+* The SSL API changed a bit, take a look at the API docs.
+* Fixed timestamp error on FreeBSD.
+
 Changes in 0.14.1:
 ------------------
 * Patch from foser@gentoo.org for a problem when using GnuTLS.
--- a/configure.in	Fri Jan 16 00:09:09 2004 +0000
+++ b/configure.in	Wed Jan 21 18:02:57 2004 +0000
@@ -140,17 +140,83 @@
 	echo "Debugging enabled"
 fi
 
-
-
 AC_SUBST(LOUDMOUTH_CFLAGS)
 AC_SUBST(LOUDMOUTH_LIBS)
 
-#CFLAGS="$CFLAGS $WARN_CFLAGS"
+dnl +--------------------------------------+
+dnl | Check if we shoudl build C# bindings |-------------------
+dnl +--------------------------------------+
+
+dnl  --------------
+dnl | mono setup |--------------------------------------------
+dnl  --------------
+AC_ARG_ENABLE(mono, [  --enable-mono        build mono bindings [default=auto]], enable_mono="$enableval", enable_mono=auto)
+                                                                                
+if test "x$enable_mono" != "xno"; then
+    PKG_CHECK_MODULES(,gtk-sharp,have_mono=yes,have_mono=no)
+                                                                                
+    if test "x$have_mono" = "xyes"; then
+        AC_PATH_PROG(GAPI_FIXUP, gapi-fixup, no)
+        AC_PATH_PROG(GAPI_CODEGEN, gapi-codegen, no)
+        AC_PATH_PROG(MCS, mcs, no)
+        AC_PATH_PROG(MONO, mono, no)
+    fi
+else
+    have_mono=no
+fi
+                                                                                
+if test "x$enable_mono" = "xyes"; then
+    AC_MSG_CHECKING(for mono environment)
+    if test "x$have_mono" = "xno"; then
+        AC_MSG_ERROR([not found])
+    fi
+fi
+                                                                                
+AM_CONDITIONAL(HAVE_MONO, test x$have_mono = xyes)
 
 AC_OUTPUT([
 Makefile
 docs/Makefile
 docs/reference/Makefile
+mono/Makefile
+mono/loudmouth/Makefile
 loudmouth/Makefile
 loudmouth-1.0.pc
 loudmouth.spec])
+
+dnl ==========================================================================
+echo "
+
+                    Loudmouth $VERSION
+	=========================================
+
+        prefix:                   ${prefix}
+        compiler:                 ${CC}
+        cflags:                   ${CFLAGS}
+
+	"
+		    
+if test x$enable_mono = xyes ; then
+echo \
+"        mcs:                     ${MCS}
+         mcsflags:                ${MCSFLAGS}
+"
+else
+echo \
+"        mcs:                     (not enabled)
+"
+fi
+
+echo \
+
+echo \
+"        Enable SSL               ${ac_ssl}
+"
+echo \
+"        Enable Debug:            ${enable_debug}
+"
+
+echo \
+"        Now type 'make' to build Loudmouth
+"
+
--- a/loudmouth-1.0.pc.in	Fri Jan 16 00:09:09 2004 +0000
+++ b/loudmouth-1.0.pc.in	Wed Jan 21 18:02:57 2004 +0000
@@ -7,5 +7,5 @@
 Description: libloudmouth
 Requires: glib-2.0
 Version: @VERSION@
-Libs: -L${libdir} -lloudmouth
+Libs: -L${libdir} -lloudmouth-1
 Cflags: -I${includedir}/loudmouth-1.0
--- a/loudmouth/Makefile.am	Fri Jan 16 00:09:09 2004 +0000
+++ b/loudmouth/Makefile.am	Wed Jan 21 18:02:57 2004 +0000
@@ -8,9 +8,9 @@
 	-DRUNTIME_ENDIAN                \
 	$(NULL)
 
-lib_LTLIBRARIES = libloudmouth.la
+lib_LTLIBRARIES = libloudmouth-1.la
 
-libloudmouth_la_SOURCES =		\
+libloudmouth_1_la_SOURCES =		\
 	lm-connection.c	 		\
 	lm-debug.c                      \
 	lm-debug.h                      \
@@ -42,7 +42,7 @@
 	loudmouth.h			\
 	$(NULL)
 
-libloudmouth_la_LIBADD = 		\
+libloudmouth_1_la_LIBADD = 		\
 	$(LOUDMOUTH_LIBS)
 
 libloudmouthincludedir = $(includedir)/loudmouth-1.0/loudmouth
@@ -57,7 +57,7 @@
 
 test_lm_LDADD =			 	\
 	$(LOUDMOUTH_LIBS)		\
-	libloudmouth.la			\
+	libloudmouth-1.la		\
 	$(NULL)
 
 
--- a/loudmouth/lm-connection.c	Fri Jan 16 00:09:09 2004 +0000
+++ b/loudmouth/lm-connection.c	Wed Jan 21 18:02:57 2004 +0000
@@ -1466,6 +1466,7 @@
 	}
 }
 
+#if 0
 /**
  * lm_connection_get_proxy: 
  * @connection: an #LmConnection
@@ -1508,6 +1509,7 @@
 
 	connection->proxy = lm_proxy_ref (proxy);
 }
+#endif
 
 /**
  * lm_connection_send: 
--- a/loudmouth/lm-connection.h	Fri Jan 16 00:09:09 2004 +0000
+++ b/loudmouth/lm-connection.h	Wed Jan 21 18:02:57 2004 +0000
@@ -117,11 +117,13 @@
 LmSSL *       lm_connection_get_ssl           (LmConnection       *connection);
 void          lm_connection_set_ssl           (LmConnection       *connection,
 					       LmSSL              *ssl);
-
+/*
+ * These will most likely change in the API 
+ *
 LmProxy *     lm_connection_get_proxy         (LmConnection       *connection);
 void          lm_connection_set_proxy         (LmConnection       *connection,
 					       LmProxy            *proxy);
-
+*/
 gboolean      lm_connection_send              (LmConnection       *connection,
 					       LmMessage          *message,
 					       GError            **error);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mono/.cvsignore	Wed Jan 21 18:02:57 2004 +0000
@@ -0,0 +1,2 @@
+Makefile
+Makefile.in
--- a/mono/Makefile	Fri Jan 16 00:09:09 2004 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,18 +0,0 @@
-MCS=mcs
-PREFIX=/opt/gnome2
-DESTDIR=
-
-all: linux
-
-linux: loudmouth-sharp.dll
-
-loudmouth-sharp.dll: *.cs
-	$(MCS) --target library -o loudmouth-sharp.dll --recurse '*.cs'
-
-clean:
-	rm -f *.dll
-
-install: all
-	mkdir -p $(DESTDIR)$(PREFIX)/lib && \
-	cp loudmouth-sharp.dll $(DESTDIR)$(PREFIX)/lib
-
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mono/Makefile.am	Wed Jan 21 18:02:57 2004 +0000
@@ -0,0 +1,2 @@
+SUBDIRS = loudmouth
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mono/loudmouth/.cvsignore	Wed Jan 21 18:02:57 2004 +0000
@@ -0,0 +1,5 @@
+Makefile
+Makefile.in
+generated
+generated-stamp
+loudmouth.dll
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mono/loudmouth/Makefile.am	Wed Jan 21 18:02:57 2004 +0000
@@ -0,0 +1,33 @@
+LIBRARY=	loudmouth.dll
+APIS=		loudmouth-api.xml
+
+INCLUDE_APIS=	
+ASSEMBLIES=	-r glib-sharp.dll
+
+EXTRA_DIST = 	*.custom *.metadata *.xml
+
+gtksourceviewsharpdir = $(libdir)
+gtksourceviewsharp_DATA = loudmouth.dll
+
+#FIXME
+MCS = mcs
+MONO = mono
+
+all: $(LIBRARY)
+
+generated-stamp: $(APIS) *.custom *.metadata
+	$(GAPI_FIXUP) --api=loudmouth-api.xml --metadata=loudmouth.metadata && \
+	$(GAPI_CODEGEN) --include $(INCLUDE_APIS) --generate $(APIS) \
+	--outdir=generated --customdir=. --assembly-name=loudmouth && touch generated-stamp
+
+$(LIBRARY): generated-stamp
+	$(MCS) --unsafe -nowarn:0660,0661 --target library $(ASSEMBLIES) --recurse '*.cs' -o $(LIBRARY)
+
+install:
+	for i in $(APIS); do						\
+		$(INSTALL) -m 644 $$i @prefix@/share/gapi || true;	\
+	done &&								\
+	$(INSTALL) -m 644 $(LIBRARY) $(libdir)
+
+clean:
+	rm -rf $(LIBRARY) generated generated-stamp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mono/loudmouth/loudmouth-api.xml	Wed Jan 21 18:02:57 2004 +0000
@@ -0,0 +1,488 @@
+<?xml version="1.0"?>
+<api><!--
+
+        This file was automatically generated.
+        Please DO NOT MODIFY THIS FILE, modify .metadata files instead.
+
+-->
+  <namespace library="loudmouth" name="Loudmouth">
+    <enum name="CertificateStatus" cname="LmCertificateStatus" type="enum">
+      <member cname="LM_CERT_INVALID" name="Invalid" />
+      <member cname="LM_CERT_ISSUER_NOT_FOUND" name="IssuerNotFound" />
+      <member cname="LM_CERT_REVOKED" name="Revoked" />
+    </enum>
+    <enum name="ConnectionState" cname="LmConnectionState" type="enum">
+      <member cname="LM_CONNECTION_STATE_DISCONNECTED" name="Disconnected" />
+      <member cname="LM_CONNECTION_STATE_CONNECTING" name="Connecting" />
+      <member cname="LM_CONNECTION_STATE_CONNECTED" name="Connected" />
+      <member cname="LM_CONNECTION_STATE_AUTHENTICATING" name="Authenticating" />
+      <member cname="LM_CONNECTION_STATE_AUTHENTICATED" name="Authenticated" />
+    </enum>
+    <enum name="DisconnectReason" cname="LmDisconnectReason" type="enum">
+      <member cname="LM_DISCONNECT_REASON_OK" name="Ok" />
+      <member cname="LM_DISCONNECT_REASON_PING_TIME_OUT" name="PingTimeOut" />
+      <member cname="LM_DISCONNECT_REASON_HUP" name="Hup" />
+      <member cname="LM_DISCONNECT_REASON_ERROR" name="Error" />
+      <member cname="LM_DISCONNECT_REASON_UNKNOWN" name="Unknown" />
+    </enum>
+    <enum name="Error" cname="LmError" type="enum">
+      <member cname="LM_ERROR_CONNECTION_NOT_OPEN" name="ConnectionNotOpen" />
+      <member cname="LM_ERROR_CONNECTION_OPEN" name="ConnectionOpen" />
+      <member cname="LM_ERROR_AUTH_FAILED" name="AuthFailed" />
+      <member cname="LM_ERROR_CONNECTION_FAILED" name="ConnectionFailed" />
+    </enum>
+    <enum name="HandlerPriority" cname="LmHandlerPriority" type="enum">
+      <member cname="LM_HANDLER_PRIORITY_LAST" name="Last" value="1" />
+      <member cname="LM_HANDLER_PRIORITY_NORMAL" name="Normal" value="2" />
+      <member cname="LM_HANDLER_PRIORITY_FIRST" name="First" value="3" />
+    </enum>
+    <enum name="HandlerResult" cname="LmHandlerResult" type="enum">
+      <member cname="LM_HANDLER_RESULT_REMOVE_MESSAGE" name="RemoveMessage" />
+      <member cname="LM_HANDLER_RESULT_ALLOW_MORE_HANDLERS" name="AllowMoreHandlers" />
+    </enum>
+    <enum name="MessageSubType" cname="LmMessageSubType" type="enum">
+      <member cname="LM_MESSAGE_SUB_TYPE_NOT_SET" name="NotSet" value="-10" />
+      <member cname="LM_MESSAGE_SUB_TYPE_AVAILABLE" name="Available" value="-1" />
+      <member cname="LM_MESSAGE_SUB_TYPE_NORMAL" name="Normal" />
+      <member cname="LM_MESSAGE_SUB_TYPE_CHAT" name="Chat" />
+      <member cname="LM_MESSAGE_SUB_TYPE_GROUPCHAT" name="Groupchat" />
+      <member cname="LM_MESSAGE_SUB_TYPE_HEADLINE" name="Headline" />
+      <member cname="LM_MESSAGE_SUB_TYPE_UNAVAILABLE" name="Unavailable" />
+      <member cname="LM_MESSAGE_SUB_TYPE_PROBE" name="Probe" />
+      <member cname="LM_MESSAGE_SUB_TYPE_SUBSCRIBE" name="Subscribe" />
+      <member cname="LM_MESSAGE_SUB_TYPE_UNSUBSCRIBE" name="Unsubscribe" />
+      <member cname="LM_MESSAGE_SUB_TYPE_SUBSCRIBED" name="Subscribed" />
+      <member cname="LM_MESSAGE_SUB_TYPE_UNSUBSCRIBED" name="Unsubscribed" />
+      <member cname="LM_MESSAGE_SUB_TYPE_GET" name="Get" />
+      <member cname="LM_MESSAGE_SUB_TYPE_SET" name="Set" />
+      <member cname="LM_MESSAGE_SUB_TYPE_RESULT" name="Result" />
+      <member cname="LM_MESSAGE_SUB_TYPE_ERROR" name="Error" />
+    </enum>
+    <enum name="MessageType" cname="LmMessageType" type="enum">
+      <member cname="LM_MESSAGE_TYPE_MESSAGE" name="Message" />
+      <member cname="LM_MESSAGE_TYPE_PRESENCE" name="Presence" />
+      <member cname="LM_MESSAGE_TYPE_IQ" name="Iq" />
+      <member cname="LM_MESSAGE_TYPE_STREAM" name="Stream" />
+      <member cname="LM_MESSAGE_TYPE_STREAM_ERROR" name="StreamError" />
+      <member cname="LM_MESSAGE_TYPE_UNKNOWN" name="Unknown" />
+    </enum>
+    <enum name="ProxyType" cname="LmProxyType" type="enum">
+      <member cname="LM_PROXY_TYPE_NONE" name="None" />
+      <member cname="LM_PROXY_TYPE_HTTP" name="Http" />
+    </enum>
+    <enum name="SSLResponse" cname="LmSSLResponse" type="enum">
+      <member cname="LM_SSL_RESPONSE_CONTINUE" name="Continue" />
+      <member cname="LM_SSL_RESPONSE_STOP" name="Stop" />
+    </enum>
+    <enum name="SSLStatus" cname="LmSSLStatus" type="enum">
+      <member cname="LM_SSL_STATUS_NO_CERT_FOUND" name="NoCertFound" />
+      <member cname="LM_SSL_STATUS_UNTRUSTED_CERT" name="UntrustedCert" />
+      <member cname="LM_SSL_STATUS_CERT_EXPIRED" name="CertExpired" />
+      <member cname="LM_SSL_STATUS_CERT_NOT_ACTIVATED" name="CertNotActivated" />
+      <member cname="LM_SSL_STATUS_CERT_HOSTNAME_MISMATCH" name="CertHostnameMismatch" />
+      <member cname="LM_SSL_STATUS_CERT_FINGERPRINT_MISMATCH" name="CertFingerprintMismatch" />
+      <member cname="LM_SSL_STATUS_GENERIC_ERROR" name="GenericError" />
+    </enum>
+    <callback name="DisconnectFunction" cname="LmDisconnectFunction">
+      <return-type type="void" />
+      <parameters>
+        <parameter type="LmConnection*" name="connection" />
+        <parameter type="LmDisconnectReason" name="reason" />
+        <parameter type="gpointer" name="user_data" />
+      </parameters>
+    </callback>
+    <callback name="HandleMessageFunction" cname="LmHandleMessageFunction">
+      <return-type type="LmHandlerResult" />
+      <parameters>
+        <parameter type="LmMessageHandler*" name="handler" />
+        <parameter type="LmConnection*" name="connection" />
+        <parameter type="LmMessage*" name="message" />
+        <parameter type="gpointer" name="user_data" />
+      </parameters>
+    </callback>
+    <callback name="ResultFunction" cname="LmResultFunction">
+      <return-type type="void" />
+      <parameters>
+        <parameter type="LmConnection*" name="connection" />
+        <parameter type="gboolean" name="success" />
+        <parameter type="gpointer" name="user_data" />
+      </parameters>
+    </callback>
+    <callback name="SSLFunction" cname="LmSSLFunction">
+      <return-type type="LmSSLResponse" />
+      <parameters>
+        <parameter type="LmSSL*" name="ssl" />
+        <parameter type="LmSSLStatus" name="status" />
+        <parameter type="gpointer" name="user_data" />
+      </parameters>
+    </callback>
+    <struct name="Connection" cname="LmConnection" opaque="true">
+      <method name="Authenticate" cname="lm_connection_authenticate">
+        <return-type type="gboolean" />
+        <parameters>
+          <parameter type="const-gchar*" name="username" />
+          <parameter type="const-gchar*" name="password" />
+          <parameter type="const-gchar*" name="resource" />
+          <parameter type="LmResultFunction" name="function" />
+          <parameter type="gpointer" name="user_data" />
+          <parameter type="GDestroyNotify" name="notify" />
+          <parameter type="GError**" name="error" />
+        </parameters>
+      </method>
+      <method name="AuthenticateAndBlock" cname="lm_connection_authenticate_and_block">
+        <return-type type="gboolean" />
+        <parameters>
+          <parameter type="const-gchar*" name="username" />
+          <parameter type="const-gchar*" name="password" />
+          <parameter type="const-gchar*" name="resource" />
+          <parameter type="GError**" name="error" />
+        </parameters>
+      </method>
+      <method name="CancelOpen" cname="lm_connection_cancel_open">
+        <return-type type="void" />
+      </method>
+      <method name="Close" cname="lm_connection_close">
+        <return-type type="gboolean" />
+        <parameters>
+          <parameter type="GError**" name="error" />
+        </parameters>
+      </method>
+      <method name="GetPort" cname="lm_connection_get_port">
+        <return-type type="guint" />
+      </method>
+      <method name="GetProxy" cname="lm_connection_get_proxy">
+        <return-type type="LmProxy*" />
+      </method>
+      <method name="GetServer" cname="lm_connection_get_server">
+        <return-type type="const-gchar*" />
+      </method>
+      <method name="GetSsl" cname="lm_connection_get_ssl">
+        <return-type type="LmSSL*" />
+      </method>
+      <method name="GetState" cname="lm_connection_get_state">
+        <return-type type="LmConnectionState" />
+      </method>
+      <method name="IsAuthenticated" cname="lm_connection_is_authenticated">
+        <return-type type="gboolean" />
+      </method>
+      <method name="IsOpen" cname="lm_connection_is_open">
+        <return-type type="gboolean" />
+      </method>
+      <constructor cname="lm_connection_new">
+        <parameters>
+          <parameter type="const-gchar*" name="server" />
+        </parameters>
+      </constructor>
+      <method name="Open" cname="lm_connection_open">
+        <return-type type="gboolean" />
+        <parameters>
+          <parameter type="LmResultFunction" name="function" />
+          <parameter type="gpointer" name="user_data" />
+          <parameter type="GDestroyNotify" name="notify" />
+          <parameter type="GError**" name="error" />
+        </parameters>
+      </method>
+      <method name="OpenAndBlock" cname="lm_connection_open_and_block">
+        <return-type type="gboolean" />
+        <parameters>
+          <parameter type="GError**" name="error" />
+        </parameters>
+      </method>
+      <method name="Ref" cname="lm_connection_ref">
+        <return-type type="LmConnection*" />
+      </method>
+      <method name="RegisterMessageHandler" cname="lm_connection_register_message_handler">
+        <return-type type="void" />
+        <parameters>
+          <parameter type="LmMessageHandler*" name="handler" />
+          <parameter type="LmMessageType" name="type" />
+          <parameter type="LmHandlerPriority" name="priority" />
+        </parameters>
+      </method>
+      <method name="Send" cname="lm_connection_send">
+        <return-type type="gboolean" />
+        <parameters>
+          <parameter type="LmMessage*" name="message" />
+          <parameter type="GError**" name="error" />
+        </parameters>
+      </method>
+      <method name="SendRaw" cname="lm_connection_send_raw">
+        <return-type type="gboolean" />
+        <parameters>
+          <parameter type="const-gchar*" name="str" />
+          <parameter type="GError**" name="error" />
+        </parameters>
+      </method>
+      <method name="SendWithReply" cname="lm_connection_send_with_reply">
+        <return-type type="gboolean" />
+        <parameters>
+          <parameter type="LmMessage*" name="message" />
+          <parameter type="LmMessageHandler*" name="handler" />
+          <parameter type="GError**" name="error" />
+        </parameters>
+      </method>
+      <method name="SendWithReplyAndBlock" cname="lm_connection_send_with_reply_and_block">
+        <return-type type="LmMessage*" />
+        <parameters>
+          <parameter type="LmMessage*" name="message" />
+          <parameter type="GError**" name="error" />
+        </parameters>
+      </method>
+      <method name="SetDisconnectFunction" cname="lm_connection_set_disconnect_function">
+        <return-type type="void" />
+        <parameters>
+          <parameter type="LmDisconnectFunction" name="function" />
+          <parameter type="gpointer" name="user_data" />
+          <parameter type="GDestroyNotify" name="notify" />
+        </parameters>
+      </method>
+      <method name="SetPort" cname="lm_connection_set_port">
+        <return-type type="void" />
+        <parameters>
+          <parameter type="guint" name="port" />
+        </parameters>
+      </method>
+      <method name="SetProxy" cname="lm_connection_set_proxy">
+        <return-type type="void" />
+        <parameters>
+          <parameter type="LmProxy*" name="proxy" />
+        </parameters>
+      </method>
+      <method name="SetServer" cname="lm_connection_set_server">
+        <return-type type="void" />
+        <parameters>
+          <parameter type="const-gchar*" name="server" />
+        </parameters>
+      </method>
+      <method name="SetSsl" cname="lm_connection_set_ssl">
+        <return-type type="void" />
+        <parameters>
+          <parameter type="LmSSL*" name="ssl" />
+        </parameters>
+      </method>
+      <method name="Unref" cname="lm_connection_unref">
+        <return-type type="void" />
+      </method>
+      <method name="UnregisterMessageHandler" cname="lm_connection_unregister_message_handler">
+        <return-type type="void" />
+        <parameters>
+          <parameter type="LmMessageHandler*" name="handler" />
+          <parameter type="LmMessageType" name="type" />
+        </parameters>
+      </method>
+    </struct>
+    <struct name="Message" cname="LmMessage">
+      <field cname="node" type="LmMessageNode*" />
+      <field cname="priv" type="LmMessagePriv*" />
+      <method name="GetNode" cname="lm_message_get_node">
+        <return-type type="LmMessageNode*" />
+      </method>
+      <method name="GetSubType" cname="lm_message_get_sub_type">
+        <return-type type="LmMessageSubType" />
+      </method>
+      <method name="GetType" cname="lm_message_get_type">
+        <return-type type="LmMessageType" />
+      </method>
+      <constructor cname="lm_message_new">
+        <parameters>
+          <parameter type="const-gchar*" name="to" />
+          <parameter type="LmMessageType" name="type" />
+        </parameters>
+      </constructor>
+      <constructor cname="lm_message_new_with_sub_type">
+        <parameters>
+          <parameter type="const-gchar*" name="to" />
+          <parameter type="LmMessageType" name="type" />
+          <parameter type="LmMessageSubType" name="sub_type" />
+        </parameters>
+      </constructor>
+      <method name="Ref" cname="lm_message_ref">
+        <return-type type="LmMessage*" />
+      </method>
+      <method name="Unref" cname="lm_message_unref">
+        <return-type type="void" />
+      </method>
+    </struct>
+    <struct name="MessageHandler" cname="LmMessageHandler" opaque="true">
+      <method name="Invalidate" cname="lm_message_handler_invalidate">
+        <return-type type="void" />
+      </method>
+      <method name="IsValid" cname="lm_message_handler_is_valid">
+        <return-type type="gboolean" />
+      </method>
+      <constructor cname="lm_message_handler_new">
+        <parameters>
+          <parameter type="LmHandleMessageFunction" name="function" />
+          <parameter type="gpointer" name="user_data" />
+          <parameter type="GDestroyNotify" name="notify" />
+        </parameters>
+      </constructor>
+      <method name="Ref" cname="lm_message_handler_ref">
+        <return-type type="LmMessageHandler*" />
+      </method>
+      <method name="Unref" cname="lm_message_handler_unref">
+        <return-type type="void" />
+      </method>
+    </struct>
+    <struct name="MessageNode" cname="LmMessageNode">
+      <field cname="name" type="gchar*" />
+      <field cname="value" type="gchar*" />
+      <field cname="raw_mode" type="gboolean" />
+      <field cname="next" type="LmMessageNode*" />
+      <field cname="prev" type="LmMessageNode*" />
+      <field cname="parent" type="LmMessageNode*" />
+      <field cname="children" type="LmMessageNode*" />
+      <field cname="attributes" type="GSList*" />
+      <field cname="ref_count" type="gint" />
+      <method name="AddChild" cname="lm_message_node_add_child">
+        <return-type type="LmMessageNode*" />
+        <parameters>
+          <parameter type="const-gchar*" name="name" />
+          <parameter type="const-gchar*" name="value" />
+        </parameters>
+      </method>
+      <method name="FindChild" cname="lm_message_node_find_child">
+        <return-type type="LmMessageNode*" />
+        <parameters>
+          <parameter type="const-gchar*" name="child_name" />
+        </parameters>
+      </method>
+      <method name="GetAttribute" cname="lm_message_node_get_attribute">
+        <return-type type="const-gchar*" />
+        <parameters>
+          <parameter type="const-gchar*" name="name" />
+        </parameters>
+      </method>
+      <method name="GetChild" cname="lm_message_node_get_child">
+        <return-type type="LmMessageNode*" />
+        <parameters>
+          <parameter type="const-gchar*" name="child_name" />
+        </parameters>
+      </method>
+      <method name="GetRawMode" cname="lm_message_node_get_raw_mode">
+        <return-type type="gboolean" />
+      </method>
+      <method name="GetValue" cname="lm_message_node_get_value">
+        <return-type type="const-gchar*" />
+      </method>
+      <method name="Ref" cname="lm_message_node_ref">
+        <return-type type="LmMessageNode*" />
+      </method>
+      <method name="SetAttribute" cname="lm_message_node_set_attribute">
+        <return-type type="void" />
+        <parameters>
+          <parameter type="const-gchar*" name="name" />
+          <parameter type="const-gchar*" name="value" />
+        </parameters>
+      </method>
+      <method name="SetAttributes" cname="lm_message_node_set_attributes">
+        <return-type type="void" />
+        <parameters>
+          <parameter type="const-gchar*" name="name" />
+          <parameter ellipsis="true" />
+        </parameters>
+      </method>
+      <method name="SetRawMode" cname="lm_message_node_set_raw_mode">
+        <return-type type="void" />
+        <parameters>
+          <parameter type="gboolean" name="raw_mode" />
+        </parameters>
+      </method>
+      <method name="SetValue" cname="lm_message_node_set_value">
+        <return-type type="void" />
+        <parameters>
+          <parameter type="const-gchar*" name="value" />
+        </parameters>
+      </method>
+      <method name="ToString" cname="lm_message_node_to_string">
+        <return-type type="gchar*" />
+      </method>
+      <method name="Unref" cname="lm_message_node_unref">
+        <return-type type="void" />
+      </method>
+    </struct>
+    <struct name="MessagePriv" cname="LmMessagePriv" opaque="true" hidden="1" />
+    <struct name="Proxy" cname="LmProxy" opaque="true">
+      <method name="GetPassword" cname="lm_proxy_get_password">
+        <return-type type="const-gchar*" />
+      </method>
+      <method name="GetPort" cname="lm_proxy_get_port">
+        <return-type type="guint" />
+      </method>
+      <method name="GetServer" cname="lm_proxy_get_server">
+        <return-type type="const-gchar*" />
+      </method>
+      <method name="GetType" cname="lm_proxy_get_type">
+        <return-type type="LmProxyType" />
+      </method>
+      <method name="GetUsername" cname="lm_proxy_get_username">
+        <return-type type="const-gchar*" />
+      </method>
+      <constructor cname="lm_proxy_new">
+        <parameters>
+          <parameter type="LmProxyType" name="type" />
+        </parameters>
+      </constructor>
+      <method name="Ref" cname="lm_proxy_ref">
+        <return-type type="LmProxy*" />
+      </method>
+      <method name="SetPassword" cname="lm_proxy_set_password">
+        <return-type type="void" />
+        <parameters>
+          <parameter type="const-gchar*" name="password" />
+        </parameters>
+      </method>
+      <method name="SetPort" cname="lm_proxy_set_port">
+        <return-type type="void" />
+        <parameters>
+          <parameter type="guint" name="port" />
+        </parameters>
+      </method>
+      <method name="SetServer" cname="lm_proxy_set_server">
+        <return-type type="void" />
+        <parameters>
+          <parameter type="const-gchar*" name="server" />
+        </parameters>
+      </method>
+      <method name="SetType" cname="lm_proxy_set_type">
+        <return-type type="void" />
+        <parameters>
+          <parameter type="LmProxyType" name="type" />
+        </parameters>
+      </method>
+      <method name="SetUsername" cname="lm_proxy_set_username">
+        <return-type type="void" />
+        <parameters>
+          <parameter type="const-gchar*" name="username" />
+        </parameters>
+      </method>
+      <method name="Unref" cname="lm_proxy_unref">
+        <return-type type="void" />
+      </method>
+    </struct>
+    <struct name="SSL" cname="LmSSL" opaque="true">
+      <method name="IsSupported" cname="lm_ssl_is_supported" shared="true">
+        <return-type type="gboolean" />
+      </method>
+      <constructor cname="lm_ssl_new">
+        <parameters>
+          <parameter type="const-gchar*" name="expected_fingerprint" />
+          <parameter type="LmSSLFunction" name="ssl_function" />
+          <parameter type="gpointer" name="user_data" />
+          <parameter type="GDestroyNotify" name="notify" />
+        </parameters>
+      </constructor>
+      <method name="Ref" cname="lm_ssl_ref">
+        <return-type type="LmSSL*" />
+      </method>
+      <method name="Unref" cname="lm_ssl_unref">
+        <return-type type="void" />
+      </method>
+    </struct>
+    <class name="Global" cname="LmGlobal">
+      <method name="ErrorQuark" cname="lm_error_quark" shared="true">
+        <return-type type="GQuark" />
+      </method>
+    </class>
+  </namespace>
+</api>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mono/loudmouth/loudmouth.metadata	Wed Jan 21 18:02:57 2004 +0000
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<metadata>
+  <attr path="//namespace" name="name">Loudmouth</attr>
+  <!-- We should really use ends-with here -->
+  <attr path="//struct[contains(@cname,'Priv')]" name="hidden">1</attr>
+</metadata>
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mono/sources/loudmouth-sources.xml	Wed Jan 21 18:02:57 2004 +0000
@@ -0,0 +1,16 @@
+<gapi-parser-input>
+  <api filename="../loudmouth/loudmouth-api.xml">
+    <library name="loudmouth">
+      <namespace name="Lm">
+	<file>../../loudmouth/lm-connection.h</file>
+	<file>../../loudmouth/lm-error.h</file>
+	<file>../../loudmouth/lm-message.h</file>
+ 	<file>../../loudmouth/lm-message-handler.h</file>
+ 	<file>../../loudmouth/lm-message-node.h</file>
+ 	<file>../../loudmouth/lm-utils.h</file>
+ 	<file>../../loudmouth/lm-proxy.h</file>
+	<file>../../loudmouth/lm-ssl.h</file>
+       </namespace>
+    </library>
+  </api>
+</gapi-parser-input>