LSSTApplications  8.0.0.0+107,8.0.0.1+13,9.1+18,9.2,master-g084aeec0a4,master-g0aced2eed8+6,master-g15627eb03c,master-g28afc54ef9,master-g3391ba5ea0,master-g3d0fb8ae5f,master-g4432ae2e89+36,master-g5c3c32f3ec+17,master-g60f1e072bb+1,master-g6a3ac32d1b,master-g76a88a4307+1,master-g7bce1f4e06+57,master-g8ff4092549+31,master-g98e65bf68e,master-ga6b77976b1+53,master-gae20e2b580+3,master-gb584cd3397+53,master-gc5448b162b+1,master-gc54cf9771d,master-gc69578ece6+1,master-gcbf758c456+22,master-gcec1da163f+63,master-gcf15f11bcc,master-gd167108223,master-gf44c96c709
LSSTDataManagementBasePackage
Queue.py
Go to the documentation of this file.
1 #! /usr/bin/env python
2 
3 #
4 # LSST Data Management System
5 # Copyright 2008, 2009, 2010 LSST Corporation.
6 #
7 # This product includes software developed by the
8 # LSST Project (http://www.lsst.org/).
9 #
10 # This program is free software: you can redistribute it and/or modify
11 # it under the terms of the GNU General Public License as published by
12 # the Free Software Foundation, either version 3 of the License, or
13 # (at your option) any later version.
14 #
15 # This program is distributed in the hope that it will be useful,
16 # but WITHOUT ANY WARRANTY; without even the implied warranty of
17 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 # GNU General Public License for more details.
19 #
20 # You should have received a copy of the LSST License Statement and
21 # the GNU General Public License along with this program. If not,
22 # see <http://www.lsstcorp.org/LegalNotices/>.
23 #
24 
25 
26 """
27 Queue provides the interfaces for a Stage to
28 1) obtain the top Clipboard container that will provide it with
29 the next image it should operate on (via the InputQueue interface) and
30 2) post a Clipboard container that has been updated with
31 the image that the present Stage has completed work on for the
32 next Stage (via the OutputQueue interface)
33 """
34 
35 class Queue(object):
36  '''Carry references to image data from Stage to Stage via ClipBoard container'''
37 
38  #------------------------------------------------------------------------
39  def __init__(self):
40  """
41  Initialize the Queue by defining an initial dataset list
42  """
43  self.datasetList = []
44 
45  #------------------------------------------------------------------------
46  def __del__(self):
47  """
48  Delete the Queue object for cleanup
49  """
50  # print 'Queue being deleted'
51  pass
52 
53  #------------------------------------------------------------------------
54  def getNextDataset(self):
55  """
56  Return the Clipboard at the top of the dataset list, removing
57  the Clipboard from the dataset list in the process (pop).
58  This method comprises the InputQueue interface
59  """
60  if not self.datasetList:
61  # Code here for the case where the list is empty
62  clipboard = None
63  else:
64  # Code here for the case where the list is NOT empty
65  clipboard = self.datasetList.pop(0)
66 
67  return clipboard
68 
69  #------------------------------------------------------------------------
70  def element(self):
71  """
72  Return the Clipboard at the top of the dataset list, but do not remove
73  the Clipboard from the dataset list
74  """
75  if not self.datasetList:
76  # Code here for the case where the list is empty
77  clipboard = None
78  else:
79  # Code here for the case where the list is NOT empty
80  clipboard = self.datasetList[0]
81 
82  return clipboard
83 
84  #------------------------------------------------------------------------
85  def addDataset(self, clipboard):
86  """
87  Append the given Clipboard to the dataset list.
88  This method comprises the OutputQueue interface
89  """
90  self.datasetList.append(clipboard)
91 
92  #------------------------------------------------------------------------
93  def size(self):
94  """
95  Return the size of the dataset list (the number of Clipboards)
96  """
97  size = len(self.datasetList)
98  return size
99