diff --git a/test/utils/SharedData/src/SharedDataTest.cpp b/test/utils/SharedData/src/SharedDataTest.cpp index 58df1d9d..5b24560e 100644 --- a/test/utils/SharedData/src/SharedDataTest.cpp +++ b/test/utils/SharedData/src/SharedDataTest.cpp @@ -188,4 +188,36 @@ namespace SharedDataTest } ILogUnInit(); } + // ../output_files/test/bin/SharedDataTest --gtest_filter=SharedDataTest.Demo7 + TEST(SharedDataTest, Demo7) + { + constexpr int WRITABLE_DATA = 189; + 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 != sharedDataPrimary) + { + IMakeSharedData(sharedDataPrimary, sizeof(int), sizeof(int)); + ISetWritableData(sharedDataPrimary, (void *)&WRITABLE_DATA, sizeof(int)); + } + if (nullptr != sharedDataMinor) + { + constexpr int DEFAULT_DATA = 0; + int readableData = DEFAULT_DATA; + IMakeSharedData(sharedDataMinor, sizeof(int), sizeof(int)); + StatusCode code = IGetReadableData(sharedDataMinor, &readableData, sizeof(int)); + PrintStringCode(code); + LogInfo("readableData = %d\n", readableData); + EXPECT_EQ(code.mStatusCode, STATUS_CODE_OK); + EXPECT_EQ(readableData, WRITABLE_DATA); + IFree(sharedDataMinor); + } + if (nullptr != sharedDataPrimary) + { + IFree(sharedDataPrimary); + } + ILogUnInit(); + } } // namespace SharedDataTest \ No newline at end of file diff --git a/utils/SharedData/src/SharedDataImpl.cpp b/utils/SharedData/src/SharedDataImpl.cpp index 80049d0b..6e6de0e4 100644 --- a/utils/SharedData/src/SharedDataImpl.cpp +++ b/utils/SharedData/src/SharedDataImpl.cpp @@ -128,17 +128,25 @@ void SharedDataCpp::SetWritableMemory(void *buf, const unsigned int &bufLength) if (SHARER_NAME_PRIMARY == mSharerName && bufLength == mMinorReadSize) { UserDataHeader *readableHeader = (UserDataHeader *)((char *)mSharedMemeory); - if (memcmp(readableHeader->mUserName, USER_NAME_INIT_NAME, USER_NAME_BUF_LENGTH) == 0 && - mPrimaryReadSize == readableHeader->mDataLength) + if (memcmp(readableHeader->mUserName, USER_NAME_INIT_NAME, USER_NAME_BUF_LENGTH) == 0) + { + if (mPrimaryReadSize == readableHeader->mDataLength) + { + memcpy((char *)mSharedMemeory + sizeof(UserDataHeader) * THERE_TWO_USER_DATA_HEADER + mPrimaryReadSize, + buf, + bufLength); + } + else + { + LogError("Peer not match.\n"); + } + } + else { memcpy((char *)mSharedMemeory + sizeof(UserDataHeader) * THERE_TWO_USER_DATA_HEADER + mPrimaryReadSize, buf, bufLength); } - else - { - LogError("Peer not match.\n"); - } } else if (SHARER_NAME_MINOR == mSharerName && bufLength == mPrimaryReadSize) {