reentrant.h
资源名称:snmp_pp.rar [点击查看]
上传用户:ets1996
上传日期:2014-09-30
资源大小:353k
文件大小:2k
源码类别:
SNMP编程
开发平台:
Visual C++
- /*_############################################################################
- _##
- _## reentrant.h
- _##
- _## SNMP++v3.2.22
- _## -----------------------------------------------
- _## Copyright (c) 2001-2007 Jochen Katz, Frank Fock
- _##
- _## This software is based on SNMP++2.6 from Hewlett Packard:
- _##
- _## Copyright (c) 1996
- _## Hewlett-Packard Company
- _##
- _## ATTENTION: USE OF THIS SOFTWARE IS SUBJECT TO THE FOLLOWING TERMS.
- _## Permission to use, copy, modify, distribute and/or sell this software
- _## and/or its documentation is hereby granted without fee. User agrees
- _## to display the above copyright notice and this license notice in all
- _## copies of the software and any documentation of the software. User
- _## agrees to assume all liability for the use of the software;
- _## Hewlett-Packard and Jochen Katz make no representations about the
- _## suitability of this software for any purpose. It is provided
- _## "AS-IS" without warranty of any kind, either express or implied. User
- _## hereby grants a royalty-free license to any and all derivatives based
- _## upon this software code base.
- _##
- _## Stuttgart, Germany, Wed May 2 23:22:30 CEST 2007
- _##
- _##########################################################################*/
- // $Id: reentrant.h 287 2007-03-22 22:37:09Z katz $
- #ifndef _reentrant_h_
- #define _reentrant_h_
- #include "snmp_pp/config_snmp_pp.h"
- #include "snmp_pp/smi.h"
- #ifdef _THREADS
- #ifdef WIN32
- #include <windows.h>
- #include <winsock.h>
- #include <process.h>
- #elif defined (CPU) && CPU == PPC603
- #include <semLib.h>
- #else
- #include <pthread.h>
- #endif
- #endif
- #ifdef SNMP_PP_NAMESPACE
- namespace Snmp_pp {
- #endif
- class DLLOPT SnmpSynchronized {
- public:
- SnmpSynchronized();
- virtual ~SnmpSynchronized();
- #ifdef _THREADS
- #ifdef WIN32
- CRITICAL_SECTION _mutex;
- #elif defined (CPU) && CPU == PPC603
- SEM_ID _mutex;
- #else
- pthread_mutex_t _mutex;
- #endif
- #endif
- void lock();
- void unlock();
- };
- class DLLOPT SnmpSynchronize {
- public:
- SnmpSynchronize(SnmpSynchronized& sync) : s(sync) { s.lock(); };
- ~SnmpSynchronize() { s.unlock(); }
- protected:
- SnmpSynchronized& s;
- };
- #define REENTRANT(x) { SnmpSynchronize _synchronize(*this); x }
- #ifdef SNMP_PP_NAMESPACE
- } // end of namespace Snmp_pp
- #endif
- #endif