windows-nt/Source/XPSP1/NT/net/ias/protocol/proxy/translate.h
2020-09-26 16:20:57 +08:00

97 lines
2.4 KiB
C++

///////////////////////////////////////////////////////////////////////////////
//
// Copyright (c) 2000, Microsoft Corp. All rights reserved.
//
// FILE
//
// translate.cpp
//
// SYNOPSIS
//
// Defines the class Translator.
//
// MODIFICATION HISTORY
//
// 02/04/2000 Original version.
//
///////////////////////////////////////////////////////////////////////////////
#ifndef TRANSLATE_H
#define TRANSLATE_H
#if _MSC_VER >= 1000
#pragma once
#endif
#include <attrdnry.h>
#include <iastlutl.h>
using namespace IASTL;
struct RadiusAttribute;
///////////////////////////////////////////////////////////////////////////////
//
// CLASS
//
// Translator
//
///////////////////////////////////////////////////////////////////////////////
class Translator
{
public:
HRESULT FinalConstruct() throw ();
// Converts an IAS attribute to RADIUS format and stores it in dst.
void toRadius(
IASATTRIBUTE& src,
IASAttributeVector& dst
) const;
// Convert a RADIUS attribute to IAS format and stores it in dst.
void fromRadius(
const RadiusAttribute& src,
DWORD flags,
IASAttributeVector& dst
);
protected:
// Decodes an RADIUS attribute value into dst.
static void decode(
IASTYPE dstType,
const BYTE* src,
ULONG srclen,
IASAttribute& dst
);
// Returns the number of bytes required to encode src.
static ULONG getEncodedSize(
const IASATTRIBUTE& src
) throw ();
// Encodes src into dst. dst must be long enough to hold the result.
static void encode(
PBYTE dst,
const IASATTRIBUTE& src
) throw ();
// Encodes src into dst. Returns the length of the encode data (not counting
// the header).
static ULONG encode(
ULONG headerLength,
const IASATTRIBUTE& src,
IASAttribute& dst
);
// Breaks src into multiple attributes if necessary and stores the result in
// dst.
static void scatter(
ULONG headerLength,
IASATTRIBUTE& src,
IASAttributeVector& dst
);
private:
AttributeDictionary dnary;
};
#endif // TRANSLATE_H