SharedData module finished.
This commit is contained in:
parent
c459515071
commit
169ac7a0dd
|
@ -28,13 +28,15 @@ namespace SharedDataTest
|
|||
SharedData *sharedDataMinor = CreateSharedData(SHARER_NAME_MINOR, "./shared_file", PROJECT_ID);
|
||||
if (nullptr != sharedDataMinor)
|
||||
{
|
||||
int writableData = 99;
|
||||
sharedDataMinor->mMakeSharedData(sharedDataMinor, sizeof(int), sizeof(int));
|
||||
sharedDataMinor->mSetWritableData(sharedDataMinor, &writableData, sizeof(int));
|
||||
}
|
||||
if (nullptr != sharedDataPrimary)
|
||||
{
|
||||
int readableData = -1;
|
||||
sharedDataPrimary->mMakeSharedData(sharedDataPrimary, sizeof(int), sizeof(int));
|
||||
sharedDataPrimary->mGetReadableDataPointer(sharedDataPrimary, &readableData, sizeof(int));
|
||||
sharedDataPrimary->mGetReadableData(sharedDataPrimary, &readableData, sizeof(int));
|
||||
LogInfo("readableData = %d\n", readableData);
|
||||
sharedDataPrimary->mFree(sharedDataPrimary);
|
||||
}
|
||||
|
@ -44,4 +46,32 @@ namespace SharedDataTest
|
|||
}
|
||||
ILogUnInit();
|
||||
}
|
||||
// ../output_files/test/bin/SharedDataTest --gtest_filter=SharedDataTest.Demo2
|
||||
TEST(SharedDataTest, Demo2)
|
||||
{
|
||||
CreateLogModule();
|
||||
ILogInit(LOG_INSTANCE_TYPE_END);
|
||||
constexpr int PROJECT_ID = 9;
|
||||
SharedData *sharedDataPrimary = CreateSharedData(SHARER_NAME_PRIMARY, "./shared_file", PROJECT_ID);
|
||||
SharedData *sharedDataMinor = CreateSharedData(SHARER_NAME_MINOR, "./shared_file", PROJECT_ID);
|
||||
if (nullptr != sharedDataMinor)
|
||||
{
|
||||
int writableData = 9;
|
||||
IMakeSharedData(sharedDataMinor, sizeof(int), sizeof(int));
|
||||
ISetWritableData(sharedDataMinor, &writableData, sizeof(int));
|
||||
}
|
||||
if (nullptr != sharedDataPrimary)
|
||||
{
|
||||
int readableData = -1;
|
||||
IMakeSharedData(sharedDataPrimary, sizeof(int), sizeof(int));
|
||||
IGetReadableData(sharedDataPrimary, &readableData, sizeof(int));
|
||||
LogInfo("readableData = %d\n", readableData);
|
||||
IFree(sharedDataPrimary);
|
||||
}
|
||||
if (nullptr != sharedDataMinor)
|
||||
{
|
||||
IFree(sharedDataMinor);
|
||||
}
|
||||
ILogUnInit();
|
||||
}
|
||||
} // namespace SharedDataTest
|
|
@ -30,11 +30,33 @@ extern "C"
|
|||
{
|
||||
const StatusCode (*mMakeSharedData)(SharedData *, const unsigned int, const unsigned int);
|
||||
const StatusCode (*mCleanSharedData)(SharedData *);
|
||||
void (*mGetReadableDataPointer)(SharedData *, void *, const int);
|
||||
void *(*mGetWritableDataPointer)(SharedData *);
|
||||
void (*mGetReadableData)(SharedData *, void *, const unsigned int);
|
||||
void (*mSetWritableData)(SharedData *, void *, const unsigned int);
|
||||
void (*mFree)(void *);
|
||||
} SharedData;
|
||||
SharedData *CreateSharedData(const SHARER_NAME name, const char *path, const int projectId);
|
||||
static inline const StatusCode IMakeSharedData(SharedData *object,
|
||||
const unsigned int readableSize,
|
||||
const unsigned int writableSize)
|
||||
{
|
||||
return object->mMakeSharedData(object, readableSize, writableSize);
|
||||
}
|
||||
static inline const StatusCode ICleanSharedData(SharedData *object)
|
||||
{
|
||||
return object->mCleanSharedData(object);
|
||||
}
|
||||
static inline void IGetReadableData(SharedData *object, void *buf, const unsigned int &bufLength)
|
||||
{
|
||||
object->mGetReadableData(object, buf, bufLength);
|
||||
}
|
||||
static inline void ISetWritableData(SharedData *object, void *buf, const unsigned int &bufLength)
|
||||
{
|
||||
object->mSetWritableData(object, buf, bufLength);
|
||||
}
|
||||
static inline void IFree(void *ptr)
|
||||
{
|
||||
((SharedData *)ptr)->mFree(ptr);
|
||||
}
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -45,15 +45,6 @@ void SharedDataCpp::MakeSharedMemory(const unsigned int readableSize, const unsi
|
|||
SharedMemory::MakeSharedMemory(SHARED_MEMORY_SIZE);
|
||||
mSharedMemeory = SharedMemory::GetMemory();
|
||||
WritableDataInit();
|
||||
// if (nullptr != mSharedMemeory)
|
||||
// {
|
||||
// UserDataHeader *writableHeader = (UserDataHeader *)((char *)mSharedMemeory + sizeof(UserDataHeader) + mPrimaryReadSize);
|
||||
// memcpy(writableHeader->mUserName, USER_NAME_INIT_NAME, USER_NAME_BUF_LENGTH);
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// LogError("mSharedMemeory get failed.\n");
|
||||
// }
|
||||
}
|
||||
void SharedDataCpp::WritableDataInit(void)
|
||||
{
|
||||
|
@ -80,12 +71,7 @@ void SharedDataCpp::WritableDataInit(void)
|
|||
}
|
||||
void SharedDataCpp::GetReadableMemory(void *buf, const unsigned int &bufLength)
|
||||
{
|
||||
if (bufLength > mPrimaryReadSize)
|
||||
{
|
||||
LogError("Get readable memory failed, buf length too large.\n");
|
||||
return;
|
||||
}
|
||||
if (SHARER_NAME_PRIMARY == mSharerName)
|
||||
if (SHARER_NAME_PRIMARY == mSharerName && bufLength == mPrimaryReadSize)
|
||||
{
|
||||
if (memcmp((char *)mSharedMemeory, USER_NAME_INIT_NAME, USER_NAME_BUF_LENGTH) == 0)
|
||||
{
|
||||
|
@ -96,7 +82,7 @@ void SharedDataCpp::GetReadableMemory(void *buf, const unsigned int &bufLength)
|
|||
LogError("Readable memory didn't init yet.\n");
|
||||
}
|
||||
}
|
||||
if (SHARER_NAME_MINOR == mSharerName)
|
||||
else if (SHARER_NAME_MINOR == mSharerName && bufLength == mMinorReadSize)
|
||||
{
|
||||
if (memcmp((char *)mSharedMemeory + sizeof(UserDataHeader) + mPrimaryReadSize,
|
||||
USER_NAME_INIT_NAME,
|
||||
|
@ -111,6 +97,27 @@ void SharedDataCpp::GetReadableMemory(void *buf, const unsigned int &bufLength)
|
|||
LogError("Readable memory didn't init yet.\n");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
LogError("Get readable memory failed.\n");
|
||||
}
|
||||
}
|
||||
void SharedDataCpp::SetWritableMemory(void *buf, const unsigned int &bufLength)
|
||||
{
|
||||
if (SHARER_NAME_PRIMARY == mSharerName && bufLength == mMinorReadSize)
|
||||
{
|
||||
memcpy((char *)mSharedMemeory + sizeof(UserDataHeader) * THERE_TWO_USER_DATA_HEADER + mPrimaryReadSize,
|
||||
buf,
|
||||
bufLength);
|
||||
}
|
||||
else if (SHARER_NAME_MINOR == mSharerName && bufLength == mPrimaryReadSize)
|
||||
{
|
||||
memcpy((char *)mSharedMemeory + sizeof(UserDataHeader), buf, bufLength);
|
||||
}
|
||||
else
|
||||
{
|
||||
LogError("Set writable memory failed.\n");
|
||||
}
|
||||
}
|
||||
static const StatusCode MakeSharedData(SharedData *object, const unsigned int readableSize, const unsigned int writableSize)
|
||||
{
|
||||
|
@ -118,11 +125,16 @@ static const StatusCode MakeSharedData(SharedData *object, const unsigned int re
|
|||
impl->mSharedData->MakeSharedMemory(readableSize, writableSize);
|
||||
return CreateStatusCode(STATUS_CODE_OK);
|
||||
}
|
||||
static void GetSharedReadableMemory(SharedData *object, void *buf, const int bufLength)
|
||||
static void GetSharedReadableMemory(SharedData *object, void *buf, const unsigned int bufLength)
|
||||
{
|
||||
SharedDataImpl *impl = ((SharedDataImpl *)(((char *)object) - sizeof(SharedDataHeader)));
|
||||
impl->mSharedData->GetReadableMemory(buf, bufLength);
|
||||
}
|
||||
static void SetSharedWritableMemory(SharedData *object, void *buf, const unsigned int bufLength)
|
||||
{
|
||||
SharedDataImpl *impl = ((SharedDataImpl *)(((char *)object) - sizeof(SharedDataHeader)));
|
||||
impl->mSharedData->SetWritableMemory(buf, bufLength);
|
||||
}
|
||||
static void SharedDataImplFree(void *ptr)
|
||||
{
|
||||
SharedDataImpl *object = ((SharedDataImpl *)(((char *)ptr) - sizeof(SharedDataHeader)));
|
||||
|
@ -143,7 +155,8 @@ SharedData *NewSharedDataImpl(const SHARER_NAME &name, const char *path, const i
|
|||
memcpy((void *)impl, (void *)&tmp, sizeof(SharedDataImpl));
|
||||
impl->mHeader.mCheckName = SHARED_DATA_NAME;
|
||||
impl->mBase.mMakeSharedData = MakeSharedData;
|
||||
impl->mBase.mGetReadableDataPointer = GetSharedReadableMemory;
|
||||
impl->mBase.mGetReadableData = GetSharedReadableMemory;
|
||||
impl->mBase.mSetWritableData = SetSharedWritableMemory;
|
||||
impl->mBase.mFree = SharedDataImplFree;
|
||||
impl->mSharedData = std::make_shared<SharedDataCpp>(name, path, projectId);
|
||||
return (SharedData *)(((char *)impl) + sizeof(SharedDataHeader));
|
||||
|
|
|
@ -41,6 +41,7 @@ public:
|
|||
virtual ~SharedDataCpp() = default;
|
||||
void MakeSharedMemory(const unsigned int readableSize, const unsigned int writableSize);
|
||||
void GetReadableMemory(void *buf, const unsigned int &bufLength);
|
||||
void SetWritableMemory(void *buf, const unsigned int &bufLength);
|
||||
|
||||
private:
|
||||
void WritableDataInit(void);
|
||||
|
|
Loading…
Reference in New Issue
Block a user