source: squid-ssl/trunk/fuentes/src/DelayVector.h @ 5495

Last change on this file since 5495 was 5495, checked in by Juanma, 2 years ago

Initial release

File size: 1.8 KB
Line 
1/*
2 * Copyright (C) 1996-2015 The Squid Software Foundation and contributors
3 *
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.
7 */
8
9#ifndef SQUID_DELAYVECTOR_H
10#define SQUID_DELAYVECTOR_H
11
12#if USE_DELAY_POOLS
13
14#include "CompositePoolNode.h"
15
16/// \ingroup DelayPoolsAPI
17class DelayVector : public CompositePoolNode
18{
19
20public:
21    typedef RefCount<DelayVector> Pointer;
22    void *operator new(size_t);
23    void operator delete (void *);
24    DelayVector();
25    virtual ~DelayVector();
26    virtual void stats(StoreEntry * sentry);
27    virtual void dump(StoreEntry *entry) const;
28    virtual void update(int incr);
29    virtual void parse();
30
31    virtual DelayIdComposite::Pointer id(CompositeSelectionDetails &);
32    void push_back (CompositePoolNode::Pointer);
33
34private:
35
36    /// \ingroup DelayPoolsInternal
37    class Id:public DelayIdComposite
38    {
39
40    public:
41        void *operator new(size_t);
42        void operator delete (void *);
43
44        Id (RefCount<DelayVector>,CompositeSelectionDetails &);
45        ~Id();
46        virtual int bytesWanted (int min, int max) const;
47        virtual void bytesIn(int qty);
48        virtual void delayRead(DeferredRead const &);
49
50    private:
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;
55    };
56
57    friend class Id;
58
59    std::vector<CompositePoolNode::Pointer> pools;
60    typedef std::vector<CompositePoolNode::Pointer>::iterator iterator;
61    typedef std::vector<CompositePoolNode::Pointer>::const_iterator const_iterator;
62};
63
64#endif /* USE_DELAY_POOLS */
65#endif /* SQUID_DELAYVECTOR_H */
66
Note: See TracBrowser for help on using the repository browser.