SeriesRequestGenerator.hh revision 6145
1 2/* 3 * Copyright (c) 1999-2008 Mark D. Hill and David A. Wood 4 * All rights reserved. 5 * 6 * Redistribution and use in source and binary forms, with or without 7 * modification, are permitted provided that the following conditions are 8 * met: redistributions of source code must retain the above copyright 9 * notice, this list of conditions and the following disclaimer; 10 * redistributions in binary form must reproduce the above copyright 11 * notice, this list of conditions and the following disclaimer in the 12 * documentation and/or other materials provided with the distribution; 13 * neither the name of the copyright holders nor the names of its 14 * contributors may be used to endorse or promote products derived from 15 * this software without specific prior written permission. 16 * 17 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 18 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 19 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 20 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 21 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 22 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 23 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 24 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 25 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 26 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 27 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 */ 29 30/* 31 * $Id$ 32 * 33 * Description: 34 * 35 */ 36 37// This Deterministic Generator generates GETX requests for all nodes in the system 38// The GETX requests are generated one at a time in round-robin fashion 0...1...2...etc. 39 40#ifndef DETERMGETXGENERATOR_H 41#define DETERMGETXGENERATOR_H 42 43#include "Global.hh" 44#include "Consumer.hh" 45#include "DetermGETXGeneratorStatus.hh" 46#include "NodeID.hh" 47#include "Address.hh" 48#include "SpecifiedGenerator.hh" 49 50class Sequencer; 51class SubBlock; 52class DeterministicDriver; 53 54class DetermGETXGenerator : public SpecifiedGenerator { 55public: 56 // Constructors 57 DetermGETXGenerator(NodeID node, DeterministicDriver& driver); 58 59 // Destructor 60 ~DetermGETXGenerator(); 61 62 // Public Methods 63 void wakeup(); 64 void performCallback(NodeID proc, SubBlock& data); 65 66 void print(ostream& out) const; 67private: 68 // Private Methods 69 int thinkTime() const; 70 int waitTime() const; 71 void initiateStore(); 72 void pickAddress(); 73 74 Sequencer* sequencer() const; 75 76 // copy constructor and assignment operator 77 DetermGETXGenerator(const DetermGETXGenerator& obj); 78 DetermGETXGenerator& operator=(const DetermGETXGenerator& obj); 79 80 // Data Members (m_ prefix) 81 DetermGETXGeneratorStatus m_status; 82 int m_counter; 83 Address m_address; 84 NodeID m_node; 85 DeterministicDriver& m_driver; 86 Time m_last_transition; 87}; 88 89// Output operator declaration 90ostream& operator<<(ostream& out, const DetermGETXGenerator& obj); 91 92// ******************* Definitions ******************* 93 94// Output operator definition 95extern inline 96ostream& operator<<(ostream& out, const DetermGETXGenerator& obj) 97{ 98 obj.print(out); 99 out << flush; 100 return out; 101} 102 103#endif //DETERMGETXGENERATOR_H 104 105