diff options
author | Jelmer Vernooij <jelmer@samba.org> | 2004-11-12 00:48:24 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 13:05:44 -0500 |
commit | 79c5d73a71c35f5b16232072a7b52033cb9364cb (patch) | |
tree | 62aec59516dd088a0b71b4f86119497b621acb16 /source4/rpc_server/dcom | |
parent | c8b894b670a2e854c5a6af598ab1f02b142b3406 (diff) | |
download | samba-79c5d73a71c35f5b16232072a7b52033cb9364cb.tar.gz samba-79c5d73a71c35f5b16232072a7b52033cb9364cb.tar.bz2 samba-79c5d73a71c35f5b16232072a7b52033cb9364cb.zip |
r3689: Large number of COM updates:
- Work on server side and local COM support (should work, just no
example classes yet)
- Use vtables so that local and remote calls can be used transparently
- Generate 'proxies and stubs' rather then heavily modified code in client.pm and server.pm. proxies (client side code) are generated in proxy.pm, stubs (server side dispatchers) are generated in stubs.pm
- Support registering classes and interfaces
- DCOM interfaces no longer have to be in the same IDL file as their
base interface, which will allow us to split up dcom.idl
(This used to be commit 7466947a23985f9bb15209b67880f7b94dc515c8)
Diffstat (limited to 'source4/rpc_server/dcom')
-rw-r--r-- | source4/rpc_server/dcom/dcom.h | 54 | ||||
-rw-r--r-- | source4/rpc_server/dcom/remact.c | 11 | ||||
-rw-r--r-- | source4/rpc_server/dcom/rot.c | 13 |
3 files changed, 5 insertions, 73 deletions
diff --git a/source4/rpc_server/dcom/dcom.h b/source4/rpc_server/dcom/dcom.h deleted file mode 100644 index 2d4dc7d628..0000000000 --- a/source4/rpc_server/dcom/dcom.h +++ /dev/null @@ -1,54 +0,0 @@ -/* - Unix SMB/CIFS implementation. - DCOM standard objects - Copyright (C) Jelmer Vernooij 2004. - - 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. -*/ - -#ifndef _DCOM_H /* _DCOM_H */ -#define _DCOM_H - -struct dcom_class -{ - const char *name; - const char *prog_id; - struct GUID CLSID; - - /* List of IID's implemented */ - uint32 num_iids; - struct GUID *IID; - - /* Pointers to functions this class implements */ - void **interfaces; -}; - -struct dcom_object -{ - struct dcom_class *class; - struct GUID oid; - HYPER_T OXID; - struct dcom_interface_pointer *interfaces; - void *private_data; -}; - -struct dcom_interface_pointer -{ - struct dcom_object *object; - struct dcerpc_interface_table *interface; - struct GUID ipid; -}; - -#endif /* _DCOM_H */ diff --git a/source4/rpc_server/dcom/remact.c b/source4/rpc_server/dcom/remact.c index 7a2b21a789..ce7c9c0c23 100644 --- a/source4/rpc_server/dcom/remact.c +++ b/source4/rpc_server/dcom/remact.c @@ -25,7 +25,6 @@ #include "rpc_server/common/common.h" #include "librpc/gen_ndr/ndr_remact.h" #include "librpc/gen_ndr/ndr_oxidresolver.h" -#include "rpc_server/dcom/dcom.h" struct dcom_interface_pointer *dcom_interface_pointer_by_ipid(struct GUID *ipid) { @@ -38,9 +37,9 @@ struct dcom_interface_pointer *dcom_interface_pointer_by_ipid(struct GUID *ipid) */ static WERROR RemoteActivation(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct RemoteActivation *r) { - struct IClassFactory_CreateInstance *cr; - struct IUnknown_Release *ur; - struct dcom_interface *o; + struct CreateInstance *cr; + struct Release *ur; + struct dcom_interface_p *o; int i; /* FIXME: CoGetClassObject() */ @@ -61,9 +60,9 @@ static WERROR RemoteActivation(struct dcesrv_call_state *dce_call, TALLOC_CTX *m r->out.hr = cr->out.result; for (i = 0; i < r->in.Interfaces; i++) { - struct IUnknown_QueryInterface rr; + struct QueryInterface rr; rr.in.iid = &r->in.pIIDs[i]; - dcerpc_IUnknown_QueryInterface(o, mem_ctx, &rr); + dcom_IUnknown_QueryInterface(o, mem_ctx, &rr); ZERO_STRUCT(r->out.ifaces[i]); r->out.results[i] = rr.out.result; } diff --git a/source4/rpc_server/dcom/rot.c b/source4/rpc_server/dcom/rot.c index eb19aa0501..d639bd9bf3 100644 --- a/source4/rpc_server/dcom/rot.c +++ b/source4/rpc_server/dcom/rot.c @@ -23,19 +23,6 @@ #include "includes.h" #include "rpc_server/dcerpc_server.h" #include "rpc_server/common/common.h" -#include "rpc_server/dcom/dcom.h" - -struct dcom_object *dcom_object_by_oid(struct GUID *oid) -{ - /* FIXME */ - return NULL; -} - -struct dcom_class *dcom_class_by_clsid(struct GUID *clsid) -{ - /* FIXME */ - return NULL; -} struct dcom_object *dcom_call_get_object(struct dcesrv_call_state *call) { |