r5490: The big (D)COM commit! :-) Contains most of the changes described in the
authorJelmer Vernooij <jelmer@samba.org>
Mon, 21 Feb 2005 14:30:49 +0000 (14:30 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 18:10:50 +0000 (13:10 -0500)
commit71fd3e5c3aac5f0002001ab29d2248e6c6842d6f
treee2eeafd6a733b7938d86539b6ba4523495883c8e
parentbfcc86e706cf32672323eda939e5def6694509a8
r5490: The big (D)COM commit! :-) Contains most of the changes described in the
DCOM paper in lorikeet. This is the result of 1.5 months work (mainly
figuring out how things *really* work) at the end of 2004.

In general:
- Clearer distinction between COM and DCOM. DCOM is now merely
  the glue between DCE/RPC+ORPC and COM. COM can also work without
  DCOM now. This makes the code a lot clearer.
- Clearer distinction between NDR and DCOM. Before, NDR had a couple of
  "if"s to cope with DCOM, which are now gone.
- Use "real" arguments rather then structures for function arguments in
  COM, mainly because most of these calls are local so packing/unpacking
  data for every call is too much overhead (both speed- and code-wise)
- Support several mechanisms to load class objects:
  - from memory (e.g. part of the current executable, registered at start-up)
  - from shared object files
  - remotely
- Most things are now also named COM rather then DCOM because that's what it
  really is. After an object is created, it no longer matters whether it
  was created locally or remotely.

There is a very simple example class that contains
both a class factory and a class that implements the IStream interface.
It can be tested (locally only, remotely is broken at the moment)
by running the COM-SIMPLE smbtorture test.

Still to-do:
 - Autogenerate parts of the class implementation code (using the coclass definitions in IDL)
 - Test server-side
 - Implement some of the common classes, add definitions for common interfaces.
29 files changed:
source/build/pidl/README
source/build/pidl/com_header.pm [new file with mode: 0644]
source/build/pidl/dcom_proxy.pm [moved from source/build/pidl/proxy.pm with 50% similarity]
source/build/pidl/dcom_stub.pm [moved from source/build/pidl/stub.pm with 98% similarity]
source/build/pidl/ndr_header.pm [moved from source/build/pidl/header.pm with 90% similarity]
source/build/pidl/pidl.pl
source/build/smb_build/main.pm
source/include/includes.h
source/lib/com/classes/simple.c [new file with mode: 0644]
source/lib/com/com.h [new file with mode: 0644]
source/lib/com/config.mk [new file with mode: 0644]
source/lib/com/main.c [new file with mode: 0644]
source/lib/com/rot.c [moved from source/lib/dcom/common/rot.c with 96% similarity]
source/lib/com/tables.c [new file with mode: 0644]
source/lib/dcom/classes/simple.c [deleted file]
source/lib/dcom/common/dcom.h
source/lib/dcom/common/main.c
source/lib/dcom/common/tables.c [deleted file]
source/lib/dcom/config.mk
source/librpc/idl/dcom.idl
source/librpc/idl/rot.idl
source/librpc/ndr/ndr_orpc.c
source/rpc_server/config.mk
source/rpc_server/dcom/rodb.c
source/script/build_idl.sh
source/torture/com/simple.c [new file with mode: 0644]
source/torture/config.mk
source/torture/dcom/simple.c [deleted file]
source/torture/torture.c