#pragma once #include #include #include #include #include #include class MkFileMsgEx : public MirroredMessage> { public: typedef ErrorAndEntryResponseState ResponseState; MkFileMsgEx() : mkDetails({}, 0, 0, 0, 0, 0) { } virtual bool processIncoming(ResponseContext& ctx) override; std::tuple lock(EntryLockStore& store) override; std::unique_ptr executeLocally(ResponseContext& ctx, bool isSecondary) override; bool isMirrored() override { return getParentInfo()->getIsBuddyMirrored(); } private: std::unique_ptr executePrimary(); std::unique_ptr executeSecondary(); void forwardToSecondary(ResponseContext& ctx) override; FhgfsOpsErr processSecondaryResponse(NetMessage& resp) override { return (FhgfsOpsErr) static_cast(resp).getResult(); } const char* mirrorLogContext() const override { return "MkFileMsgEx/forward"; } FileInodeStoreData inodeData; MkFileDetails mkDetails; std::string newEntryID; EntryInfo entryInfo; };