diff options
Diffstat (limited to 'src/neighbor/Explorer.hxx')
-rw-r--r-- | src/neighbor/Explorer.hxx | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/src/neighbor/Explorer.hxx b/src/neighbor/Explorer.hxx new file mode 100644 index 000000000..84a54840c --- /dev/null +++ b/src/neighbor/Explorer.hxx @@ -0,0 +1,71 @@ +/* + * Copyright (C) 2003-2014 The Music Player Daemon Project + * http://www.musicpd.org + * + * 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 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., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +#ifndef MPD_NEIGHBOR_EXPLORER_HXX +#define MPD_NEIGHBOR_EXPLORER_HXX + +#include <forward_list> + +class Error; +class NeighborListener; +struct NeighborInfo; + +/** + * An object that explores the neighborhood for music servers. + * + * As soon as this object is opened, it will start exploring, and + * notify the #NeighborListener when it found or lost something. + * + * The implementation is supposed to be non-blocking. This can be + * implemented either using the #EventLoop instance that was passed to + * the NeighborPlugin or by moving the blocking parts in a dedicated + * thread. + */ +class NeighborExplorer { +protected: + NeighborListener &listener; + + explicit NeighborExplorer(NeighborListener &_listener) + :listener(_listener) {} + +public: + typedef std::forward_list<NeighborInfo> List; + + /** + * Free instance data. + */ + virtual ~NeighborExplorer() {} + + /** + * Start exploring the neighborhood. + */ + virtual bool Open(Error &error) = 0; + + /** + * Stop exploring. + */ + virtual void Close() = 0; + + /** + * Obtain a list of currently known neighbors. + */ + virtual List GetList() const = 0; +}; + +#endif |