A lot has changed in the D-BUS world and I am in the middle of making sure the apps that use D-BUS change with it. It is actually a fun job other than being a bit repetitive. It has allowed me to get better acquainted with the D-BUS codebase and understand its little quirks. I finsihed the mother of all D-BUS apps today by porting HAL’s marshaling code to the new D-BUS 0.30 codebase, fixing some D-BUS code in the process. The new recursive type system is really nice and for the most part intuitve. I was able to fix some hacks that HAL used to transfer hashes of string arrays with the new system. Next step is to port all the apps that use HAL to the new HAL API.
I have some changes on local disk that implements the rest of the python bindings to support all of the new D-BUS types. Structs will map to tuples and arrays of dict entries to hashes. I’m still having trouble thinking how I am going to support deep recursion. Because some containers need to be opened with the complete signature of its children I may have to bite the bullet and traverse data structures twice. Once to get the signsture and then again to marshal the values. I’m not quite sure why the containers couldn’t be constructed without signatures and then when the container is closed, recursivly generate them. After I am done with that I should take a look at implementing intospection for Python D-BUS objects and also using introspection to decide how to marshal parameters for those more exotic types like uint* which Python has no real concept of.