// This software is released into the Public Domain. See copying.txt for details. package org.openstreetmap.osmosis.replicationhttp.v0_6.impl; import java.util.logging.Level; import java.util.logging.Logger; import org.jboss.netty.buffer.ChannelBuffer; import org.jboss.netty.util.CharsetUtil; /** * Netty handler for receiving replication sequence numbers and notifying * listeners. * * @author Brett Henderson */ public class SequenceNumberClientHandler extends SequenceClientHandler { private static final Logger LOG = Logger.getLogger(SequenceNumberClientHandler.class.getName()); private SequenceNumberClientListener sequenceNumberListener; /** * Creates a new instance. * * @param control * Provides the Netty handlers with access to the controller. * @param sequenceNumberListener * This will be notified when new sequence numbers are received. * @param serverHost * The name of the host system running the sequence server. */ public SequenceNumberClientHandler(SequenceClientControl control, SequenceNumberClientListener sequenceNumberListener, String serverHost) { super(control, serverHost); this.sequenceNumberListener = sequenceNumberListener; } @Override protected String getRequestUri() { return "/sequenceNumber/current/tail"; } @Override protected void processMessageData(ChannelBuffer buffer) { // The readable data is the sequence number in string form. String sequenceNumberString = buffer.toString(CharsetUtil.UTF_8); long sequenceNumber = Long.parseLong(sequenceNumberString); if (LOG.isLoggable(Level.FINEST)) { LOG.finest("Received sequence number " + sequenceNumber); } // Send the new sequence number notification. sequenceNumberListener.notifySequenceNumber(sequenceNumber); } }