@@ -35,7 +35,7 @@ std::string MongoInserter::FormatString(const std::string format,
3535
3636void MongoInserter::ParseDocuments (
3737 std::vector<bsoncxx::document::value> &doc_array,
38- data_packet dp){
38+ data_packet dp, std::vector< u_int32_t *>&pointer_arr ){
3939 // Take a buffer and break it up into one document per channel
4040 // Put these documents into doc array
4141
@@ -121,10 +121,11 @@ void MongoInserter::ParseDocuments(
121121 reinterpret_cast <unsigned char *>(channel_payload)}
122122 << bsoncxx::builder::stream::finalize);
123123
124-
124+ pointer_arr. push_back (channel_payload);
125125 }
126126 else {
127127 std::cout<<" FAIL HARD" <<std::endl;
128+ delete[] channel_payload;
128129 }
129130 idx+=channel_size-2 ;
130131 }
@@ -164,6 +165,7 @@ int MongoInserter::ReadAndInsertData(){
164165 std::vector <data_packet> *readVector=NULL ;
165166 int read_length = fDataSource ->GetData (readVector);
166167 std::vector<bsoncxx::document::value> documents;
168+ std::vector<u_int32_t *> pointer_arr;
167169
168170 while (fActive || read_length>0 ){
169171 if (readVector != NULL ){
@@ -188,7 +190,7 @@ int MongoInserter::ReadAndInsertData(){
188190 << bsoncxx::builder::stream::finalize);
189191 */
190192 // Bulk Inserts
191- ParseDocuments (documents, (*readVector)[i]);
193+ ParseDocuments (documents, (*readVector)[i], pointer_arr );
192194
193195 if (documents.size ()>fBulkInsertSize ){
194196 try {
@@ -202,6 +204,9 @@ int MongoInserter::ReadAndInsertData(){
202204 fErrorBit = true ;
203205 documents.clear ();
204206 }
207+ for (unsigned int i=0 ; i<pointer_arr.size (); i++)
208+ delete[] pointer_arr[i];
209+ pointer_arr.clear ();
205210 }
206211
207212 // coll.insert_one(bsoncxx::builder::stream::document{} <<
@@ -214,6 +219,9 @@ int MongoInserter::ReadAndInsertData(){
214219 if (documents.size ()>0 ){
215220 coll.insert_many (documents);
216221 documents.clear ();
222+ for (unsigned int i=0 ; i<pointer_arr.size (); i++)
223+ delete[] pointer_arr[i];
224+ pointer_arr.clear ();
217225 }
218226 usleep (10000 ); // 10ms sleep
219227 read_length = fDataSource ->GetData (readVector);
0 commit comments