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/lib/dcom/common/dcom.h | |
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/lib/dcom/common/dcom.h')
-rw-r--r-- | source4/lib/dcom/common/dcom.h | 36 |
1 files changed, 32 insertions, 4 deletions
diff --git a/source4/lib/dcom/common/dcom.h b/source4/lib/dcom/common/dcom.h index 320b5a4a9f..9c09cc17d9 100644 --- a/source4/lib/dcom/common/dcom.h +++ b/source4/lib/dcom/common/dcom.h @@ -29,11 +29,18 @@ struct IUnknown_QueryInterface; struct dcom_context { - struct dcom_oxid_mapping { - struct dcom_oxid_mapping *prev, *next; + struct dcom_object_exporter { + struct dcom_object_exporter *prev, *next; + struct STRINGARRAY resolver_address; struct DUALSTRINGARRAY bindings; HYPER_T oxid; struct dcerpc_pipe *pipe; + struct dcom_object + { + struct dcom_object *prev, *next; + HYPER_T oid; + void *private_data; + } *objects; } *oxids; const char *domain; const char *user; @@ -41,11 +48,32 @@ struct dcom_context uint32_t dcerpc_flags; }; +/* Specific implementation of one or more interfaces */ +struct dcom_class +{ + const char *prog_id; + struct GUID clsid; + void (*get_class_object) (struct GUID *iid, void **vtable); +}; + struct dcom_interface { + struct GUID iid; + int num_methods; + struct GUID base_iid; + const void *proxy_vtable; +}; + +struct dcom_interface_p +{ struct dcom_context *ctx; - struct dcerpc_pipe *pipe; - struct OBJREF *objref; + const struct dcom_interface *interface; + const void *vtable; /* Points to one of the available implementations */ + struct GUID ipid; + struct dcom_object *object; + int objref_flags; + int orpc_flags; + struct dcom_object_exporter *ox; uint32_t private_references; }; |