PSNMPServer Class Reference

Class which supplies SNMP data. More...

`#include <psnmp.h>`

Inheritance diagram for PSNMPServer:

## Public Member Functions

| PSNMPServer (PIPSocket::Address binding=PIPSocket::GetDefaultIpAny(), WORD localPort=161, PINDEX timeout=5000, PINDEX rxSize=10000, PINDEX txSize=10000)
| ~PSNMPServer ()
void | Main ()
void | SetVersion (PASNInt newVersion)
PBoolean | HandleChannel ()
PBoolean | ProcessPDU (const PBYTEArray &readBuffer, PBYTEArray &writeBuffer)
virtual PBoolean | Authorise (const PIPSocket::Address &received)
virtual PBoolean | ConfirmVersion (PASN_Integer vers)
virtual PBoolean | ConfirmCommunity (PASN_OctetString &community)
virtual PBoolean | MIB_LocalMatch (PSNMP_PDU &pdu)
virtual PBoolean | OnGetRequest (PINDEX reqID, PSNMP::BindingList &vars, PSNMP::ErrorType &errCode)
virtual PBoolean | OnGetNextRequest (PINDEX reqID, PSNMP::BindingList &vars, PSNMP::ErrorType &errCode)
virtual PBoolean | OnSetRequest (PINDEX reqID, PSNMP::BindingList &vars, PSNMP::ErrorType &errCode)
PSNMP::ErrorType | SendGetResponse (PSNMPVarBindingList &vars)
Public Member Functions inherited from PIndirectChannel
| PIndirectChannel ()
| Create a new indirect channel without any channels to redirect to. More...
| ~PIndirectChannel ()
| Close the indirect channel, deleting read/write channels if desired. More...
Comparison | Compare (const PObject &obj) const
| Determine if the two objects refer to the same indirect channel. More...
virtual PString | GetName () const
| Get the name of the channel. More...
virtual PBoolean | Close ()
| Close the channel. More...
virtual PBoolean | IsOpen () const
| Determine if the channel is currently open and read and write operations can be executed on it. More...
virtual PBoolean | Read (void *buf, PINDEX len)
| Low level read from the channel. More...
virtual PBoolean | Write (const void *buf, PINDEX len)
| Low level write to the channel. More...
virtual PBoolean | Shutdown (ShutdownValue option)
| Close one or both of the data streams associated with a channel. More...
virtual bool | SetLocalEcho (bool localEcho)
| Set local echo mode. More...
virtual PChannel * | GetBaseReadChannel () const
| This function returns the eventual base channel for reading of a series of indirect channels provided by descendents of `PIndirectChannel`. More...
virtual PChannel * | GetBaseWriteChannel () const
| This function returns the eventual base channel for writing of a series of indirect channels provided by descendents of `PIndirectChannel`. More...
virtual PString | GetErrorText (ErrorGroup group=NumErrorGroups) const
| Get error message description. More...
PBoolean | Open (PChannel &channel)
| Set the channel for both read and write operations. More...
PBoolean | Open (PChannel *channel, PBoolean autoDelete=true)
| Set the channel for both read and write operations. More...
PBoolean | Open (PChannel *readChannel, PChannel *writeChannel, PBoolean autoDeleteRead=true, PBoolean autoDeleteWrite=true)
| Set the channel for both read and write operations. More...
PChannel * | GetReadChannel () const
| Get the channel used for read operations. More...
bool | SetReadChannel (PChannel *channel, bool autoDelete=true, bool closeExisting=false)
| Set the channel for read operations. More...
PChannel * | GetWriteChannel () const
| Get the channel used for write operations. More...
PBoolean | SetWriteChannel (PChannel *channel, bool autoDelete=true, bool closeExisting=false)
| Set the channel for read operations. More...
Public Member Functions inherited from PChannel
PBoolean | SetErrorValues (Errors errorCode, int osError, ErrorGroup group=LastGeneralError)
| Set error values to those specified. More...
| PChannel ()
| Create the channel. More...
| ~PChannel ()
| Close down the channel. More...
virtual PINDEX | HashFunction () const
| Calculate a hash value for use in sets and dictionaries. More...
int | GetHandle () const
| Get the integer operating system handle for the channel. More...
void | SetReadTimeout (const PTimeInterval &time)
| Set the timeout for read operations. More...
PTimeInterval | GetReadTimeout () const
| Get the timeout for read operations. More...
virtual PINDEX | GetLastReadCount () const
| Get the number of bytes read by the last Read() call. More...
virtual int | ReadChar ()
| Read a single 8 bit byte from the channel. More...
PBoolean | ReadBlock (void *buf, PINDEX len)
| Read len bytes into the buffer from the channel. More...
PString | ReadString (PINDEX len)
| Read `len` character into a string from the channel. More...
virtual PBoolean | ReadAsync (void *buf, PINDEX len)
| Begin an asynchronous read from channel. More...
virtual void | OnReadComplete (void *buf, PINDEX len)
| User callback function for when a `ReadAsync()` call has completed or timed out. More...
void | SetWriteTimeout (const PTimeInterval &time)
| Set the timeout for write operations to complete. More...
PTimeInterval | GetWriteTimeout () const
| Get the timeout for write operations to complete. More...
virtual PBoolean | Write (const void *buf, PINDEX len, const void *mark)
| Low level write to the channel with marker. More...
virtual PINDEX | GetLastWriteCount () const
| Get the number of bytes written by the last Write() call. More...
PBoolean | WriteChar (int c)
| Write a single character to the channel. More...
PBoolean | WriteString (const PString &str)
| Write a string to the channel. More...
virtual PBoolean | WriteAsync (const void *buf, PINDEX len)
| Begin an asynchronous write from channel. More...
virtual void | OnWriteComplete (const void *buf, PINDEX len)
| User callback function for when a WriteAsync() call has completed or timed out. More...
virtual bool | FlowControl (const void *flowData)
| Flow Control information Pass data to the channel for flowControl determination. More...
PBoolean | SetBufferSize (PINDEX newSize)
| Set the iostream buffer size for reads and writes. More...
PBoolean | SendCommandString (const PString &command)
| Send a command meta-string. More...
void | AbortCommandString ()
| Abort a command string that is in progress. More...
Errors | GetErrorCode (ErrorGroup group=NumErrorGroups) const
| Get normalised error code. More...
int | GetErrorNumber (ErrorGroup group=NumErrorGroups) const
| Get OS errro code. More...
virtual PBoolean | Read (const VectorOfSlice &slices)
| Low level scattered read from the channel. More...
virtual PBoolean | Write (const VectorOfSlice &slices)
| Low level scattered write to the channel. More...
Public Member Functions inherited from PObject
virtual | ~PObject ()
virtual PObject * | Clone () const
| Create a copy of the class on the heap. More...
virtual const char * | GetClass (unsigned ancestor=0) const
| Get the current dynamic type of the object instance. More...
PBoolean | IsClass (const char *cls) const
virtual PBoolean | InternalIsDescendant (const char *clsName) const
| Determine if the dynamic type of the current instance is a descendent of the specified class. More...
virtual Comparison | CompareObjectMemoryDirect (const PObject &obj) const
| Determine the byte wise comparison of two objects. More...
bool | operator== (const PObject &obj) const
| Compare the two objects. More...
bool | operator!= (const PObject &obj) const
| Compare the two objects. More...
bool | operator< (const PObject &obj) const
| Compare the two objects. More...
bool | operator> (const PObject &obj) const
| Compare the two objects. More...
bool | operator<= (const PObject &obj) const
| Compare the two objects. More...
bool | operator>= (const PObject &obj) const
| Compare the two objects. More...
virtual void | PrintOn (ostream &strm) const
| Output the contents of the object to the stream. More...
virtual void | ReadFrom (istream &strm)
| Input the contents of the object from the stream. More...

