/* * Copyright (c) 2023 Fancy Code. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "ISharedData.h" #include "ILog.h" #include "SharedDataImpl.h" // TODO: 互相包含,需要修改 #include void ISharedData::MakeSharedMemory(const unsigned int readableSize, const unsigned int writableSize) { } const StatusCode ISharedData::GetReadableMemory(void *buf, const unsigned int &bufLength) { return CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION); } void ISharedData::SetWritableMemory(void *buf, const unsigned int &bufLength) { } StatusCode ISharedData::FreeSharedMemory(void) { return CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION); } static const char *SHARED_DATA_NAME = "shared_data"; const char *GetSharedDataModuleName(void) { return SHARED_DATA_NAME; } std::shared_ptr *NewSharedData(const enum SHARER_NAME &name, const char *path, const int &projectId) { LogInfo("Create the shared data object.\n"); SharedData *impl = (SharedData *)malloc(sizeof(SharedData)); if (nullptr == impl) { LogError("NewConfigBase::malloc failed.\n"); return nullptr; } SharedData tmp; memcpy((void *)impl, (void *)&tmp, sizeof(SharedData)); impl->mHeader.mCheckName = SHARED_DATA_NAME; impl->mISharedData = std::make_shared(name, path, projectId); return (std::shared_ptr *)(((char *)impl) + sizeof(ISharedDataHeader)); }