- initial import
This commit is contained in:
131
src/libs/ice/ICEBinding.h
Normal file
131
src/libs/ice/ICEBinding.h
Normal file
@@ -0,0 +1,131 @@
|
||||
/* Copyright(C) 2007-2014 VoIP objects (voipobjects.com)
|
||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
#ifndef __ICE_BINDING_H
|
||||
#define __ICE_BINDING_H
|
||||
|
||||
#include "ICEStunTransaction.h"
|
||||
#include "ICEAuthTransaction.h"
|
||||
#include "ICEAddress.h"
|
||||
|
||||
namespace ice
|
||||
{
|
||||
class CheckResult
|
||||
{
|
||||
public:
|
||||
virtual Transaction::State resultState() = 0;
|
||||
virtual int resultError() = 0;
|
||||
virtual NetworkAddress& resultSource() = 0;
|
||||
virtual NetworkAddress& resultLocal() = 0;
|
||||
virtual void useCandidate() = 0;
|
||||
virtual unsigned resultPriority() = 0;
|
||||
};
|
||||
|
||||
class ConnectivityCheck: public Transaction, public CheckResult
|
||||
{
|
||||
public:
|
||||
ConnectivityCheck();
|
||||
virtual ~ConnectivityCheck();
|
||||
|
||||
ByteBuffer* generateData(bool force = false);
|
||||
bool processData(StunMessage& msg, NetworkAddress& sourceAddress);
|
||||
|
||||
NetworkAddress& mappedAddress(); //returns result from succesful transaction
|
||||
NetworkAddress& responseAddress(); //returns responses source address
|
||||
int errorCode();
|
||||
void addUseCandidate();
|
||||
void confirmTransaction(NetworkAddress& mapped);
|
||||
|
||||
// CheckResult interface
|
||||
int resultError();
|
||||
NetworkAddress& resultSource();
|
||||
NetworkAddress& resultLocal();
|
||||
State resultState();
|
||||
void useCandidate();
|
||||
unsigned resultPriority();
|
||||
protected:
|
||||
NetworkAddress mResponseAddress;
|
||||
NetworkAddress mMappedAddress;
|
||||
bool mUseCandidate;
|
||||
int mErrorCode;
|
||||
std::string mErrorResponse;
|
||||
};
|
||||
|
||||
class ClientBinding: public Transaction
|
||||
{
|
||||
public:
|
||||
ClientBinding();
|
||||
virtual ~ClientBinding();
|
||||
|
||||
int errorCode(); //returns error code from failed transaction
|
||||
std::string errorResponse(); //returns error msg from failed transaction
|
||||
NetworkAddress& mappedAddress(); //returns result from succesful transaction
|
||||
NetworkAddress& responseAddress(); //returns responses source address
|
||||
|
||||
bool processData(StunMessage& msg, NetworkAddress& address);
|
||||
ByteBuffer* generateData(bool force = false);
|
||||
void addUseCandidate();
|
||||
|
||||
protected:
|
||||
int mErrorCode;
|
||||
NetworkAddress mMappedAddress;
|
||||
std::string mErrorResponse;
|
||||
NetworkAddress mResponseAddress;
|
||||
bool mUseCandidate;
|
||||
};
|
||||
|
||||
class ServerBinding: public Transaction
|
||||
{
|
||||
public:
|
||||
ServerBinding();
|
||||
virtual ~ServerBinding();
|
||||
void setLocalTieBreaker(std::string tieBreaker);
|
||||
|
||||
bool processData(StunMessage& msg, NetworkAddress& address);
|
||||
ByteBuffer* generateData(bool force = false);
|
||||
void restart();
|
||||
|
||||
// Checks if incoming request has UseCandidate attribute
|
||||
bool hasUseCandidate();
|
||||
|
||||
// Checks if processed StunMessage was authenticated ok
|
||||
bool gotRequest();
|
||||
|
||||
// Gets the role from processed message. It can be Controlled or Controlling or None.
|
||||
int role();
|
||||
|
||||
// Instructs transaction to response with 487 code
|
||||
void generate487();
|
||||
|
||||
// Returns received tie breaker
|
||||
std::string remoteTieBreaker();
|
||||
|
||||
protected:
|
||||
NetworkAddress mSourceAddress;
|
||||
bool mUseCandidate;
|
||||
bool mGenerate400;
|
||||
bool mGenerate487;
|
||||
int mRole;
|
||||
std::string mLocalTieBreaker;
|
||||
std::string mRemoteTieBreaker;
|
||||
};
|
||||
|
||||
|
||||
class BindingIndication: public Transaction
|
||||
{
|
||||
public:
|
||||
BindingIndication(unsigned int interval);
|
||||
virtual ~BindingIndication();
|
||||
|
||||
bool processData(StunMessage& msg, NetworkAddress& address);
|
||||
ByteBuffer* generateData(bool force = false);
|
||||
|
||||
protected:
|
||||
unsigned mTimestamp;
|
||||
unsigned mInterval;
|
||||
};
|
||||
}
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user