zoom_video_sdk_node_addon.h 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. #ifndef _ZOOM_VIDEO_SDK_NODE_ADDON_H_
  2. #define _ZOOM_VIDEO_SDK_NODE_ADDON_H_
  3. #include "zoom_video_sdk_node_common_include.h"
  4. #include "zoom_video_sdk_native_sdk_wrap_core.h"
  5. #include "zoom_video_sdk_singleton_wrap_class.h"
  6. class VideoNodeAddonData {
  7. public:
  8. explicit VideoNodeAddonData(v8::Isolate* isolate)
  9. {
  10. node::AddEnvironmentCleanupHook(isolate, DeleteInstance, this);
  11. }
  12. v8::Local<v8::Object> zoomNodeWrapInstance;
  13. static void DeleteInstance(void* data) {
  14. delete static_cast<VideoNodeAddonData*>(data);
  15. }
  16. };
  17. class ZOOM_NODE_HIDE ZoomVideoNodeWrap : public ZoomWrapObject<ZoomVideoNodeWrap >
  18. {
  19. friend class ZoomWrapObject<ZoomVideoNodeWrap >;
  20. private:
  21. ZoomVideoNodeWrap();
  22. ~ZoomVideoNodeWrap();
  23. public:
  24. static void CreateZoomVideoSDKObj(const v8::FunctionCallbackInfo<v8::Value>& args);
  25. static void DestroyZoomVideoSDKObj(const v8::FunctionCallbackInfo<v8::Value>& args);
  26. static void Initialize(const v8::FunctionCallbackInfo<v8::Value>& args);
  27. static void CleanUp(const v8::FunctionCallbackInfo<v8::Value>& args);
  28. static void JoinSession(const v8::FunctionCallbackInfo<v8::Value>& args);
  29. static void LeaveSession(const v8::FunctionCallbackInfo<v8::Value>& args);
  30. static void IsInSession(const v8::FunctionCallbackInfo<v8::Value>& args);
  31. static void GetSDKVersion(const v8::FunctionCallbackInfo<v8::Value>& args);
  32. static void InputSessionPassword(const v8::FunctionCallbackInfo<v8::Value>& args);
  33. static void LeaveSessionIgnorePassword(const v8::FunctionCallbackInfo<v8::Value>& args);
  34. //static void SendVideoFrame(const v8::FunctionCallbackInfo<v8::Value>& args);
  35. static void GetSessionInfoCtrl(const v8::FunctionCallbackInfo<v8::Value>& args);
  36. static void GetAudioHelper(const v8::FunctionCallbackInfo<v8::Value>& args);
  37. static void GetVideoHelper(const v8::FunctionCallbackInfo<v8::Value>& args);
  38. static void GetShareHelper(const v8::FunctionCallbackInfo<v8::Value>& args);
  39. static void GetUserHelper(const v8::FunctionCallbackInfo<v8::Value>& args);
  40. static void GetVideoSDKRender(const v8::FunctionCallbackInfo<v8::Value>& args);
  41. static void GetVideoSDKRawDataServerMgr(const v8::FunctionCallbackInfo<v8::Value>& args);
  42. static void GetChatHelper(const v8::FunctionCallbackInfo<v8::Value>& args);
  43. static void GetLiveStreamHelper(const v8::FunctionCallbackInfo<v8::Value>& args);
  44. static void GetCmdChannel(const v8::FunctionCallbackInfo<v8::Value>& args);
  45. static void GetPhoneHelper(const v8::FunctionCallbackInfo<v8::Value>& args);
  46. static void GetCameraControlRequestHandler(const v8::FunctionCallbackInfo<v8::Value>& args);
  47. static void GetRemoteCameraCtrlHelper(const v8::FunctionCallbackInfo<v8::Value>& args);
  48. static void GetRecordingHelper(const v8::FunctionCallbackInfo<v8::Value>& args);
  49. static void GetAudioSetting(const v8::FunctionCallbackInfo<v8::Value>& args);
  50. static void GetTestAudioDevice(const v8::FunctionCallbackInfo<v8::Value>& args);
  51. static void GetLiveTranscriptionHelper(const v8::FunctionCallbackInfo<v8::Value>& args);
  52. static void SetNodeAddonCallbacks(const v8::FunctionCallbackInfo<v8::Value>& args);
  53. static v8::Persistent<v8::Function> constructor;
  54. };
  55. template<> inline
  56. void InitClassAttribute<ZoomVideoNodeWrap >(const v8::Local<v8::FunctionTemplate>& tpl, v8::Isolate* isolate)
  57. {
  58. tpl->SetClassName(v8::String::NewFromUtf8(
  59. isolate, "ZoomVideoNodeWrap", v8::NewStringType::kInternalized).ToLocalChecked());
  60. tpl->InstanceTemplate()->SetInternalFieldCount(1);
  61. // Prototype
  62. NODE_SET_PROTOTYPE_METHOD(tpl, "CreateZoomVideoSDKObj", ZoomVideoNodeWrap::CreateZoomVideoSDKObj);
  63. NODE_SET_PROTOTYPE_METHOD(tpl, "DestroyZoomVideoSDKObj", ZoomVideoNodeWrap::DestroyZoomVideoSDKObj);
  64. NODE_SET_PROTOTYPE_METHOD(tpl, "Initialize", ZoomVideoNodeWrap::Initialize);
  65. NODE_SET_PROTOTYPE_METHOD(tpl, "CleanUp", ZoomVideoNodeWrap::CleanUp);
  66. NODE_SET_PROTOTYPE_METHOD(tpl, "JoinSession", ZoomVideoNodeWrap::JoinSession);
  67. NODE_SET_PROTOTYPE_METHOD(tpl, "LeaveSession", ZoomVideoNodeWrap::LeaveSession);
  68. NODE_SET_PROTOTYPE_METHOD(tpl, "IsInSession", ZoomVideoNodeWrap::IsInSession);
  69. NODE_SET_PROTOTYPE_METHOD(tpl, "GetSDKVersion", ZoomVideoNodeWrap::GetSDKVersion);
  70. NODE_SET_PROTOTYPE_METHOD(tpl, "InputSessionPassword", ZoomVideoNodeWrap::InputSessionPassword);
  71. NODE_SET_PROTOTYPE_METHOD(tpl, "LeaveSessionIgnorePassword", ZoomVideoNodeWrap::LeaveSessionIgnorePassword);
  72. //NODE_SET_PROTOTYPE_METHOD(tpl, "SendVideoFrame", ZoomVideoNodeWrap::SendVideoFrame);
  73. NODE_SET_PROTOTYPE_METHOD(tpl, "GetSessionInfoCtrl", ZoomVideoNodeWrap::GetSessionInfoCtrl);
  74. NODE_SET_PROTOTYPE_METHOD(tpl, "GetAudioHelper", ZoomVideoNodeWrap::GetAudioHelper);
  75. NODE_SET_PROTOTYPE_METHOD(tpl, "GetVideoHelper", ZoomVideoNodeWrap::GetVideoHelper);
  76. NODE_SET_PROTOTYPE_METHOD(tpl, "GetShareHelper", ZoomVideoNodeWrap::GetShareHelper);
  77. NODE_SET_PROTOTYPE_METHOD(tpl, "GetUserHelper", ZoomVideoNodeWrap::GetUserHelper);
  78. NODE_SET_PROTOTYPE_METHOD(tpl, "GetVideoSDKRender", ZoomVideoNodeWrap::GetVideoSDKRender);
  79. NODE_SET_PROTOTYPE_METHOD(tpl, "GetVideoSDKRawDataServerMgr", ZoomVideoNodeWrap::GetVideoSDKRawDataServerMgr);
  80. NODE_SET_PROTOTYPE_METHOD(tpl, "GetChatHelper", ZoomVideoNodeWrap::GetChatHelper);
  81. NODE_SET_PROTOTYPE_METHOD(tpl, "GetLiveStreamHelper", ZoomVideoNodeWrap::GetLiveStreamHelper);
  82. NODE_SET_PROTOTYPE_METHOD(tpl, "GetCmdChannel", ZoomVideoNodeWrap::GetCmdChannel);
  83. NODE_SET_PROTOTYPE_METHOD(tpl, "GetPhoneHelper", ZoomVideoNodeWrap::GetPhoneHelper);
  84. NODE_SET_PROTOTYPE_METHOD(tpl, "GetCameraControlRequestHandler", ZoomVideoNodeWrap::GetCameraControlRequestHandler);
  85. NODE_SET_PROTOTYPE_METHOD(tpl, "GetRemoteCameraCtrlHelper", ZoomVideoNodeWrap::GetRemoteCameraCtrlHelper);
  86. NODE_SET_PROTOTYPE_METHOD(tpl, "GetRecordingHelper", ZoomVideoNodeWrap::GetRecordingHelper);
  87. NODE_SET_PROTOTYPE_METHOD(tpl, "GetAudioSetting", ZoomVideoNodeWrap::GetAudioSetting);
  88. NODE_SET_PROTOTYPE_METHOD(tpl, "GetTestAudioDevice", ZoomVideoNodeWrap::GetTestAudioDevice);
  89. NODE_SET_PROTOTYPE_METHOD(tpl, "GetLiveTranscriptionHelper", ZoomVideoNodeWrap::GetLiveTranscriptionHelper);
  90. NODE_SET_PROTOTYPE_METHOD(tpl, "SetNodeAddonCallbacks", ZoomVideoNodeWrap::SetNodeAddonCallbacks);
  91. }
  92. template<> inline
  93. v8::Persistent<v8::Function>* GetConstructor<ZoomVideoNodeWrap >() {
  94. return &ZoomVideoNodeWrap::constructor;
  95. }
  96. #endif