本文整理汇总了C++中SharedMemNodeData::setNid方法的典型用法代码示例。如果您正苦于以下问题:C++ SharedMemNodeData::setNid方法的具体用法?C++ SharedMemNodeData::setNid怎么用?C++ SharedMemNodeData::setNid使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类SharedMemNodeData
的用法示例。
在下文中一共展示了SharedMemNodeData::setNid方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: setData
int SharedDataManager::setData(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)
//No data has been written in the cache yet
{
SharedMemNodeData nodeData;
nodeData.setNid(treeId, nid);
sharedTree.insert(&nodeData);
node = sharedTree.find(treeId, nid);
}
if(node)
{
SharedMemNodeData *nodeData = node->getData() ;
nodeData->free(&allocationManager);
char *currData = allocationManager.allocateShared(size);
memcpy(currData, data, size);
nodeData->setData((char *)currData, size);
nodeData->setDataInfo(dataType, numSamples);
CallbackManager *callback = node->getData()->getCallbackManager();
if(callback)
callback->callCallback();
lock.unlock();
return 1;
}
else
{
lock.unlock();
return 0;
}
}
示例2:
SharedMemNodeData *SharedDataManager::getNodeData(TreeDescriptor treeId, int nid, bool create)
{
SharedMemNode *node;
node = sharedTree.find(treeId, nid);
if(node)
return node->getData();
if(create)
{
SharedMemNodeData nodeData;
nodeData.setNid(treeId, nid);
sharedTree.insert(&nodeData);
node = sharedTree.find(treeId, nid);
return node->getData();
}
return 0;
}
示例3: void
void *SharedDataManager::setCallback(TreeDescriptor treeId, int nid, void *argument, void (*callback)(int, void *))
{
char *retPtr = NULL;
int status = 0;
lock.lock();
SharedMemNode *retNode = sharedTree.find(treeId, nid);
if(!retNode)
//No data has been written in the cache yet, or the not is not cacheable,
//then create a nid node without data
{
SharedMemNodeData nodeData;
nodeData.setNid(treeId, nid);
sharedTree.insert(&nodeData, &lock);
retNode = sharedTree.find(treeId, nid);
}
if(retNode)
{
//Create a new Callback manager and concatenate it to the linked list of Callback managers
//associated with this nid node
CallbackManager *callbackManager = (CallbackManager *)freeSpaceManager.allocateShared(sizeof(CallbackManager), &lock);
CallbackManager *prevCallbackManager = retNode->getData()->getCallbackManager();
if(prevCallbackManager)
prevCallbackManager->setPrev((char *)callbackManager);
callbackManager->setNext((char *)retNode->getData()->getCallbackManager());
callbackManager->setPrev(NULL);
retNode->getData()->setCallbackManager(callbackManager);
callbackManager->initialize(nid, argument, callback);
SharedMemNodeData *nodeData = retNode->getData();
nodeData->setWarm(true);
lock.unlock();
return callbackManager;
}
else
{
lock.unlock();
return NULL;
}
}
示例4: setSerializedData
void SharedDataManager::setSerializedData(TreeDescriptor treeId, int nid, char *serializedData, int dataLen)
{
lock.lock();
SharedMemNode *node = sharedTree.find(treeId, nid);
if(!node)
//No data has been written in the cache yet
{
SharedMemNodeData nodeData;
nodeData.setNid(treeId, nid);
sharedTree.insert(&nodeData);
node = sharedTree.find(treeId, nid);
}
if(node)
{
SharedMemNodeData *nodeData = node->getData();
nodeData->free(&allocationManager);
nodeData->initialize(serializedData, &allocationManager);
CallbackManager *callback = node->getData()->getCallbackManager();
if(callback)
callback->callCallback();
}
lock.unlock();
}
示例5: appendSegmentData
/*
//Return Shape and type information. The coding is the following:
//1) data type
//2) item size in bytes
//3) number of dimensions
//4) total dimension in bytes
//The remaining elements are the dimension limits
*/
int SharedDataManager::appendSegmentData(TreeDescriptor treeId, int nid, int *bounds, int boundsSize, char *data,
int dataSize, int idx, int startIdx,
bool isTimestamped, _int64 *timestamps, int numTimestamps, int *segmentFilled,
int *retIdx)
{
int numSegments;
int *shape;
int shapeSize;
char *segmentData;
int segmentSize;
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();
numSegments = nodeData->getNumSegments();
if(numSegments == 0) //May happen the first time putRow is called
{
lock.unlock();
// printf("APPENDSEGMENT DATA: NO SEGMENTS");
return TRUNCATED;
}
if(idx >= numSegments || numSegments == 0)
{
lock.unlock();
// printf("APPENDSEGMENT DATA: BAD INDEX");
return BAD_INDEX;
}
Segment *segment = nodeData->getSegmentAt(idx);
/* if(!segment->isTimestamped())
{
lock.unlock();
return 0;
}
*/
segment->getShape((char **)&shape, &shapeSize);
//Check Shape. Meaning of bound array:
// 1) data type
// 2) item size in bytes
// 3) number of dimensions
// 4) total dimension in bytes
// The remaining elements are the dimension limits
if(bounds[0] != shape[0])
{
lock.unlock();
// printf("APPENDSEGMENT DATA: BAD TYPE %d %d\n", bounds[0], shape[0]);
return BAD_TYPE;
}
if(bounds[2] < shape[2] - 1 || bounds[2] > shape[2])
{
lock.unlock();
// printf("APPENDSEGMENT DATA: BAD TYPE 1");
return BAD_SHAPE;
}
for(int i = 0; i < shape[2] - 1; i++)
{
if(bounds[4 + i] != shape[4 + i])
{
lock.unlock();
// printf("APPENDSEGMENT DATA: BAD SHAPE");
return BAD_SHAPE;
}
}
int currSegmentSize = segment->getCurrDataSize();
segment->getData((char **)&segmentData, &segmentSize);
if(startIdx < 0)
{
int leftSize = segmentSize - currSegmentSize;
if(dataSize > leftSize)
{
lock.unlock();
// printf("APPENDSEGMENT DATA: DATASIZE > LEFT SIZE");
return TRUNCATED;
}
if(leftSize == dataSize)
*segmentFilled = 1;
else
*segmentFilled = 0;
//.........这里部分代码省略.........
示例6: 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;
}
示例7: 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;
}