The main benefits with the new wrapper will be:
- transport independant, meaning that it could go over http, tcp socket, udp socket, bluetooth socket or pipe designwise (only the first two will be available at the beginning)
- Standardised output. All data will be produced in json which is a very light, easy to use and perfect abstraction of objects
- Standardised protocol. jsonrpc have been around for quite some time so there should exist plenty of wrappers for easy useage in your favourite language.
- Transport specific transfer. The transfer is handled by the transport meaning that no longer will you have to base64 decode the data from http.
- Wrapping. Everything is wrapped, the base idea is that nothing will utilise xbmc methods. i.e. there will be no xbmc.executebuiltin which can do a zillion things instead every operation will be done in the correct namespace. (executebuiltin(playercontrol(play)) is now MusicPlayer.PlayPause)
- Security. Much like android security is built in on a per client/application basis, so one client may be allowed to control playback whilst another may be allowed to manipulate the library. For now most of the clients will probably be allowed it all, to ease the transition but at some point there will probably be GUI interaction so the user can approve and disapprove the client.
The method structure will use the following schema "Namespace.Method" so a namespace will be logically names and the method applicable to that namespace alone. examples:
Anyways I just wanted to bring the client creators up to speed on this as its starting to get somewhat finished, and before its final I would like to get some input about what you guys would like to use it to and whats missing. So we can get as good final product as possible.
Here is the currently mapped methods, there are still alot of info getters left and I'll add them as soon as I fix some other parts of the xbmc code needed. The first column says methodcall, the second is internal the third states transport specific need. the forth client permission need and finally the fifth is a description about the method.