summaryrefslogtreecommitdiff
path: root/source4/lib/com/main.c
diff options
context:
space:
mode:
authorJelmer Vernooij <jelmer@samba.org>2006-05-25 19:34:05 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 14:08:37 -0500
commitaecb20a2646520d04e09fe37ea10cd5cc0a93f7b (patch)
tree01679a2dfaf8900a8b0cf0c54fbc83bf9044f718 /source4/lib/com/main.c
parent64fe1e92a5477ff24878985854d7dbb768382c7d (diff)
downloadsamba-aecb20a2646520d04e09fe37ea10cd5cc0a93f7b.tar.gz
samba-aecb20a2646520d04e09fe37ea10cd5cc0a93f7b.tar.bz2
samba-aecb20a2646520d04e09fe37ea10cd5cc0a93f7b.zip
r15892: Remove the COM management code - DCOM should be
based on Mono and its' COM support and utilize Samba's DCE/RPC + ORPC code instead of having our own COM implementation in Samba, which is too much work to implement and harder to code (C). This only removes some of the code that I started working on to implement the bits of COM I thought were needed to support DCOM from just Samba. This code has never functioned properly, contains a couple of nasty hacks and there should be no reason to pick it up again later, the processes are all documented in the DCOM whitepaper. This does NOT remove the marshalling code for the ORPC code or the torture code that tested some of the ORPC code. (This used to be commit 11df14219bf0b35329b293cae3234e064aabde54)
Diffstat (limited to 'source4/lib/com/main.c')
-rw-r--r--source4/lib/com/main.c111
1 files changed, 0 insertions, 111 deletions
diff --git a/source4/lib/com/main.c b/source4/lib/com/main.c
deleted file mode 100644
index 3e4127f246..0000000000
--- a/source4/lib/com/main.c
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- Unix SMB/CIFS implementation.
- Main COM functionality
- Copyright (C) 2004 Jelmer Vernooij <jelmer@samba.org>
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-*/
-
-#include "includes.h"
-#include "dlinklist.h"
-#include "lib/com/com.h"
-#include "lib/events/events.h"
-#include "librpc/gen_ndr/com_dcom.h"
-#include "build.h"
-
-WERROR com_init_ctx(struct com_context **ctx, struct event_context *event_ctx)
-{
- *ctx = talloc(NULL, struct com_context);
- if (event_ctx == NULL) {
- event_ctx = event_context_init(*ctx);
- }
- (*ctx)->event_ctx = event_ctx;
- return WERR_OK;
-}
-
-WERROR com_create_object(struct com_context *ctx, struct GUID *clsid, int num_ifaces, struct GUID *iid, struct IUnknown **ip, WERROR *results)
-{
- struct IUnknown *iunk = NULL;
- struct IClassFactory *factory;
- WERROR error;
- int i;
- struct GUID classfact_iid;
-
- GUID_from_string(DCERPC_ICLASSFACTORY_UUID, &classfact_iid);
-
- /* Obtain class object */
- error = com_get_class_object(ctx, clsid, &classfact_iid, (struct IUnknown **)&factory);
- if (!W_ERROR_IS_OK(error)) {
- DEBUG(3, ("Unable to obtain class object for %s\n", GUID_string(NULL, clsid)));
- return error;
- }
-
- /* Run IClassFactory::CreateInstance() */
- error = IClassFactory_CreateInstance(factory, ctx, NULL, &classfact_iid, &iunk);
- if (!W_ERROR_IS_OK(error)) {
- DEBUG(3, ("Error while calling IClassFactory::CreateInstance : %s\n", win_errstr(error)));
- return error;
- }
-
- if (!iunk) {
- DEBUG(0, ("IClassFactory_CreateInstance returned success but result pointer is still NULL!\n"));
- return WERR_GENERAL_FAILURE;
- }
-
- /* Release class object */
- IUnknown_Release(factory, ctx);
-
- error = WERR_OK;
-
- /* Do one or more QueryInterface calls */
- for (i = 0; i < num_ifaces; i++) {
- results[i] = IUnknown_QueryInterface(iunk, ctx, &iid[i], &ip[i]);
- if (!W_ERROR_IS_OK(results[i])) error = results[i];
- }
-
- return error;
-}
-
-WERROR com_get_class_object(struct com_context *ctx, struct GUID *clsid, struct GUID *iid, struct IUnknown **ip)
-{
- struct IUnknown *iu;
-
- iu = com_class_by_clsid(ctx, clsid);
- if (!iu) {
- return WERR_CLASS_NOT_REGISTERED;
- }
-
- return IUnknown_QueryInterface(iu, ctx, iid, ip);
-}
-
-NTSTATUS com_init(void)
-{
- static BOOL initialized = False;
-
- init_module_fn static_init[] = STATIC_com_MODULES;
- init_module_fn *shared_init;
-
- if (initialized) return NT_STATUS_OK;
- initialized = True;
-
- shared_init = load_samba_modules(NULL, "com");
-
- run_init_functions(static_init);
- run_init_functions(shared_init);
-
- talloc_free(shared_init);
-
- return NT_STATUS_OK;
-}