Example #1
0
        public static Task <string> EncodeAuthReqAsync(AuthReq authReq)
        {
            return(Task.Run(
                       () => {
                var tcs = new TaskCompletionSource <string>();
                var authReqFfi = new AuthReqFfi {
                    AppContainer = authReq.AppContainer,
                    AppExchangeInfo = authReq.AppExchangeInfo,
                    ContainersLen = (IntPtr)authReq.Containers.Count,
                    ContainersArrayPtr = authReq.Containers.ToIntPtr()
                };
                var authReqFfiPtr = CommonUtils.Helpers.StructToPtr(authReqFfi);
                EncodeAuthReqCb callback = null;
                callback = (ptr, result, id, req) => {
                    if (result.ErrorCode != 0)
                    {
                        tcs.SetException(result.ToException());
                        CallbackManager.Unregister(callback);
                        return;
                    }

                    tcs.SetResult(req);
                    CallbackManager.Unregister(callback);
                };

                CallbackManager.Register(callback);
                NativeBindings.EncodeAuthReq(authReqFfiPtr, UserData, callback);
                Marshal.FreeHGlobal(authReqFfi.ContainersArrayPtr);
                Marshal.FreeHGlobal(authReqFfiPtr);

                return tcs.Task;
            }));
        }
Example #2
0
 public static extern void EncodeAuthReqNative(IntPtr authReq, IntPtr userDataPtr, EncodeAuthReqCb callback);
Example #3
0
 public void EncodeAuthReq(IntPtr authReq, IntPtr userDataPtr, EncodeAuthReqCb callback)
 {
     EncodeAuthReqNative(authReq, userDataPtr, callback);
 }
 public void EncodeAuthReq(IntPtr authReq, EncodeAuthReqCb callback)
 {
     EncodeAuthReqNative(authReq, callback.ToHandlePtr(), OnEncodeAuthReqCb);
 }