2
/* Ekiga -- A VoIP and Video-Conferencing application
3
* Copyright (C) 2000-2009 Damien Sandras <dsandras@seconix.com>
5
* This program is free software; you can redistribute it and/or modify
6
* it under the terms of the GNU General Public License as published by
7
* the Free Software Foundation; either version 2 of the License, or
8
* (at your option) any later version.
10
* This program is distributed in the hope that it will be useful,
11
* but WITHOUT ANY WARRANTY; without even the implied warranty of
12
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
* GNU General Public License for more details.
15
* You should have received a copy of the GNU General Public License
16
* along with this program; if not, write to the Free Software Foundation,
17
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
20
* Ekiga is licensed under the GPL license and as a special exception,
21
* you have permission to link or otherwise combine this program with the
22
* programs OPAL, OpenH323 and PWLIB, and distribute the combination,
23
* without applying the requirements of the GNU GPL to the OPAL, OpenH323
24
* and PWLIB programs, as long as you do follow the requirements of the
25
* GNU GPL for all the rest of the software thus combined.
30
* avahi-publisher.h - description
31
* ------------------------------------
32
* begin : Sun Aug 21 2005
33
* copyright : (C) 2005 by Sebastien Estienne
34
* (C) 2008 by Julien Puydt
35
* description : Avahi publisher declaration
39
#ifndef __AVAHI_PUBLISHER_H__
40
#define __AVAHI_PUBLISHER_H__
43
#include "personal-details.h"
44
#include "presence-core.h"
45
#include "call-core.h"
47
#include <avahi-common/alternative.h>
48
#include <avahi-common/error.h>
49
#include <avahi-common/malloc.h>
50
#include <avahi-common/strlst.h>
51
#include <avahi-client/client.h>
52
#include <avahi-client/publish.h>
53
#include <avahi-glib/glib-watch.h>
57
class PresencePublisher:
58
public Ekiga::Service,
59
public Ekiga::PresencePublisher
63
PresencePublisher (Ekiga::ServiceCore& core,
64
Ekiga::PersonalDetails& details,
65
Ekiga::CallCore& call_core);
67
~PresencePublisher ();
69
const std::string get_name () const
70
{ return "avahi-presence-publisher"; }
72
const std::string get_description () const
73
{ return "\tObject bringing in Avahi presence publishing"; }
75
void publish (const Ekiga::PersonalDetails & details);
77
/* public only to be called by C callbacks... */
78
void client_callback (AvahiClient* client,
79
AvahiClientState state);
80
void entry_group_callback (AvahiEntryGroup* group,
81
AvahiEntryGroupState state);
85
Ekiga::ServiceCore& core;
86
Ekiga::PersonalDetails& details;
87
Ekiga::CallCore& call_core;
89
AvahiGLibPoll* glib_poll;
91
void create_client ();
95
void register_services ();
97
void remove_services ();
98
AvahiEntryGroup* group;
99
std::string display_name;
102
AvahiStringList* prepare_txt_record ();
103
void on_details_updated ();