EpcTools
An event based multi-threaded C++ development framework.
Classes | Namespaces | Typedefs | Enumerations | Functions
epfcp.h File Reference

Contains the class definitions to support the PFCP protocol stack. More...

#include <atomic>
#include <unordered_map>
#include <utility>
#include "epctools.h"
#include "eip.h"
#include "esocket.h"
#include "eteid.h"
#include "etimerpool.h"
#include "ememory.h"

Go to the source code of this file.

Classes

class  PFCP::Configuration
 Contains all of the configuration values used in the PFCP stack. More...
 
class  PFCP::SequenceManager
 Allocates and deallocates sequence numbers used in PFCP request messages. Each "slice" should have it's own instance of this object. More...
 
class  PFCP::SeidManager
 Allocates and deallocates SEID's (PFCP session ID's). Each "slice" should have it's own instance of this object. More...
 
class  PFCP::FqSeid
 Represents a Fully Qualified SEID. This combines an IP address with a SEID. More...
 
class  PFCP::NodeSocket
 Encapsulates the UDP Socket functionality used to communicate with a PFCP peer. More...
 
class  PFCP::SessionBase
 Represents a PFCP session. It is expected that a developer utilizing this library will derive their own specialized session object from this class. More...
 
class  PFCP::Node
 Contains the basic Node functionality common to both a LocalNode and a RemoteNode. More...
 
class  PFCP::RemoteNode
 Represents a remote or peer PFCP node or host. More...
 
class  PFCP::RemoteNodeStateChangeEvent
 
class  PFCP::RemoteNodeRestartEvent
 
class  PFCP::LocalNode
 Represents the local PFCP node. More...
 
class  PFCP::LocalNodeStateChangeEvent
 
class  PFCP::AppMsg
 Contains the base functionality for all aplication messages. More...
 
class  PFCP::AppMsgReq
 Represents a request application message. More...
 
class  PFCP::AppMsgNodeReq
 Represents a request application node message (not associated with a session). More...
 
class  PFCP::AppMsgSessionReq
 Represents a request application session message. More...
 
class  PFCP::AppMsgRsp
 Represents a response application message. More...
 
class  PFCP::AppMsgNodeRsp
 Represents a response application message. More...
 
class  PFCP::AppMsgSessionRsp
 Represents a response application message. More...
 
class  PFCP::Translator
 The PFCP Translator is used to encode and decode PFCP messages. This is a pure virtual base class that needs to be overridden to support each 3GPP PFCP release. More...
 
class  PFCP::ApplicationWorkGroupBase
 
class  PFCP::ApplicationWorkGroup< TWorker >
 The PFCP application work group template. This template contains the common event queue for the application worker threads. More...
 
class  PFCP::ApplicationWorker
 The application worker thread class. The various virtual methods should be overridden to implement application specific behavior. Any additional event handlers can be added to handle application specific (non PFCP) events. More...
 

Namespaces

 PFCP
 PFCP stack namespace.
 

Typedefs

typedef std::shared_ptr< SessionBase > PFCP::SessionBaseSPtr
 
typedef std::unordered_map< Seid, SessionBaseSPtr > PFCP::SessionBaseSPtrUMap
 
typedef std::shared_ptr< Node > PFCP::NodeSPtr
 
typedef std::unordered_map< EIpAddress, RemoteNodeSPtr > PFCP::RemoteNodeUMap
 
typedef std::pair< EIpAddress, RemoteNodeSPtr > PFCP::RemoteNodeUMapPair
 
typedef std::unordered_map< EIpAddress, LocalNodeSPtr > PFCP::LocalNodeUMap
 
typedef std::pair< EIpAddress, LocalNodeSPtr > PFCP::LocalNodeUMapEIpAddressPair
 
typedef std::pair< ULong, LocalNodeSPtr > PFCP::LocalNodeUMapULongPair
 
typedef AppMsg * PFCP::AppMsgPtr
 
typedef AppMsgReq * PFCP::AppMsgReqPtr
 
typedef AppMsgNodeReq * PFCP::AppMsgNodeReqPtr
 
typedef AppMsgSessionReq * PFCP::AppMsgSessionReqPtr
 
typedef AppMsgRsp * PFCP::AppMsgRspPtr
 
typedef AppMsgNodeRsp * PFCP::AppMsgNodeRspPtr
 
typedef AppMsgSessionRsp * PFCP::AppMsgSessionRspPtr
 

Enumerations

enum  PFCP::ApplicationEvents : UInt {
  PFCP::ApplicationEvents::RcvdReq = (APPLICATION_BASE_EVENT + 1), PFCP::ApplicationEvents::RcvdRsp = (APPLICATION_BASE_EVENT + 2), PFCP::ApplicationEvents::ReqTimeout = (APPLICATION_BASE_EVENT + 3), PFCP::ApplicationEvents::LocalNodeStateChange = (APPLICATION_BASE_EVENT + 4),
  PFCP::ApplicationEvents::RemoteNodeStateChange = (APPLICATION_BASE_EVENT + 5), PFCP::ApplicationEvents::RemoteNodeRestart = (APPLICATION_BASE_EVENT + 6), PFCP::ApplicationEvents::SndReqError = (APPLICATION_BASE_EVENT + 9), PFCP::ApplicationEvents::SndRspError = (APPLICATION_BASE_EVENT + 8),
  PFCP::ApplicationEvents::EncodeReqError = (APPLICATION_BASE_EVENT + 9), PFCP::ApplicationEvents::EncodeRspError = (APPLICATION_BASE_EVENT + 10), PFCP::ApplicationEvents::DecodeReqError = (APPLICATION_BASE_EVENT + 11), PFCP::ApplicationEvents::DecodeRspError = (APPLICATION_BASE_EVENT + 12)
}
 The events that will be received by the application work group. More...
 

Functions

Void PFCP::Initialize ()
 Initializes/starts the PFCP stack. This should be called after setting the initial configuration values. More...
 
Void PFCP::Uninitialize ()
 Uninitializes/stops the PFCP stack. More...
 
 PFCP::DECLARE_ERROR (SessionBase_LocalSeidAlreadySet)
 
 PFCP::DECLARE_ERROR (SessionBase_RemoteSeidAlreadySet)
 

Detailed Description

Contains the class definitions to support the PFCP protocol stack.