OmniSciDB  b28c0d5765
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Serializer.cpp
Go to the documentation of this file.
1 /*
2  * Copyright 2022 HEAVY.AI, Inc.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
18 
19 #include <boost/archive/text_iarchive.hpp>
20 #include <boost/archive/text_oarchive.hpp>
21 
23 
24 std::string Serializer::serializeRelAlgDag(const RelAlgDag& rel_alg_dag) {
25  std::stringstream ss;
26  // save data to archive
27  {
28  boost::archive::text_oarchive oa(ss);
29  // write class instance to archive
30  oa << rel_alg_dag;
31  // archive and stream closed when destructors are called
32  }
33  return ss.str();
34 }
35 
36 std::unique_ptr<RelAlgDag> Serializer::deserializeRelAlgDag(
38  const std::string& serialized_dag_str) {
39  auto deserialization_context_scope_guard =
41 
42  auto rel_alg_dag = std::make_unique<RelAlgDag>();
43  std::stringstream ss(serialized_dag_str);
44  // read data from archive
45  {
46  boost::archive::text_iarchive ia(ss);
47  ia >> *rel_alg_dag;
48  // archive and stream closed when destructors are called
49  }
50  return rel_alg_dag;
51 }
static std::string serializeRelAlgDag(const RelAlgDag &rel_alg_dag)
Definition: Serializer.cpp:24
std::string cat(Ts &&...args)
class for a per-database catalog. also includes metadata for the current database and the current use...
Definition: Catalog.h:132
static std::unique_ptr< RelAlgDag > deserializeRelAlgDag(const Catalog_Namespace::Catalog &cat, const std::string &serialized_dag_str)
Definition: Serializer.cpp:36
static ScopeGuard createContextScopeGuard(const Catalog_Namespace::Catalog &cat)