## Protected Attributes

PThreadObj< PSNMPServer > | m_thread
PString | community
PASN_Integer | version
PINDEX | lastErrorIndex
ErrorType | lastErrorCode
PBYTEArray | readBuffer
PINDEX | maxRxSize
PINDEX | maxTxSize
PUDPSocket * | baseSocket
PDictionary< PRFC1155_ObjectName, PRFC1155_ObjectSyntax > | objList
Protected Attributes inherited from PIndirectChannel
PChannel * | readChannel
| Channel for read operations. More...
PBoolean | readAutoDelete
| Automatically delete read channel on destruction. More...
PChannel * | writeChannel
| Channel for write operations. More...
PBoolean | writeAutoDelete
| Automatically delete write channel on destruction. More...
PReadWriteMutex | channelPointerMutex
| Race condition prevention on closing channel. More...
Protected Attributes inherited from PChannel
int | os_handle
| The operating system file handle return by standard open() function. More...
Errors | lastErrorCode [NumErrorGroups+1]
| The platform independant error code. More...
int | lastErrorNumber [NumErrorGroups+1]
| The operating system error number (eg as returned by errno). More...
PINDEX | lastReadCount
| Number of byte last read by the Read() function. More...
PINDEX | lastWriteCount
| Number of byte last written by the Write() function. More...
PTimeInterval | readTimeout
| Timeout for read operations. More...
PTimeInterval | writeTimeout
| Timeout for write operations. More...
PString | channelName
PMutex | px_threadMutex
PXBlockType | px_lastBlockType
PThread * | px_readThread
PThread * | px_writeThread
PMutex | px_writeMutex
PThread * | px_selectThread [3]
PMutex | px_selectMutex [3]

