carbonwraps.h
上传用户:chn_coc
上传日期:2007-12-20
资源大小:563k
文件大小:2k
源码类别:

P2P编程

开发平台:

Windows_Unix

  1. /*
  2.  *  carbonwraps.h
  3.  *  PeerCast
  4.  *
  5.  *  Created by mode7 on Mon Jun 14 2004.
  6.  *  Copyright (c) 2002-2004 peercast.org. All rights reserved.
  7.  *
  8.  */
  9.  // ------------------------------------------------
  10. // This program is free software; you can redistribute it and/or modify
  11. // it under the terms of the GNU General Public License as published by
  12. // the Free Software Foundation; either version 2 of the License, or
  13. // (at your option) any later version.
  14. // This program is distributed in the hope that it will be useful,
  15. // but WITHOUT ANY WARRANTY; without even the implied warranty of
  16. // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  17. // GNU General Public License for more details.
  18. // ------------------------------------------------
  19. #ifndef _CARBONWRAPS_H
  20. #define _CARBONWRAPS_H
  21. #include <Carbon/Carbon.h>
  22. class CEventHandlerUPP
  23. {
  24. public:
  25. explicit CEventHandlerUPP( EventHandlerProcPtr userRoutine )
  26. : mHandler( NewEventHandlerUPP( userRoutine ) )
  27. {
  28. }
  29. EventHandlerUPP& eventHandler() { return mHandler; }
  30. ~CEventHandlerUPP()
  31. {
  32. if( mHandler != NULL )
  33. {
  34. DisposeEventHandlerUPP( mHandler );
  35. }
  36. }
  37. private:
  38. // disable copy and assignment
  39. CEventHandlerUPP           ( const CEventHandlerUPP& );
  40. CEventHandlerUPP& operator=( const CEventHandlerUPP& );
  41. EventHandlerUPP mHandler;
  42. };
  43. class CEvent
  44. {
  45. public:
  46. explicit CEvent( const UInt32 eventClass, const UInt32 eventKind )
  47. :mEventRef( NULL )
  48. {
  49. CreateEvent( NULL, eventClass, eventKind, GetCurrentEventTime(), kEventAttributeNone, &mEventRef );
  50. }
  51. ~CEvent()
  52. {
  53. if( mEventRef != NULL )
  54. {
  55. ReleaseEvent( mEventRef );
  56. }
  57. }
  58. OSStatus setParameter( EventParamName inName, EventParamType inType, UInt32 inSize, const void * inDataPtr )
  59. {
  60. if( mEventRef != NULL )
  61. {
  62. return SetEventParameter( mEventRef, inName, inType, inSize, inDataPtr );
  63. }
  64. return eventInternalErr;
  65. }
  66. OSStatus postToQueue( EventQueueRef inQueue, EventPriority inPriority )
  67. {
  68. if( mEventRef != NULL )
  69. {
  70. return PostEventToQueue( inQueue, mEventRef, inPriority );
  71. }
  72. return eventInternalErr;
  73. }
  74. private:
  75. // disable copy and assignment
  76. CEvent           ( const CEvent& );
  77. CEvent& operator=( const CEvent& );
  78. EventRef mEventRef;
  79. };
  80. #endif // _CARBONWRAPS_H