12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- #pragma once
- #include "BeefySysLib/Common.h"
- #include "BeefySysLib/util/Array.h"
- #include "BeefySysLib/util/String.h"
- #include "BeefySysLib/util/CritSect.h"
- #include "BeefySysLib/FileStream.h"
- #include "Debugger.h"
- #include "DebugManager.h"
- namespace Beefy
- {
- class NetResult;
- }
- NS_BF_DBG_BEGIN
- class DbgSymSrv;
- class DbgSymRequest
- {
- public:
- Beefy::CritSect mCritSect;
- DbgSymSrv* mDbgSymSrv;
- Beefy::DbgSymSrvOptions mOptions;
-
- Beefy::String mModulePath;
- Beefy::String mPDBRequested;
- uint8 mWantGuid[16];
- int32 mWantAge;
- DWORD mLastUpdateTick;
- Beefy::String mOutPath;
- Beefy::FileStream mOutFile;
- Beefy::String mCurURL;
- Beefy::String mImagePath;
- Beefy::String mFinalPDBPath;
- Beefy::String mError;
- bool mFailed;
- bool mMayBeOld;
- bool mSearchingSymSrv;
- bool mCancelling;
- bool mInProcess;
- bool mIsPreCache;
- public:
- DbgSymRequest();
- ~DbgSymRequest();
- bool CheckPEFile(const Beefy::StringImpl& filePath, uint32 fileTime, int size);
- public:
- Beefy::String GetGuidString();
- Beefy::String GetPDBStoreDir();
- void Fail(const Beefy::StringImpl& error);
- bool CheckPDBData(const Beefy::StringImpl& path, uint8 outGuid[16], int32& outAge);
- bool Get(const Beefy::StringImpl& url, const Beefy::StringImpl& destPath, Beefy::NetResult** chainNetResult = NULL, bool ignoreSuccess = false);
- void SearchLocal(); // Only search for in specified path and in module path
- void SearchCache(); // Fast, single directory targeted check
-
- void SearchSymSrv(); // Slow - can access network
- Beefy::String SearchForImage(const Beefy::String& filePath, uint32 fileTime, int size); // Slow - can access network
- void Cancel();
- bool IsDone();
- };
- class DbgSymSrv
- {
- public:
- Beefy::Debugger* mDebugger;
- public:
- DbgSymSrv(Beefy::Debugger* debugger);
- void PreCacheImage(const Beefy::String& filePath, uint32 fileTime, int size);
- DbgSymRequest* CreateRequest(const Beefy::StringImpl& modulePath, const Beefy::StringImpl& pdbRequested, uint8 wantGuid[16], int32 wantAge);
- DbgSymRequest* CreateRequest();
- void ReleaseRequest(DbgSymRequest* dbgSymRequest);
-
- void Update();
- };
- NS_BF_DBG_END
|