Commit d660d1d6 authored by jacobgladish's avatar jacobgladish
Browse files

Added better version of Guid (needs tested)

parent 629c1550
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -3,7 +3,7 @@

namespace
{
  common::Guid const kDefaultAppGuid = common::Guid::FromString("DA9C7763-C3E0-4B3B-B190-5BEF8DF96E4D");
  common::Guid const kDefaultAppGuid = common::Guid::Parse("DA9C7763-C3E0-4B3B-B190-5BEF8DF96E4D");
  char const* kDefaultLanguageForAbout = "en";
  char const* kUnknownAdapter = "Unknown Device";
  char const* kUnknownManufacturer = "Unknown";
@@ -108,7 +108,7 @@ AllJoynAbout::ReadDeviceId(std::string&)
QStatus
AllJoynAbout::CreateAndSaveDeviceId(std::string& deviceId)
{
  common::Guid guid = common::Guid::Create();
  common::Guid guid = common::Guid::NewGuid();
  deviceId = guid.ToString();

  // TODO: need to persist this configuration 

Common/Guid.cpp

0 → 100644
+74 −0
Original line number Diff line number Diff line
#include <Common/Guid.h>
#include <string.h>

common::Guid::Guid()
{
  memset(m_uuid, 0, sizeof(uuid_t));
}

common::Guid::Guid(uuid_t id)
{
  memcpy(m_uuid, id, sizeof(uuid_t));
}

common::Guid
common::Guid::NewGuid()
{
#ifdef __linux__
  char id[17];
  memset(id, 0, sizeof(id));
#else
  uuid_string_t id;
#endif

  uuid_t uuid;
  uuid_generate_random(uuid);
  return Guid(uuid);
}

common::Guid
common::Guid::Parse(char const* s)
{
  if (s == NULL)
    return Guid::Null();

  uuid_t id;
  if (uuid_parse(s, id) == 0)
    return Guid(id);
  else
    return Guid::Null();
}

common::Guid const&
common::Guid::Null()
{
  static Guid zeroGuid = Guid();
  return zeroGuid;
}

std::string
common::Guid::ToString() const
{
  char buff[64];
  memset(buff, 0, sizeof(buff));
  uuid_unparse_lower(m_uuid, buff);
  return std::string(buff);
}

bool
common::Guid::operator < (Guid const& rhs) const
{
  return uuid_compare(m_uuid, rhs.m_uuid) < 0;
}

bool
common::Guid::operator == (Guid const& rhs) const
{
  return uuid_compare(m_uuid, rhs.m_uuid) == 0;
}

bool
common::Guid::operator != (Guid const& rhs) const
{
  return uuid_compare(m_uuid, rhs.m_uuid) != 0;
}
+11 −24
Original line number Diff line number Diff line
#pragma once

#include <string>
#include <uuid/uuid.h>
#include <string>

namespace common
{
  class Guid
  {
  public:
    static Guid Create()
    {
      uuid_t uuid;
      uuid_generate_random(uuid);
    static Guid const& Null();

      #ifdef __linux__
      char s[37];
      #else
      uuid_string_t s;
      #endif
    static Guid NewGuid();
    static Guid Parse(char const* s);

      uuid_unparse(uuid, s);
    std::string ToString() const;

      return Guid(std::string(s));
    }

    static Guid FromString(char const* s)
    {
      return Guid(s);
    }

    std::string ToString() const
      { return m_uuid; }
    bool operator <  (Guid const& rhs) const;
    bool operator == (Guid const& rhs) const;
    bool operator != (Guid const& rhs) const;

  private:
    Guid(std::string const& uuid) : m_uuid(uuid) { }
    Guid();
    Guid(uuid_t id);

  private:
    std::string m_uuid;
    uuid_t m_uuid;
  };
}
+1 −0
Original line number Diff line number Diff line
@@ -12,6 +12,7 @@ SRCS=DeviceProviders/AllJoynProvider.cpp \
     Bridge/DeviceSignal.cpp \
     Common/Log.cpp \
     Common/Variant.cpp \
     Common/Guid.cpp \
     Adapters/MockAdapter/MockAdapter.cpp \
     Adapters/MockAdapter/MockDevices.cpp \
     Adapters/MockAdapter/MockAdapterDevice.cpp \