aboutsummaryrefslogtreecommitdiff
path: root/Src/omBrowser/utilityFactory.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Src/omBrowser/utilityFactory.cpp')
-rw-r--r--Src/omBrowser/utilityFactory.cpp91
1 files changed, 91 insertions, 0 deletions
diff --git a/Src/omBrowser/utilityFactory.cpp b/Src/omBrowser/utilityFactory.cpp
new file mode 100644
index 00000000..2fa5b33e
--- /dev/null
+++ b/Src/omBrowser/utilityFactory.cpp
@@ -0,0 +1,91 @@
+#include "main.h"
+#include "./utilityFactory.h"
+#include "./utility.h"
+
+OmUtilityFactory::OmUtilityFactory()
+ : object(NULL)
+{
+}
+
+OmUtilityFactory::~OmUtilityFactory()
+{
+ if (NULL != object)
+ object->Release();
+}
+
+FOURCC OmUtilityFactory::GetServiceType()
+{
+ return WaSvc::UNIQUE;
+}
+
+const char *OmUtilityFactory::GetServiceName()
+{
+ return "OmUtility Interface";
+}
+
+GUID OmUtilityFactory::GetGUID()
+{
+ return IFC_OmUtility;
+}
+
+void *OmUtilityFactory::GetInterface(int global_lock)
+{
+ if (NULL == object)
+ {
+ object = OmUtility::CreateInstance();
+ if (NULL == object) return NULL;
+ }
+
+ object->AddRef();
+ return object;
+}
+
+int OmUtilityFactory::SupportNonLockingInterface()
+{
+ return 1;
+}
+
+int OmUtilityFactory::ReleaseInterface(void *ifc)
+{
+ OmUtility *object = (OmUtility*)ifc;
+ if (NULL != object) object->Release();
+
+ return 1;
+}
+
+const char *OmUtilityFactory::GetTestString()
+{
+ return NULL;
+}
+
+int OmUtilityFactory::ServiceNotify(int msg, int param1, int param2)
+{
+ return 1;
+}
+
+HRESULT OmUtilityFactory::Register(api_service *service)
+{
+ if (NULL == service) return E_INVALIDARG;
+ service->service_register(this);
+ return S_OK;
+}
+
+HRESULT OmUtilityFactory::Unregister(api_service *service)
+{
+ if (NULL == service) return E_INVALIDARG;
+ service->service_deregister(this);
+ return S_OK;
+}
+
+#define CBCLASS OmUtilityFactory
+START_DISPATCH;
+CB(WASERVICEFACTORY_GETSERVICETYPE, GetServiceType)
+CB(WASERVICEFACTORY_GETSERVICENAME, GetServiceName)
+CB(WASERVICEFACTORY_GETGUID, GetGUID)
+CB(WASERVICEFACTORY_GETINTERFACE, GetInterface)
+CB(WASERVICEFACTORY_SUPPORTNONLOCKINGGETINTERFACE, SupportNonLockingInterface)
+CB(WASERVICEFACTORY_RELEASEINTERFACE, ReleaseInterface)
+CB(WASERVICEFACTORY_GETTESTSTRING, GetTestString)
+CB(WASERVICEFACTORY_SERVICENOTIFY, ServiceNotify)
+END_DISPATCH;
+#undef CBCLASS \ No newline at end of file