Пример #1
0
void ImapSessionCommand::AddActivity(const ActivityPtr& activity)
{
	if(activity.get()) {
		m_commandActivitySet->AddActivity(activity);

		// Attempt to adopt immediately (async) to avoid blocking ActivityManager queue
		activity->Adopt(m_session.GetBusClient());
	}
}
Пример #2
0
void ActivitySet::AddActivity(const ActivityPtr& activity)
{
	if(activity.get() == NULL) {
		throw MailException("AddActivity called with null activity", __FILE__, __LINE__);
	}

	// Only add if it's not already in the set
	if(FindActivitySlot(activity.get()) == m_activities.end()) {
		ActivitySlotPtr activityState(new ActivitySlot(this, activity));
		m_activities.push_back(activityState);

		if(activity->IsStarting()) {
			m_starting.insert(activity);
		} else if(activity->IsEnding()) {
			m_ending.insert(activity);
		}
	}
}
Пример #3
0
void SyncSession::AttachActivity(ActivityPtr activity)
{
	if (activity.get()) {
		if (IsActive()) {
			m_activities->AddActivity(activity);
		} else if (IsEnding()) {
			m_queuedActivities->AddActivity(activity);
		}
	}
}
UpdateAccountCommand::UpdateAccountCommand(ImapClient& client, ActivityPtr activity, bool credentialsChanged)
: ImapClientCommand(client),
  m_activitySet(new ActivitySet(client)),
  m_credentialsChanged(credentialsChanged),
  m_getAccountTransportSlot(this, &UpdateAccountCommand::GetAccountTransportResponse),
  m_updateFolderActivitiesSlot(this, &UpdateAccountCommand::UpdateFolderActivitiesDone),
  m_endActivitiesSlot(this, &UpdateAccountCommand::ActivitiesEnded),
  m_notifySmtpSlot(this, &UpdateAccountCommand::NotifySmtpResponse)
{
	// FIXME wait for adoption to complete
	// EndActivities will wait for us, but it's not as polite
	if(activity.get() && activity->CanAdopt()) {
		m_activitySet->AddActivity(activity);

		activity->Adopt(client);
		activity->SetEndOrder(Activity::EndOrder_Last);
	}
}