/* Copyright (C) 2019 * * This file is part of the osdev components suite * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2, or (at your option) any * later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA */ // std #include #include #include #include "subscriber.h" enum TIME_RES { T_MICRO, T_MILLI, T_SECONDS }; std::uint64_t getEpochUSecs() { auto tsUSec =std::chrono::time_point_cast(std::chrono::system_clock::now()); return static_cast(tsUSec.time_since_epoch().count()); } void sleepcp( int number, TIME_RES resolution = T_MILLI ) // Cross-platform sleep function { int factor = 0; // Should not happen.. switch( resolution ) { case T_MICRO: factor = 1; break; case T_MILLI: factor = 1000; break; case T_SECONDS: factor = 1000000; break; } usleep( number * factor ); } int main( int argc, char* argv[] ) { // Satisfy the compiler (void)argc; (void)argv; std::cout << "Creating the subscriber : "; // Create the subscriber Subscriber *pSubscriber = new Subscriber(); if( pSubscriber != nullptr ) { std::cout << "[OK]" << std::endl; std::cout << "Connecting to the test-broker : " << std::endl; pSubscriber->connect( "localhost", 1883, "", "" ); std::cout << "Subscribing to the test-topic....." << std::endl; pSubscriber->subscribe( "test/publisher/TestPublisher" ); // Start a loop to give the subscriber the possibility to do its work. while( 1 ) { sleepcp( 1, T_SECONDS ); // Sleep 1 Sec to give the scheduler the change to interfene. } } else { std::cout << "[FAILED]" << std::endl; return -1; } return 0; }