📄 pasn.h
字号:
void PrintOn(ostream & strm) const;
void Encode(PBYTEArray & buffer);
WORD GetEncodedLength();
PObject * Clone() const;
PASNInt GetInteger() const;
PString GetString () const;
ASNType GetType() const;
PString GetTypeAsString() const;
private:
PASNInt value;
};
//////////////////////////////////////////////////////////////////////////
/** A descendant of PASNObject which is a simple ASN OctetStr type
*/
class PASNString : public PASNObject
{
PCLASSINFO(PASNString, PASNObject)
public:
PASNString(const PString & str);
PASNString(const BYTE * ptr, int len);
PASNString(const PBYTEArray & buffer, PASNObject::ASNType = String);
PASNString(const PBYTEArray & buffer, PINDEX & ptr, PASNObject::ASNType = String);
void PrintOn(ostream & strm) const;
void Encode(PBYTEArray & buffer)
{ Encode(buffer, String); }
WORD GetEncodedLength();
PObject * Clone() const;
PString GetString() const;
ASNType GetType() const;
PString GetTypeAsString() const;
protected:
BOOL Decode(const PBYTEArray & buffer, PINDEX & i, PASNObject::ASNType type);
void Encode(PBYTEArray & buffer, PASNObject::ASNType type);
PString value;
WORD valueLen;
};
//////////////////////////////////////////////////////////////////////////
/** A descendant of PASNObject which is an IP address type
*/
class PASNIPAddress : public PASNString
{
PCLASSINFO(PASNIPAddress, PASNString)
public:
PASNIPAddress(const PIPSocket::Address & addr)
: PASNString((const BYTE *)addr.GetPointer(), addr.GetSize()) { }
PASNIPAddress(const PString & str);
PASNIPAddress(const PBYTEArray & buffer)
: PASNString(buffer, IPAddress) { }
PASNIPAddress(const PBYTEArray & buffer, PINDEX & ptr)
: PASNString(buffer, ptr, IPAddress) { }
PASNObject::ASNType GetType() const
{ return IPAddress; }
void Encode(PBYTEArray & buffer)
{ PASNString::Encode(buffer, IPAddress); }
PString GetString() const;
PString GetTypeAsString() const;
PObject * Clone() const
{ return PNEW PASNIPAddress(*this); }
PIPSocket::Address GetIPAddress () const;
};
//////////////////////////////////////////////////////////////////////////
/** A descendant of PASNObject which is an unsigned ASN integer type.
*/
class PASNUnsignedInteger : public PASNObject
{
PCLASSINFO(PASNUnsignedInteger, PASNObject)
public:
PASNUnsignedInteger(PASNUnsigned val)
{ value = val; }
PASNUnsignedInteger(const PBYTEArray & buffer, PINDEX & ptr);
void PrintOn(ostream & strm) const;
WORD GetEncodedLength();
PString GetString () const;
PASNUnsigned GetUnsigned() const;
protected:
PASNUnsignedInteger()
{ value = 0; }
BOOL Decode(const PBYTEArray & buffer, PINDEX & i, PASNObject::ASNType theType);
void Encode(PBYTEArray & buffer, PASNObject::ASNType theType);
private:
PASNUnsigned value;
};
//////////////////////////////////////////////////////////////////////////
/** A descendant of PASNObject which is an unsigned ASN time tick type.
*/
class PASNTimeTicks : public PASNUnsignedInteger
{
PCLASSINFO(PASNTimeTicks, PASNUnsignedInteger)
public:
PASNTimeTicks(PASNUnsigned val)
: PASNUnsignedInteger(val) { }
PASNTimeTicks(const PBYTEArray & buffer, PINDEX & ptr)
{ PASNUnsignedInteger::Decode(buffer, ptr, TimeTicks); }
void Encode(PBYTEArray & buffer)
{ PASNUnsignedInteger::Encode(buffer, TimeTicks); }
PObject * Clone() const
{ return PNEW PASNTimeTicks(*this); }
PASNObject::ASNType GetType() const
{ return TimeTicks; }
PString GetTypeAsString() const;
};
//////////////////////////////////////////////////////////////////////////
/** A descendant of PASNObject which is an unsigned ASN counter type.
*/
class PASNCounter : public PASNUnsignedInteger
{
PCLASSINFO(PASNCounter, PASNUnsignedInteger)
public:
PASNCounter(PASNUnsigned val)
: PASNUnsignedInteger(val) { }
PASNCounter(const PBYTEArray & buffer, PINDEX & ptr)
{ PASNUnsignedInteger::Decode(buffer, ptr, Counter); }
void Encode(PBYTEArray & buffer)
{ PASNUnsignedInteger::Encode(buffer, Counter); }
PObject * Clone() const
{ return PNEW PASNCounter(*this); }
PASNObject::ASNType GetType() const
{ return Counter; }
PString GetTypeAsString() const;
};
//////////////////////////////////////////////////////////////////////////
/** A descendant of PASNObject which is an unsigned ASN guage type.
*/
class PASNGauge : public PASNUnsignedInteger
{
PCLASSINFO(PASNGauge, PASNUnsignedInteger)
public:
PASNGauge(PASNUnsigned val)
: PASNUnsignedInteger(val) { }
PASNGauge(const PBYTEArray & buffer, PINDEX & ptr)
{ Decode(buffer, ptr); }
BOOL Decode(const PBYTEArray & buffer, PINDEX & i)
{ return PASNUnsignedInteger::Decode(buffer, i, Gauge); }
void Encode(PBYTEArray & buffer)
{ PASNUnsignedInteger::Encode(buffer, Gauge); }
PObject * Clone() const
{ return PNEW PASNGauge(*this); }
PASNObject::ASNType GetType() const
{ return Gauge; }
PString GetTypeAsString() const;
};
//////////////////////////////////////////////////////////////////////////
/** A descendant of PASNObject which is an unsigned ASN ObjID type.
*/
class PASNObjectID : public PASNObject
{
PCLASSINFO(PASNObjectID, PASNObject)
public:
PASNObjectID(const PString & str);
PASNObjectID(PASNOid * val, BYTE theLen);
PASNObjectID(const PBYTEArray & buffer);
PASNObjectID(const PBYTEArray & buffer, PINDEX & ptr);
void PrintOn(ostream & strm) const;
void Encode(PBYTEArray & buffer);
WORD GetEncodedLength();
PObject * Clone() const;
ASNType GetType() const;
PString GetString () const;
PString GetTypeAsString() const;
protected:
BOOL Decode(const PBYTEArray & buffer, PINDEX & i);
private:
PDWORDArray value;
};
//////////////////////////////////////////////////////////////////////////
/** A descendant of PASNObject which is the NULL type
*/
class PASNNull : public PASNObject
{
PCLASSINFO(PASNNull, PASNObject)
public:
PASNNull();
PASNNull(const PBYTEArray & buffer, PINDEX & ptr);
void PrintOn(ostream & strm) const;
void Encode(PBYTEArray & buffer);
WORD GetEncodedLength();
PObject * Clone() const;
ASNType GetType() const;
PString GetString () const;
PString GetTypeAsString() const;
};
//////////////////////////////////////////////////////////////////////////
/** A descendant of PASNObject which is the complex sequence type
*/
class PASNSequence : public PASNObject
{
PCLASSINFO(PASNSequence, PASNObject)
public:
PASNSequence();
PASNSequence(BYTE selector);
PASNSequence(const PBYTEArray & buffer);
PASNSequence(const PBYTEArray & buffer, PINDEX & i);
void Append(PASNObject * obj);
PINDEX GetSize() const;
PASNObject & operator [] (PINDEX idx) const;
const PASNSequence & GetSequence() const;
void AppendInteger (PASNInt value);
void AppendString (const PString & str);
void AppendObjectID(const PString & str);
void AppendObjectID(PASNOid * val, BYTE len);
int GetChoice() const;
// PASNInt GetInteger (PINDEX idx) const;
// PString GetString (PINDEX idx) const;
void PrintOn(ostream & strm) const;
void Encode(PBYTEArray & buffer);
BOOL Decode(const PBYTEArray & buffer, PINDEX & i);
WORD GetEncodedLength();
ASNType GetType() const;
PString GetTypeAsString() const;
BOOL Encode(PBYTEArray & buffer, PINDEX maxLen) ;
private:
PASNObjectList sequence;
BYTE type;
ASNType asnType;
WORD encodedLen;
WORD seqLen;
};
#endif
// End of File.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -