| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- using System;
- using System.Collections.Generic;
- using System.Text;
- using System.Threading;
- namespace Taobao.Top.Link.Endpoints
- {
- public class SendCallback
- {
- private EventWaitHandle _handle;
- private Exception _error;
- private IDictionary<string, object> _return;
- /// <summary>get which endpoint to send
- /// </summary>
- public EndpointProxy Target { get; private set; }
- /// <summary>get error in sending
- /// </summary>
- public Exception Error
- {
- get { return this._error; }
- internal set
- {
- this._error = value;
- this._handle.Set();
- }
- }
- /// <summary>get reply
- /// </summary>
- public IDictionary<string, object> Return
- {
- get { return this._return; }
- internal set
- {
- this._return = value;
- this._handle.Set();
- }
- }
- public SendCallback(EndpointProxy endpointProxy)
- {
- this.Target = endpointProxy;
- this._handle = new EventWaitHandle(false, EventResetMode.AutoReset);
- }
- /// <summary>wait until got return message
- /// </summary>
- /// <param name="timeout">timeout in milliseconds</param>
- public void WaitReturn(int timeout)
- {
- if (timeout > 0)
- {
- if (!this._handle.WaitOne(timeout, false))
- throw new LinkException(Text.E_EXECUTE_TIMEOUT);
- }
- else
- this._handle.WaitOne();
- }
- }
- }
|