﻿id	summary	reporter	owner	description	type	status	priority	milestone	component	version	resolution	keywords	cc	field_blocks	field_dependson	field_seealso
424	RPC/IPC generator	Jiri Svoboda		"In the majority of cases we converged to using IPC as a means of doing remote procedure calls. We 'trivially' wrap IPC communication into a C API. There is a lot of repetitive effort associated with writing such code, which could be automated.

We should introduce a simple interface definition language and generate the IPC code from that. An interface definition might consist of:
  * interface name
  * optionally list of interfaces that we accumulate/extend
  * list of methods (calls)
  * list of events (callbacks)

A method or event declaration shall have:
  * a name
  * return type
  * list of input and output arguments (and their types)

The allowed types depend on the level of sophistication of the implementation and can range from simle (integer) to more complex (string, struct, array).

By compiling the an interface definition we would obtain a set of C+header files containing:
  * enums declaring method and event codes
  * typedefs encapsulating the interface instance for server and client
  * method and event ops structures
  * method and event dispatcher (switch statement) - on the called side
  * method and event call marshalling functions - on the calling side
  * method and event call unmarshalling functions - on the called side
  * code to set up and tear down the interface (mainly the callback session)
"	enhancement	new	major		helenos/unspecified	mainline						
