-----------------------------------------
Windows port of the freedesktop.org D-Bus
-----------------------------------------

Features and completeness
-------------------------
The windows port of dbus provides the dbus-1 library and mostly
applications which are already available on unix. These applications
are: dbus-daemon, dbus-launch, dbus-monitor and dbus-send.
DBus comes with a test suite which is used on unix to guarantate
production quality and this test suite runs mostly. There are some
test not running yet and there is help needed to get them running.


Building
--------
DBus could be build on windows using automake or cmake. See the
file README for more informations.
Special cmake build instructions could be found in cmake/readme-cmake.txt


windbus and dbus4win Ports
--------------------------
The Windows ports from the windbus and dbus4win projects has been merged
into the freedesktop git master branch, as applicable. The spec has been
updated with windows specific stuff.


Tests
-----
 - dbus library check
    bin\dbus-test.exe <build-root>\test\data

 - bus daemon check
    bin\bus-test.exe <build-root>\test\data

 - check available names
    bin\test_names.exe

 - check if dbus-daemon is accessable
    bin\dbus-send.exe --session --type=method_call --print-reply --dest=org.freedesktop.DBus / org.freedesktop.DBus.ListNames method return sender=org.freedesktop.DBus -> dest=:1.4 array [ string "org.freedesktop.DBus"string ":1.4"]

 - start session dbus-daemon
    either by running
        bin\dbus-launch
    or
        start bin\dbus-daemon --session

    Before running these commands you may execute
        set DBUS_VERBOSE=1
    for getting debug infos


 - call function registerd in dbus
    bin\dbus-send.exe  --dest=org.freedesktop.DBus --print-reply --type=method_call / org.freedesktop.DBus.StartServiceByName string:org.freedesktop.DBus.TestSuiteEchoService  uint32:455 method return sender=org.freedesktop.DBus -> dest=:1.8 uint32 2

    note: When building with the Visual C++ IDE the *.exe files are in
          the bin/Debug and bin/Release folder, not in the bin folder.


FAQ
---

- How far is WinDBus from being usable for production ?

  dbus comes with a test suite which is used on unix to guarantate
  production quality and this test suite runs mostly. There are some
  test not running and we need help to get them running.
  In the pratice I and some other people are using dbus for at least more
  than four years in conjunction with kde on windows without any problems.

- On UNIX D-Bus uses UNIX sockets to communicate (correct me if I'm wrong).
  What is used on Windows ?

  tcp sockets, there are some efforts to get named pipe running, but some
  design problems of the win32 api, we are not able to solve without
  bigger changes to the dbus code base let us stop this effort.

- Do you have any clue if dbus-win32 can run in a Windows CE environment?

  dbus has been ported to wince, see README.wince for more informations

- Do you know if the C++ binding made by OpenWengo will be easily portable to Windows?

  The OpenWengo dbus-c++ binding has been ported to windows see in WinDBus svn
  (http://sf.net/projects/windbus)
  The related test applicationa are running well.


TODO
----

Oktober 2010:

- the code wrapped with DBUS_WIN_FIXME should be inspected if it required for windows

- create a dbus setup installer

- implement system bus and system bus service starter
  see http://windbus.svn.sourceforge.net/viewvc/windbus/trunk/bus/bus-service-win.c
  for a starting point

- implement a real login session bus
  The scope parameter of the autolaunch meta protocol could be extended to support user
  specific session busses (like already done with the amarok bundled dbus which use a
  shared memory area named "DBusDaemonAddressInfo:<username>".
  Also the dbus installer should start a session bus on user login.
