IPDL/Five minute example

From MozillaWiki
< IPDL
Revision as of 17:02, 13 July 2009 by Cgj (talk | contribs) (Created page with '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...')
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

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;
 };