Root

There are two concepts of root in PSYC. Depending on architectural choices, both roots, the protocol root and the entity root MAY be implemented in the same place in the source code, or not.

Root entity

The root entity in a server or application is the object that comes without anything behind the / in its uniform, as in psyc://psyced.org/. It performs jobs like authentication. This root is a full PSYC entity.

Protocol root

The protocol root instead leaves out the / as in psyc://psyced.org. It is used for negotiation for example in circuits and thus operates on the routing layer. If a packet is sent, and either the source or destination is not explicitly or implicitly addressed, the protocol root is intended.

In psyced the two are separate, and the root entity also handles answering XMPP discovery requests (even if they are translated to PSYC methods).

Implementations: common.c root.c Root.pike