[nanomsg] Re: Short summary of internal nanomsg architecture

  • From: "Holger Winkelmann [TP]" <hw@xxxxxxxxxxxxxx>
  • To: nanomsg@xxxxxxxxxxxxx
  • Date: Sun, 3 Feb 2013 11:48:33 +0100 (CET)

Hi Martin,

Nic e summary, do you plan to have it on nanomsg.org or your blog too?

Holger

----- Original Message -----
> Hi all,
> 
> I though some of you may be interested in how nanomsg looks under the cover.
> 
> First, have a look at the attached diagram.
> 
> COMPONENTS
> ----------
> 
> Basically, there are core classes that provide scaffolding for the rest
> of the system, then there are transports (inproc, ipc, tcp etc.) and
> protocols (req/rep, pub/sub, etc.)
> 
> CORE
> ----
> 
> The API speaks directly to the core sock object which then dispatches
> appropriate calls to transports and protocols as necessary.
> 
> The core itself is a set of base classes for transports and protocols.
> 
> TRANSPORTS
> ----------
> 
> Transport consists endpoint objects (there's a base class nn_ep in the
> core to derive all endpoints from) and pipe objects (derive it from
> nn_pipebase core object).
> 
> Endpoint is what is created when nn_bind or nn_connect is called. It
> isn't necessarily a connection. For example, when you bind socket to a
> TCP port, endpoint "tcp://eth0:5555" is created, but there's no
> connection yet.
> 
> Pipe is an object that consumes and produces messages. It may correspond
> to e.g. TCP connection, but you are free to implement it in any way you
> like (reading/writing data to file, console, whatever).
> 
> PROTOCOLS
> ---------
> 
> Protocols are what used to be known as messaging patterns (req/rep,
> pub/sub etc.) I've chosen to use "protocol" name to stress the fact,
> that SP (as implemented in nanomsg) is a layer in network stack and thus
> is embodied in a set of protocols.
> 
> Theoretically there are "protocols", each of which can contain multiple
> "socket types". Technically, there's no need for a "protocol" object, so
> nanomsg defines only nn_sockbase as a base class for all socket types
> (req, rep, pub, sub etc.)
> 
> NOTE
> ----
> 
> To stress the fact that each base class has two facets, that it speaks
> to the transport- or protocol-specific derived class on one side and to
> the rest of the core on the other side, each of the baseclasses exposes
> two interfaces.
> 
> nn_sockbase, nn_epbase and nn_pipebase are used to communicate with the
> derived classes (i.e. specific transprots and protocols).
> 
> nn_sock, nn_ep and nn_pipe are used for internal communication inside
> the core.
> 
> Martin
> 
> 

-- 
Holger Winkelmann
Managing Director

email: hw@xxxxxxxxxxxxxx
phone: +49-391-819099-223
mobil: +49-171-5594745 (DE)

----------------- enabling your networks ---------------------

Travelping GmbH               phone:           +49-391-8190990
Roentgenstr. 13               fax:           +49-391-819099299
D-39108 Magdeburg             email:       info@xxxxxxxxxxxxxx
GERMANY                       web:   http://www.travelping.com


Company Registration: Amtsgericht Stendal Reg No.:   HRB 10578
Geschaeftsfuehrer: Holger Winkelmann | VAT ID No.: DE236673780
--------------------------------------------------------------

Other related posts: