You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
216 lines
4.7 KiB
216 lines
4.7 KiB
// Copyright (c) 1997-2001 Microsoft Corporation, All Rights Reserved
|
|
/*--------------------------------------------------
|
|
Filename: transp.hpp (transport.hpp)
|
|
Author: B.Rajeev
|
|
Purpose: Provides declarations for the SnmpTransport class
|
|
and its derivatives
|
|
--------------------------------------------------*/
|
|
|
|
#ifndef __TRANSPORT__
|
|
#define __TRANSPORT__
|
|
|
|
#include "forward.h"
|
|
#include "address.h"
|
|
|
|
#pragma warning (disable:4355)
|
|
|
|
class DllImportExport SnmpTransport
|
|
{
|
|
private:
|
|
|
|
SnmpTransportAddress *transport_address;
|
|
|
|
// the "=" operator and the copy constructor have been
|
|
// made private to prevent any copies from being made
|
|
SnmpTransport &operator=(IN const SnmpTransport &transport)
|
|
{
|
|
return *this;
|
|
}
|
|
|
|
SnmpTransport(IN const SnmpTransport &snmp_transport) {}
|
|
|
|
protected:
|
|
|
|
SnmpTransport(IN SnmpSession &session,
|
|
IN const SnmpTransportAddress &transportAddress);
|
|
|
|
virtual void TransportFlowControlOn() = 0;
|
|
|
|
virtual void TransportFlowControlOff() = 0;
|
|
|
|
public:
|
|
|
|
virtual ~SnmpTransport();
|
|
|
|
|
|
virtual void TransportSendFrame(
|
|
|
|
OUT TransportFrameId &transport_frame_id,
|
|
IN SnmpPdu &snmpPdu
|
|
|
|
) = 0 ;
|
|
|
|
virtual void TransportReceiveFrame (
|
|
|
|
IN SnmpPdu &snmpPdu,
|
|
IN SnmpErrorReport &errorReport
|
|
|
|
) = 0 ;
|
|
|
|
virtual void TransportSentFrame (
|
|
|
|
IN TransportFrameId transport_frame_id,
|
|
IN SnmpErrorReport &errorReport
|
|
|
|
) = 0;
|
|
|
|
virtual SnmpTransportAddress &GetTransportAddress() ;
|
|
|
|
virtual void * operator()(void) const = 0;
|
|
|
|
};
|
|
|
|
// forward declaration
|
|
class TransportSession;
|
|
|
|
class DllImportExport SnmpImpTransport: public SnmpTransport
|
|
{
|
|
friend TransportWindow;
|
|
|
|
private:
|
|
|
|
BOOL transport_created;
|
|
SnmpSession &session;
|
|
TransportWindow *transport;
|
|
|
|
// References to the following instances are used instead of
|
|
// embedded instances themselves. This is done to avoid including
|
|
// the header files providing their declaration
|
|
|
|
TransportSentStateStore store;
|
|
static TransportFrameId next_transport_frame_id;
|
|
|
|
protected:
|
|
|
|
BOOL is_valid;
|
|
|
|
virtual void HandleSentFrame(IN const TransportFrameId transport_frame_id);
|
|
|
|
void TransportFlowControlOn() {}
|
|
|
|
void TransportFlowControlOff() {}
|
|
|
|
public:
|
|
|
|
SnmpImpTransport(IN SnmpSession &session,
|
|
IN const SnmpTransportAddress &address);
|
|
|
|
~SnmpImpTransport();
|
|
|
|
void TransportSendFrame (
|
|
|
|
OUT TransportFrameId &transport_frame_id,
|
|
IN SnmpPdu &snmpPdu
|
|
) ;
|
|
|
|
void TransportReceiveFrame (
|
|
|
|
IN SnmpPdu &snmpPdu ,
|
|
IN SnmpErrorReport &errorReport
|
|
) ;
|
|
|
|
void TransportSentFrame (
|
|
|
|
IN TransportFrameId transport_frame_id,
|
|
IN SnmpErrorReport &errorReport
|
|
|
|
);
|
|
|
|
void * operator()(void) const
|
|
{
|
|
return ( is_valid?(void *)this:NULL );
|
|
}
|
|
|
|
};
|
|
|
|
class DllImportExport SnmpUdpIpTransport: public SnmpImpTransport
|
|
{
|
|
private:
|
|
protected:
|
|
public:
|
|
|
|
SnmpUdpIpTransport(IN SnmpSession &session,
|
|
IN const SnmpTransportIpAddress &ipAddress);
|
|
};
|
|
|
|
class DllImportExport SnmpUdpIpImp : public SnmpTransportIpAddress ,
|
|
public SnmpUdpIpTransport
|
|
{
|
|
public:
|
|
|
|
SnmpUdpIpImp(IN SnmpSession &session,
|
|
IN const char *address,
|
|
IN const ULONG addressResolution = SNMP_ADDRESS_RESOLVE_VALUE )
|
|
: SnmpTransportIpAddress(address,addressResolution),
|
|
SnmpUdpIpTransport(session, *this)
|
|
{}
|
|
|
|
SnmpUdpIpImp(IN SnmpSession &session,
|
|
IN const UCHAR *address)
|
|
: SnmpTransportIpAddress(address, SNMP_IP_ADDR_LEN),
|
|
SnmpUdpIpTransport(session, *this)
|
|
{}
|
|
|
|
SnmpUdpIpImp(IN SnmpSession &session,
|
|
IN const SnmpTransportIpAddress &address)
|
|
: SnmpTransportIpAddress(address),
|
|
SnmpUdpIpTransport(session, *this)
|
|
{}
|
|
|
|
void * operator()(void) const;
|
|
|
|
~SnmpUdpIpImp() {}
|
|
} ;
|
|
|
|
class DllImportExport SnmpIpxTransport: public SnmpImpTransport
|
|
{
|
|
private:
|
|
protected:
|
|
public:
|
|
|
|
SnmpIpxTransport(IN SnmpSession &session,
|
|
IN const SnmpTransportIpxAddress &ipxAddress);
|
|
};
|
|
|
|
class DllImportExport SnmpIpxImp : public SnmpTransportIpxAddress ,
|
|
public SnmpIpxTransport
|
|
{
|
|
public:
|
|
|
|
SnmpIpxImp(IN SnmpSession &session,
|
|
IN const char *address
|
|
)
|
|
: SnmpTransportIpxAddress(address),
|
|
SnmpIpxTransport(session, *this)
|
|
{}
|
|
|
|
SnmpIpxImp(IN SnmpSession &session,
|
|
IN const UCHAR *address)
|
|
: SnmpTransportIpxAddress(address, SNMP_IPX_ADDR_LEN),
|
|
SnmpIpxTransport(session, *this)
|
|
{}
|
|
|
|
SnmpIpxImp(IN SnmpSession &session,
|
|
IN const SnmpTransportIpxAddress &address)
|
|
: SnmpTransportIpxAddress(address),
|
|
SnmpIpxTransport(session, *this)
|
|
{}
|
|
|
|
void * operator()(void) const;
|
|
|
|
~SnmpIpxImp() {}
|
|
} ;
|
|
|
|
#pragma warning (default:4355)
|
|
|
|
#endif // __TRANSPORT__
|