A platform for high-performance distributed tool and library development written in C++. It can be deployed in two different cluster modes: standalone or distributed. API for v0.5.0, released on June 13, 2018.
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
PDBObject.cc
Go to the documentation of this file.
1 /*****************************************************************************
2  * *
3  * Copyright 2018 Rice University *
4  * *
5  * Licensed under the Apache License, Version 2.0 (the "License"); *
6  * you may not use this file except in compliance with the License. *
7  * You may obtain a copy of the License at *
8  * *
9  * http://www.apache.org/licenses/LICENSE-2.0 *
10  * *
11  * Unless required by applicable law or agreed to in writing, software *
12  * distributed under the License is distributed on an "AS IS" BASIS, *
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
14  * See the License for the specific language governing permissions and *
15  * limitations under the License. *
16  * *
17  *****************************************************************************/
18 
19 #ifndef PDB_Object_C
20 #define PDB_Object_C
21 
22 #include "PDBObject.h"
23 
24 
26  rawBytes = nullptr;
27  dbId = (unsigned int)(-1);
28  typeId = (unsigned int)(-1);
29  setId = (unsigned int)(-1);
30  size = 0;
31  shmOffset = 0;
32 }
33 
35  void* dataIn, DatabaseID dbId, UserTypeID typeId, SetID setId, size_t dataSize) {
36  this->rawBytes = dataIn;
37  this->dbId = dbId;
38  this->typeId = typeId;
39  this->setId = setId;
40  this->shmOffset = 0; // by default, it is not in shared memory, we need to update shmOffset
41  // when we allocate from shared memory
42  size = dataSize;
43 }
44 
46  freeObject();
47 }
48 
50  // if the data is in shared memory, we should not delete it,
51  // because shared memory are managed at page level.
52  // TODO: should be very careful about page reference count management.
53  if ((rawBytes != nullptr) && (this->shmOffset == 0)) {
54  delete ((char*)rawBytes);
55  }
56  rawBytes = nullptr;
57  dbId = -1;
58  typeId = -1;
59  setId = -1;
60  shmOffset = 0;
61  size = 0;
62 }
63 
64 #endif
unsigned int SetID
Definition: DataTypes.h:31
size_t size
Definition: PDBObject.h:123
UserTypeID typeId
Definition: PDBObject.h:121
SetID setId
Definition: PDBObject.h:122
void * rawBytes
Definition: PDBObject.h:119
DatabaseID dbId
Definition: PDBObject.h:120
unsigned int DatabaseID
Definition: DataTypes.h:29
~PDBObject()
Definition: PDBObject.cc:45
void freeObject()
Definition: PDBObject.cc:49
size_t shmOffset
Definition: PDBObject.h:124
unsigned int UserTypeID
Definition: DataTypes.h:25