mirror of
https://github.com/beefytech/Beef.git
synced 2025-06-08 03:28:20 +02:00
Improve open error for files from network
This commit is contained in:
parent
36311cab2d
commit
2fd78b36e7
5 changed files with 81 additions and 20 deletions
|
@ -19,6 +19,9 @@ namespace Beefy2D.utils
|
|||
[CallingConvention(.Stdcall), CLink]
|
||||
static extern int32 HTTP_GetResult(void* netRequest, int32 waitMS);
|
||||
|
||||
[CallingConvention(.Stdcall), CLink]
|
||||
static extern void HTTP_GetLastError(void* netRequest, out char8* error, out int32 errorLength);
|
||||
|
||||
[CallingConvention(.Stdcall), CLink]
|
||||
static extern void HTTP_Delete(void* netRequest);
|
||||
|
||||
|
@ -37,5 +40,11 @@ namespace Beefy2D.utils
|
|||
{
|
||||
return (HTTPResult)HTTP_GetResult(mNativeNetRequest, 0);
|
||||
}
|
||||
|
||||
public void GetLastError(String outError)
|
||||
{
|
||||
HTTP_GetLastError(mNativeNetRequest, let error, let errorLength);
|
||||
outError.Append(StringView(error, errorLength));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3121,13 +3121,19 @@ namespace IDE.ui
|
|||
|
||||
void FileOpenFailed()
|
||||
{
|
||||
bool fileFromNetwork = mOldVerLoadCmd?.StartsWith("http", .OrdinalIgnoreCase) == true;
|
||||
|
||||
mLoadFailed = true;
|
||||
//mLastFileTextVersion = mEditWidget.Content.mData.mCurTextVersionId;
|
||||
mPanelHeader = new PanelHeader();
|
||||
String fileName = scope String();
|
||||
Path.GetFileName(mFilePath, fileName);
|
||||
String headerStr = scope String();
|
||||
headerStr.AppendF("Source file '{0}' is unavailable. Requested path is '{1}'", fileName, mFilePath);
|
||||
headerStr.AppendF("Source file '{0}' is unavailable. ", fileName);
|
||||
if (fileFromNetwork)
|
||||
headerStr.Append("Failed to retrieve from network.");
|
||||
else
|
||||
headerStr.AppendF("Requested path is '{0}'", mFilePath);
|
||||
mPanelHeader.Label = headerStr;
|
||||
if (!sPreviousVersionWarningShown)
|
||||
{
|
||||
|
@ -3162,6 +3168,16 @@ namespace IDE.ui
|
|||
});
|
||||
}
|
||||
|
||||
if (fileFromNetwork)
|
||||
{
|
||||
var button = mPanelHeader.AddButton("Retry");
|
||||
button.mOnMouseClick.Add(new (evt) =>
|
||||
{
|
||||
LoadOldVer();
|
||||
});
|
||||
}
|
||||
else
|
||||
{
|
||||
var button = mPanelHeader.AddButton("Retry");
|
||||
button.mOnMouseClick.Add(new (evt) =>
|
||||
{
|
||||
|
@ -3173,8 +3189,9 @@ namespace IDE.ui
|
|||
{
|
||||
AutoFind();
|
||||
});
|
||||
}
|
||||
|
||||
button = mPanelHeader.AddButton("Browse...");
|
||||
var button = mPanelHeader.AddButton("Browse...");
|
||||
button.mOnMouseClick.Add(new (evt) =>
|
||||
{
|
||||
BrowseForFile();
|
||||
|
@ -5719,7 +5736,18 @@ namespace IDE.ui
|
|||
if (result != .NotDone)
|
||||
{
|
||||
if (result == .Failed)
|
||||
gApp.OutputErrorLine("Failed to retrieve source from {}", mOldVerLoadCmd);
|
||||
{
|
||||
String errorMsg = scope .();
|
||||
errorMsg.AppendF("Failed to retrieve source from {}", mOldVerLoadCmd);
|
||||
|
||||
String errorReason = scope .();
|
||||
mOldVerHTTPRequest.GetLastError(errorReason);
|
||||
|
||||
if (!errorReason.IsEmpty)
|
||||
errorMsg.AppendF(" ({})", errorReason);
|
||||
|
||||
gApp.OutputErrorLine(errorMsg);
|
||||
}
|
||||
|
||||
CheckAdjustFile();
|
||||
RetryLoad();
|
||||
|
|
|
@ -1617,6 +1617,12 @@ BF_EXPORT int HTTP_GetResult(NetResult* netResult, int waitMS)
|
|||
}
|
||||
}
|
||||
|
||||
BF_EXPORT void HTTP_GetLastError(NetResult* netResult, const char** error, int* errorLength)
|
||||
{
|
||||
*error = netResult->mError.GetPtr();
|
||||
*errorLength = netResult->mError.GetLength();
|
||||
}
|
||||
|
||||
BF_EXPORT void HTTP_Delete(NetResult* netResult)
|
||||
{
|
||||
if (!netResult->mDoneEvent->WaitFor(0))
|
||||
|
|
|
@ -165,7 +165,23 @@ void NetRequest::DoTransfer()
|
|||
curl_easy_getinfo(mCURL, CURLINFO_RESPONSE_CODE, &response_code);
|
||||
mNetManager->mDebugManager->OutputRawMessage(StrFormat("msgLo Result for '%s': %d\n", mURL.c_str(), response_code));
|
||||
|
||||
if ((response_code == 0) || (response_code == 200) || (response_code == 404))
|
||||
if (response_code == 0)
|
||||
{
|
||||
mError.Clear();
|
||||
|
||||
int msgs_left = 0;
|
||||
CURLMsg* msg = curl_multi_info_read(mCURLMulti, &msgs_left);
|
||||
|
||||
if (msg != NULL && msg->msg == CURLMSG_DONE)
|
||||
{
|
||||
CURLcode return_code = msg->data.result;
|
||||
mError.Append(curl_easy_strerror(return_code));
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
if ((response_code == 200) || (response_code == 404))
|
||||
break;
|
||||
|
||||
Cleanup();
|
||||
|
@ -410,6 +426,7 @@ NetRequest::~NetRequest()
|
|||
if (mResult != NULL)
|
||||
{
|
||||
mResult->mFailed = mFailed;
|
||||
mResult->mError = mError;
|
||||
mResult->mCurRequest = NULL;
|
||||
if (mResult->mDoneEvent != NULL)
|
||||
{
|
||||
|
|
|
@ -74,6 +74,7 @@ public:
|
|||
String mURL;
|
||||
String mOutPath;
|
||||
bool mFailed;
|
||||
String mError;
|
||||
NetRequest* mCurRequest;
|
||||
bool mRemoved;
|
||||
SyncEvent* mDoneEvent;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue