aboutsummaryrefslogtreecommitdiff
path: root/Src/replicant/ssdp/main.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Src/replicant/ssdp/main.cpp')
-rw-r--r--Src/replicant/ssdp/main.cpp88
1 files changed, 88 insertions, 0 deletions
diff --git a/Src/replicant/ssdp/main.cpp b/Src/replicant/ssdp/main.cpp
new file mode 100644
index 00000000..e3d2ff67
--- /dev/null
+++ b/Src/replicant/ssdp/main.cpp
@@ -0,0 +1,88 @@
+#include "api__ssdp.h"
+#include "foundation/export.h"
+#include "component/ifc_component.h"
+#include "nx/nxuri.h"
+#include "nswasabi/ReferenceCounted.h"
+#include "nswasabi/singleton.h"
+#include "SSDPAPI.h"
+
+api_service *WASABI2_API_SVC=0;
+api_application *WASABI2_API_APP=0;
+api_syscb *WASABI2_API_SYSCB=0;
+//api_android *WASABI2_API_ANDROID=0;
+
+SSDPAPI ssdpapi;
+static SingletonServiceFactory<SSDPAPI, api_ssdp> ssdp_factory;
+
+
+// {F47F99AB-F90F-4623-B8BE-454555A8FC79}
+static const GUID ssdp_component_guid =
+{ 0xf47f99ab, 0xf90f, 0x4623, { 0xb8, 0xbe, 0x45, 0x45, 0x55, 0xa8, 0xfc, 0x79 } };
+
+
+class SSDPComponent : public ifc_component
+{
+public:
+ SSDPComponent() : ifc_component(ssdp_component_guid) {}
+ int WASABICALL Component_Initialize(api_service *service);
+ int WASABICALL Component_RegisterServices(api_service *service);
+ void WASABICALL Component_DeregisterServices(api_service *service);
+ int WASABICALL Component_Quit(api_service *service);
+};
+
+
+int SSDPComponent::Component_Initialize(api_service *service)
+{
+ WASABI2_API_SVC = service;
+
+ int ret = jnl_init();
+ if (ret != NErr_Success)
+ {
+ return ret;
+ }
+ return NErr_Success;
+}
+
+int SSDPComponent::Component_RegisterServices(api_service *service)
+{
+ WASABI2_API_SVC = service;
+ if (WASABI2_API_SVC)
+ {
+ WASABI2_API_SVC->GetService(&WASABI2_API_APP);
+ WASABI2_API_SVC->GetService(&WASABI2_API_SYSCB);
+ //WASABI2_API_SVC->GetService(&WASABI2_API_ANDROID);
+ }
+
+ ssdpapi.Initialize();
+ ssdp_factory.Register(WASABI2_API_SVC, &ssdpapi);
+ return NErr_Success;
+}
+
+void SSDPComponent::Component_DeregisterServices(api_service *service)
+{
+ if (WASABI2_API_SVC)
+ WASABI2_API_SVC->Release();
+
+ if (WASABI2_API_APP)
+ WASABI2_API_APP->Release();
+
+ if (WASABI2_API_SYSCB)
+ WASABI2_API_SYSCB->Release();
+
+ //if (WASABI2_API_ANDROID)
+ // WASABI2_API_ANDROID->Release();
+
+ ssdp_factory.Deregister(WASABI2_API_SVC);
+}
+
+int SSDPComponent::Component_Quit(api_service *_service_manager)
+{
+ jnl_quit();
+ return NErr_Success;
+}
+
+static SSDPComponent component;
+extern "C" DLLEXPORT ifc_component *GetWasabi2Component()
+{
+ return &component;
+}