Пример #1
0
        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();
            }
        }
Пример #2
0
        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();
            }
        }
Пример #3
0
        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();
            }
        }
Пример #4
0
        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();
            }
        }
Пример #5
0
        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();
            }
        }
Пример #6
0
        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();
            }
        }
Пример #7
0
        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();
            }
        }
Пример #8
0
        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();
            }
        }