• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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)11 WeakXmppClient::WeakXmppClient(talk_base::TaskParent* parent)
12     : buzz::XmppClient(parent),
13       weak_ptr_factory_(this) {}
14 
~WeakXmppClient()15 WeakXmppClient::~WeakXmppClient() {
16   DCHECK(CalledOnValidThread());
17   Invalidate();
18 }
19 
Invalidate()20 void 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()29 base::WeakPtr<WeakXmppClient> WeakXmppClient::AsWeakPtr() {
30   DCHECK(CalledOnValidThread());
31   return weak_ptr_factory_.GetWeakPtr();
32 }
33 
Stop()34 void 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