Step 1
Derive a hub
Subclass the hub, give it the address the rest of the network will use to reach the foreign system. Nothing about the foreign API escapes past this boundary.
Ivyware/TargetCore/Integrations
Bridges to the rest of the estate
Each library here follows the same shape: a specialised hub whose primary context keeps pre-emptively pumping and routing messages, while a second dedicated pump serialises whatever the foreign API insists on serialising. The rest of your network never learns the difference.
Sample patterns, utilities and C++ source for the asynchronous integration of a SQL Server database into a P2Peer virtual network using ODBC. Integration is achieved through a P2PeerHubODBC object that can run as a standalone hub or be folded transparently into a service or an MFC application.
Load balancing comes from the split: the primary hub context pre-emptively and asynchronously pumps messages, while a SQL pump dedicates itself to the serial generation of the response message stream.
SQLConnect() function.SQLPrepare(), SQLExecute(), SQLFetch(), SQLDescribeCol() and SQLGetData(). The resulting stream is transparently routed back to the request source.SQLDisconnect().The library can be customised for equivalent ODBC databases such as MySQL. Download P2PmsgODBC.
Sample patterns, utilities and source for the seamless asynchronous integration of MFC objects into a messaging environment — the piece that stops a desktop UI from blocking on the network.
This was one library, P2PmsgMFC, and it is now two. When the kernel split into Msgcore and TargetCore the MFC extension DLL followed the same seam, and the seam is a real one rather than a filing decision:
CComboBox, CListCtrl, CTreeCtrl, CWnd, CDialog and CString.CP2PmsgTreeCtrl derives from CTreeCtrl and P2PeerTarget, so it receives messages directly rather than being driven by the frame — which is why it cannot live in a library that knows nothing about the kernel.Neither has a download of its own. Both ship prebuilt — DLL, import library and public headers — inside the AKAssms archive, which is the application that uses them.
Sample patterns, utilities and C++ source for the asynchronous integration of MAPI into a Windows messaging environment, through a P2PeerHubMAPI object that can stand alone or be embedded in a service or MFC application.
IMAPISession, IMsgStore, IMAPIFolder, IMessage and IMAPIProp interfaces.Sample patterns, utilities and C++ source for integrating VoIP into a Windows messaging environment, shipped as a static library.
P2PeerHubVoIP object, standalone or embedded in a Win32 service or MFC application.WAVEHDR and WAVEFORMATEX data structures.A complete C++ web server built from the messaging framework, supplied with source and a Visual Studio solution. It is the clearest single demonstration of what a hub, a connection and a map add up to — and the server this site's predecessor was developed and tested against.
GET, POST, HEAD, PUT, DELETE, TRACE, OPTIONS, CONNECT and PATCH.Accept, Host, Connection, DNT, Cookie and the rest.AKAserva represents work in progress and is subject to change without notice. Download AKAserva.
Two full Visual Studio solutions exist as working test benches for the libraries above.
SQLmapi represents work in progress and is subject to change without notice.
Every library on this page is a free download, source included. Go to the downloads.
Step 1
Subclass the hub, give it the address the rest of the network will use to reach the foreign system. Nothing about the foreign API escapes past this boundary.
Step 2
Register a target carrying its own pump. The foreign API — ODBC, MAPI, waveform audio — gets a thread that can block on it without stalling routing.
Step 3
Bind one handler per operation. Results stream back to the requesting address as ordinary messages, so callers need no knowledge of the bridge at all.