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);
|
SharedData *sharedDataMinor = CreateSharedData(SHARER_NAME_MINOR, "./shared_file", PROJECT_ID);
|
||||||
if (nullptr != sharedDataMinor)
|
if (nullptr != sharedDataMinor)
|
||||||
{
|
{
|
||||||
|
int writableData = 99;
|
||||||
sharedDataMinor->mMakeSharedData(sharedDataMinor, sizeof(int), sizeof(int));
|
sharedDataMinor->mMakeSharedData(sharedDataMinor, sizeof(int), sizeof(int));
|
||||||
|
sharedDataMinor->mSetWritableData(sharedDataMinor, &writableData, sizeof(int));
|
||||||
}
|
}
|
||||||
if (nullptr != sharedDataPrimary)
|
if (nullptr != sharedDataPrimary)
|
||||||
{
|
{
|
||||||
int readableData = -1;
|
int readableData = -1;
|
||||||
sharedDataPrimary->mMakeSharedData(sharedDataPrimary, sizeof(int), sizeof(int));
|
sharedDataPrimary->mMakeSharedData(sharedDataPrimary, sizeof(int), sizeof(int));
|
||||||
sharedDataPrimary->mGetReadableDataPointer(sharedDataPrimary, &readableData, sizeof(int));
|
sharedDataPrimary->mGetReadableData(sharedDataPrimary, &readableData, sizeof(int));
|
||||||
LogInfo("readableData = %d\n", readableData);
|
LogInfo("readableData = %d\n", readableData);
|
||||||
sharedDataPrimary->mFree(sharedDataPrimary);
|
sharedDataPrimary->mFree(sharedDataPrimary);
|
||||||
}
|
}
|
||||||
|
@ -44,4 +46,32 @@ namespace SharedDataTest
|
||||||
}
|
}
|
||||||
ILogUnInit();
|
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
|
} // namespace SharedDataTest
|
|
@ -30,11 +30,33 @@ extern "C"
|
||||||
{
|
{
|
||||||
const StatusCode (*mMakeSharedData)(SharedData *, const unsigned int, const unsigned int);
|
const StatusCode (*mMakeSharedData)(SharedData *, const unsigned int, const unsigned int);
|
||||||
const StatusCode (*mCleanSharedData)(SharedData *);
|
const StatusCode (*mCleanSharedData)(SharedData *);
|
||||||
void (*mGetReadableDataPointer)(SharedData *, void *, const int);
|
void (*mGetReadableData)(SharedData *, void *, const unsigned int);
|
||||||
void *(*mGetWritableDataPointer)(SharedData *);
|
void (*mSetWritableData)(SharedData *, void *, const unsigned int);
|
||||||
void (*mFree)(void *);
|
void (*mFree)(void *);
|
||||||
} SharedData;
|
} SharedData;
|
||||||
SharedData *CreateSharedData(const SHARER_NAME name, const char *path, const int projectId);
|
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
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -45,15 +45,6 @@ void SharedDataCpp::MakeSharedMemory(const unsigned int readableSize, const unsi
|
||||||
SharedMemory::MakeSharedMemory(SHARED_MEMORY_SIZE);
|
SharedMemory::MakeSharedMemory(SHARED_MEMORY_SIZE);
|
||||||
mSharedMemeory = SharedMemory::GetMemory();
|
mSharedMemeory = SharedMemory::GetMemory();
|
||||||
WritableDataInit();
|
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)
|
void SharedDataCpp::WritableDataInit(void)
|
||||||
{
|
{
|
||||||
|
@ -80,12 +71,7 @@ void SharedDataCpp::WritableDataInit(void)
|
||||||
}
|
}
|
||||||
void SharedDataCpp::GetReadableMemory(void *buf, const unsigned int &bufLength)
|
void SharedDataCpp::GetReadableMemory(void *buf, const unsigned int &bufLength)
|
||||||
{
|
{
|
||||||
if (bufLength > mPrimaryReadSize)
|
if (SHARER_NAME_PRIMARY == mSharerName && bufLength == mPrimaryReadSize)
|
||||||
{
|
|
||||||
LogError("Get readable memory failed, buf length too large.\n");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (SHARER_NAME_PRIMARY == mSharerName)
|
|
||||||
{
|
{
|
||||||
if (memcmp((char *)mSharedMemeory, USER_NAME_INIT_NAME, USER_NAME_BUF_LENGTH) == 0)
|
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");
|
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,
|
if (memcmp((char *)mSharedMemeory + sizeof(UserDataHeader) + mPrimaryReadSize,
|
||||||
USER_NAME_INIT_NAME,
|
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");
|
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)
|
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);
|
impl->mSharedData->MakeSharedMemory(readableSize, writableSize);
|
||||||
return CreateStatusCode(STATUS_CODE_OK);
|
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)));
|
SharedDataImpl *impl = ((SharedDataImpl *)(((char *)object) - sizeof(SharedDataHeader)));
|
||||||
impl->mSharedData->GetReadableMemory(buf, bufLength);
|
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)
|
static void SharedDataImplFree(void *ptr)
|
||||||
{
|
{
|
||||||
SharedDataImpl *object = ((SharedDataImpl *)(((char *)ptr) - sizeof(SharedDataHeader)));
|
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));
|
memcpy((void *)impl, (void *)&tmp, sizeof(SharedDataImpl));
|
||||||
impl->mHeader.mCheckName = SHARED_DATA_NAME;
|
impl->mHeader.mCheckName = SHARED_DATA_NAME;
|
||||||
impl->mBase.mMakeSharedData = MakeSharedData;
|
impl->mBase.mMakeSharedData = MakeSharedData;
|
||||||
impl->mBase.mGetReadableDataPointer = GetSharedReadableMemory;
|
impl->mBase.mGetReadableData = GetSharedReadableMemory;
|
||||||
|
impl->mBase.mSetWritableData = SetSharedWritableMemory;
|
||||||
impl->mBase.mFree = SharedDataImplFree;
|
impl->mBase.mFree = SharedDataImplFree;
|
||||||
impl->mSharedData = std::make_shared<SharedDataCpp>(name, path, projectId);
|
impl->mSharedData = std::make_shared<SharedDataCpp>(name, path, projectId);
|
||||||
return (SharedData *)(((char *)impl) + sizeof(SharedDataHeader));
|
return (SharedData *)(((char *)impl) + sizeof(SharedDataHeader));
|
||||||
|
|
|
@ -41,6 +41,7 @@ public:
|
||||||
virtual ~SharedDataCpp() = default;
|
virtual ~SharedDataCpp() = default;
|
||||||
void MakeSharedMemory(const unsigned int readableSize, const unsigned int writableSize);
|
void MakeSharedMemory(const unsigned int readableSize, const unsigned int writableSize);
|
||||||
void GetReadableMemory(void *buf, const unsigned int &bufLength);
|
void GetReadableMemory(void *buf, const unsigned int &bufLength);
|
||||||
|
void SetWritableMemory(void *buf, const unsigned int &bufLength);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void WritableDataInit(void);
|
void WritableDataInit(void);
|
||||||
|
|
Loading…
Reference in New Issue
Block a user