00001 /* -*- mode: c++; c-basic-offset: 4; -*- */ 00002 #ifndef SENDS_FRAME_SOURCE_HH 00003 #define SENDS_FRAME_SOURCE_HH 00004 00005 #include <map> 00006 #include <vector> 00007 #include <iosfwd> 00008 #include "frame_loc.hh" 00009 00010 namespace sends { 00011 00023 class frame_source { 00024 public: 00025 00028 typedef frame_loc::gps_type gps_type; 00029 00032 typedef frame_loc::arch_type arch_type; 00033 00036 typedef std::vector<frame_loc> loc_vector; 00037 00040 typedef std::map<std::string, loc_vector> frame_map; 00041 00044 typedef frame_map::value_type frmap_node; 00045 00048 typedef frame_map::const_iterator const_frmap_iter; 00049 00052 typedef frame_map::iterator frmap_iter; 00053 public: 00058 frame_source(void); 00059 00063 ~frame_source(void); 00064 00070 std::ostream& dump(std::ostream& out, int level=1) const; 00071 00082 const frame_loc& find(const std::string& type, gps_type gps) const; 00083 00091 void insert(const frame_loc& loc); 00092 00121 void read(const std::string& file); 00122 00123 private: 00131 std::ostream& dump_list(const frame_map& frm, std::ostream& out, 00132 int lvl) const; 00133 00134 private: 00135 frame_map mOnlineMap; 00136 frame_map mCacheMap; 00137 frame_map mArchiveMap; 00138 frame_map mOfflineMap; 00139 }; 00140 00141 unsigned int lower_bound(const frame_source::loc_vector& v, 00142 frame_loc::gps_type gps); 00143 00144 } // namespace sends 00145 00146 #endif // !defined(SENDS_FRAME_SOURCE_HH)
1.5.5