TT CORE SDK

Initializing an Application

Initializing an Application

To create a basic TT Core SDK application, you need to:

  • Create a class that is derived from ttsdk::IEventHandler and defines your SDK event handler. You must provide implementations for:
    • virtual void OnStatus(const Status status) = 0;
  • Create an instance of the TTSDKOptions class. Define the TT environment to which your application will connect and specify your application key for this environment.
  • Initialize the TT Core SDK passing your TTSDKOptions instance variable and your SDK event handler instance variable.
    • Once an application initializes the TT Core SDK shared library, all other applications will use the same instance. Any subsequent calls will be a no-op.

The following code snippet demonstrates an example of this process.

      

#include <iostream>
#include <iomanip>
#include <atomic>
#include <sstream>
#include <string.h>
#include <tt_cplus_sdk.h>
#include <condition_variable>
  
std::mutex mutex;
std::condition_variable sdkReadyCondition;
  
//
//  SDK event handler class
//
  
class SDKEventHandler : public ttsdk::IEventHandler
{
public:
  SDKEventHandler() : IEventHandler() {}
  virtual ~SDKEventHandler() {}
  
  // received on an SDK managed thread that can be used for processing.
  // beware that time consuming tasks can delay the delivery of another status event.
  
  virtual void OnStatus(const ttsdk::IEventHandler::Status status) override
  {
    if (status == ttsdk::IEventHandler::Status::INITIALIZED)
    {
        std::cout << "---SDK is initialized." << std::endl;
        std::lock_guard lock(mutex);
        sdkReadyCondition.notify_one();
    }
    else
    {
        std::cout << "SDKEventHandler::OnStatus (" << (uint32_t)status 
              << ")" << std::endl;
    }
  }
};

  
//
//  Main
//

int main(int argc, char* argv[])
{
    //Set the environment the app needs to run in here
    ttsdk::Environment env = ttsdk::Environment::ProdLive;

    // Add your app secret Key here. It looks like: 
00000000-0000-0000-0000-000000000000:00000000-0000-0000-0000-000000000000
    std::string app_key = “Your App Key”;

    ttsdk::TTSDKOptions options;
    options.environment = env;
    options.app_key_secret = app_key.c_str();

    SDKEventHandler myObserver;
    
    if (!ttsdk::Initialize(options, &myObserver, nullptr))
    {
        std::cout << "Unable to initialize SDK!" << std::endl;
        return -1;
    }  

    std::unique_lock lock(mutex);
    if (sdkReadyCondition.wait_for(lock, std::chrono::seconds(300)) == std::cv_status::timeout)
    {
        std::cout << "Timeout waiting for SDK to initialize!" << std::endl;
        return -1;
    }

    std::cout << std::endl;
    std::cout << "<<<<< TT CORE SDK is initialized. >>>>>" << std::endl;

    std::cout << std::endl << "Press q to exit....." << std::endl;
    std::string command;
    while (std::cin >> command)
    {
        if (command == "q")
        {
            std::cout << "Quitting...\n";
            break;
        }
    }
    std::cout << "Exiting..." << std::endl;
    ttsdk::Shutdown();
}