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. |