public void CancelRequests(uint requestHandle, out uint cancelCount)
{
List<uint> cancelledRequests = new List<uint>();
// flag requests as cancelled.
lock (m_requests)
{
foreach (OperationContext request in m_requests.Values)
{
if (request.ClientHandle == requestHandle)
{
request.SetStatusCode(StatusCodes.BadRequestCancelledByRequest);
cancelledRequests.Add(request.RequestId);
}
}
}
// return the number of requests found.
cancelCount = (uint)cancelledRequests.Count;
// raise notifications.
lock (m_lock)
{
for (int ii = 0; ii < cancelledRequests.Count; ii++)
{
if (m_RequestCancelled != null)
{
try
{
m_RequestCancelled(this, cancelledRequests[ii], StatusCodes.BadRequestCancelledByRequest);
}
catch (Exception e)
{
Utils.Trace(e, "Unexpected error reporting RequestCancelled event.");
}
}
}
}
}
#endregion