⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 objtrack.h

📁 一个OPC服务器开发的源代码。结构清晰
💻 H
字号:
/**************************************************************************
 *                                                                        *
 * Light OPC Server development library                                   *
 *                                                                        *
 *   Copyright (c) 2002 by Timofei Bondarenko                             *

 Object tracker for Enumerators.
 It used to perform CoDisconnect on all returned objects.
 **************************************************************************/

#ifndef OBJTRACK_H
#define OBJTRACK_H

#ifndef OPTIONS_H
#include "options.h"
#endif

#ifdef __cplusplus

class loObjTrack;

class loObjTracker
{
public:
        int         ot_stopped;
#if LO_USE_OBJTRACK
        loObjTrack *ot_first;
        lw_rmutex   ot_lk; /* !! Actually SHOULD be rmutex_t due to
                              ot_disconnect_all() implementation */
 inline void     ot_lock(void)   { lw_rmutex_lock(&ot_lk); }
 inline void     ot_unlock(void) { lw_rmutex_unlock(&ot_lk); }
        unsigned ot_disconnect_all(int remove);
 inline  loObjTracker(): ot_stopped(0), ot_first(0) {};
#else
 inline  loObjTracker(): ot_stopped(0) {};
 inline unsigned ot_disconnect_all(int remove) { return 0; }
#endif
};

class loObjTrack
{
public:
#if LO_USE_OBJTRACK
  loObjTracker  *ot_tr;
  loObjTrack    *ot_next;
  loObjTrack   **ot_iam;
  IUnknown      *ot_unk;

inline  loObjTrack(): ot_tr(0), ot_next(0), ot_iam(0), ot_unk(0) {};
inline ~loObjTrack() { ot_remove(); }

    void  ot_remove(void);
 HRESULT  ot_connect(IUnknown *pUnk, loObjTracker *list);

inline  loObjTracker *ot_tracker(void) { return ot_tr; };

private:
  friend class loObjTracker;
inline void unlocked_remove(void);
inline void unlocked_connect(loObjTracker *list);

#else /*!LO_USE_OBJTRACK*/
inline  HRESULT  ot_connect(IUnknown *pUnk, loObjTracker *list) { return S_OK; }
inline  loObjTracker *ot_tracker(void) { return 0; };
#endif
};

#endif /*__cplusplus*/
#endif /*OBJTRACK*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -