| Index: examples/indirect_service/README.md
|
| diff --git a/examples/indirect_service/README.md b/examples/indirect_service/README.md
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..e26b391bdea6a4273032d89b3211fcd257c363f7
|
| --- /dev/null
|
| +++ b/examples/indirect_service/README.md
|
| @@ -0,0 +1,27 @@
|
| +Indirect Service Demo
|
| +=====================
|
| +
|
| +This demo is intended to highlight the difference between requesting a service
|
| +and providing one. The demo is based on two services: IntegerService and
|
| +IndirectIntegerService.
|
| +
|
| +interface IntegerService {
|
| + Increment() => (int32 value);
|
| +};
|
| +
|
| +This trival interface just manages a single internal integer that's initialized
|
| +to 0. The Increment() method returns a new value.
|
| +
|
| +interface IndirectIntegerService {
|
| + Set(IntegerService? service);
|
| + Get(IntegerService&? service);
|
| +};
|
| +
|
| +This service delegates to the one IntegerService provided by the Set() method.
|
| +Clients use Get() to request a connection to an IntegerService that targets the
|
| +delegate. This is roughly an IntegerService "pointer".
|
| +
|
| +The demo creates a set of threads all of which get their own connection to the
|
| +shared IntegerService via the IndirectIntegerService. The threads all access
|
| +the IntegerService at the same time and then display a little table of the
|
| +results.
|
|
|