Fix: update the correct pre-built script to cmake-sonar.sh
[ric-app/mc.git] / schemaparser / mc_store_schema.cc
1 #include<stdio.h>
2 #include<stdlib.h>
3 #include<string.h>
4
5 #include<string>
6 #include<iostream>
7 #include<fstream>
8
9 #include"json.h"
10 #include"schemaparser.h"
11
12 #include <sdl/syncstorage.hpp>
13
14 //      data type definitions from sdl
15 using Namespace = std::string;
16 using Key = std::string;
17 using Data = std::vector<uint8_t>;
18 using DataMap = std::map<Key, Data>;
19 using Keys = std::set<Key>;
20
21
22 using namespace std;
23 using namespace mc_schema;
24
25 vector<uint8_t> packData(const char *d, int len){
26         const uint8_t *d8 = (const uint8_t *)d;
27         return Data(d8, d8+len+1);
28 }
29
30 int main(int argc, char **argv){
31         Namespace ns("mcnib");  
32
33         string directory = ".";
34         if(argc>1){
35                 directory = argv[1];
36         }
37         string inflnm = directory + "/" + string("nib.json");
38
39         ifstream infl(inflnm);
40         if(!infl){
41                 cerr << "Error, can't open " << inflnm << endl;
42                 exit(1);
43         }
44         string line;
45         string nib_str;
46         while(getline(infl, line)){
47                 nib_str += line;
48         }
49         infl.close();
50
51
52         mc_schemas *mcs = new_mc_schemas(nib_str);
53         if(mcs->has_errors()){  // ensure its a good schema
54                 fprintf(stderr, "Errors loading the schemas:\n%s\n",mcs->get_errors().c_str());
55                 exit(1);
56         }
57         string streams_json = "[";
58         vector<string> streams = mcs->get_streams();
59         for(int i=0;i<streams.size(); ++i){
60                 if(i>0) streams_json += ", ";
61                 streams_json += "\""+streams[i]+"\"";
62         }
63         streams_json += "]";
64         
65 // ---------------------------------------------
66         std::unique_ptr<shareddatalayer::SyncStorage> sdl(shareddatalayer::SyncStorage::create());
67         DataMap D;
68
69 // --------------------------------------------
70
71         vector<uint8_t> schema_buf = packData(nib_str.c_str(), nib_str.size());
72         D["_schema"] = schema_buf;
73
74         vector<uint8_t> streams_buf = packData(streams_json.c_str(), streams_json.size());
75         D["_schema_streams"] = streams_buf;
76
77         sdl->set(ns, D);
78 }