Leaked source code of windows server 2003
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.
 
 
 
 
 
 

89 lines
2.3 KiB

//***************************************************************************
//
// File:
//
// Module: MS SNMP Provider
//
// Purpose:
//
// Copyright (c) 1997-2001 Microsoft Corporation, All Rights Reserved
//
//***************************************************************************
/*--------------------------------------------------
Filename: frame.hpp
Author: B.Rajeev
Purpose: Provides declarations for the FrameRegistry class.
--------------------------------------------------*/
#ifndef __FRAME_REGISTRY__
#define __FRAME_REGISTRY__
#define ILLEGAL_SESSION_FRAME_ID 0
#include "forward.h"
#include "common.h"
#include "message.h"
typedef CMap<SessionFrameId, SessionFrameId, WaitingMessage *, WaitingMessage *> FrameMapping;
/*--------------------------------------------------
Overview:
---------
FrameRegistry: Provides access to WaitingMessages in a store
through their SessionFrameId.
This enables cancellation of SendFrame request. The frame id
is supplied by the calling SnmpOperation to the session.
When the operation tries to cancel a SendFrame request,
SnmpImpSession calls the CancelFrameNotification. This method
informs the flow control mechanism of the event (which may
Deregister the waiting message erasing the
<SessionFrameId, WaitingMessage>association).
--------------------------------------------------*/
class FrameRegistry
{
// it stores the waiting messages in the context of this session
SnmpImpSession *session;
// used to generate session frame ids
SessionFrameId next_session_frame_id;
// stores pairs of the form <SessionFrameId, WaitingMessage *>
FrameMapping mapping;
public:
FrameRegistry(IN SnmpImpSession &session)
{
FrameRegistry::session = &session;
next_session_frame_id = ILLEGAL_SESSION_FRAME_ID+1;
}
SessionFrameId GenerateSessionFrameId(void);
void RegisterFrame(IN const SessionFrameId session_frame_id, IN WaitingMessage &waiting_message);
void DeregisterFrame(IN const SessionFrameId session_frame_id);
// returns NULL if no such waiting message
WaitingMessage *GetWaitingMessage(IN const SessionFrameId session_frame_id);
void CancelFrameNotification(IN const SessionFrameId session_frame_id);
~FrameRegistry(void);
};
#endif // __FRAME_REGISTRY__