IPDL/Five minute example: Difference between revisions
< IPDL
Jump to navigation
Jump to search
No edit summary |
mNo edit summary |
||
| Line 5: | Line 5: | ||
Put this in the file <code>ipc/ipdl/test-harness/Test.ipdl</code>. | Put this in the file <code>ipc/ipdl/test-harness/Test.ipdl</code>. | ||
sync protocol Test | |||
{ | |||
both: | |||
sync Ping() returns (int status); | |||
parent: | |||
GetValue(String key); | |||
GetValues(StringArray keys); | |||
sync SetValue(String key, String val) returns (bool ok); | |||
child: | |||
TellValue(String key, String val); | |||
TellValues(StringArray keys, StringArray vals); | |||
state START: | |||
recv Ping goto START; | |||
send Ping goto START; | |||
recv SetValue goto HAVE_VALUES; | |||
state HAVE_VALUES: | |||
recv Ping goto HAVE_VALUES; | |||
send Ping goto HAVE_VALUES; | |||
recv SetValue goto HAVE_VALUES; | |||
recv GetValue goto TELLING_VALUE; | |||
recv GetValues goto TELLING_VALUES; | |||
state TELLING_VALUE: | |||
send TellValue goto HAVE_VALUES; | |||
state TELLING_VALUES: | |||
send TellValues goto HAVE_VALUES; | |||
}; | |||
== Hook the IPDL file into our build system == | == Hook the IPDL file into our build system == | ||
| Line 45: | Line 45: | ||
* Create the file <code>ipc/ipdl/test-harness/ipdl.mk</code> and add the following text to it. | * Create the file <code>ipc/ipdl/test-harness/ipdl.mk</code> and add the following text to it. | ||
IPDLSRCS = \ | |||
Test.ipdl \ | |||
$(NULL) | |||
Revision as of 17:23, 13 July 2009
This page walks you through the steps of creating an IPDL protocol and writing the C++ code that implements the required interfaces. This guide walks you through the steps taken to implement the testing code in ipc/ipdl/test-harness. You are encouraged to follow this guide step-by-step and change the code in ipc/ipdl/test-harness as you follow along.
Write the IPDL specification
Put this in the file ipc/ipdl/test-harness/Test.ipdl.
sync protocol Test
{
both:
sync Ping() returns (int status);
parent:
GetValue(String key);
GetValues(StringArray keys);
sync SetValue(String key, String val) returns (bool ok);
child:
TellValue(String key, String val);
TellValues(StringArray keys, StringArray vals);
state START:
recv Ping goto START;
send Ping goto START;
recv SetValue goto HAVE_VALUES;
state HAVE_VALUES:
recv Ping goto HAVE_VALUES;
send Ping goto HAVE_VALUES;
recv SetValue goto HAVE_VALUES;
recv GetValue goto TELLING_VALUE;
recv GetValues goto TELLING_VALUES;
state TELLING_VALUE:
send TellValue goto HAVE_VALUES;
state TELLING_VALUES:
send TellValues goto HAVE_VALUES;
};
Hook the IPDL file into our build system
- Add
ipc/ipdl/test-harnessto the IPDLDIRS variable inipc/ipdl/Makefile.in - Create the file
ipc/ipdl/test-harness/ipdl.mkand add the following text to it.
IPDLSRCS = \ Test.ipdl \ $(NULL)