Boost signal and thread support.
#include <iostream>
#include <boost/signal.hpp>
#include <boost/bind.hpp>
#include <libplayerc++/playerc++.h>
#include "args.h"
void cb1()
{ std::cout << "cb1" << std::endl; }
void cb2(uint32_t &aI)
{ std::cout << "cb2 " << ++aI << std::endl; }
class TestCb
{
int mId;
public:
TestCb(int aId) : mId(aId) {};
void Cb()
{ std::cout << "TestCb " << mId << std::endl; }
void Cb(uint32_t aOpt)
{ std::cout << "TestCb " << mId << " " << aOpt << std::endl; }
};
{
if (++i>10)
{
std::cout << "stop: " << i << std::endl;
}
}
int main(int argc, char** argv)
{
parse_args(argc, argv);
try
{
PlayerCc::ClientProxy::connection_t conn;
conn = cp.ConnectReadSignal(&cb1);
uint32_t count = 0;
cp.ConnectReadSignal(boost::bind(&cb2, count));
TestCb test1(1), test2(2);
cp.ConnectReadSignal(boost::bind(&TestCb::Cb, boost::ref(test1)));
cp.ConnectReadSignal(boost::bind(&TestCb::Cb, boost::ref(test2), 1));
std::cout << "Read()" << std::endl;
for (uint32_t i=0; i<10; ++i)
{
client.Read();
if (4==i)
cp.DisconnectReadSignal(conn);
}
std::cout << "Run()" << std::endl;
uint32_t i = 0;
conn = cp.ConnectReadSignal(boost::bind(&stop_cb, &client, i));
client.Run();
std::cout << "StartThread()" << std::endl;
cp.DisconnectReadSignal(conn);
client.StartThread();
timespec sleep = {5, 0};
nanosleep(&sleep, NULL);
for (uint32_t j=0; j<10; ++j)
{
cp.SaveFrame("test");
std::cout << cp << std::endl;
}
client.StopThread();
std::cout << "finished!" << std::endl;
}
{
std::cerr << e << std::endl;
return -1;
}
return 1;
}