active_obj.hpp
来自「ncbi源码」· HPP 代码 · 共 189 行
HPP
189 行
/* * =========================================================================== * PRODUCTION $Log: active_obj.hpp,v $ * PRODUCTION Revision 1000.2 2004/04/21 14:47:38 gouriano * PRODUCTION PRODUCTION: UPGRADED [CATCHUP_003] Dev-tree R1.8 * PRODUCTION * =========================================================================== */#ifndef _ACTIVE_OBJ_HPP_#define _ACTIVE_OBJ_HPP_/* $Id: active_obj.hpp,v 1000.2 2004/04/21 14:47:38 gouriano Exp $* ===========================================================================** PUBLIC DOMAIN NOTICE * National Center for Biotechnology Information* * This software/database is a "United States Government Work" under the * terms of the United States Copyright Act. It was written as part of * the author's official duties as a United States Government employee and * thus cannot be copyrighted. This software/database is freely available * to the public for use. The National Library of Medicine and the U.S. * Government have not placed any restriction on its use or reproduction. * * Although all reasonable efforts have been taken to ensure the accuracy * and reliability of the software and data, the NLM and the U.S. * Government do not and cannot warrant the performance or results that * may be obtained by using this software or data. The NLM and the U.S. * Government disclaim all warranties, express or implied, including * warranties of performance, merchantability or fitness for any particular* purpose. * * Please cite the author in any work or product based on this material. ** ===========================================================================** File Name: $Id: active_obj.hpp,v 1000.2 2004/04/21 14:47:38 gouriano Exp $** Author: Michael Kholodov* * File Description: CActiveObject and IEventListener, object notification* interface*** $Log: active_obj.hpp,v $* Revision 1000.2 2004/04/21 14:47:38 gouriano* PRODUCTION: UPGRADED [CATCHUP_003] Dev-tree R1.8** Revision 1.8 2004/04/08 15:56:58 kholodov* Multiple bug fixes and optimizations** Revision 1.7 2004/02/27 14:37:32 kholodov* Modified: set collection replaced by list for listeners** Revision 1.6 2002/12/16 18:56:50 kholodov* Fixed: memory leak in CStatement object** Revision 1.5 2002/09/18 18:47:30 kholodov* Modified: CActiveObject inherits directly from IEventListener* Added: Additional trace output** Revision 1.4 2002/09/09 20:48:56 kholodov* Added: Additional trace output about object life cycle* Added: CStatement::Failed() method to check command status** Revision 1.3 2002/05/16 22:04:36 kholodov* Added: CDbapiClosedEvent()** Revision 1.2 2002/02/05 17:16:23 kholodov* Put into right scope, invalidobjex retired** Revision 1.1 2002/01/30 14:51:22 kholodov* User DBAPI implementation, first commit****/#include <corelib/ncbistd.hpp>//#include <corelib/ncbiobj.hpp>#include <list>BEGIN_NCBI_SCOPEclass CActiveObject;class CDbapiEvent{public: CDbapiEvent(CActiveObject* src, const string& name) : m_source(src), m_name(name) {} virtual ~CDbapiEvent() {} CActiveObject* GetSource() const { return m_source; } string GetName() const { return m_name; } private: CActiveObject* m_source; string m_name;};class CDbapiDeletedEvent : public CDbapiEvent{public: CDbapiDeletedEvent(CActiveObject* src) : CDbapiEvent(src, "CDbapiDeletedEvent") {} virtual ~CDbapiDeletedEvent() {}};class CDbapiAuxDeletedEvent : public CDbapiEvent{public: CDbapiAuxDeletedEvent(CActiveObject* src) : CDbapiEvent(src, "CDbapiAuxDeletedEvent") {} virtual ~CDbapiAuxDeletedEvent() {}};class CDbapiNewResultEvent : public CDbapiEvent{public: CDbapiNewResultEvent(CActiveObject* src) : CDbapiEvent(src, "CDbapiNewResultEvent") {} virtual ~CDbapiNewResultEvent() {}};class CDbapiClosedEvent : public CDbapiEvent{public: CDbapiClosedEvent(CActiveObject* src) : CDbapiEvent(src, "CDbapiClosedEvent") {} virtual ~CDbapiClosedEvent() {}};//===============================================================class IEventListener{public: virtual void Action(const CDbapiEvent& e) = 0;protected: IEventListener() {}};//=================================================================class CActiveObject : //public CObject, public IEventListener{public: CActiveObject(); virtual ~CActiveObject(); void AddListener(CActiveObject* obj); void RemoveListener(CActiveObject* obj); void Notify(const CDbapiEvent& e); // Do nothing by default virtual void Action(const CDbapiEvent& e); string GetIdent() const;protected: typedef list<CActiveObject*> TLList; void SetIdent(const string& name); TLList& GetListenerList();private: TLList m_listenerList; string m_ident; // Object identificator};END_NCBI_SCOPE#endif // _GENERAL_EXCEPTION_HPP_
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?