view libgaim/protocols/bonjour/dns_sd.h @ 14195:902c3aa4950a

[gaim-migrate @ 16867] Revamped the QQ proxy code. Fixed an infinite loop that was occurring if we hit qq_input_pending() with an unexpected value of cond. Rewrote part of qq_proxy.c so that we use Gaim's non-blocking dns lookups. Quieted some warnings created by new code in proxy.c and passed appropriate error messages to _qq_got_login(). Added some extra error handling to qq_proxy_write(). I was beginning to do major clean-up on this this code when I realized that once that clean-up is done, I will have duplicated a very large amount of code from proxy.c. Therefore, I am submitting this working code now and will later submit a patch to gaim-devel that will add support for UDP proxying in proxy.c, thus eliminating the need for such code in the individual prpls. committer: Tailor Script <tailor@pidgin.im>
author Mark Huetsch <markhuetsch>
date Sat, 19 Aug 2006 02:32:55 +0000
parents 60b1bc8dbf37
children
line wrap: on
line source

/*
 *  This program is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation; either version 2 of the License, or
 *  (at your option) any later version.
 *
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU Library General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program; if not, write to the Free Software
 *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 */

#ifndef _BONJOUR_DNS_SD
#define _BONJOUR_DNS_SD

#include <howl.h>
#include <glib.h>
#include "account.h"

#define ICHAT_SERVICE "_presence._tcp."

/**
 * Data to be used by the dns-sd connection.
 */
typedef struct _BonjourDnsSd
{
	sw_discovery session;
	sw_discovery_oid session_id;
	GaimAccount *account;
	gchar *name;
	gchar *txtvers;
	gchar *version;
	gchar *first;
	gchar *last;
	gint port_p2pj;
	gchar *phsh;
	gchar *status;
	gchar *email;
	gchar *vc;
	gchar *jid;
	gchar *AIM;
	gchar *msg;
	GHashTable *buddies;
} BonjourDnsSd;

typedef enum _PublishType {
	PUBLISH_START,
	PUBLISH_UPDATE
} PublishType;

/**
 * Allocate space for the dns-sd data.
 */
BonjourDnsSd *bonjour_dns_sd_new(void);

/**
 * Deallocate the space of the dns-sd data.
 */
void bonjour_dns_sd_free(BonjourDnsSd *data);

/**
 * Send a new dns-sd packet updating our status.
 */
void bonjour_dns_sd_send_status(BonjourDnsSd *data, const char *status, const char *status_message);

/**
 * Advertise our presence within the dns-sd daemon and start
 * browsing for other bonjour peers.
 */
gboolean bonjour_dns_sd_start(BonjourDnsSd *data);

/**
 * Unregister the "_presence._tcp" service at the mDNS daemon.
 */
void bonjour_dns_sd_stop(BonjourDnsSd *data);

#endif