## Additional Inherited Members

Public Types inherited from PSNMP
enum | ErrorType { NoError = 0, TooBig = 1, NoSuchName = 2, BadValue = 3, ReadOnly = 4, GenErr = 5, NoResponse, MalformedResponse, SendFailed, RxBufferTooSmall, TxDataTooBig, NumErrors }
enum | RequestType { GetRequest = 0, GetNextRequest = 1, GetResponse = 2, SetRequest = 3, Trap = 4 }
enum | { TrapPort = 162 }
enum | TrapType { ColdStart = 0, WarmStart = 1, LinkDown = 2, LinkUp = 3, AuthenticationFailure = 4, EGPNeighbourLoss = 5, EnterpriseSpecific = 6, NumTrapTypes }
typedef list< pair< PString, PRFC1155_ObjectSyntax > > | BindingList
Public Types inherited from PChannel
enum | PXBlockType { PXReadBlock, PXWriteBlock, PXAcceptBlock, PXConnectBlock }
enum | ShutdownValue { ShutdownRead = 0, ShutdownWrite = 1, ShutdownReadAndWrite = 2 }
enum | Errors { NoError, NotFound, FileExists, DiskFull, AccessDenied, DeviceInUse, BadParameter, NoMemory, NotOpen, Timeout, Interrupted, BufferTooSmall, Miscellaneous, ProtocolFailure, NumNormalisedErrors }
| Normalised error codes. More...
enum | ErrorGroup { LastReadError, LastWriteError, LastGeneralError, NumErrorGroups }
| Error groups. More...
typedef std::vector< Slice > | VectorOfSlice
Public Types inherited from PObject
enum | Comparison { LessThan = -1, EqualTo = 0, GreaterThan = 1 }
| Result of the comparison operation performed by the `Compare()` function. More...
Static Public Member Functions inherited from PSNMP
static PString | GetErrorText (ErrorType err)
static PString | GetTrapTypeText (PINDEX code)
static void | SendEnterpriseTrap (const PIPSocket::Address &addr, const PString &community, const PString &enterprise, PINDEX specificTrap, PASNUnsigned timeTicks, WORD sendPort=TrapPort)
static void | SendEnterpriseTrap (const PIPSocket::Address &addr, const PString &community, const PString &enterprise, PINDEX specificTrap, PASNUnsigned timeTicks, const PSNMPVarBindingList &vars, WORD sendPort=TrapPort)
static void | SendTrap (const PIPSocket::Address &addr, PSNMP::TrapType trapType, const PString &community, const PString &enterprise, PINDEX specificTrap, PASNUnsigned timeTicks, const PSNMPVarBindingList &vars, WORD sendPort=TrapPort)
static void | SendTrap (const PIPSocket::Address &addr, PSNMP::TrapType trapType, const PString &community, const PString &enterprise, PINDEX specificTrap, PASNUnsigned timeTicks, const PSNMPVarBindingList &vars, const PIPSocket::Address &agentAddress, WORD sendPort=TrapPort)
static void | WriteTrap (PChannel &channel, PSNMP::TrapType trapType, const PString &community, const PString &enterprise, PINDEX specificTrap, PASNUnsigned timeTicks, const PSNMPVarBindingList &vars, const PIPSocket::Address &agentAddress)
Static Public Member Functions inherited from PChannel
static PBoolean | ConvertOSError (int libcReturnValue, Errors &lastError, int &osError)
| Convert an operating system error into platform independent error. More...
static PString | GetErrorText (Errors lastError, int osError=0)
| Get error message description. More...
Static Public Member Functions inherited from PObject
static const char * | Class ()
| Get the name of the class as a C string. More...
static Comparison | InternalCompareObjectMemoryDirect (const PObject *obj1, const PObject *obj2, PINDEX size)
| Internal function caled from CompareObjectMemoryDirect() More...
Protected Member Functions inherited from PIndirectChannel
virtual PBoolean | OnOpen ()
| This callback is executed when the Open() function is called with open channels. More...
Protected Member Functions inherited from PChannel
| PChannel (const PChannel &)
PChannel & | operator= (const PChannel &)
virtual PBoolean | ConvertOSError (int libcReturnValue, ErrorGroup group=LastGeneralError)
| Convert an operating system error into platform independent error. More...
int | ReadCharWithTimeout (PTimeInterval &timeout)
| Read a character with specified timeout. More...
PBoolean | ReceiveCommandString (int nextChar, const PString &reply, PINDEX &pos, PINDEX start)
PBoolean | PXSetIOBlock (PXBlockType type, const PTimeInterval &timeout)
int | PXClose ()
Protected Member Functions inherited from PObject
| PObject ()
| Constructor for PObject, made protected so cannot ever create one on its own. More...

