mirror of
https://github.com/beefytech/Beef.git
synced 2025-06-10 04:22: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]
|
[CallingConvention(.Stdcall), CLink]
|
||||||
static extern int32 HTTP_GetResult(void* netRequest, int32 waitMS);
|
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]
|
[CallingConvention(.Stdcall), CLink]
|
||||||
static extern void HTTP_Delete(void* netRequest);
|
static extern void HTTP_Delete(void* netRequest);
|
||||||
|
|
||||||
|
@ -37,5 +40,11 @@ namespace Beefy2D.utils
|
||||||
{
|
{
|
||||||
return (HTTPResult)HTTP_GetResult(mNativeNetRequest, 0);
|
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()
|
void FileOpenFailed()
|
||||||
{
|
{
|
||||||
|
bool fileFromNetwork = mOldVerLoadCmd?.StartsWith("http", .OrdinalIgnoreCase) == true;
|
||||||
|
|
||||||
mLoadFailed = true;
|
mLoadFailed = true;
|
||||||
//mLastFileTextVersion = mEditWidget.Content.mData.mCurTextVersionId;
|
//mLastFileTextVersion = mEditWidget.Content.mData.mCurTextVersionId;
|
||||||
mPanelHeader = new PanelHeader();
|
mPanelHeader = new PanelHeader();
|
||||||
String fileName = scope String();
|
String fileName = scope String();
|
||||||
Path.GetFileName(mFilePath, fileName);
|
Path.GetFileName(mFilePath, fileName);
|
||||||
String headerStr = scope String();
|
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;
|
mPanelHeader.Label = headerStr;
|
||||||
if (!sPreviousVersionWarningShown)
|
if (!sPreviousVersionWarningShown)
|
||||||
{
|
{
|
||||||
|
@ -3162,19 +3168,30 @@ namespace IDE.ui
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
var button = mPanelHeader.AddButton("Retry");
|
if (fileFromNetwork)
|
||||||
button.mOnMouseClick.Add(new (evt) =>
|
{
|
||||||
{
|
var button = mPanelHeader.AddButton("Retry");
|
||||||
Reload();
|
button.mOnMouseClick.Add(new (evt) =>
|
||||||
});
|
{
|
||||||
|
LoadOldVer();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var button = mPanelHeader.AddButton("Retry");
|
||||||
|
button.mOnMouseClick.Add(new (evt) =>
|
||||||
|
{
|
||||||
|
Reload();
|
||||||
|
});
|
||||||
|
|
||||||
button = mPanelHeader.AddButton("Auto Find");
|
button = mPanelHeader.AddButton("Auto Find");
|
||||||
button.mOnMouseClick.Add(new (evt) =>
|
button.mOnMouseClick.Add(new (evt) =>
|
||||||
{
|
{
|
||||||
AutoFind();
|
AutoFind();
|
||||||
});
|
});
|
||||||
|
}
|
||||||
|
|
||||||
button = mPanelHeader.AddButton("Browse...");
|
var button = mPanelHeader.AddButton("Browse...");
|
||||||
button.mOnMouseClick.Add(new (evt) =>
|
button.mOnMouseClick.Add(new (evt) =>
|
||||||
{
|
{
|
||||||
BrowseForFile();
|
BrowseForFile();
|
||||||
|
@ -5719,7 +5736,18 @@ namespace IDE.ui
|
||||||
if (result != .NotDone)
|
if (result != .NotDone)
|
||||||
{
|
{
|
||||||
if (result == .Failed)
|
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();
|
CheckAdjustFile();
|
||||||
RetryLoad();
|
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)
|
BF_EXPORT void HTTP_Delete(NetResult* netResult)
|
||||||
{
|
{
|
||||||
if (!netResult->mDoneEvent->WaitFor(0))
|
if (!netResult->mDoneEvent->WaitFor(0))
|
||||||
|
|
|
@ -165,7 +165,23 @@ void NetRequest::DoTransfer()
|
||||||
curl_easy_getinfo(mCURL, CURLINFO_RESPONSE_CODE, &response_code);
|
curl_easy_getinfo(mCURL, CURLINFO_RESPONSE_CODE, &response_code);
|
||||||
mNetManager->mDebugManager->OutputRawMessage(StrFormat("msgLo Result for '%s': %d\n", mURL.c_str(), 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;
|
break;
|
||||||
|
|
||||||
Cleanup();
|
Cleanup();
|
||||||
|
@ -410,6 +426,7 @@ NetRequest::~NetRequest()
|
||||||
if (mResult != NULL)
|
if (mResult != NULL)
|
||||||
{
|
{
|
||||||
mResult->mFailed = mFailed;
|
mResult->mFailed = mFailed;
|
||||||
|
mResult->mError = mError;
|
||||||
mResult->mCurRequest = NULL;
|
mResult->mCurRequest = NULL;
|
||||||
if (mResult->mDoneEvent != NULL)
|
if (mResult->mDoneEvent != NULL)
|
||||||
{
|
{
|
||||||
|
|
|
@ -74,6 +74,7 @@ public:
|
||||||
String mURL;
|
String mURL;
|
||||||
String mOutPath;
|
String mOutPath;
|
||||||
bool mFailed;
|
bool mFailed;
|
||||||
|
String mError;
|
||||||
NetRequest* mCurRequest;
|
NetRequest* mCurRequest;
|
||||||
bool mRemoved;
|
bool mRemoved;
|
||||||
SyncEvent* mDoneEvent;
|
SyncEvent* mDoneEvent;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue