Deleted Added
sdiff udiff text old ( 9230:33eb3c8a98b9 ) new ( 9274:ba635023d4bb )
full compact
1/*
2 * Copyright (c) 1999-2008 Mark D. Hill and David A. Wood
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are
7 * met: redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer;

--- 28 unchanged lines hidden (view full) ---

37 */
38
39#ifndef __MEM_RUBY_NETWORK_SIMPLE_SWITCH_HH__
40#define __MEM_RUBY_NETWORK_SIMPLE_SWITCH_HH__
41
42#include <iostream>
43#include <vector>
44
45class MessageBuffer;
46class PerfectSwitch;
47class NetDest;
48class SimpleNetwork;
49class Throttle;
50
51class Switch
52{
53 public:
54 Switch(SwitchID sid, SimpleNetwork* network_ptr);
55 ~Switch();
56
57 void addInPort(const std::vector<MessageBuffer*>& in);
58 void addOutPort(const std::vector<MessageBuffer*>& out,
59 const NetDest& routing_table_entry, int link_latency,
60 int bw_multiplier);
61 const Throttle* getThrottle(LinkID link_number) const;
62 const std::vector<Throttle*>* getThrottles() const;
63 void clearRoutingTables();
64 void clearBuffers();
65 void reconfigureOutPort(const NetDest& routing_table_entry);
66
67 void printStats(std::ostream& out) const;
68 void clearStats();
69 void print(std::ostream& out) const;
70
71 private:
72 // Private copy constructor and assignment operator
73 Switch(const Switch& obj);
74 Switch& operator=(const Switch& obj);
75
76 PerfectSwitch* m_perfect_switch_ptr;
77 SimpleNetwork* m_network_ptr;
78 std::vector<Throttle*> m_throttles;
79 std::vector<MessageBuffer*> m_buffers_to_free;
80 SwitchID m_switch_id;
81};
82
83inline std::ostream&
84operator<<(std::ostream& out, const Switch& obj)
85{
86 obj.print(out);
87 out << std::flush;
88 return out;
89}
90
91#endif // __MEM_RUBY_NETWORK_SIMPLE_SWITCH_HH__