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 9 namespace notifier { 10 WeakXmppClient(talk_base::TaskParent * parent)11WeakXmppClient::WeakXmppClient(talk_base::TaskParent* parent) 12 : buzz::XmppClient(parent), 13 weak_ptr_factory_(this) {} 14 ~WeakXmppClient()15WeakXmppClient::~WeakXmppClient() { 16 DCHECK(CalledOnValidThread()); 17 Invalidate(); 18 } 19 Invalidate()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 AsWeakPtr()29base::WeakPtr<WeakXmppClient> WeakXmppClient::AsWeakPtr() { 30 DCHECK(CalledOnValidThread()); 31 return weak_ptr_factory_.GetWeakPtr(); 32 } 33 Stop()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