MCPcopy Create free account
hub / github.com/bloomberg/comdb2 / event_source

Class event_source

tools/cdb2_sqlreplay/cdb2_sqlreplay.cpp:875–954  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

873}
874
875struct event_source {
876 std::string fname;
877 std::ifstream file;
878 bool done;
879 int64_t timestamp;
880 cson_value *value;
881 int linenum;
882
883 event_source(const char *name) : fname(name), file(), done(false), value(nullptr), timestamp(0), linenum(0) {
884 file.open(name);
885 if (!file.is_open()) {
886 std::cerr << "can't open " << fname << std::endl;
887 done = true;
888 }
889 get();
890 }
891
892 event_source(const event_source &from) {
893 fname = from.fname;
894 done = false;
895 file.open(fname);
896 if (!file.is_open()) {
897 std::cerr << "can't open " << fname << std::endl;
898 done = true;
899 }
900 value = nullptr;
901 timestamp = 0;
902 linenum = 0;
903 get();
904 }
905
906 cson_value *consume() {
907 cson_value *v = value;
908 value = nullptr;
909 return v;
910 }
911
912 void get() {
913 std::string line;
914 if (done)
915 return;
916 for (;;) {
917 if (value != nullptr) {
918 cson_free_value(value);
919 value = nullptr;
920 }
921 if (!std::getline(file, line)) {
922 done = true;
923 return;
924 }
925 linenum++;
926 if (line.empty())
927 continue;
928 int rc = cson_parse_string(&value, line.c_str(), line.length());
929 if (rc) {
930 std::cerr << "Error: Malformed input on line " << linenum << std::endl;
931 continue;
932 }

Callers 1

add_sourceMethod · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected