493 const tom::calendars::date_time &
500 const tom::calendars::date_time &
527 tom::tsdb::time_series_sptr
528 get_time_series(
const char *name,
bool lazy_eval =
false );
583 tom::tsdb::time_series_sptr
616 delete_time_series(
const char *name );
627 tom::tsdb::time_series_sptr
628 create_time_series(
const char *name,
642 tom::tsdb::time_series_sptr
657 tom::tsdb::sparse_series_sptr
658 create_sparse_series(
const char *name,
673 tom::tsdb::sparse_series_sptr
689 tom::tsdb::datastore_match_sptr
701 tom::tsdb::datastore_match_sptr
702 regex_name_search(
const char *regex );
712 get_calendar(
unsigned int cal_t );
715 get_datastore_metrics() {
716 populate_datastore_metrics(m_ds_metrics);
741 tom::tsdb::time_series_sptr
746 const tom::calendars::date_time &,
747 const tom::calendars::date_time &);
749 tom::tsdb::time_series_sptr
754 const tom::calendars::date_time &,
755 const tom::calendars::date_time &,
756 tom::calendars::date_int_type start,
757 void *iter_begin,
void *iter_end );
762 tom::tsdb::time_series_sptr
767 const tom::calendars::date_time &,
768 const tom::calendars::date_time &,
769 tom::calendars::date_int_type first_date,
770 tom::calendars::date_int_type last_date,
771 tom::tsdb::time_series::populate_data_func );
774 tom::tsdb::sparse_series_sptr
779 const tom::calendars::date_time &,
780 const tom::calendars::date_time & );
783 tom::tsdb::sparse_series_sptr
788 const tom::calendars::date_time &,
789 const tom::calendars::date_time &,
790 bool ignore_same_value,
bool ignore_missing_value,
791 void *iter_begin,
void *iter_end );
794 tom::tsdb::time_series_sptr
802 tom::tsdb::time_series_sptr
808 const tom::calendars::date_time &,
809 const tom::calendars::date_time & );
812 tom::tsdb::time_series_sptr
818 const tom::calendars::date_time &,
819 const tom::calendars::date_time &,
820 tom::calendars::date_int_type start,
821 void *iter_begin,
void *iter_end );
824 tom::tsdb::time_series_sptr
830 const tom::calendars::date_time &,
831 const tom::calendars::date_time &,
832 tom::calendars::date_int_type start,
833 tom::calendars::date_int_type end,
834 tom::tsdb::time_series::populate_data_func );
837 tom::tsdb::sparse_series_sptr
845 tom::tsdb::sparse_series_sptr
851 const tom::calendars::date_time &,
852 const tom::calendars::date_time & );
855 tom::tsdb::sparse_series_sptr
861 const tom::calendars::date_time &,
862 const tom::calendars::date_time &,
863 bool ignore_same_value,
bool ignore_missing_value,
864 void *iter_begin,
void *iter_end );
879 struct time_series_builder
881 virtual ~time_series_builder() { }
884 tom::tsdb::time_series_sptr
886 native_calendar_type cal_t,
887 aggregation_type ) = 0;
890 tom::tsdb::time_series_sptr
892 native_calendar_type cal_t,
894 const tom::calendars::date_time &,
895 const tom::calendars::date_time & ) = 0;
898 tom::tsdb::time_series_sptr
900 native_calendar_type cal_t,
902 const tom::calendars::date_time &,
903 const tom::calendars::date_time &,
904 tom::calendars::date_int_type start,
905 void *iter_begin,
void *iter_end ) = 0;
908 tom::tsdb::time_series_sptr
910 native_calendar_type calendar_t,
912 const tom::calendars::date_time &,
913 const tom::calendars::date_time &,
914 tom::calendars::date_int_type first_date,
915 tom::calendars::date_int_type last_date,
916 tom::tsdb::time_series::populate_data_func ) = 0;
919 tom::tsdb::sparse_series_sptr
921 native_calendar_type cal_t,
922 aggregation_type ) = 0;
925 tom::tsdb::sparse_series_sptr
927 native_calendar_type cal_t,
929 const tom::calendars::date_time &,
930 const tom::calendars::date_time & ) = 0;
933 tom::tsdb::sparse_series_sptr
935 native_calendar_type cal_t,
936 aggregation_type,
const tom::calendars::date_time &,
937 const tom::calendars::date_time &,
938 bool ignore_same_value,
bool ignore_missing_value,
939 void *iter_begin,
void *iter_end ) = 0;
942 template <
typename T,
typename NATIVE_TYPE>
943 tom::tsdb::time_series_sptr
945 native_calendar_type cal_t,
946 aggregation_type agg_t )
948 return tom::tsdb::time_series_sptr(new ::tom::tsdb::collections::time_series<T,NATIVE_TYPE>
949 ( datastore::get_calendar( cal_t.value() ) , *
this, name, agg_t ) );
951 template <
typename T,
typename NATIVE_TYPE>
952 tom::tsdb::time_series_sptr
954 native_calendar_type cal_t,
955 aggregation_type agg_t,
956 const tom::calendars::date_time &created,
957 const tom::calendars::date_time &modified )
959 return tom::tsdb::time_series_sptr( new ::tom::tsdb::collections::time_series<T,NATIVE_TYPE>
960 ( datastore::get_calendar( cal_t.value() ) , *
this,
961 name, agg_t, created, modified ) );
963 template <
typename T,
typename NATIVE_TYPE>
965 tom::tsdb::time_series_sptr
967 native_calendar_type cal_t,
968 aggregation_type agg_t,
969 const tom::calendars::date_time &created,
970 const tom::calendars::date_time &modified,
971 tom::calendars::date_int_type start,
972 void *iter_begin,
void *iter_end )
974 using namespace tom::calendars;
975 typename T::value_type *begin =
976 static_cast<typename T::value_type *
>( iter_begin );
977 typename T::value_type *end =
978 static_cast<typename T::value_type *
>( iter_end );
979 calendar &cal = datastore::get_calendar( cal_t.value() );
980 return tom::tsdb::time_series_sptr( new ::tom::tsdb::collections::time_series<T,NATIVE_TYPE>
981 ( cal, *
this, name, agg_t, created, modified, start, begin, end ) );
983 template <
typename T,
typename NATIVE_TYPE>
985 tom::tsdb::time_series_sptr
987 native_calendar_type cal_t,
988 aggregation_type agg_t,
989 const tom::calendars::date_time &created,
990 const tom::calendars::date_time &modified,
991 tom::calendars::date_int_type start,
992 tom::calendars::date_int_type end,
993 tom::tsdb::time_series::populate_data_func callback)
995 using namespace tom::calendars;
996 calendar &cal = datastore::get_calendar( cal_t.value() );
997 return tom::tsdb::time_series_sptr( new ::tom::tsdb::collections::time_series<T,NATIVE_TYPE>
998 ( cal, *
this, name, agg_t, created, modified, start, end, callback ) );
1000 template <
typename T,
typename NATIVE_TYPE>
1002 tom::tsdb::sparse_series_sptr
1004 native_calendar_type cal_t,
1005 aggregation_type agg_t )
1007 using namespace tom::calendars;
1008 calendar &cal = datastore::get_calendar( cal_t.value() );
1010 ( cal, *
this, name, agg_t ));
1012 template <
typename T,
typename NATIVE_TYPE>
1014 tom::tsdb::sparse_series_sptr
1016 native_calendar_type cal_t,
1017 aggregation_type agg_t,
1018 const tom::calendars::date_time &created,
1019 const tom::calendars::date_time &modified )
1021 using namespace tom::calendars;
1022 calendar &cal = datastore::get_calendar( cal_t.value() );
1024 ( cal, *
this, name, agg_t, created, modified ));
1026 template <
typename T,
typename NATIVE_TYPE>
1028 tom::tsdb::sparse_series_sptr
1030 native_calendar_type cal_t,
1031 aggregation_type agg_t,
1032 const tom::calendars::date_time &created,
1033 const tom::calendars::date_time &modified,
1034 bool ignore_same_value,
bool ignore_missing_value,
1035 void *iter_begin,
void *iter_end )
1037 using namespace tom::calendars;
1041 typename T::value_type value;
1044 static_cast<pair_type *
>( iter_begin );
1046 static_cast<pair_type *
>( iter_end );
1047 calendar &cal = datastore::get_calendar( cal_t.value() );
1050 ( cal, *
this, name, agg_t, created, modified );
1051 tmp->set_ignore_same_values( ignore_same_value );
1052 tmp->set_ignore_missing_values( ignore_missing_value );
1053 for( ; begin != end; begin++ )
1054 tmp->set_observation( begin->date, T( begin->value ) );
1055 return tom::tsdb::sparse_series_sptr(tmp);
1057 template <
typename T,
unsigned int NATIVE_TYPE_ID>
1058 struct time_series_builder_impl :
public time_series_builder
1061 time_series_builder_impl &
1062 Instance() {
static time_series_builder_impl instance;
return instance; }
1065 tom::tsdb::time_series_sptr
1067 native_calendar_type cal_t,
1068 aggregation_type agg_t)
1070 return ds.build_time_series<T,values::data_type_impl<
1071 T,NATIVE_TYPE_ID> >( name, cal_t, agg_t );
1075 tom::tsdb::time_series_sptr
1077 native_calendar_type cal_t,
1078 aggregation_type agg_t,
1079 const tom::calendars::date_time &created,
1080 const tom::calendars::date_time &modified )
1082 return ds.build_time_series<T,values::data_type_impl<
1083 T,NATIVE_TYPE_ID> >( name, cal_t, agg_t, created, modified );
1086 tom::tsdb::time_series_sptr
1088 native_calendar_type cal_t,
1089 aggregation_type agg_t,
1090 const tom::calendars::date_time &created,
1091 const tom::calendars::date_time &modified,
1092 tom::calendars::date_int_type start,
1093 void *iter_begin,
void *iter_end )
1095 return ds.build_time_series<T,values::data_type_impl<T,NATIVE_TYPE_ID> >
1096 ( name, cal_t, agg_t, created, modified, start, iter_begin, iter_end );
1099 tom::tsdb::time_series_sptr
1101 native_calendar_type cal_t,
1102 aggregation_type agg_t,
1103 const tom::calendars::date_time & created,
1104 const tom::calendars::date_time & modified,
1105 tom::calendars::date_int_type first_date,
1106 tom::calendars::date_int_type last_date,
1107 tom::tsdb::time_series::populate_data_func callback)
1109 return ds.build_time_series<T,values::data_type_impl<T,NATIVE_TYPE_ID> >
1110 ( name, cal_t, agg_t, created, modified, first_date, last_date, callback );
1113 tom::tsdb::sparse_series_sptr
1115 native_calendar_type cal_t,
1116 aggregation_type agg_t )
1118 return ds.build_sparse_series<T,values::data_type_impl<T,NATIVE_TYPE_ID> >
1119 ( name, cal_t, agg_t );
1122 tom::tsdb::sparse_series_sptr
1124 native_calendar_type cal_t,
1125 aggregation_type agg_t,
1126 const tom::calendars::date_time &created,
1127 const tom::calendars::date_time &modified )
1129 return ds.build_sparse_series<T,values::data_type_impl<T,NATIVE_TYPE_ID> >
1130 ( name, cal_t, agg_t, created, modified );
1133 tom::tsdb::sparse_series_sptr
1135 native_calendar_type cal_t,
1136 aggregation_type agg_t,
const tom::calendars::date_time &created,
1137 const tom::calendars::date_time &modified,
1138 bool ignore_same_value,
bool ignore_missing_value,
1139 void *iter_begin,
void *iter_end )
1141 return ds.build_sparse_series<T,values::data_type_impl<T,NATIVE_TYPE_ID> >
1142 ( name, cal_t, agg_t, created, modified,
1143 ignore_same_value, ignore_missing_value,
1144 iter_begin, iter_end );
1148 time_series_builder_impl(){ }
1151 typedef std::pair<const tom::calendars::calendar *, unsigned int > calendar_pair_t;
1152 typedef std::map< tom::calendars::calendar *,unsigned int, std::less<const tom::calendars::calendar *> > calendar_map_t;
1153 typedef std::vector< tom::calendars::calendar * > reverse_calendar_map_t;
1154 typedef std::pair<const char *, unsigned int > value_pair_t;
1155 typedef std::map< const char *, unsigned int, std::less<const char *> > value_map_t;
1156 typedef std::vector< time_series_builder * > time_series_factory_map_t;
1158 static calendar_map_t *
1159 populate_calendar_map( );
1161 static value_map_t *
1162 populate_value_map( );
1164 static reverse_calendar_map_t *
1165 populate_reverse_calendar_map( );
1167 static time_series_factory_map_t *
1168 populate_time_series_factory_map( );