Nirvana C++: Peer to Peer Services

Nirvana provides a rich set of APIs that provide developers with the ability to create Peer to Peer (P2P) applications. We call these Peer to Peer applications Services. This guide will demonstrate how Nirvana Peer to Peer Services work, and provides examples code snippets for all relevant concepts.

P2P Service Components

There are two parts to a Peer to Peer Service in Nirvana: a Server Service and a Client.

When a Server Service is running, it is visible within the Nirvana Namespace and is available to any Client wishing to connect. The Nirvana Realm Server acts as the bridge that connects Clients to Server Services. Each Server Service can support multiple Clients.


Nirvana Peer to Peer Client and Server Services

The Server Service is a process that registers itself with a Nirvana Realm so it is visible to Clients wishing to connect.

A Nirvana Peer to Peer Service Client is a process that connects to a Nirvana Realm, obtains a reference to a Server Service and begins communicating with it.

When a Client connects to the Server Service, all communication between the Client and server sevice takes place through the Nirvana Realm, using Nirvana's standard communication protocols.

P2P Service Types

There are two types of Nirvana Peer to Peer Services:

  • Event-based Services

    Nirvana Peer to Peer Event-based Services communicate via events which are published by the Event-based Client, and received and responded to by the Event-based Server Service.

  • Stream-based Services

    Nirvana Peer to Peer Stream-based Services communicate via input and output streams on both the Client and Server Service. Anything written to the output stream of the Stream-based Service Client is received via the input stream of the Stream-based Server Service and vice versa.

Examples

The following examples give full application source code to implement Server Services and Clients:

For more information on Nirvana Peer to Peer Services please see the API documentation.