using std::vector;
using std::list;
using std::cout;
+using std::cerr;
using boost::shared_ptr;
using boost::algorithm::is_any_of;
using boost::algorithm::split;
return ServerDescription (b[0], atoi (b[1].c_str ()));
}
-Server::Server (shared_ptr<Log> log)
+Server::Server (shared_ptr<Log> log, bool verbose)
: _log (log)
+ , _verbose (verbose)
{
}
shared_ptr<cxml::Document> xml (new cxml::Document ("EncodingRequest"));
xml->read_stream (s);
if (xml->number_child<int> ("Version") != SERVER_LINK_VERSION) {
+ cerr << "Mismatched server/client versions\n";
_log->log ("Mismatched server/client versions");
return -1;
}
if (frame >= 0) {
struct timeval end;
gettimeofday (&end, 0);
- cout << String::compose ("Encoded frame %1 in %2", frame, seconds (end) - seconds (start)) << "\n";
- _log->log (String::compose ("Encoded frame %1 in %2", frame, seconds (end) - seconds (start)));
+
+ string const message = String::compose (
+ "Encoded frame %1 from %2 in %3s", frame, socket->socket().remote_endpoint().address().to_string(), seconds(end) - seconds(start)
+ );
+
+ if (_verbose) {
+ cout << message << "\n";
+ }
+
+ _log->log (message);
}
_worker_condition.notify_all ();
void
Server::run (int num_threads)
{
- _log->log (String::compose (N_("Server starting with %1 threads"), num_threads));
+ _log->log (String::compose ("Server starting with %1 threads", num_threads));
+ if (_verbose) {
+ cout << "DCP-o-matic server started with " << num_threads << " threads.\n";
+ }
for (int i = 0; i < num_threads; ++i) {
_worker_threads.push_back (new thread (bind (&Server::worker_thread, this)));
class Server : public boost::noncopyable
{
public:
- Server (boost::shared_ptr<Log> log);
+ Server (boost::shared_ptr<Log> log, bool verbose);
void run (int num_threads);
boost::mutex _worker_mutex;
boost::condition _worker_condition;
boost::shared_ptr<Log> _log;
+ bool _verbose;
struct Broadcast {
void main_thread ()
{
- Server server (memory_log);
+ Server server (memory_log, false);
server.run (Config::instance()->num_local_encoding_threads ());
}
cerr << "Syntax: " << n << " [OPTION]\n"
<< " -v, --version show DCP-o-matic version\n"
<< " -h, --help show this help\n"
- << " -t, --threads number of parallel encoding threads to use\n";
+ << " -t, --threads number of parallel encoding threads to use\n"
+ << " --verbose be verbose\n";
}
int
main (int argc, char* argv[])
{
int num_threads = Config::instance()->num_local_encoding_threads ();
+ bool verbose = false;
int option_index = 0;
while (1) {
{ "version", no_argument, 0, 'v'},
{ "help", no_argument, 0, 'h'},
{ "threads", required_argument, 0, 't'},
+ { "verbose", no_argument, 0, 'A'},
{ 0, 0, 0, 0 }
};
case 't':
num_threads = atoi (optarg);
break;
+ case 'A':
+ verbose = true;
+ break;
}
}
Scaler::setup_scalers ();
- shared_ptr<FileLog> log (new FileLog ("servomatic.log"));
- Server server (log);
+ shared_ptr<FileLog> log (new FileLog ("dcpomatic_server_cli.log"));
+ Server server (log, verbose);
server.run (num_threads);
return 0;
}
shared_ptr<EncodedData> locally_encoded = frame->encode_locally ();
BOOST_ASSERT (locally_encoded);
- Server* server = new Server (log);
+ Server* server = new Server (log, true);
new thread (boost::bind (&Server::run, server, 2));