📄 browse_client_generic.h
字号:
/* $Id: browse_client_generic.h,v 1.9 2003/10/14 15:52:13 mbn Exp $
**
** ClanLib Game SDK
** Copyright (C) 2003 The ClanLib Team
** For a total list of contributers see the file CREDITS.
**
** This library is free software; you can redistribute it and/or
** modify it under the terms of the GNU Lesser General Public
** License as published by the Free Software Foundation; either
** version 2.1 of the License, or (at your option) any later version.
**
** This library 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
** Lesser General Public License for more details.
**
** You should have received a copy of the GNU Lesser General Public
** License along with this library; if not, write to the Free Software
** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
**
*/
#ifndef header_browse_client_generic
#define header_browse_client_generic
#if _MSC_VER > 1000
#pragma once
#endif
#include "API/signals.h"
#include "API/Core/System/thread.h"
#include "API/Core/System/mutex.h"
#include "API/Core/System/keep_alive.h"
#include "API/Network/Socket/ip_address.h"
#include "API/Network/Socket/socket.h"
#include "API/Network/NetSession/netpacket.h"
#include <string>
class CL_NetPacket;
class CL_BrowseClient_Generic : public CL_Runnable, CL_KeepAlive
{
//! Construction:
public:
//: Connect to browse master and start downloading getting browse list.
CL_BrowseClient_Generic(const std::string &app_id);
virtual ~CL_BrowseClient_Generic();
//! Attributes:
public:
//: Signal that is called when the browse client is notified about a server addition.
CL_Signal_v2<const CL_IPAddress &, CL_NetPacket &> sig_server_added;
//: Signal that is called when the browse client is notified about a server update.
CL_Signal_v2<const CL_IPAddress &, CL_NetPacket &> sig_server_updated;
//: Signal that is called when the browse client is notified about a server removal.
CL_Signal_v1<const CL_IPAddress &> sig_server_removed;
//! Operations:
public:
//: Connect to browse master and start downloading getting browse list.
void connect(const CL_IPAddress &browse_master);
//: Broadcast browse query on local area network for browse servers on the specified port.
void broadcast(const std::string &port);
//! Implementation:
private:
virtual void keep_alive();
virtual void run();
CL_IPAddress browse_master;
std::string app_id;
std::list< std::pair<CL_IPAddress, CL_NetPacket> > added_list;
std::list< std::pair<CL_IPAddress, CL_NetPacket> > updated_list;
std::list<CL_IPAddress> removed_list;
CL_Socket sock;
//: udp socket for listening to broadcast
CL_Socket sock_udp;
//: Trigger slot to recive broadcast message
CL_Slot slot_recv;
//: method called when recived a broadcast message
void on_udp_recv();
CL_Thread thread;
CL_Mutex mutex;
volatile bool stop_thread;
volatile bool exception_thrown;
std::string exception;
};
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -