Addressing
Names, not endpoints
A hub cannot join a network without a valid hierarchical address. Routing reads the dotted path, so moving a service between processes or machines changes its connection class, not its callers.
Ivyware/TargetCore
Walkthrough — hub, connection, message
A hub owns an address on the virtual network, keeps a priority queue, and runs pump threads that hand each message to a MAP handler. Watch all of it happen, one call at a time — the code beside the diagram is the API you would actually write, in four languages.
A connection is just a typed transport bolted to the hub. Swap the class and the routing above is unchanged — the address, the queue, and the MAP stay exactly as they are.
Addressing
A hub cannot join a network without a valid hierarchical address. Routing reads the dotted path, so moving a service between processes or machines changes its connection class, not its callers.
Concurrency
Connection state changes and messages are pumped through shared threads — one pump per thread, a ceiling set when the hub is created, and none reserved per peer. Concurrent clients are bounded by system resources rather than by a thread you spend on each of them.
Payload
A message manages its own private heap and holds a hierarchical, field-addressed structure — native types, strings, blobs, XML, images — resized as you fill it. That structure is Msgcore: the kernel routes the store, it does not define one.
Load balancing
P2PeerContext() and P2PeerContextSwap() re-pump the message you are holding into a different pump, from inside the handler, in one call.
Security
Ephemeral ECDH P-256 to HKDF-SHA256 to AES-256-GCM, one key per connection, with no algorithm negotiation. Peer authentication is on by default, and the login proof is bound to the exchange it arrived on. Watch the handshake.
Diagnostics
Every kernel object can be serialised into a message, which is what makes reporting and logging inside a live distributed network tractable at all.
Surface
TargetFacade wraps the kernel in one header and one init object, with lambdas for handlers and one Listen/Connect pair for every transport. TargetCom puts the same hubs one CreateObject away from PowerShell, VBScript, VBA and C#.
Licence
TargetCore will be published under the Apache 2.0 licence on GitHub. The integration libraries and reference applications are already free downloads with full source.
Seven object families do the work. The full reference — including the map macros and the state each family owns — is on the architecture page.
| Object | Responsibility |
|---|---|
P2PeerHub | Owns an address, a connection registry, a priority queue and the primary pump. The unit of deployment and re-use. |
P2PeerTarget | Holds the system, connection and message maps. Register one with a hub to extend its behaviour or add another pump. |
P2PeerCon | Manages the state of one inter-hub or third-party connection, and translates addresses as messages cross it. |
P2Peerio | Does the physical I/O and the protocol translation — binary, ASCII, XML, HTML, FIX — plus key exchange and encryption. |
P2PeerMsg | The unit of exchange. Hierarchical, self-sizing, cloneable, and addressable by field and path name — a Msgcore store with an address on it. |
P2PeerMsg_MAP | Binds message names to handlers, with normal, reflected, acknowledged and exception-catch variants. |
P2Pevent | Events and exceptions. Throwable as ordinary C++ exceptions, or attachable to a message and routed across the network. |
Underneath
The structured message store the kernel carries. It defines the frame; TargetCore addresses it, encrypts it and moves it. The dependency runs one way only — Msgcore knows nothing about networks.
See Msgcore →Application
A technical analysis workspace whose chart engine, paged datastore and embedded Python interpreter all communicate over the kernel. Sold and supported as its own product.
Explore Chartboard →Reference server
A complete HTTP and WebSocket server assembled from nothing but the kernel — the clearest single demonstration of what a hub, a connection and a map add up to.
Read more →