diff options
Diffstat (limited to 'Src/replicant/ssdp/main.cpp')
-rw-r--r-- | Src/replicant/ssdp/main.cpp | 88 |
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; +} |