projects
/
dcpomatic.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
No-op; variable renaming.
[dcpomatic.git]
/
src
/
lib
/
server.cc
diff --git
a/src/lib/server.cc
b/src/lib/server.cc
index 5598ef69f8388aae66098669ad9361e369691ab9..2a5ff5c9adf0f839250355a0a5afcb6cc8241493 100644
(file)
--- a/
src/lib/server.cc
+++ b/
src/lib/server.cc
@@
-22,23
+22,22
@@
* encoding work, and a class to implement such a server.
*/
* encoding work, and a class to implement such a server.
*/
-#include <string>
-#include <vector>
-#include <sstream>
-#include <iostream>
-#include <boost/algorithm/string.hpp>
-#include <boost/scoped_array.hpp>
-#include <libcxml/cxml.h>
-#include <dcp/raw_convert.h>
#include "server.h"
#include "server.h"
-#include "util.h"
-#include "scaler.h"
+#include "dcpomatic_socket.h"
#include "image.h"
#include "dcp_video.h"
#include "config.h"
#include "cross.h"
#include "player_video.h"
#include "image.h"
#include "dcp_video.h"
#include "config.h"
#include "cross.h"
#include "player_video.h"
-#include "encoded_data.h"
+#include "data.h"
+#include "safe_stringstream.h"
+#include "raw_convert.h"
+#include <libcxml/cxml.h>
+#include <boost/algorithm/string.hpp>
+#include <boost/scoped_array.hpp>
+#include <string>
+#include <vector>
+#include <iostream>
#include "i18n.h"
#include "i18n.h"
@@
-48,7
+47,6
@@
#define LOG_ERROR_NC(...) _log->log (__VA_ARGS__, Log::TYPE_ERROR);
using std::string;
#define LOG_ERROR_NC(...) _log->log (__VA_ARGS__, Log::TYPE_ERROR);
using std::string;
-using std::stringstream;
using std::multimap;
using std::vector;
using std::list;
using std::multimap;
using std::vector;
using std::list;
@@
-64,7
+62,6
@@
using boost::bind;
using boost::scoped_array;
using boost::optional;
using dcp::Size;
using boost::scoped_array;
using boost::optional;
using dcp::Size;
-using dcp::raw_convert;
Server::Server (shared_ptr<Log> log, bool verbose)
: _terminate (false)
Server::Server (shared_ptr<Log> log, bool verbose)
: _terminate (false)
@@
-104,27
+101,31
@@
Server::process (shared_ptr<Socket> socket, struct timeval& after_read, struct t
scoped_array<char> buffer (new char[length]);
socket->read (reinterpret_cast<uint8_t*> (buffer.get()), length);
scoped_array<char> buffer (new char[length]);
socket->read (reinterpret_cast<uint8_t*> (buffer.get()), length);
- string
stream
s (buffer.get());
+ string s (buffer.get());
shared_ptr<cxml::Document> xml (new cxml::Document ("EncodingRequest"));
shared_ptr<cxml::Document> xml (new cxml::Document ("EncodingRequest"));
- xml->read_stream (s);
+ xml->read_string (s);
+ /* This is a double-check; the server shouldn't even be on the candidate list
+ if it is the wrong version, but it doesn't hurt to make sure here.
+ */
if (xml->number_child<int> ("Version") != SERVER_LINK_VERSION) {
cerr << "Mismatched server/client versions\n";
LOG_ERROR_NC ("Mismatched server/client versions");
return -1;
}
if (xml->number_child<int> ("Version") != SERVER_LINK_VERSION) {
cerr << "Mismatched server/client versions\n";
LOG_ERROR_NC ("Mismatched server/client versions");
return -1;
}
- shared_ptr<PlayerVideo> pvf (new PlayerVideo (xml, socket
, _log
));
+ shared_ptr<PlayerVideo> pvf (new PlayerVideo (xml, socket));
DCPVideo dcp_video_frame (pvf, xml, _log);
gettimeofday (&after_read, 0);
DCPVideo dcp_video_frame (pvf, xml, _log);
gettimeofday (&after_read, 0);
-
shared_ptr<EncodedData> encoded = dcp_video_frame.encode_locally (
);
+
Data encoded = dcp_video_frame.encode_locally (boost::bind (&Log::dcp_log, _log.get(), _1, _2)
);
gettimeofday (&after_encode, 0);
try {
gettimeofday (&after_encode, 0);
try {
- encoded->send (socket);
+ socket->write (encoded.size ());
+ socket->write (encoded.data ().get (), encoded.size ());
} catch (std::exception& e) {
cerr << "Send failed; frame " << dcp_video_frame.index() << "\n";
LOG_ERROR ("Send failed; frame %1", dcp_video_frame.index());
} catch (std::exception& e) {
cerr << "Send failed; frame " << dcp_video_frame.index() << "\n";
LOG_ERROR ("Send failed; frame %1", dcp_video_frame.index());
@@
-180,7
+181,7
@@
Server::worker_thread ()
struct timeval end;
gettimeofday (&end, 0);
struct timeval end;
gettimeofday (&end, 0);
-
strings
tream message;
+
SafeStringS
tream message;
message.precision (2);
message << fixed
<< "Encoded frame " << frame << " from " << ip << ": "
message.precision (2);
message << fixed
<< "Encoded frame " << frame << " from " << ip << ": "
@@
-251,14
+252,17
@@
Server::broadcast_received ()
xmlpp::Document doc;
xmlpp::Element* root = doc.create_root_node ("ServerAvailable");
root->add_child("Threads")->add_child_text (raw_convert<string> (_worker_threads.size ()));
xmlpp::Document doc;
xmlpp::Element* root = doc.create_root_node ("ServerAvailable");
root->add_child("Threads")->add_child_text (raw_convert<string> (_worker_threads.size ()));
-
stringstream xml
;
-
doc.write_to_stream (xml,
"UTF-8");
+
root->add_child("Version")->add_child_text (raw_convert<string> (SERVER_LINK_VERSION))
;
+
string xml = doc.write_to_string (
"UTF-8");
+ if (_verbose) {
+ cout << "Offering services to master " << _broadcast.send_endpoint.address().to_string () << "\n";
+ }
shared_ptr<Socket> socket (new Socket);
try {
socket->connect (boost::asio::ip::tcp::endpoint (_broadcast.send_endpoint.address(), Config::instance()->server_port_base() + 1));
shared_ptr<Socket> socket (new Socket);
try {
socket->connect (boost::asio::ip::tcp::endpoint (_broadcast.send_endpoint.address(), Config::instance()->server_port_base() + 1));
- socket->write (xml.
str().
length() + 1);
- socket->write ((uint8_t *) xml.
str().c_str(), xml.str()
.length() + 1);
+ socket->write (xml.length() + 1);
+ socket->write ((uint8_t *) xml.
c_str(), xml
.length() + 1);
} catch (...) {
}
} catch (...) {
}