windows-nt/Source/XPSP1/NT/net/ias/providers/accounting/account.h
2020-09-26 16:20:57 +08:00

128 lines
3.5 KiB
C++

///////////////////////////////////////////////////////////////////////////////
//
// Copyright (c) 1998, Microsoft Corp. All rights reserved.
//
// FILE
//
// account.h
//
// SYNOPSIS
//
// Declares the class Accountant.
//
// MODIFICATION HISTORY
//
// 08/05/1998 Original version.
// 01/19/1999 Add PKT_ACCESS_CHALLENGE.
// 05/18/1999 Store computerName as UTF-8.
//
///////////////////////////////////////////////////////////////////////////////
#ifndef _ACCOUNT_H_
#define _ACCOUNT_H_
#include <lmcons.h>
#include <logfile.h>
#include <logschema.h>
#include <iastl.h>
#include <iastlutl.h>
using namespace IASTL;
#include "resource.h"
class FormattedBuffer;
///////////////////////////////////////////////////////////////////////////////
//
// CLASS
//
// Accountant
//
///////////////////////////////////////////////////////////////////////////////
class ATL_NO_VTABLE Accountant :
public IASRequestHandlerSync,
public CComCoClass<Accountant, &__uuidof(Accounting)>
{
public:
IAS_DECLARE_REGISTRY(Accounting, 1, IAS_REGISTRY_AUTO, IASTypeLibrary)
IAS_DECLARE_OBJECT_ID(IAS_PROVIDER_MICROSOFT_ACCOUNTING)
Accountant() throw ();
//////////
// IIasComponent
//////////
STDMETHOD(Initialize)();
STDMETHOD(Shutdown)();
STDMETHOD(PutProperty)(LONG Id, VARIANT* pValue);
protected:
// Main request processing routine.
virtual IASREQUESTSTATUS onSyncRequest(IRequest* pRequest) throw ();
// Packet types.
enum PacketType
{
PKT_UNKNOWN = 0,
PKT_ACCESS_REQUEST = 1,
PKT_ACCESS_ACCEPT = 2,
PKT_ACCESS_REJECT = 3,
PKT_ACCOUNTING_REQUEST = 4,
PKT_ACCESS_CHALLENGE = 11
};
// Append a record to log file.
void appendRecord(
IASRequest& request,
PacketType packetType,
FormattedBuffer& buffer,
const SYSTEMTIME& localTime
) const throw (_com_error);
// Signature of a record formatter.
typedef void (__stdcall Accountant::*Formatter)(
IASRequest& request,
FormattedBuffer& buffer,
const SYSTEMTIME& localTime,
PATTRIBUTEPOSITION firstPos,
PATTRIBUTEPOSITION lastPos
) const throw (_com_error);
// Formatter for ODBC records.
void __stdcall formatODBCRecord(
IASRequest& request,
FormattedBuffer& buffer,
const SYSTEMTIME& localTime,
PATTRIBUTEPOSITION firstPos,
PATTRIBUTEPOSITION lastPos
) const throw (_com_error);
// Formatter for W3C records.
void __stdcall formatW3CRecord(
IASRequest& request,
FormattedBuffer& buffer,
const SYSTEMTIME& localTime,
PATTRIBUTEPOSITION firstPos,
PATTRIBUTEPOSITION lastPos
) const throw (_com_error);
BOOL logAuth; // Log authentication requests ?
BOOL logAcct; // Log accounting requests ?
BOOL logInterim; // Log interim accounting requests ?
LogFile log; // Log file.
LogSchema schema; // Log schema.
Formatter format; // Pointer to member function being used for formatting.
// Cached computername in UTF-8.
CHAR computerName[MAX_COMPUTERNAME_LENGTH * 3];
DWORD computerNameLen;
};
#endif // _ACCOUNT_H_