| /** |
| * Licensed to the Apache Software Foundation (ASF) under one or more |
| * contributor license agreements. See the NOTICE file distributed with |
| * this work for additional information regarding copyright ownership. |
| * The ASF licenses this file to You under the Apache License, Version 2.0 |
| * (the "License"); you may not use this file except in compliance with |
| * the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| package org.apache.activemq.openwire.commands; |
| |
| import org.apache.activemq.openwire.annotations.OpenWireType; |
| import org.apache.activemq.openwire.annotations.OpenWireExtension; |
| import org.apache.activemq.openwire.annotations.OpenWireProperty; |
| |
| /** |
| * A general purpose replay command for some kind of producer where ranges of |
| * messages are asked to be replayed. This command is typically used over a |
| * non-reliable transport such as UDP or multicast but could also be used on |
| * TCP/IP if a socket has been re-established. |
| * |
| * @openwire:marshaller code="65" |
| */ |
| @OpenWireType(typeCode = 65) |
| public class ReplayCommand extends BaseCommand { |
| |
| public static final byte DATA_STRUCTURE_TYPE = CommandTypes.REPLAY; |
| |
| @OpenWireProperty(version = 1, sequence = 1) |
| private int firstNakNumber; |
| |
| @OpenWireProperty(version = 1, sequence = 2) |
| private int lastNakNumber; |
| |
| @OpenWireExtension(serialized = true) |
| private String producerId; |
| |
| @OpenWireExtension(serialized = true) |
| private int firstAckNumber; |
| |
| @OpenWireExtension(serialized = true) |
| private int lastAckNumber; |
| |
| public ReplayCommand() { |
| } |
| |
| @Override |
| public byte getDataStructureType() { |
| return DATA_STRUCTURE_TYPE; |
| } |
| |
| public String getProducerId() { |
| return producerId; |
| } |
| |
| /** |
| * Is used to uniquely identify the producer of the sequence |
| */ |
| public void setProducerId(String producerId) { |
| this.producerId = producerId; |
| } |
| |
| public int getFirstAckNumber() { |
| return firstAckNumber; |
| } |
| |
| /** |
| * Is used to specify the first sequence number being acknowledged as delivered on the transport |
| * so that it can be removed from cache |
| */ |
| public void setFirstAckNumber(int firstSequenceNumber) { |
| this.firstAckNumber = firstSequenceNumber; |
| } |
| |
| public int getLastAckNumber() { |
| return lastAckNumber; |
| } |
| |
| /** |
| * Is used to specify the last sequence number being acknowledged as delivered on the transport |
| * so that it can be removed from cache |
| */ |
| public void setLastAckNumber(int lastSequenceNumber) { |
| this.lastAckNumber = lastSequenceNumber; |
| } |
| |
| @Override |
| public Response visit(CommandVisitor visitor) throws Exception { |
| return null; |
| } |
| |
| /** |
| * Is used to specify the first sequence number to be replayed |
| * |
| * @openwire:property version=1 |
| */ |
| public int getFirstNakNumber() { |
| return firstNakNumber; |
| } |
| |
| public void setFirstNakNumber(int firstNakNumber) { |
| this.firstNakNumber = firstNakNumber; |
| } |
| |
| /** |
| * Is used to specify the last sequence number to be replayed |
| * |
| * @openwire:property version=1 |
| */ |
| public int getLastNakNumber() { |
| return lastNakNumber; |
| } |
| |
| public void setLastNakNumber(int lastNakNumber) { |
| this.lastNakNumber = lastNakNumber; |
| } |
| |
| @Override |
| public String toString() { |
| return "ReplayCommand {commandId = " + getCommandId() + ", firstNakNumber = " + getFirstNakNumber() + ", lastNakNumber = " + getLastNakNumber() + "}"; |
| } |
| } |