/// <summary> /// Reports about unsuccessful sending due to timeout /// </summary> /// <param name="connectionRecord">object as <see cref="ReliableUdpConnectionRecord"/></param> protected virtual void DisposeByTimeout(object connectionRecord) { ReliableUdpConnectionRecord record = (ReliableUdpConnectionRecord)connectionRecord; Debug.WriteLine("DisposeByTimer invoked for {0}", record.TransmissionId); if (record.AsyncResult != null) { record.AsyncResult.SetAsCompleted(false); } record.Dispose(); }
/// <summary> /// Reports about successful sending /// </summary> /// <param name="connectionRecord">Current <see cref="ReliableUdpConnectionRecord"/></param> protected static void SetAsCompleted(ReliableUdpConnectionRecord connectionRecord) { if (connectionRecord.AsyncResult != null) { connectionRecord.AsyncResult.SetAsCompleted(true); } //RU: пока не произойдет метод EndInvoke для AsyncResult'а //RU: connectionRecord будет висеть в памяти, но //RU: можно освободить другие ресурсы connectionRecord.Dispose(); }
/// <summary> /// Reports about error during sending /// </summary> /// <param name="connectionRecord">Current <see cref="ReliableUdpConnectionRecord"/></param> /// <param name="ex">The thrown-out exception</param> protected static void SetAsError(ReliableUdpConnectionRecord connectionRecord, Exception ex) { if (connectionRecord.AsyncResult != null) { connectionRecord.AsyncResult.SetAsCompleted(ex); } else { throw ex; } connectionRecord.Dispose(); }