mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-11-03 01:51:35 +08:00
Explicit specialization for empty TransferBuffer (for single frame transfers)
This commit is contained in:
@@ -335,7 +335,11 @@ class TransferBufferManager : public ITransferBufferManager, Noncopyable
|
|||||||
public:
|
public:
|
||||||
TransferBufferManager(IAllocator* allocator)
|
TransferBufferManager(IAllocator* allocator)
|
||||||
: allocator_(allocator)
|
: allocator_(allocator)
|
||||||
{ }
|
{
|
||||||
|
assert(allocator);
|
||||||
|
StaticAssert<(MAX_BUF_SIZE > 0)>::check();
|
||||||
|
StaticAssert<(NUM_STATIC_BUFS > 0)>::check();
|
||||||
|
}
|
||||||
|
|
||||||
~TransferBufferManager()
|
~TransferBufferManager()
|
||||||
{
|
{
|
||||||
@@ -425,4 +429,31 @@ public:
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
template <>
|
||||||
|
class TransferBufferManager<0, 0> : public ITransferBufferManager
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
TransferBufferManager(IAllocator* allocator)
|
||||||
|
{
|
||||||
|
(void)allocator;
|
||||||
|
}
|
||||||
|
|
||||||
|
TransferBufferBase* access(const TransferBufferManagerKey& key)
|
||||||
|
{
|
||||||
|
(void)key;
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
TransferBufferBase* create(const TransferBufferManagerKey& key)
|
||||||
|
{
|
||||||
|
(void)key;
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
void remove(const TransferBufferManagerKey& key)
|
||||||
|
{
|
||||||
|
(void)key;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -338,3 +338,11 @@ TEST(TransferBufferManager, Basic)
|
|||||||
mgr.reset();
|
mgr.reset();
|
||||||
ASSERT_EQ(0, pool.getNumUsedBlocks());
|
ASSERT_EQ(0, pool.getNumUsedBlocks());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
TEST(TransferBufferManager, EmptySpecialization)
|
||||||
|
{
|
||||||
|
uavcan::TransferBufferManager<0, 0> mgr(NULL);
|
||||||
|
(void)mgr;
|
||||||
|
ASSERT_GE(sizeof(void*), sizeof(mgr));
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user