227 lines
5.1 KiB
C++
227 lines
5.1 KiB
C++
/*
|
|
* ogcccode.h
|
|
*
|
|
* Copyright (c) 1994 by DataBeam Corporation, Lexington, KY
|
|
*
|
|
* Abstract:
|
|
* This is the interface file for the CGCCCoder class. This
|
|
* class is used to encode and decode GCC Protocol Data Units (PDU's)
|
|
* to and from ASN.1 compliant byte streams using the ASN.1 toolkit.
|
|
*
|
|
* Caveats:
|
|
* None.
|
|
*
|
|
* Author:
|
|
* John B. O'Nan
|
|
*
|
|
*/
|
|
#ifndef _CGCCCODER_
|
|
#define _CGCCCODER_
|
|
|
|
#include "pktcoder.h"
|
|
#include "pdutypes.h"
|
|
#include "gccpdu.h"
|
|
|
|
/*
|
|
* Macros
|
|
*/
|
|
#define MAXIMUM_PDU_SIZE 512
|
|
#define DECODED_ROSTER_PDU_SIZE 1024
|
|
|
|
#define USER_ID_INDICATION 0x61
|
|
#define CONFERENCE_CREATE_REQUEST 0x62
|
|
#define CONFERENCE_CREATE_RESPONSE 0x63
|
|
#define CONFERENCE_QUERY_REQUEST 0x64
|
|
#define CONFERENCE_QUERY_RESPONSE 0x65
|
|
#define CONFERENCE_JOIN_REQUEST 0x66
|
|
#define CONFERENCE_JOIN_RESPONSE 0x67
|
|
#define CONFERENCE_INVITE_REQUEST 0x68
|
|
#define CONFERENCE_INVITE_RESPONSE 0x69
|
|
#define ROSTER_UPDATE_INDICATION 0x7e
|
|
#define MULTIPLE_OCTET_ID 0x7f
|
|
#define REGISTER_CHANNEL_REQUEST 0xa0
|
|
#define ASSIGN_TOKEN_REQUEST 0xa1
|
|
#define RETRIEVE_ENTRY_REQUEST 0xa3
|
|
#define DELETE_ENTRY_REQUEST 0xa4
|
|
#define REGISTRY_RESPONSE 0xa9
|
|
|
|
|
|
/*
|
|
* This is the class definition for class CGCCCoder
|
|
*/
|
|
class CGCCCoder : public PacketCoder
|
|
{
|
|
public:
|
|
CGCCCoder ();
|
|
BOOL Init ( void );
|
|
virtual ~CGCCCoder ();
|
|
virtual BOOL Encode (LPVOID pdu_structure,
|
|
int pdu_type,
|
|
UINT rules_type,
|
|
LPBYTE *encoding_buffer,
|
|
UINT *encoding_buffer_length);
|
|
|
|
virtual BOOL Decode (LPBYTE encoded_buffer,
|
|
UINT encoded_buffer_length,
|
|
int pdu_type,
|
|
UINT rules_type,
|
|
LPVOID *decoding_buffer,
|
|
UINT *decoding_buffer_length);
|
|
|
|
virtual void FreeEncoded (LPBYTE encoded_buffer);
|
|
|
|
virtual void FreeDecoded (int pdu_type, LPVOID decoded_buffer);
|
|
|
|
virtual BOOL IsMCSDataPacket ( LPBYTE, UINT )
|
|
{ return FALSE; };
|
|
|
|
private:
|
|
BOOL IsObjectIDCompliant (PKey t124_identifier);
|
|
ASN1encoding_t m_pEncInfo; // ptr to encoder info
|
|
ASN1decoding_t m_pDecInfo; // ptr to decoder info
|
|
};
|
|
typedef CGCCCoder * PCGCCCoder;
|
|
|
|
/*
|
|
* CGCCCoder ()
|
|
*
|
|
* Functional Description:
|
|
* This is the constructor for the CGCCCoder class.
|
|
*
|
|
* Formal Parameters:
|
|
* None.
|
|
*
|
|
* Return Value:
|
|
* None.
|
|
*
|
|
* Side Effects:
|
|
* None.
|
|
*
|
|
* Caveats:
|
|
* None.
|
|
*/
|
|
|
|
/*
|
|
* ~CGCCCoder ()
|
|
*
|
|
* Functional Description:
|
|
* This is a virtual destructor.
|
|
*
|
|
* Formal Parameters:
|
|
* None.
|
|
*
|
|
* Return Value:
|
|
* None.
|
|
*
|
|
* Side Effects:
|
|
* None.
|
|
*
|
|
* Caveats:
|
|
* None.
|
|
*/
|
|
|
|
/*
|
|
* void Encode ( LPVOID pdu_structure,
|
|
* int pdu_type,
|
|
* UINT rules_type,
|
|
* LPBYTE *encoding_buffer,
|
|
* UINT *encoding_buffer_length);
|
|
*
|
|
* Functional Description:
|
|
* This function encodes Protocol data units (PDU's) into ASN.1 compliant
|
|
* byte streams. The Encode happens into an encoder-allocated buffer.
|
|
*
|
|
* Formal Parameters:
|
|
* pdu_structure (i) Pointer to structure holding PDU data.
|
|
* pdu_type (i) Define indicating type of GCC PDU.
|
|
* rules_type (i) Type (PER or BER) of encoding rules to use.
|
|
* encoding_buffer (o) Indirect pointer to buffer to hold encoded data.
|
|
* encoding_buffer_length(o) Pointer that receives the Length of buffer for encoded data.
|
|
*
|
|
* Return Value:
|
|
* None.
|
|
*
|
|
* Side Effects:
|
|
* None.
|
|
*
|
|
* Caveats:
|
|
* None.
|
|
*/
|
|
|
|
/*
|
|
* void Decode ( LPBYTE encoded_buffer,
|
|
* UINT encoded_buffer_length,
|
|
* int pdu_type,
|
|
* UINT rules_type,
|
|
* LPVOID decoding_buffer,
|
|
* UINT decoding_buffer_length,
|
|
* PULong);
|
|
*
|
|
* Functional Description:
|
|
* This function decodes ASN.1 compliant byte streams into the
|
|
* appropriate GCC PDU structures.
|
|
*
|
|
* Formal Parameters:
|
|
* encoded_buffer (i) Pointer to buffer holding data to decode.
|
|
* encoded_buffer_length (i) Length of buffer holding data to decode.
|
|
* pdu_type (i) Define indicating type of GCC PDU.
|
|
* rules_type (i) Type (PER or BER) of encoding rules to use.
|
|
* decoding_buffer (o) Pointer to buffer to hold the decoded data.
|
|
* decoding_buffer_length(i) Length of buffer to hold decoded data.
|
|
*
|
|
* Return Value:
|
|
* None.
|
|
*
|
|
* Side Effects:
|
|
* None.
|
|
*
|
|
* Caveats:
|
|
* None.
|
|
*/
|
|
|
|
/*
|
|
* void CopyDecodedData ( LPVOID pdu_source_structure,
|
|
* LPVOID pdu_destination_structure,
|
|
* UShort pdu_type)
|
|
*
|
|
* Functional Description:
|
|
* This function makes a complete copy of a decoded PDU structure.
|
|
*
|
|
* Formal Parameters:
|
|
* pdu_source_structure (i) Pointer to buffer holding decoded structure.
|
|
* pdu_destination_structure (i) Pointer to copy buffer.
|
|
* pdu_type (i) Define indicating type of GCC PDU.
|
|
*
|
|
* Return Value:
|
|
* None.
|
|
*
|
|
* Side Effects:
|
|
* None.
|
|
*
|
|
* Caveats:
|
|
* None.
|
|
*/
|
|
|
|
/*
|
|
* BOOL IsMCSDataPacket ()
|
|
*
|
|
* Functional Description:
|
|
* This function determines whether the encoded packet is an MCS Data packet
|
|
* or not.
|
|
*
|
|
* Formal Parameters:
|
|
* encoded_buffer (i) Pointer to buffer holding the encoded PDU.
|
|
* rules_type (i) The used encoding rules.
|
|
*
|
|
* Return value:
|
|
* Always returns FALSE.
|
|
*
|
|
* Side Effects:
|
|
* None.
|
|
*
|
|
* Caveats:
|
|
* None.
|
|
*/
|
|
|
|
#endif
|