PST SDK  5.0.1.0-acae3ae
sharedmemory.cpp

This example can be found in Development\sharedmemory\sharedmemory.cpp.

This example shows how to activate the shared memory communication pipeline that enables communication of the PST Client application through the PST SDK. Note that for the shared memory pipeline to function, the application has to run with elevated access (administrator rights). After enabling shared memory, the PST Client application can be used to download calibration information and manage tracking targets.

#ifdef WIN32
#include <windows.h>
#endif
/*
* Define handler functions required to ensure a clean shutdown of the PST Tracker
* when the application is terminated.
*/
static void Exithandler(int sig);
#ifdef WIN32
BOOL WINAPI ConsoleHandler(DWORD CEvent)
{
Exithandler(CEvent);
return TRUE;
}
#endif
/* End of handler functions */
#include <memory>
#include <iostream>
#include "pst-sdk.h"
/*
* Create a shared pointer for storing the PSTech::pstsdk::Tracker object instance.
* By making use of a shared pointer, proper destruction of the PST Tracker connection
* is ensured in case the application is shut down.
*/
std::shared_ptr<PSTech::pstsdk::Tracker> pst;
/*
* Implement the exit handler to shut-down the PST Tracker connection on application terrmination.
*/
static void Exithandler(int sig)
{
pst->Shutdown();
}
int main(int argc, char *argv[])
{
// Register the exit handler with the application
#ifdef WIN32
SetConsoleCtrlHandler((PHANDLER_ROUTINE)ConsoleHandler, TRUE);
#else
signal(SIGTERM, Exithandler);
signal(SIGKILL, Exithandler);
signal(SIGQUIT, Exithandler);
signal(SIGINT, Exithandler);
#endif
// Implement error handling of PSTech::TrackerException exceptions to prevent
// improper PST Tracker shutdown on errors.
try
{
// Create an instance of the Tracker object using the default configuration path and file names.
pst = std::make_shared<PSTech::pstsdk::Tracker>();
// Start the tracker server.
pst->Start();
// Enable the shared memory pipeline to enable client connections.
pst->EnableSharedMemory();
// Wait for one minute before terminating this application.
Sleep(60000);
// Disable the shared memory pipeline. If the PST Client is still connected at this point,
// it will try to reconnect and otherwise exit.
pst->DisableSharedMemory();
}
{
std::cout << e.full_description() << "\n";
// Handle the error.
}
// Make sure that the connection to the PST Tracker is shut down properly.
pst->Shutdown();
return 0;
}