ProtocolInfo.h
/**************************************************************************
* Copyright (c) 2006, Cisco Systems, All Rights Reserved
***************************************************************************
*
* File: ProtocolInfo.h
* Date: 12/2006
*
***************************************************************************
*
* Protocol info class implementation for the Client API.
*
***************************************************************************/
#ifndef _PROTOCOL_INFO_
#define _PROTOCOL_INFO_
#include "api.h"
#include <iostream>
class VPNStatsBase;
/**
* Use this class to retrieve details regarding the protocol in use for the
* VPN tunnel. These details include State, Protocol, Cipher and Compression.
*
* It's possible multiple ProtocolInfo objects (for example, one each for TLS
* and DTLS protocol) are available. To check whether the Protocol for a given
* instance of ProtocolInfo is the currently active one, use the
* ProtocolInfo::isActive method.
*/
class VPN_VPNAPI ProtocolInfo
{
public:
static tstring State; /**< Use ProtocolInfo::getProtocolValue
with this tag to get the current
state of the referenced protocol. The
returned state is a localized
string. */
static tstring Protocol; /**< Use ProtocolInfo::getProtocolValue
with this tag to get the protocol
value (for example, DTLS). */
static tstring Cipher; /**< Use ProtocolInfo::getProtocolValue
with this tag to get the Cipher
value (for example, RSA_AES_256_SHA1). */
static tstring Compression; /**< Use ProtocolInfo::getProtocolValue
with this tag to get the Compression
value (for example, Deflate). The returned
compression value is a localized
string. */
/**
* Use this method to retrieve various protocol related values.
* The valid labels or tags to use in this retrieval include: State,
* Protocol, Cipher and Compression.
* (for example, getProtocolValue(State), getProtocolValue(Protocol), etc.)
*/
const tstring &getProtocolValue(tstring &label);
/**
* Alias for getProtocolValue.
*/
const tstring &getValue(tstring &label) { return getProtocolValue(label); }
/**
* Return true if this is the active protocol.
*/
bool isActive();
ProtocolInfo(const ProtocolInfo *pInfo);
ProtocolInfo(STATE tunnelState,
ProtocolVersion protocolVersion,
ProtocolCipher protocolCipher,
COMPR_ALGORITHM comprAlgorithm,
bool bIsActive);
~ProtocolInfo();
//This method is not intended to be used by a consumers of the API.
//
static const tstring::value_type* const* getProtocolInfoStringTable();
protected:
static const tstring::value_type* const sm_pProtocolInfoStringTable[];
private:
static tstring EmptyString;
bool mb_isActive;
ApiStringMap mo_ProtocolNameValue;
ApiStringMap &getProtocolMap();
friend VPN_VPNAPI tostream& operator<<(tostream &outStream,
VPNStatsBase& stats);
};
#endif // _PROTOCOL_INFO_
api.h
tstring
#define tstring
Definition api.h:35
ProtocolInfo::Protocol
static tstring Protocol
Definition ProtocolInfo.h:42
ProtocolInfo::isActive
bool isActive()
ProtocolInfo::State
static tstring State
Definition ProtocolInfo.h:37
ProtocolInfo::Compression
static tstring Compression
Definition ProtocolInfo.h:48
ProtocolInfo::Cipher
static tstring Cipher
Definition ProtocolInfo.h:45
ProtocolInfo::getProtocolValue
const tstring & getProtocolValue(tstring &label)
ProtocolInfo::getValue
const tstring & getValue(tstring &label)
Definition ProtocolInfo.h:65
VPNStatsBase
Definition VPNStatsBase.h:41