configurable client ID

This commit is contained in:
badaix 2017-06-08 00:04:09 +02:00
parent 77bd32247a
commit 81f46ff41f
4 changed files with 22 additions and 11 deletions

View file

@ -34,14 +34,15 @@
using namespace std;
Controller::Controller(size_t instance) : MessageReceiver(),
instance_(instance),
active_(false),
latency_(0),
stream_(nullptr),
decoder_(nullptr),
player_(nullptr),
serverSettings_(nullptr),
Controller::Controller(const std::string& clientId, size_t instance) : MessageReceiver(),
clientId_(clientId),
instance_(instance),
active_(false),
latency_(0),
stream_(nullptr),
decoder_(nullptr),
player_(nullptr),
serverSettings_(nullptr),
asyncException_(false)
{
}
@ -184,7 +185,9 @@ void Controller::worker()
/// Say hello to the server
string macAddress = clientConnection_->getMacAddress();
msg::Hello hello(macAddress, ::getHostId(macAddress), instance_);
if (clientId_.empty())
clientId_ = ::getHostId(macAddress);
msg::Hello hello(macAddress, clientId_, instance_);
clientConnection_->send(&hello);
/// Do initial time sync with the server

View file

@ -46,7 +46,7 @@
class Controller : public MessageReceiver
{
public:
Controller(size_t instance);
Controller(const std::string& clientId, size_t instance);
void start(const PcmDevice& pcmDevice, const std::string& host, size_t port, int latency);
void stop();
@ -61,6 +61,7 @@ public:
private:
void worker();
bool sendTimeSyncMessage(long after = 1000);
std::string clientId_;
size_t instance_;
std::atomic<bool> active_;
std::thread controllerThread_;

View file

@ -89,6 +89,7 @@ int main (int argc, char **argv)
Implicit<int> daemonOption("d", "daemon", "daemonize, optional process priority [-20..19]", -3, &processPriority);
Value<int> latencyValue("", "latency", "latency of the soundcard", 0, &latency);
Value<size_t> instanceValue("i", "instance", "instance id", 1, &instance);
Value<string> clientIdValue("", "clientID", "unique client id", "");
Value<string> userValue("", "user", "the user[:group] to run snapclient as when daemonized");
OptionParser op("Allowed options");
@ -105,6 +106,7 @@ int main (int argc, char **argv)
.add(userValue)
#endif
.add(latencyValue)
.add(clientIdValue)
.add(instanceValue);
try
@ -222,7 +224,7 @@ int main (int argc, char **argv)
#endif
}
std::unique_ptr<Controller> controller(new Controller(instance));
std::unique_ptr<Controller> controller(new Controller(clientIdValue.getValue(), instance));
if (!g_terminated)
{
logO << "Latency: " << latency << "\n";

View file

@ -325,7 +325,12 @@ static std::string getHostId(const std::string defaultId = "")
CFRelease(uuidCf);
#elif ANDROID
result = getProp("ro.serialno");
#else
std::ifstream infile("/var/lib/dbus/machine-id");
if (infile.good())
std::getline(infile, result);
#endif
strutils::trim(result);
if (!result.empty())
return result;