UnityRenderStreaming/com.unity.renderstreaming/Editor/RequestJob.cs

124 строки
3.5 KiB
C#

using UnityEditor.PackageManager.Requests; //Request
using UnityEditor.PackageManager; //StatusCode
using System; //Action
namespace Unity.RenderStreaming.Editor {
//---------------------------------------------------------------------------------------------------------------------
//Non-generics version
internal class RequestJob : IRequestJob {
internal RequestJob(Request req, Action onSuccess, Action onFail) {
m_request = req;
m_onSuccess = onSuccess;
m_onFail = onFail;
}
//---------------------------------------------------------------------------------------------------------------------
public StatusCode Update() {
if (null == m_request) {
OnFail();
return StatusCode.Failure;
}
if (m_request.IsCompleted) {
if (StatusCode.Success == m_request.Status ) {
OnSuccess();
return StatusCode.Success;
} else {
OnFail();
return StatusCode.Failure;
}
}
return StatusCode.InProgress;
}
//---------------------------------------------------------------------------------------------------------------------
void OnSuccess() {
if (null==m_onSuccess)
return;
m_onSuccess();
}
//---------------------------------------------------------------------------------------------------------------------
void OnFail() {
if (null==m_onFail)
return;
m_onFail();
}
Request m_request;
Action m_onSuccess;
Action m_onFail;
} //end RequestJob (non-generics version)
//---------------------------------------------------------------------------------------------------------------------
//RequestJob (generics version)
//Examples of T: PackageCollection(from ListRequest), PackageInfo (from AddRequest)
internal class RequestJob<T> : IRequestJob {
internal RequestJob(Request<T> req, Action<Request<T>> onSuccess, Action<Request<T>> onFail) {
m_request = req;
m_onSuccess = onSuccess;
m_onFail = onFail;
}
//---------------------------------------------------------------------------------------------------------------------
public StatusCode Update() {
if (null == m_request) {
OnFail();
return StatusCode.Failure;
}
if (m_request.IsCompleted) {
if (StatusCode.Success == m_request.Status ) {
OnSuccess();
return StatusCode.Success;
} else {
OnFail();
return StatusCode.Failure;
}
}
return StatusCode.InProgress;
}
//---------------------------------------------------------------------------------------------------------------------
void OnSuccess() {
if (null==m_onSuccess)
return;
m_onSuccess(m_request);
}
//---------------------------------------------------------------------------------------------------------------------
void OnFail() {
if (null==m_onFail)
return;
m_onFail(m_request);
}
//---------------------------------------------------------------------------------------------------------------------
Request<T> m_request;
Action<Request<T>> m_onSuccess;
Action<Request<T>> m_onFail;
}
} //Unity.RenderStreaming.Editor