2 * Copyright (C) 1996-2014 The Squid Software Foundation and contributors
4 * Squid software is distributed under GPLv2+ license and includes
5 * contributions from numerous individuals and organizations.
6 * Please see the COPYING and CONTRIBUTORS files for details.
9 #ifndef SQUID_DELAYVECTOR_H
10 #define SQUID_DELAYVECTOR_H
14 #include "CompositePoolNode.h"
16 /// \ingroup DelayPoolsAPI
17 class DelayVector
: public CompositePoolNode
21 typedef RefCount
<DelayVector
> Pointer
;
22 void *operator new(size_t);
23 void operator delete (void *);
25 virtual ~DelayVector();
26 virtual void stats(StoreEntry
* sentry
);
27 virtual void dump(StoreEntry
*entry
) const;
28 virtual void update(int incr
);
31 virtual DelayIdComposite::Pointer
id(CompositeSelectionDetails
&);
32 void push_back (CompositePoolNode::Pointer
);
36 /// \ingroup DelayPoolsInternal
37 class Id
:public DelayIdComposite
41 void *operator new(size_t);
42 void operator delete (void *);
44 Id (RefCount
<DelayVector
>,CompositeSelectionDetails
&);
46 virtual int bytesWanted (int min
, int max
) const;
47 virtual void bytesIn(int qty
);
48 virtual void delayRead(DeferredRead
const &);
51 RefCount
<DelayVector
> theVector
;
52 std::vector
<DelayIdComposite::Pointer
> ids
;
53 typedef std::vector
<DelayIdComposite::Pointer
>::iterator iterator
;
54 typedef std::vector
<DelayIdComposite::Pointer
>::const_iterator const_iterator
;
59 std::vector
<CompositePoolNode::Pointer
> pools
;
60 typedef std::vector
<CompositePoolNode::Pointer
>::iterator iterator
;
61 typedef std::vector
<CompositePoolNode::Pointer
>::const_iterator const_iterator
;
64 #endif /* USE_DELAY_POOLS */
65 #endif /* SQUID_DELAYVECTOR_H */