message_collection.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2008, Willow Garage, Inc.
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions are met:
7  *
8  * * Redistributions of source code must retain the above copyright
9  * notice, this list of conditions and the following disclaimer.
10  * * Redistributions in binary form must reproduce the above copyright
11  * notice, this list of conditions and the following disclaimer in the
12  * documentation and/or other materials provided with the distribution.
13  * * Neither the name of the Willow Garage, Inc. nor the names of its
14  * contributors may be used to endorse or promote products derived from
15  * this software without specific prior written permission.
16  *
17  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
18  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
21  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
22  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
24  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
25  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
26  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27  * POSSIBILITY OF SUCH DAMAGE.
28  *
29  */
30 
39 #ifndef WAREHOUSE_ROS_MONGO_MESSAGE_COLLECTION_H
40 #define WAREHOUSE_ROS_MONGO_MESSAGE_COLLECTION_H
41 
44 
45 namespace warehouse_ros_mongo
46 {
51 
53 {
54 public:
55  MongoMessageCollection(const std::shared_ptr<mongo::DBClientConnection>& conn, const std::string& db_name,
56  const std::string& collection_name);
57 
58  bool initialize(const std::string& datatype, const std::string& md5);
59 
62  void ensureIndex(const std::string& field);
63 
67  void insert(char* msg, size_t msg_size, Metadata::ConstPtr metadata);
68 
73  ResultIteratorHelper::Ptr query(Query::ConstPtr query, const std::string& sort_by, bool ascending) const;
74 
76  unsigned removeMessages(Query::ConstPtr query);
77 
83 
85  unsigned count();
86 
88  std::string collectionName() const;
89 
91  {
92  return Query::Ptr(new MongoQuery());
93  }
94 
96  {
97  return Metadata::Ptr(new MongoMetadata());
98  }
99 
100 private:
101  void listMetadata(mongo::Query& mquery, std::vector<mongo::BSONObj>& metas);
102 
104  {
105  return *(const_cast<MongoMetadata*>(static_cast<const MongoMetadata*>(metadata.get())));
106  }
107 
109  {
110  return *(const_cast<MongoQuery*>(static_cast<const MongoQuery*>(query.get())));
111  }
112 
113  std::shared_ptr<mongo::DBClientConnection> conn_;
114  std::shared_ptr<mongo::GridFS> gfs_;
115  const std::string ns_;
116  const std::string db_;
117  const std::string coll_;
118 };
119 
120 } // namespace warehouse_ros_mongo
121 
122 #endif // include guard
MongoMessageCollection(const std::shared_ptr< mongo::DBClientConnection > &conn, const std::string &db_name, const std::string &collection_name)
std::shared_ptr< mongo::GridFS > gfs_
void modifyMetadata(Query::ConstPtr q, Metadata::ConstPtr m)
Modify metadata Find message matching q and update its metadata using m In other words, overwrite keys in the message using m, but keep keys that don&#39;t occur in m.
MongoMetadata & downcastMetadata(Metadata::ConstPtr metadata) const
unsigned removeMessages(Query::ConstPtr query)
Remove messages matching query.
boost::shared_ptr< Query > Ptr
bool initialize(const std::string &datatype, const std::string &md5)
void insert(char *msg, size_t msg_size, Metadata::ConstPtr metadata)
Insert a ROS message, together with some optional metadata, into the db.
void listMetadata(mongo::Query &mquery, std::vector< mongo::BSONObj > &metas)
const char * datatype()
Represents a query to the db.
Definition: metadata.h:105
std::shared_ptr< mongo::DBClientConnection > conn_
boost::shared_ptr< Metadata > Ptr
Represents metadata attached to a message. Automatically includes a unique id and creation time...
Definition: metadata.h:227
std::string collectionName() const
Return name of collection.
MongoQuery & downcastQuery(Query::ConstPtr query) const
unsigned count()
Count messages in collection.
ResultIteratorHelper::Ptr query(Query::ConstPtr query, const std::string &sort_by, bool ascending) const
void ensureIndex(const std::string &field)


warehouse_ros_mongo
Author(s): Bhaskara Marthi , Connor Brew
autogenerated on Sat Apr 2 2022 02:29:13