commreg.h
上传用户:zhongxx05
上传日期:2007-06-06
资源大小:33641k
文件大小:7k
源码类别:

Symbian

开发平台:

C/C++

  1. /* ***** BEGIN LICENSE BLOCK ***** 
  2.  * Version: RCSL 1.0/RPSL 1.0 
  3.  *  
  4.  * Portions Copyright (c) 1995-2002 RealNetworks, Inc. All Rights Reserved. 
  5.  *      
  6.  * The contents of this file, and the files included with this file, are 
  7.  * subject to the current version of the RealNetworks Public Source License 
  8.  * Version 1.0 (the "RPSL") available at 
  9.  * http://www.helixcommunity.org/content/rpsl unless you have licensed 
  10.  * the file under the RealNetworks Community Source License Version 1.0 
  11.  * (the "RCSL") available at http://www.helixcommunity.org/content/rcsl, 
  12.  * in which case the RCSL will apply. You may also obtain the license terms 
  13.  * directly from RealNetworks.  You may not use this file except in 
  14.  * compliance with the RPSL or, if you have a valid RCSL with RealNetworks 
  15.  * applicable to this file, the RCSL.  Please see the applicable RPSL or 
  16.  * RCSL for the rights, obligations and limitations governing use of the 
  17.  * contents of the file.  
  18.  *  
  19.  * This file is part of the Helix DNA Technology. RealNetworks is the 
  20.  * developer of the Original Code and owns the copyrights in the portions 
  21.  * it created. 
  22.  *  
  23.  * This file, and the files included with this file, is distributed and made 
  24.  * available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 
  25.  * EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS ALL SUCH WARRANTIES, 
  26.  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS 
  27.  * FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 
  28.  * 
  29.  * Technology Compatibility Kit Test Suite(s) Location: 
  30.  *    http://www.helixcommunity.org/content/tck 
  31.  * 
  32.  * Contributor(s): 
  33.  *  
  34.  * ***** END LICENSE BLOCK ***** */ 
  35. #ifndef _COMM_REG_H_
  36. #define _COMM_REG_H_
  37. #include "hxtypes.h"
  38. #include "hxcom.h"
  39. #include "hxmon.h"
  40. #include "db_misc.h"
  41. class Property;
  42. class DB_implem;
  43. class DB_node;
  44. class CHXID;
  45. class WatchList;
  46. class Key;
  47. class PropWatch;
  48. class WListElem;
  49. struct IHXBuffer;
  50. struct IHXValues;
  51. /*
  52.  * 
  53.  *  Class:
  54.  *
  55.  * CommonRegistry
  56.  *
  57.  *  Purpose:
  58.  *
  59.  *     this is the common registry which is going to be shared by the client
  60.  *  and the server. it acts like a bridge between the interface and the 
  61.  *  implementation based on a model taken from the book 
  62.  *  "design patterns" by gamma, helm, johnson and vlissides.
  63.  * 
  64.  */
  65. class CommonRegistry
  66. {
  67. public:
  68. CommonRegistry();
  69. ~CommonRegistry();
  70.     UINT32  AddComp(const char* pName);
  71.     UINT32  AddInt(const char* pName, const INT32 iValue);
  72.     HX_RESULT  GetInt(const char* pName, INT32* iValue) const;
  73.     HX_RESULT  GetInt(const UINT32 id, INT32* iValue) const;
  74.     HX_RESULT  SetInt(const char* pName, const INT32 iValue);
  75.     HX_RESULT  SetInt(const UINT32 id, const INT32 iValue);
  76.     UINT32  AddStr(const char* pName, IHXBuffer* pValue);
  77.     HX_RESULT  SetStr(const char* pName, IHXBuffer* pValue);
  78.     HX_RESULT  SetStr(const UINT32 id, IHXBuffer* pValue);
  79.     HX_RESULT  GetStr(const char* pName, 
  80.        REF(IHXBuffer*) pcValue) const;
  81.     HX_RESULT  GetStr(const UINT32 id, REF(IHXBuffer*) pcValue) const;
  82.     UINT32  AddBuf(const char* pName, IHXBuffer* pBuf);
  83.     HX_RESULT  GetBuf(const char* pName, IHXBuffer** ppBuf) const;
  84.     HX_RESULT  GetBuf(const UINT32 id, IHXBuffer** ppBuf) const;
  85.     HX_RESULT  SetBuf(const char* pName, IHXBuffer* pBuf);
  86.     HX_RESULT  SetBuf(const UINT32 id, IHXBuffer* pBuf);
  87.     HX_RESULT SetReadOnly(const char* pName, BOOL bValue);
  88.     HX_RESULT SetReadOnly(UINT32 ulRegId, BOOL bValue);
  89.     UINT32  AddIntRef(const char* pName, INT32* piValue);
  90.     UINT32  Del(const char* pName);
  91.     UINT32  Del(const UINT32 key);
  92.     HXPropType  GetType(const char* pName) const;
  93.     HXPropType  GetType(const UINT32 id) const;
  94.     HX_RESULT GetPropList(IHXValues*& pValues) const;
  95.     HX_RESULT GetPropList(const char* pName,
  96.     IHXValues*& pValues) const;
  97.     HX_RESULT GetPropList(const UINT32 id,
  98.     IHXValues*& pValues) const;
  99.     HX_RESULT Copy(const char* pFrom, const char* pTo);
  100.     HX_RESULT SetStringAccessAsBufferById(UINT32 ulId);
  101.     UINT32 FindParentKey(const char* pName);
  102.     UINT32 FindParentKey(const UINT32 id);
  103.     INT32  Count() const;
  104.     INT32  Count(const char* pName) const;
  105.     INT32  Count(const UINT32 id) const;
  106.     HX_RESULT GetPropName(const UINT32 ulId, 
  107.     IHXBuffer*& prop_name) const;
  108.     UINT32 GetId(const char* prop_name) const;
  109.     virtual HX_RESULT     AddDone(DB_implem* db_level, DB_node* new_node,
  110.                                   DB_node* parent_node, Property* parent_prop);
  111.     virtual HX_RESULT     SetDone(DB_node* new_node, Property* new_prop);
  112.     virtual HX_RESULT     DeleteDone(DB_implem* db_level, DB_node* node,
  113.                                      Property* prop);
  114.     /*
  115.      * Watch specific methods
  116.      */
  117.     UINT32 SetWatch(PropWatch* pPropWatch);
  118.     UINT32 SetWatch(const char* pName, PropWatch* pPropWatch);
  119.     UINT32 SetWatch(const UINT32 id, PropWatch* pPropWatch);
  120.     HX_RESULT SetTrickleWatch(const char* pParName, 
  121. const char* pTargetName,
  122.         PropWatch* pPropWatch);
  123.     HX_RESULT ClearWatch(IHXPropWatchResponse* pResonse=NULL);
  124.     HX_RESULT ClearWatch(const char* pName, IHXPropWatchResponse* pResonse=NULL);
  125.     HX_RESULT ClearWatch(const UINT32 id, IHXPropWatchResponse* pResonse=NULL);
  126.     HX_RESULT DeleteWatch(Property* p, WListElem* wle);
  127.     HX_RESULT           m_LastError;
  128. protected:
  129.     virtual DB_node* _addComp(Key* k, char* key_str, DB_implem* ldb);
  130.     virtual DB_node* _addInt(Key* k, char* key_str, INT32 val, 
  131. DB_implem* ldb);
  132.     virtual DB_node* _addBuf(Key* k, char* key_str, IHXBuffer* buf, 
  133. DB_implem* ldb, 
  134. HXPropType val_type = PT_BUFFER);
  135.     virtual DB_node* _addIntRef(Key* k, char* key_str, INT32* val, 
  136.    DB_implem* ldb);
  137.     virtual HX_RESULT _clearWatch(IHXPropWatchResponse* pResonse);
  138.     virtual HX_RESULT _clearWatch(Property*, IHXPropWatchResponse* pResonse);
  139.     virtual void _dispatchCallbacks(DB_node*, Property*, DB_Event);
  140.     virtual void  _dispatchParentCallbacks(DB_implem*, DB_node*, 
  141.  DB_Event);
  142.    
  143.     virtual HX_RESULT _find(DB_node**, Property**, const char*) const;
  144.     virtual UINT32 _Del(DB_implem*, DB_node*, Property*, UINT32);
  145.     virtual HX_RESULT _del(DB_implem*);
  146.     HX_RESULT _getPropList(DB_implem*, IHXValues*& pValues) const;
  147.     HX_RESULT _setReadOnly(Property* pProp, BOOL bValue);
  148.     UINT32 _buildSubstructure4Prop(const char* pFailurePoint,
  149.     const char* pProp);
  150.     DB_implem*   _logdb_imp;
  151.     CHXID* _ids;
  152.     INT32 _count; // num of elems in the DB
  153.     
  154.     WatchList* m_pWatchList;
  155.     int m_lWatchCount; // count num of Watches
  156. };
  157. #endif // _COMM_REG_H_