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 : 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(m_request); } //--------------------------------------------------------------------------------------------------------------------- void OnFail() { if (null==m_onFail) return; m_onFail(m_request); } //--------------------------------------------------------------------------------------------------------------------- Request m_request; Action> m_onSuccess; Action> m_onFail; } } //Unity.RenderStreaming.Editor