## Detailed Description

Class which supplies SNMP data.

## Constructor & Destructor Documentation

## PSNMPServer()

PSNMPServer::PSNMPServer | ( | PIPSocket::Address | binding = `PIPSocket::GetDefaultIpAny()`,
|  | WORD | localPort = `161`,
|  | PINDEX | timeout = `5000`,
|  | PINDEX | rxSize = `10000`,
|  | PINDEX | txSize = `10000`
| ) |  |

## ~PSNMPServer()

PSNMPServer::~PSNMPServer | ( |  | ) |

## Member Function Documentation

## Authorise()

virtual PBoolean PSNMPServer::Authorise | ( | const PIPSocket::Address & | received | ) |

virtual

## ConfirmCommunity()

virtual PBoolean PSNMPServer::ConfirmCommunity | ( | PASN_OctetString & | community | ) |

virtual

## ConfirmVersion()

virtual PBoolean PSNMPServer::ConfirmVersion | ( | PASN_Integer | vers | ) |

virtual

## HandleChannel()

PBoolean PSNMPServer::HandleChannel | ( |  | ) |

## Main()

void PSNMPServer::Main | ( |  | ) |

## MIB_LocalMatch()

virtual PBoolean PSNMPServer::MIB_LocalMatch | ( | PSNMP_PDU & | pdu | ) |

virtual

## OnGetNextRequest()

virtual PBoolean PSNMPServer::OnGetNextRequest | ( | PINDEX | reqID,
|  | PSNMP::BindingList & | vars,
|  | PSNMP::ErrorType & | errCode
| ) |  |

virtual

## OnGetRequest()

virtual PBoolean PSNMPServer::OnGetRequest | ( | PINDEX | reqID,
|  | PSNMP::BindingList & | vars,
|  | PSNMP::ErrorType & | errCode
| ) |  |

virtual

## OnSetRequest()

virtual PBoolean PSNMPServer::OnSetRequest | ( | PINDEX | reqID,
|  | PSNMP::BindingList & | vars,
|  | PSNMP::ErrorType & | errCode
| ) |  |

virtual

## ProcessPDU()

PBoolean PSNMPServer::ProcessPDU | ( | const PBYTEArray & | readBuffer,
|  | PBYTEArray & | writeBuffer
| ) |  |

## SendGetResponse()

PSNMP::ErrorType PSNMPServer::SendGetResponse | ( | PSNMPVarBindingList & | vars | ) |

## SetVersion()

void PSNMPServer::SetVersion | ( | PASNInt | newVersion | ) |

## Member Data Documentation

## baseSocket

PUDPSocket* PSNMPServer::baseSocket

protected

## community

PString PSNMPServer::community

protected

## lastErrorCode

ErrorType PSNMPServer::lastErrorCode

protected

## lastErrorIndex

PINDEX PSNMPServer::lastErrorIndex

protected

## m_thread

PThreadObj<PSNMPServer> PSNMPServer::m_thread

protected

## maxRxSize

PINDEX PSNMPServer::maxRxSize

protected

## maxTxSize

PINDEX PSNMPServer::maxTxSize

protected

## objList

PDictionary<PRFC1155_ObjectName, PRFC1155_ObjectSyntax> PSNMPServer::objList

protected

## readBuffer

PBYTEArray PSNMPServer::readBuffer

protected

## version

PASN_Integer PSNMPServer::version

protected

The documentation for this class was generated from the following file:

- psnmp.h