コード例 #1
0
            static void OnAsyncFlush(IAsyncResult result)
            {
                if (result.CompletedSynchronously)
                {
                    return;
                }

                ByteBuffer thisPtr = (ByteBuffer)result.AsyncState;
                AsyncEventArgs <object, ByteBuffer> asyncEventArgs = thisPtr.FlushAsyncArgs;

                try
                {
                    ByteBuffer.WriteCallback(result);
                    asyncEventArgs.Result = thisPtr;
                }
                catch (Exception exception)
                {
                    if (Fx.IsFatal(exception))
                    {
                        throw;
                    }

                    if (thisPtr.completionException == null)
                    {
                        thisPtr.completionException = exception;
                    }
                }

                asyncEventArgs.Complete(false, thisPtr.completionException);
            }
コード例 #2
0
            static void OnWriteComplete(IAsyncEventArgs eventArgs)
            {
                InternalWriteBase64TextAsyncWriter thisPtr = (InternalWriteBase64TextAsyncWriter)eventArgs.AsyncState;
                AsyncEventArgs <XmlNodeWriterWriteBase64TextArgs> state = thisPtr.nodeState;

                thisPtr.nodeState = null;
                state.Complete(false, eventArgs.Exception);
            }
コード例 #3
0
            static private void OnTrailBytesComplete(IAsyncEventArgs eventArgs)
            {
                InternalWriteBase64TextAsyncWriter thisPtr = (InternalWriteBase64TextAsyncWriter)eventArgs.AsyncState;
                Exception completionException = null;
                bool      completeSelf        = false;

                try
                {
                    if (eventArgs.Exception != null)
                    {
                        completionException = eventArgs.Exception;
                        completeSelf        = true;
                    }
                    else if (thisPtr.WriteBufferAsync() == AsyncCompletionResult.Completed)
                    {
                        completeSelf = true;
                    }
                }
                catch (Exception exception)
                {
                    if (Fx.IsFatal(exception))
                    {
                        throw;
                    }

                    completionException = exception;
                    completeSelf        = true;
                }

                if (completeSelf)
                {
                    AsyncEventArgs <XmlNodeWriterWriteBase64TextArgs> state = thisPtr.nodeState;
                    thisPtr.nodeState = null;
                    state.Complete(false, eventArgs.Exception);
                }
            }