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.

RegConfig.h 2.4KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. /* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.
  2. *
  3. * This is free software; you can redistribute it and/or modify
  4. * it under the terms of the GNU General Public License as published by
  5. * the Free Software Foundation; either version 2 of the License, or
  6. * (at your option) any later version.
  7. *
  8. * This software is distributed in the hope that it will be useful,
  9. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  10. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  11. * GNU General Public License for more details.
  12. *
  13. * You should have received a copy of the GNU General Public License
  14. * along with this software; if not, write to the Free Software
  15. * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
  16. * USA.
  17. */
  18. // -=- RegConfig.h
  19. // Class which monitors the registry and reads in the registry settings
  20. // whenever they change, or are added or removed.
  21. #ifndef __RFB_WIN32_REG_CONFIG_H__
  22. #define __RFB_WIN32_REG_CONFIG_H__
  23. #include <os/Thread.h>
  24. #include <rfb/Configuration.h>
  25. #include <rfb_win32/Registry.h>
  26. #include <rfb_win32/EventManager.h>
  27. #include <rfb_win32/Handle.h>
  28. namespace rfb {
  29. namespace win32 {
  30. class RegConfig : EventHandler {
  31. public:
  32. RegConfig(EventManager* em);
  33. ~RegConfig();
  34. // Specify the registry key to read Configuration items from
  35. bool setKey(const HKEY rootkey, const TCHAR* keyname);
  36. // Support for a callback, run in the RegConfig host thread whenever
  37. // the registry configuration changes
  38. class Callback {
  39. public:
  40. virtual ~Callback() {}
  41. virtual void regConfigChanged() = 0;
  42. };
  43. void setCallback(Callback* cb) { callback = cb; }
  44. // Read entries from the specified key into the Configuration
  45. static void loadRegistryConfig(RegKey& key);
  46. protected:
  47. // EventHandler interface and trigger event
  48. virtual void processEvent(HANDLE event);
  49. EventManager* eventMgr;
  50. Handle event;
  51. Callback* callback;
  52. RegKey key;
  53. };
  54. class RegConfigThread : os::Thread {
  55. public:
  56. RegConfigThread();
  57. ~RegConfigThread();
  58. // Start the thread, reading from the specified key
  59. bool start(const HKEY rootkey, const TCHAR* keyname);
  60. protected:
  61. virtual void worker();
  62. EventManager eventMgr;
  63. RegConfig config;
  64. DWORD thread_id;
  65. };
  66. };
  67. };
  68. #endif // __RFB_WIN32_REG_CONFIG_H__