sbDeviceRequestThreadQueue.h
Go to the documentation of this file.
1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /* vim: set sw=2 :miv */
3 /*
4  *=BEGIN SONGBIRD GPL
5  *
6  * This file is part of the Songbird web player.
7  *
8  * Copyright(c) 2005-2011 POTI, Inc.
9  * http://www.songbirdnest.com
10  *
11  * This file may be licensed under the terms of of the
12  * GNU General Public License Version 2 (the ``GPL'').
13  *
14  * Software distributed under the License is distributed
15  * on an ``AS IS'' basis, WITHOUT WARRANTY OF ANY KIND, either
16  * express or implied. See the GPL for the specific language
17  * governing rights and limitations.
18  *
19  * You should have received a copy of the GPL along with this
20  * program. If not, go to http://www.gnu.org/licenses/gpl.html
21  * or write to the Free Software Foundation, Inc.,
22  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
23  *
24  *=END SONGBIRD GPL
25  */
26 
27 #ifndef SBDEVICEREQUESTTHREADQUEUE_H_
28 #define SBDEVICEREQUESTTHREADQUEUE_H_
29 
30 // Mozzila includes
31 #include <nsAutoPtr.h>
32 #include <pldhash.h>
33 
34 // Mozilla interfaces
35 #include "sbRequestThreadQueue.h"
36 
37 class nsIMutableArray;
38 class sbBaseDevice;
39 
41 {
42 public:
44  nsresult Start(sbBaseDevice * aBaseDevice);
45 private:
46  // There is a cycle between the device, thread queue processor and the actions
47  // this will be broken on disconnect. We manually manage the ref count due
48  // to the ambiguities of nsISupports..
49  sbBaseDevice * mBaseDevice;
52  static PLDHashOperator RemoveLibraryEnumerator(
53  nsISupports * aList,
54  nsCOMPtr<nsIMutableArray> & aItems,
55  void * aUserArg);
56 
60  virtual nsresult OnThreadStop();
61 
68  virtual nsresult IsDuplicateRequest(sbRequestItem * aItem1,
69  sbRequestItem * aItem2,
70  bool & aIsDuplicate,
71  bool & aContinueChecking);
72 
77  virtual nsresult ProcessBatch(Batch & aBatch);
78 
83  virtual void CompleteRequests();
84 
89  virtual nsresult CleanupBatch(Batch & aBatch);
90 };
91 
92 #endif
static sbDeviceRequestThreadQueue * New()