Opc.Ua.Client.Session.Republish C# (CSharp) Method

Republish() public method

Sends a republish request.
public Republish ( uint subscriptionId, uint sequenceNumber ) : bool
subscriptionId uint
sequenceNumber uint
return bool
        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;
            }
        }