EpcTools
An event based multi-threaded C++ development framework.
Classes | Typedefs | Enumerations | Functions
PFCP Namespace Reference

PFCP stack namespace. More...

Classes

class  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...
 
class  ApplicationWorkGroup
 The PFCP application work group template. This template contains the common event queue for the application worker threads. More...
 
class  ApplicationWorkGroupBase
 
class  AppMsg
 Contains the base functionality for all aplication messages. More...
 
class  AppMsgNodeReq
 Represents a request application node message (not associated with a session). More...
 
class  AppMsgNodeRsp
 Represents a response application message. More...
 
class  AppMsgReq
 Represents a request application message. More...
 
class  AppMsgRsp
 Represents a response application message. More...
 
class  AppMsgSessionReq
 Represents a request application session message. More...
 
class  AppMsgSessionRsp
 Represents a response application message. More...
 
class  Configuration
 Contains all of the configuration values used in the PFCP stack. More...
 
class  FqSeid
 Represents a Fully Qualified SEID. This combines an IP address with a SEID. More...
 
class  LocalNode
 Represents the local PFCP node. More...
 
class  LocalNodeStateChangeEvent
 
class  Node
 Contains the basic Node functionality common to both a LocalNode and a RemoteNode. More...
 
class  NodeSocket
 Encapsulates the UDP Socket functionality used to communicate with a PFCP peer. More...
 
class  RemoteNode
 Represents a remote or peer PFCP node or host. More...
 
class  RemoteNodeRestartEvent
 
class  RemoteNodeStateChangeEvent
 
class  SeidManager
 Allocates and deallocates SEID's (PFCP session ID's). Each "slice" should have it's own instance of this object. More...
 
class  SequenceManager
 Allocates and deallocates sequence numbers used in PFCP request messages. Each "slice" should have it's own instance of this object. More...
 
class  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  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...
 

Typedefs

typedef std::shared_ptr< SessionBaseSessionBaseSPtr
 
typedef std::unordered_map< Seid, SessionBaseSPtrSessionBaseSPtrUMap
 
typedef std::shared_ptr< NodeNodeSPtr
 
typedef std::unordered_map< EIpAddress, RemoteNodeSPtr > RemoteNodeUMap
 
typedef std::pair< EIpAddress, RemoteNodeSPtr > RemoteNodeUMapPair
 
typedef std::unordered_map< EIpAddress, LocalNodeSPtr > LocalNodeUMap
 
typedef std::pair< EIpAddress, LocalNodeSPtr > LocalNodeUMapEIpAddressPair
 
typedef std::pair< ULong, LocalNodeSPtr > LocalNodeUMapULongPair
 
typedef AppMsgAppMsgPtr
 
typedef AppMsgReqAppMsgReqPtr
 
typedef AppMsgNodeReqAppMsgNodeReqPtr
 
typedef AppMsgSessionReqAppMsgSessionReqPtr
 
typedef AppMsgRspAppMsgRspPtr
 
typedef AppMsgNodeRspAppMsgNodeRspPtr
 
typedef AppMsgSessionRspAppMsgSessionRspPtr
 

Enumerations

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

Functions

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

Detailed Description

PFCP stack namespace.

Typedef Documentation

typedef std::unordered_map<EIpAddress,LocalNodeSPtr> PFCP::LocalNodeUMap
typedef std::pair<EIpAddress,LocalNodeSPtr> PFCP::LocalNodeUMapEIpAddressPair
typedef std::pair<ULong,LocalNodeSPtr> PFCP::LocalNodeUMapULongPair
typedef std::shared_ptr<Node> PFCP::NodeSPtr
typedef std::unordered_map<EIpAddress,RemoteNodeSPtr> PFCP::RemoteNodeUMap
typedef std::pair<EIpAddress,RemoteNodeSPtr> PFCP::RemoteNodeUMapPair
typedef std::shared_ptr<SessionBase> PFCP::SessionBaseSPtr
typedef std::unordered_map<Seid,SessionBaseSPtr> PFCP::SessionBaseSPtrUMap

Enumeration Type Documentation

enum PFCP::ApplicationEvents : UInt
strong

The events that will be received by the application work group.

Enumerator
RcvdReq 

RcvdReq - TranslationThread –> ApplicationWorkGroup - AppMsgReqPtr.

RcvdRsp 

RcvdRsp - TranslationThread –> ApplicationWorkGroup - AppMsgRspPtr.

ReqTimeout 

ReqTimeout - CommunicationThread –> ApplicationWorkGroup - AppMsgReqPtr.

LocalNodeStateChange 

LocalNodeStateChange - CommunicationThread –> ApplicationWorkGroup - *LocalNodeStateChangeEvent.

RemoteNodeStateChange 

RemoteNodeStateChange - CommunicationThread –> ApplicationWorkGroup - *RemoteNodeStateChangeEvent.

RemoteNodeRestart 

RemoteNodeRestart - CommunicationThread –> ApplicationWorkGroup - *RemoteNodeRestartEvent.

SndReqError 

SndReqError - CommunicationThread –> ApplicationWorkGroup - SndReqExceptionDataPtr.

SndRspError 

SndRspError - CommunicationThread –> ApplicationWorkGroup - SndRspExceptionDataPtr.

EncodeReqError 

EncodeReqError - TranslationThread –> ApplicationWorkGroup - EncodeReqExceptionDataPtr.

EncodeRspError 

EncodeRspError - TranslationThread –> ApplicationWorkGroup - EncodeRspExceptionDataPtr.

DecodeReqError 

DecodeReqError - TranslationThread –> ApplicationWorkGroup - DecodeReqExceptionDataPtr.

DecodeRspError 

DecodeRspError - TranslationThread –> ApplicationWorkGroup - EncodeRspExceptionDataPtr.

Function Documentation

PFCP::DECLARE_ERROR ( SessionBase_LocalSeidAlreadySet  )
PFCP::DECLARE_ERROR ( SessionBase_RemoteSeidAlreadySet  )
Void PFCP::Initialize ( )

Initializes/starts the PFCP stack. This should be called after setting the initial configuration values.

Void PFCP::Uninitialize ( )

Uninitializes/stops the PFCP stack.