mirror of
https://github.com/RetroShare/RetroShare.git
synced 2025-01-03 20:01:07 -05:00
6435357c07
the rewrite of the retroshare core networking stack. This check-in commits the changes to the pqi code, and provides the majority of the improvements. (1) Introduced new interfaces for DHT and UPnP abstraction: p3dhtmgr.h, p3upnpmgr.h (2) Introduces abstraction for Authentication: p3authmgr.h (3) New Connection Manager to coordinate networking code: p3connmgr.h (4) New Configuration Manager: p3cfgmgr.h This library has been significantly modified to support DHT synced connections to enable connections between Firewalled Friends. The connection code has been rewritten within a new framework, which should make extensions easier to code. Also removed significant amount of old code relating to Tunnels, Channels etc. This will be recycled later as higher level services that should not be part of the core networking library. git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@306 b45a01b8-16f6-495d-af2f-9b41ad6348cc
133 lines
3.4 KiB
C++
133 lines
3.4 KiB
C++
/*
|
|
* libretroshare/src/pqi: pqimonitor.h
|
|
*
|
|
* 3P/PQI network interface for RetroShare.
|
|
*
|
|
* Copyright 2007-2008 by Robert Fernie.
|
|
*
|
|
* This library is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU Library General Public
|
|
* License Version 2 as published by the Free Software Foundation.
|
|
*
|
|
* 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
|
|
* Library General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU Library 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.
|
|
*
|
|
* Please report all bugs and problems to "retroshare@lunamutt.com".
|
|
*
|
|
*/
|
|
|
|
#ifndef PQI_MONITOR_H
|
|
#define PQI_MONITOR_H
|
|
|
|
/**** Rough sketch of a Monitor class
|
|
* expect it to change significantly
|
|
*
|
|
*/
|
|
|
|
#include <inttypes.h>
|
|
#include <string>
|
|
#include <list>
|
|
|
|
/************** Define Type/Mode/Source ***************/
|
|
|
|
|
|
/* STATE MASK */
|
|
const uint32_t RS_PEER_STATE_MASK = 0x00ff;
|
|
const uint32_t RS_PEER_ACTION_MASK = 0xff00;
|
|
|
|
/* STATE */
|
|
const uint32_t RS_PEER_S_FRIEND = 0x0001;
|
|
const uint32_t RS_PEER_S_ONLINE = 0x0002;
|
|
const uint32_t RS_PEER_S_CONNECTED = 0x0004; /* heard from recently..*/
|
|
|
|
/* ACTIONS */
|
|
const uint32_t RS_PEER_NEW = 0x0001; /* new Peer */
|
|
const uint32_t RS_PEER_MOVED = 0x0002; /* moved from F->O or O->F */
|
|
const uint32_t RS_PEER_CONNECTED = 0x0004;
|
|
const uint32_t RS_PEER_DISCONNECTED = 0x0008;
|
|
const uint32_t RS_PEER_CONNECT_REQ = 0x0010;
|
|
|
|
/* Stun Status Flags */
|
|
//const uint32_t RS_STUN_SRC_DHT = 0x0001;
|
|
//const uint32_t RS_STUN_SRC_PEER = 0x0002;
|
|
const uint32_t RS_STUN_ONLINE = 0x0010;
|
|
const uint32_t RS_STUN_FRIEND = 0x0020;
|
|
|
|
|
|
|
|
#define RS_CONNECT_PASSIVE 1
|
|
#define RS_CONNECT_ACTIVE 2
|
|
|
|
#define RS_CB_DHT 1 /* from dht */
|
|
#define RS_CB_DISC 2 /* from peers */
|
|
#define RS_CB_PERSON 3 /* from connection */
|
|
|
|
|
|
class pqipeer
|
|
{
|
|
public:
|
|
std::string id;
|
|
std::string name;
|
|
uint32_t state;
|
|
uint32_t actions;
|
|
};
|
|
|
|
class p3ConnectMgr;
|
|
|
|
class pqiMonitor
|
|
{
|
|
public:
|
|
pqiMonitor() :mConnMgr(NULL) { return; }
|
|
virtual ~pqiMonitor() { return; }
|
|
|
|
void setConnectionMgr(p3ConnectMgr *cm) { mConnMgr = cm; }
|
|
virtual void statusChange(const std::list<pqipeer> &plist) = 0;
|
|
|
|
//virtual void peerStatus(std::string id, uint32_t mode) = 0;
|
|
|
|
protected:
|
|
p3ConnectMgr *mConnMgr;
|
|
};
|
|
|
|
|
|
|
|
|
|
class pqiConnectCb
|
|
{
|
|
public:
|
|
virtual ~pqiConnectCb() { return; }
|
|
virtual void peerStatus(std::string id,
|
|
struct sockaddr_in laddr, struct sockaddr_in raddr,
|
|
uint32_t type, uint32_t mode, uint32_t source) = 0;
|
|
|
|
virtual void peerConnectRequest(std::string id, uint32_t type) = 0;
|
|
|
|
virtual void stunStatus(std::string id, struct sockaddr_in addr, uint32_t flags) = 0;
|
|
};
|
|
|
|
|
|
/**** DUMMY CB FOR TESTING (just prints) ****/
|
|
class pqiConnectCbDummy: public pqiConnectCb
|
|
{
|
|
public:
|
|
pqiConnectCbDummy();
|
|
virtual ~pqiConnectCbDummy();
|
|
virtual void peerStatus(std::string id,
|
|
struct sockaddr_in laddr, struct sockaddr_in raddr,
|
|
uint32_t type, uint32_t mode, uint32_t source);
|
|
|
|
virtual void peerConnectRequest(std::string id, uint32_t type);
|
|
|
|
virtual void stunStatus(std::string id, struct sockaddr_in addr, uint32_t flags);
|
|
};
|
|
|
|
#endif // PQI_MONITOR_H
|
|
|