veyron/runtimes/google/rt: Each ipc.Server has its own RoutingID (and stream.Manager).

MOTIVATION:
Prior to this change, all ipc.Servers in a Runtime shared the same RoutingID.
This made demultiplexing impossible - for example, if two ipc.Server objects
(with the same RoutingID) were "Listening" through a proxy, the proxy did
not have enough information to decide which of the two a packet destined
for that RoutingID should go to.

With this change, each Server gets its own RoutingID and thus RoutingID
identifies a "Server" rather than a "Runtime".

That said, it is expected that an overwhelming majority of Veyron
applications would use a single ipc.Server, and for this common
case the ipc.Server and ipc.Client objects will share a stream.Manager
and RoutingID.
The only reason to have multiple ipc.Server objects in a single
Runtime is if the Servers are supposed to Listen on different addresses.
For example, a process has some services that it only wants to export
only via a bluetooth interface and other services that it wants to export
on an IP network.

While at it, updated the HTTP debug server so that it lists out all
stream.Mangers (and RoutingIDs) created for a runtime.

Change-Id: If61126ea11c265fe509208139cf9d78230ede0c5
4 files changed
tree: 16e08cd6e9515fbc7ef5a2de96aa8bbd87b9c7c8
  1. examples/
  2. lib/
  3. runtimes/
  4. security/
  5. services/
  6. tools/