|
|
|
@ -151,13 +151,29 @@ namespace client
@@ -151,13 +151,29 @@ namespace client
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
//---------------------------------------------------------------------
|
|
|
|
|
AddressBook::AddressBook (): m_IsLoaded (false), m_IsDownloading (false), |
|
|
|
|
AddressBook::AddressBook (): m_Storage (nullptr), m_IsLoaded (false), m_IsDownloading (false), |
|
|
|
|
m_DefaultSubscription (nullptr), m_SubscriptionsUpdateTimer (nullptr) |
|
|
|
|
{ |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
AddressBook::~AddressBook () |
|
|
|
|
{ |
|
|
|
|
Stop (); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void AddressBook::Start () |
|
|
|
|
{ |
|
|
|
|
StartSubscriptions (); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void AddressBook::Stop () |
|
|
|
|
{ |
|
|
|
|
StopSubscriptions (); |
|
|
|
|
if (m_SubscriptionsUpdateTimer) |
|
|
|
|
{ |
|
|
|
|
delete m_SubscriptionsUpdateTimer; |
|
|
|
|
m_SubscriptionsUpdateTimer = nullptr; |
|
|
|
|
} |
|
|
|
|
if (m_IsDownloading) |
|
|
|
|
{ |
|
|
|
|
LogPrint (eLogInfo, "Subscription is downloading. Waiting for temination..."); |
|
|
|
@ -171,18 +187,24 @@ namespace client
@@ -171,18 +187,24 @@ namespace client
|
|
|
|
|
std::this_thread::sleep_for (std::chrono::seconds (1)); // wait for 1 seconds
|
|
|
|
|
} |
|
|
|
|
LogPrint (eLogError, "Subscription download hangs"); |
|
|
|
|
m_IsDownloading = false; |
|
|
|
|
} |
|
|
|
|
if (m_Storage) |
|
|
|
|
{ |
|
|
|
|
m_Storage->Save (m_Addresses); |
|
|
|
|
delete m_Storage; |
|
|
|
|
m_Storage = nullptr; |
|
|
|
|
} |
|
|
|
|
delete m_DefaultSubscription; |
|
|
|
|
if (m_DefaultSubscription) |
|
|
|
|
{ |
|
|
|
|
delete m_DefaultSubscription; |
|
|
|
|
m_DefaultSubscription = nullptr; |
|
|
|
|
} |
|
|
|
|
for (auto it: m_Subscriptions) |
|
|
|
|
delete it; |
|
|
|
|
delete m_SubscriptionsUpdateTimer; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
m_Subscriptions.clear (); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
AddressBookStorage * AddressBook::CreateStorage () |
|
|
|
|
{ |
|
|
|
|
return new AddressBookFilesystemStorage (); |
|
|
|
|