Source code of Windows XP (NT5)
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.
|
|
/*++
Copyright (c) 1994 Microsoft Corporation
Module Name :
tsres.hxx
Abstract:
Defines a wrapper class for locks ( for TCP Services Resources) used for light-weight syncronization and portability to Win95.
Author:
John Ludeman ( JohnL) 21-Nov-1994
Project:
TCP Services Common DLL
Revision History:
--*/
# ifndef _TSRES_HXX_
# define _TSRES_HXX_
/************************************************************
* Include Headers ************************************************************/
# ifdef __cplusplus
extern "C" { # endif // __cplusplus
# include <nt.h>
# include <ntrtl.h>
# ifdef __cplusplus
}; // extern "C"
# endif // __cplusplus
#include <pudebug.h>
# ifndef TCP_REQUIRE
#define TCP_REQUIRE(x) DBG_REQUIRE(x)
# endif // TCP_REQUIRE
# ifndef TCP_ASSERT
#define TCP_ASSERT(x) DBG_ASSERT(x)
# endif // TCP_REQUIRE
/************************************************************
* Type Definitions ************************************************************/
# ifdef __cplusplus
extern "C" { # endif // __cplusplus
BOOL InetInitializeResource( IN PRTL_RESOURCE Resource );
BOOL InetAcquireResourceShared( IN PRTL_RESOURCE Resource, IN BOOL Wait );
BOOL InetAcquireResourceExclusive( IN PRTL_RESOURCE Resource, IN BOOL Wait );
BOOL InetReleaseResource( IN PRTL_RESOURCE Resource );
BOOL InetConvertSharedToExclusive( IN PRTL_RESOURCE Resource );
BOOL InetConvertExclusiveToShared( IN PRTL_RESOURCE Resource );
VOID InetDeleteResource ( IN PRTL_RESOURCE Resource );
VOID InetDumpResource( IN PRTL_RESOURCE Resource );
# ifdef __cplusplus
}; // extern "C"
# endif // __cplusplus
///////////////////////////////////////////////////////////////////////
//
// Simple RTL_RESOURCE Wrapper class
//
//////////////////////////////////////////////////////////////////////
enum TSRES_LOCK_TYPE { TSRES_LOCK_READ = 0, // Take the lock for read only
TSRES_LOCK_WRITE // Take the lock for write
};
enum TSRES_CONV_TYPE { TSRES_CONV_READ = 0, // Convert the lock from write to read
TSRES_CONV_WRITE // Convert the lock from read to write
};
class dllexp TS_RESOURCE { public: TS_RESOURCE() { DBG_REQUIRE( InetInitializeResource( &_rtlres )); }
~TS_RESOURCE() { InetDeleteResource( &_rtlres ); }
void Lock( enum TSRES_LOCK_TYPE type ) { if ( type == TSRES_LOCK_READ ) { DBG_REQUIRE( InetAcquireResourceShared( &_rtlres, TRUE ) ); } else { DBG_REQUIRE( InetAcquireResourceExclusive( &_rtlres, TRUE )); } }
void Convert( enum TSRES_CONV_TYPE type ) { if ( type == TSRES_CONV_READ ) { DBG_REQUIRE( InetConvertExclusiveToShared( &_rtlres )); } else { DBG_REQUIRE( InetConvertSharedToExclusive( &_rtlres )); } }
void Unlock( VOID ) { DBG_REQUIRE( InetReleaseResource( &_rtlres )); }
private: RTL_RESOURCE _rtlres; };
# endif // _TSRES_HXX_
/************************ End of File ***********************/
|