diff --git a/src/statsd_client.cpp b/src/statsd_client.cpp index 1fbadfa..b34aea0 100644 --- a/src/statsd_client.cpp +++ b/src/statsd_client.cpp @@ -50,6 +50,17 @@ StatsdClient::StatsdClient(const string& host, int port, const string& ns) config(host, port, ns); srandom(time(NULL)); } + +StatsdClient::StatsdClient(const StatsdClient &original) +{ + // Must create our own storage for ClientData object; don't share original's + d = new _StatsdClientData; + *d = *original.d; + + // Don't share original's socket, either. + d->init = false; + d->sock = -1; +} StatsdClient::~StatsdClient() { diff --git a/src/statsd_client.h b/src/statsd_client.h index 9e97e83..9b0224d 100644 --- a/src/statsd_client.h +++ b/src/statsd_client.h @@ -14,6 +14,7 @@ struct _StatsdClientData; class StatsdClient { public: StatsdClient(const std::string& host="127.0.0.1", int port=8125, const std::string& ns = ""); + StatsdClient(const StatsdClient &original); ~StatsdClient(); public: