Fawkes API Fawkes Development Version
network.cpp
1
2/***************************************************************************
3 * network.cpp - network aspect for Fawkes
4 *
5 * Created: Fri Jun 29 15:17:08 2007 (on flight to RoboCup 2007, Atlanta)
6 * Copyright 2006-2010 Tim Niemueller [www.niemueller.de]
7 *
8 ****************************************************************************/
9
10/* This program is free software; you can redistribute it and/or modify
11 * it under the terms of the GNU General Public License as published by
12 * the Free Software Foundation; either version 2 of the License, or
13 * (at your option) any later version. A runtime exception applies to
14 * this software (see LICENSE.GPL_WRE file mentioned below for details).
15 *
16 * This program is distributed in the hope that it will be useful,
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 * GNU Library General Public License for more details.
20 *
21 * Read the full text in the LICENSE.GPL_WRE file in the doc directory.
22 */
23
24#include <aspect/network.h>
25
26namespace fawkes {
27
28/** @class NetworkAspect <aspect/network.h>
29 * Thread aspect for network communication.
30 * Give this aspect to your thread if you want to implement custom network
31 * communication. With this aspect you get access to the central network name
32 * resolver and you may publish service on the network and browse for existing
33 * services (for example using mDNS-SD via Avahi).
34 *
35 * It is guaranteed that if used properly from within plugins that
36 * init_NetworkAspect() is called before the thread is started.
37 *
38 * @ingroup Aspects
39 * @author Tim Niemueller
40 */
41
42/** @var NetworkNameResolver NetworkAspect::nnresolver
43 * Network name resolver to lookup IP addresses of hostnames and vice versa.
44 * The nnresolver will remain valid for the whole lifetime of the
45 * thread.
46 */
47
48/** @var NetworkNameResolver NetworkAspect::service_publisher
49 * Service publisher to publish services on the network.
50 * The service_publisher will remain valid for the whole lifetime of the
51 * thread.
52 */
53
54/** @var NetworkNameResolver NetworkAspect::service_browser
55 * Service browser to browse services on the network.
56 * The service_browser will remain valid for the whole lifetime of the
57 * thread.
58 */
59
60/** Constructor. */
62{
63 add_aspect("NetworkAspect");
64}
65
66/** Virtual empty Destructor. */
68{
69}
70
71/** Init network aspect.
72 * It is guaranteed that this is called for a thread having the
73 * netwok aspect before Thread::start() is called (when
74 * running regularly inside Fawkes).
75 * @param resolver network name resolver
76 * @param service_publisher service publisher
77 * @param service_browser service browser
78 */
79void
81 ServicePublisher * service_publisher,
82 ServiceBrowser * service_browser)
83{
84 this->nnresolver = resolver;
85 this->service_publisher = service_publisher;
86 this->service_browser = service_browser;
87}
88
89} // end namespace fawkes
void add_aspect(const char *name)
Add an aspect to a thread.
Definition: aspect.cpp:49
NetworkAspect()
Constructor.
Definition: network.cpp:61
NetworkNameResolver * nnresolver
Network name resolver to lookup IP addresses of hostnames and vice versa.
Definition: network.h:45
virtual ~NetworkAspect()
Virtual empty Destructor.
Definition: network.cpp:67
ServicePublisher * service_publisher
Service publisher to publish services on the network.
Definition: network.h:46
void init_NetworkAspect(NetworkNameResolver *resolver, ServicePublisher *service_publisher, ServiceBrowser *service_browser)
Init network aspect.
Definition: network.cpp:80
ServiceBrowser * service_browser
Service browser to browse services on the network.
Definition: network.h:47
Network name and address resolver.
Definition: resolver.h:45
Service browser.
Service publisher interface.
Fawkes library namespace.