/// <summary> /// Sends a republish request. /// </summary> public bool Republish(uint subscriptionId, uint sequenceNumber) { // send publish request. RequestHeader requestHeader = new RequestHeader(); requestHeader.TimeoutHint = (uint)OperationTimeout; requestHeader.ReturnDiagnostics = (uint)(int)ReturnDiagnostics; requestHeader.RequestHandle = Utils.IncrementIdentifier(ref m_publishCounter); try { Utils.Trace("Requesting Republish for {0}-{1}", subscriptionId, sequenceNumber); // request republish. NotificationMessage notificationMessage = null; ResponseHeader responseHeader = Republish( requestHeader, subscriptionId, sequenceNumber, out notificationMessage); Utils.Trace("Received Republish for {0}-{1}", subscriptionId, sequenceNumber); // process response. ProcessPublishResponse( responseHeader, subscriptionId, null, false, notificationMessage); return true; } catch (Exception e) { ServiceResult error = new ServiceResult(e); bool result = (error.StatusCode == StatusCodes.BadMessageNotAvailable); if (result) { Utils.Trace("Message {0}-{1} no longer available.", subscriptionId, sequenceNumber); } else { Utils.Trace(e, "Unexpected error sending republish request."); } PublishErrorEventHandler callback = null; lock (m_eventLock) { callback = m_PublishError; } // raise an error event. if (callback != null) { try { PublishErrorEventArgs args = new PublishErrorEventArgs( error, subscriptionId, sequenceNumber); callback(this, args); } catch (Exception e2) { Utils.Trace(e2, "Session: Unexpected error invoking PublishErrorCallback."); } } return result; } }