本文整理汇总了C++中SharedMemNodeData::isSegmented方法的典型用法代码示例。如果您正苦于以下问题:C++ SharedMemNodeData::isSegmented方法的具体用法?C++ SharedMemNodeData::isSegmented怎么用?C++ SharedMemNodeData::isSegmented使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类SharedMemNodeData
的用法示例。
在下文中一共展示了SharedMemNodeData::isSegmented方法的11个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: getSegmentData
int SharedDataManager::getSegmentData(TreeDescriptor treeId, int nid, int idx, char **dim, int *dimSize, char **data, int *dataSize,
char **shape, int *shapeSize, int *currDataSize, bool *timestamped, int *actSamples)
{
Segment *segment;
lock.lock();
SharedMemNode *node = sharedTree.find(treeId, nid);
if(node)
{
SharedMemNodeData *nodeData = node->getData();
if(!nodeData->isSegmented())
{
lock.unlock();
return 0;
}
int numSegments = nodeData->getNumSegments();
if(idx >= numSegments || idx < 0)
{
lock.unlock();
return 0;
}
segment = nodeData->getSegmentAt(idx);
segment->getDim((char **)dim, dimSize);
segment->getData((char **)data, dataSize);
segment->getShape((char **)shape, shapeSize);
*currDataSize = segment->getCurrDataSize();
*timestamped = segment->isTimestamped();
*actSamples = segment->getActSamples();
lock.unlock();
return 1;
}
lock.unlock();
return 0;
}
示例2: getSegmentInfo
int SharedDataManager::getSegmentInfo(TreeDescriptor treeIdx, int nid, int idx, int **shape, int *shapeSize, int *currDataSize)
{
Segment *segment;
lock.lock();
SharedMemNode *node = sharedTree.find(treeIdx, nid);
if(node)
{
SharedMemNodeData *nodeData = node->getData();
if(!nodeData->isSegmented())
{
lock.unlock();
return 0;
}
int numSegments = nodeData->getNumSegments();
if(idx >= numSegments)
idx = numSegments - 1;
segment = nodeData->getSegmentAt(idx);
segment->getShape(reinterpret_cast<char **>(shape), shapeSize);
*currDataSize = segment->getCurrDataSize();
lock.unlock();
return 1;
}
lock.unlock();
return 0;
}
示例3: isSegmented
int SharedDataManager::isSegmented(TreeDescriptor treeId, int nid, int *segmented)
{
lock.lock();
SharedMemNode *node = sharedTree.find(treeId, nid);
if(node)
{
SharedMemNodeData *nodeData = node->getData();
*segmented = nodeData->isSegmented()?1:0;
lock.unlock();
return 1;
}
lock.unlock();
return 0;
}
示例4: getSegmentLimits
int SharedDataManager::getSegmentLimits(TreeDescriptor treeId, int nid, int idx, char **start, int *startSize,
char **end, int *endSize, bool *timestamped)
{
Segment *segment;
lock.lock();
SharedMemNode *node = sharedTree.find(treeId, nid);
if(node)
{
SharedMemNodeData *nodeData = node->getData();
if(!nodeData->isSegmented())
{
lock.unlock();
return 0;
}
int numSegments = nodeData->getNumSegments();
if(idx >= numSegments || idx < 0)
{
lock.unlock();
return 0;
}
segment = nodeData->getSegmentAt(idx);
if(segment->isTimestamped())
{
*timestamped = true;
segment->getStartTimestamp(start, startSize);
segment->getEndTimestamp(end, endSize);
}
else
{
segment->getStart((char **)start, startSize);
segment->getEnd((char **)end, endSize);
*timestamped = false;
}
lock.unlock();
return 1;
}
lock.unlock();
return 0;
}
示例5: discardFirstSegment
int SharedDataManager::discardFirstSegment(TreeDescriptor treeId, int nid)
{
//printf("START DISCARD\n");
lock.lock();
SharedMemNode *node = sharedTree.find(treeId, nid);
if(node)
{
SharedMemNodeData *nodeData = node->getData();
if(!nodeData->isSegmented())
{
lock.unlock();
return 0;
}
nodeData->discardFirstSegment(&allocationManager);
lock.unlock();
//printf("END DISCARD\n");
return 1;
}
lock.unlock();
return 0;
}
示例6: discardOldSegments
int SharedDataManager::discardOldSegments(TreeDescriptor treeId, int nid, _int64 timestamp)
{
//printf("START DISCARD\n");
lock.lock();
SharedMemNode *node = sharedTree.find(treeId, nid);
if(node)
{
SharedMemNodeData *nodeData = node->getData();
if(!nodeData->isSegmented())
{
lock.unlock();
return 0;
}
nodeData->discardOldSegments(timestamp, &freeSpaceManager, &lock);
lock.unlock();
//printf("END DISCARD\n");
return 1;
}
lock.unlock();
return 0;
}
示例7: getData
int SharedDataManager::getData(TreeDescriptor treeId, int nid, char *dataType, int *numSamples, char **data, int *size) //Write data indexed by nid
{
lock.lock();
SharedMemNode *node = sharedTree.find(treeId, nid);
if(node)
{
SharedMemNodeData *nodeData = node->getData();
if(nodeData->isSegmented())
{
lock.unlock();
return 0;
}
nodeData->getData((char **)data, size);
nodeData->getDataInfo(dataType, numSamples);
lock.unlock();
return 1;
}
else
{
lock.unlock();
return 0;
}
}
示例8: getSegmentDataAndShapeCopy
int SharedDataManager::getSegmentDataAndShapeCopy(TreeDescriptor treeId, int nid, int idx, char **data, int *dataSize,
char **shape, int *shapeSize)
{
Segment *segment;
lock.lock();
SharedMemNode *node = sharedTree.find(treeId, nid);
if(node)
{
SharedMemNodeData *nodeData = node->getData();
if(!nodeData->isSegmented())
{
lock.unlock();
return 0;
}
int numSegments = nodeData->getNumSegments();
if(idx >= numSegments || idx < 0)
{
lock.unlock();
return 0;
}
segment = nodeData->getSegmentAt(idx);
char *currData;
segment->getData((char **)&currData, dataSize);
*data = new char[*dataSize];
memcpy(*data, currData,*dataSize);
char *currShape;
segment->getShape((char **)&currShape, shapeSize);
*shape = new char[*shapeSize];
memcpy(*shape, currShape, *shapeSize);
lock.unlock();
return 1;
}
lock.unlock();
return 0;
}
示例9: updateSegment
int SharedDataManager::updateSegment(TreeDescriptor treeId, int nid, int idx, char *start, int startSize, char *end, int endSize,
char *dim, int dimSize)
{
Segment *segment;
lock.lock();
SharedMemNode *node = sharedTree.find(treeId, nid);
if(node)
{
SharedMemNodeData *nodeData = node->getData();
if(!nodeData->isSegmented())
{
lock.unlock();
return 0;
}
int numSegments = nodeData->getNumSegments();
if(idx > numSegments || idx < 0)
{
lock.unlock();
return 0;
}
segment = nodeData->getSegmentAt(idx);
char *currPtr;
int currSize;
segment->getStart(&currPtr, &currSize);
if(startSize > 0)
{
if(currSize > 0)
allocationManager.deallocateShared((char *)currPtr, currSize);
currPtr = allocationManager.allocateShared(startSize);
memcpy(currPtr, start, startSize);
segment->setStart(currPtr, startSize);
}
if(endSize > 0)
{
segment->getEnd(&currPtr, &currSize);
if(currSize > 0)
allocationManager.deallocateShared((char *)currPtr, currSize);
currPtr = allocationManager.allocateShared(endSize);
memcpy(currPtr, end, endSize);
segment->setEnd(currPtr, endSize);
}
if(dimSize > 0)
{
segment->getDim(&currPtr, &currSize);
if(currSize > 0)
allocationManager.deallocateShared((char *)currPtr, currSize);
currPtr = allocationManager.allocateShared(dimSize);
memcpy(currPtr, dim, dimSize);
segment->setDim(currPtr, dimSize);
}
CallbackManager *callback = node->getData()->getCallbackManager();
if(callback)
callback->callCallback();
lock.unlock();
return 1;
}
lock.unlock();
return 0;
}
示例10: beginTimestampedSegment
int SharedDataManager::beginTimestampedSegment(TreeDescriptor treeId, int nid, int idx, int numItems, char *shape,
int shapeSize, char *data, int dataSize, _int64 start,
_int64 end, char *dim, int dimSize, int *retIdx)
{
Segment *segment;
//printf("BEGIN TIMESTAMPED SEGMENT SHARE: %d\n", *(int *)shape);
lock.lock();
SharedMemNode *node = sharedTree.find(treeId, nid);
if(!node)
{
SharedMemNodeData nodeData;
nodeData.setNid(treeId, nid);
nodeData.setSegmented(true);
sharedTree.insert(&nodeData);
node = sharedTree.find(treeId, nid);
}
if(node)
{
SharedMemNodeData *nodeData = node->getData();
if(!nodeData->isSegmented())
{
nodeData->free(&allocationManager);
nodeData->setSegmented(true);
}
int numSegments = nodeData->getNumSegments();
if(idx > numSegments)
{
lock.unlock();
return 0;
}
if(idx == numSegments || idx < 0)
{
segment = (Segment *)allocationManager.allocateShared(sizeof(Segment));
// printf("ALLOCATED SEGMENT: %x\n", segment);
segment->initialize();
nodeData->appendSegment(segment);
*retIdx = numSegments;
}
else
{
segment = nodeData->getSegmentAt(idx);
*retIdx = idx;
}
char *currPtr;
segment->free(&allocationManager);
if(dimSize == 0)
{
currPtr = allocationManager.allocateShared(8 * numItems);
// printf("ALLOCATED SEGMENT DIM: %x\n", currPtr);
segment->setDim(currPtr, 8 * numItems);
}
currPtr = allocationManager.allocateShared(shapeSize);
// printf("ALLOCATED SEGMENT SHAPE: %x %d\n", currPtr, *(int *)shape);
memcpy(currPtr, shape, shapeSize);
segment->setShape(currPtr, shapeSize);
currPtr = allocationManager.allocateShared(dataSize);
// printf("ALLOCATED SEGMENTDATA: %x\n", currPtr);
memcpy(currPtr, data, dataSize);
segment->setData(currPtr, dataSize);
//The following parameters are meaningful only when copying a segment from the tree into cache
segment->setStartTimestamp(start);
segment->setEndTimestamp(end);
if(dimSize > 0)
{
currPtr = allocationManager.allocateShared(dimSize);
// printf("ALLOCATED SEGMENT DIM : %x\n", currPtr);
memcpy(currPtr, dim, dimSize);
segment->setDim(currPtr, dimSize);
segment->setStartTimestamp(*(_int64 *)dim);
if(end == 0) segment->setEndTimestamp(*(_int64 *)dim);
}
segment->setTimestamped(true);
lock.unlock();
//printf("END BEGIN TIMESTAMPED SEGMENT LAST SEGMENT: %x\n", nodeData->getLastSegment());
return 1;
}
lock.unlock();
return 0;
}
示例11: beginSegment
int SharedDataManager::beginSegment(TreeDescriptor treeId, int nid, int idx, char *start, int startSize, char *end, int endSize,
char *dim, int dimSize, char *shape, int shapeSize, char *data, int dataSize, int *retIdx)
{
Segment *segment;
lock.lock();
SharedMemNode *node = sharedTree.find(treeId, nid);
if(!node)
{
SharedMemNodeData nodeData;
nodeData.setNid(treeId, nid);
nodeData.setSegmented(true);
sharedTree.insert(&nodeData);
node = sharedTree.find(treeId, nid);
}
if(node)
{
SharedMemNodeData *nodeData = node->getData();
if(!nodeData->isSegmented())
{
nodeData->free(&allocationManager);
nodeData->setSegmented(true);
}
int numSegments = nodeData->getNumSegments();
if(idx > numSegments)
{
lock.unlock();
return 0;
}
if(idx == numSegments || idx < 0)
{
segment = (Segment *)allocationManager.allocateShared(sizeof(Segment));
segment->initialize();
nodeData->appendSegment(segment);
*retIdx = numSegments;
}
else
{
segment = nodeData->getSegmentAt(idx);
*retIdx = idx;
}
char *currPtr;
segment->free(&allocationManager);
currPtr = allocationManager.allocateShared(startSize);
memcpy(currPtr, start, startSize);
segment->setStart(currPtr, startSize);
currPtr = allocationManager.allocateShared(endSize);
memcpy(currPtr, end, endSize);
segment->setEnd(currPtr, endSize);
currPtr = allocationManager.allocateShared(dimSize);
memcpy(currPtr, dim, dimSize);
segment->setDim(currPtr, dimSize);
currPtr = allocationManager.allocateShared(shapeSize);
memcpy(currPtr, shape, shapeSize);
segment->setShape(currPtr, shapeSize);
currPtr = allocationManager.allocateShared(dataSize);
memcpy(currPtr, data, dataSize);
segment->setData(currPtr, dataSize);
segment->setTimestamped(false);
lock.unlock();
return 1;
}
lock.unlock();
return 0;
}