private void CheckMultiplePermissionsWithMultipleTargetUsersComplete(XSAPI_RESULT_INFO result, IntPtr resultsPtr, UInt32 privacyCheckResultCount, IntPtr contextKey) { XsapiCallbackContext <CheckMultiplePermissionsContext, IList <MultiplePermissionsCheckResult> > context; if (XsapiCallbackContext <CheckMultiplePermissionsContext, IList <MultiplePermissionsCheckResult> > .TryRemove(contextKey.ToInt32(), out context)) { if (result.errorCode == XSAPI_RESULT.XSAPI_RESULT_OK) { var results = new List <MultiplePermissionsCheckResult>(); var structSize = MarshalingHelpers.SizeOf <XSAPI_PRIVACY_MULTIPLE_PERMISSIONS_CHECK_RESULT>(); for (UInt64 i = 0; i < privacyCheckResultCount; ++i) { results.Add(new MultiplePermissionsCheckResult(resultsPtr)); resultsPtr = resultsPtr.Increment(structSize); } context.TaskCompletionSource.SetResult(results.AsReadOnly()); } else { context.TaskCompletionSource.SetException(new XboxException(result)); } MarshalingHelpers.FreeHGlobalUtf8StringArray(context.Context.permissionIdsArray, context.Context.permissionIdsLength); MarshalingHelpers.FreeHGlobalUtf8StringArray(context.Context.targetXboxUserIdsArray, context.Context.targetXboxUserIdsLength); context.Dispose(); } }
private void GetPrivacyUserListComplete(XSAPI_RESULT_INFO result, IntPtr xboxUserIdList, UInt32 count, IntPtr contextKey) { XsapiCallbackContext <object, IList <string> > context; if (XsapiCallbackContext <object, IList <string> > .TryRemove(contextKey.ToInt32(), out context)) { if (result.errorCode == XSAPI_RESULT.XSAPI_RESULT_OK) { context.TaskCompletionSource.SetResult(MarshalingHelpers.Utf8StringArrayToStringList(xboxUserIdList, count)); } else { context.TaskCompletionSource.SetException(new XboxException(result)); } context.Dispose(); } }
private void DeleteBlobComplete(XSAPI_RESULT_INFO result, IntPtr contextKey) { XsapiCallbackContext <object, object> context; if (XsapiCallbackContext <object, object> .TryRemove(contextKey.ToInt32(), out context)) { if (result.errorCode == XSAPI_RESULT.XSAPI_RESULT_OK) { context.TaskCompletionSource.SetResult(null); } else { context.TaskCompletionSource.SetException(new XboxException(result)); } context.Dispose(); } }
private void CheckPermissionWithTargetUserComplete(XSAPI_RESULT_INFO result, XSAPI_PRIVACY_PERMISSION_CHECK_RESULT payload, IntPtr contextKey) { XsapiCallbackContext <object, PermissionCheckResult> context; if (XsapiCallbackContext <object, PermissionCheckResult> .TryRemove(contextKey.ToInt32(), out context)) { if (result.errorCode == XSAPI_RESULT.XSAPI_RESULT_OK) { context.TaskCompletionSource.SetResult(new PermissionCheckResult(payload)); } else { context.TaskCompletionSource.SetException(new XboxException(result)); } context.Dispose(); } }
internal void GetBlobMetadataComplete(XSAPI_RESULT_INFO result, XSAPI_TITLE_STORAGE_BLOB_METADATA_RESULT payload, IntPtr contextKey) { XsapiCallbackContext <object, TitleStorageBlobMetadataResult> context; if (XsapiCallbackContext <object, TitleStorageBlobMetadataResult> .TryRemove(contextKey.ToInt32(), out context)) { if (result.errorCode == XSAPI_RESULT.XSAPI_RESULT_OK) { context.TaskCompletionSource.SetResult(new TitleStorageBlobMetadataResult(payload, this)); } else { context.TaskCompletionSource.SetException(new XboxException(result)); } context.Dispose(); } }
private void GetQuotaComplete(XSAPI_RESULT_INFO result, XSAPI_TITLE_STORAGE_QUOTA quota, IntPtr contextKey) { XsapiCallbackContext <object, TitleStorageQuota> context; if (XsapiCallbackContext <object, TitleStorageQuota> .TryRemove(contextKey.ToInt32(), out context)) { if (result.errorCode == XSAPI_RESULT.XSAPI_RESULT_OK) { context.TaskCompletionSource.SetResult(new TitleStorageQuota(quota)); } else { context.TaskCompletionSource.SetException(new XboxException(result)); } context.Dispose(); } }
private void UploadBlobComplete(XSAPI_RESULT_INFO result, IntPtr pBlobMetadata, IntPtr contextKey) { XsapiCallbackContext <TitleStorageBlobMetadata, TitleStorageBlobMetadata> context; if (XsapiCallbackContext <TitleStorageBlobMetadata, TitleStorageBlobMetadata> .TryRemove(contextKey.ToInt32(), out context)) { if (result.errorCode == XSAPI_RESULT.XSAPI_RESULT_OK) { context.Context.Refresh(); context.TaskCompletionSource.SetResult(context.Context); } else { context.TaskCompletionSource.SetException(new XboxException(result)); } context.Dispose(); } }
private void DownloadBlobComplete(XSAPI_RESULT_INFO result, XSAPI_TITLE_STORAGE_BLOB_RESULT blobResult, IntPtr contextKey) { XsapiCallbackContext <TitleStorageBlobMetadata, TitleStorageBlobResult> context; if (XsapiCallbackContext <TitleStorageBlobMetadata, TitleStorageBlobResult> .TryRemove(contextKey.ToInt32(), out context)) { if (result.errorCode == XSAPI_RESULT.XSAPI_RESULT_OK) { context.Context.Refresh(); byte[] buffer = new byte[blobResult.cbBlobBuffer]; Marshal.Copy(blobResult.blobBuffer, buffer, 0, (int)blobResult.cbBlobBuffer); context.TaskCompletionSource.SetResult(new TitleStorageBlobResult(context.Context, buffer)); } else { context.TaskCompletionSource.SetException(new XboxException(result)); } context.Dispose(); } }
internal XboxException(XSAPI_RESULT_INFO resultInfo) : base(string.Format("Xbox Services flat C API return error code {0} with message \"{1}\"", resultInfo.errorCode.ToString("g"), MarshalingHelpers.Utf8ToString(resultInfo.errorMessage))) { }