1// Copyright (c) 2012 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#include "jingle/notifier/base/weak_xmpp_client.h" 6 7#include "base/compiler_specific.h" 8 9namespace notifier { 10 11WeakXmppClient::WeakXmppClient(talk_base::TaskParent* parent) 12 : buzz::XmppClient(parent), 13 weak_ptr_factory_(this) {} 14 15WeakXmppClient::~WeakXmppClient() { 16 DCHECK(CalledOnValidThread()); 17 Invalidate(); 18} 19 20void WeakXmppClient::Invalidate() { 21 DCHECK(CalledOnValidThread()); 22 // We don't want XmppClient raising any signals once its invalidated. 23 SignalStateChange.disconnect_all(); 24 SignalLogInput.disconnect_all(); 25 SignalLogOutput.disconnect_all(); 26 weak_ptr_factory_.InvalidateWeakPtrs(); 27} 28 29base::WeakPtr<WeakXmppClient> WeakXmppClient::AsWeakPtr() { 30 DCHECK(CalledOnValidThread()); 31 return weak_ptr_factory_.GetWeakPtr(); 32} 33 34void WeakXmppClient::Stop() { 35 DCHECK(CalledOnValidThread()); 36 // We don't want XmppClient used after it has been stopped. 37 Invalidate(); 38 buzz::XmppClient::Stop(); 39} 40 41} // namespace notifier 42