summaryrefslogtreecommitdiff
path: root/source4/lib/dcom/common/dcom.h
diff options
context:
space:
mode:
authorJelmer Vernooij <jelmer@samba.org>2004-11-12 00:48:24 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 13:05:44 -0500
commit79c5d73a71c35f5b16232072a7b52033cb9364cb (patch)
tree62aec59516dd088a0b71b4f86119497b621acb16 /source4/lib/dcom/common/dcom.h
parentc8b894b670a2e854c5a6af598ab1f02b142b3406 (diff)
downloadsamba-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.h36
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;
};