001/* 002 * #%L 003 * Netarchivesuite - harvester 004 * %% 005 * Copyright (C) 2005 - 2014 The Royal Danish Library, the Danish State and University Library, 006 * the National Library of France and the Austrian National Library. 007 * %% 008 * This program is free software: you can redistribute it and/or modify 009 * it under the terms of the GNU Lesser General Public License as 010 * published by the Free Software Foundation, either version 2.1 of the 011 * License, or (at your option) any later version. 012 * 013 * This program is distributed in the hope that it will be useful, 014 * but WITHOUT ANY WARRANTY; without even the implied warranty of 015 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 016 * GNU General Lesser Public License for more details. 017 * 018 * You should have received a copy of the GNU General Lesser Public 019 * License along with this program. If not, see 020 * <http://www.gnu.org/licenses/lgpl-2.1.html>. 021 * #L% 022 */ 023package dk.netarkivet.harvester.harvesting.distribute; 024 025import java.io.Serializable; 026 027import dk.netarkivet.common.distribute.Channels; 028import dk.netarkivet.common.utils.SystemUtils; 029import dk.netarkivet.harvester.distribute.HarvesterChannels; 030import dk.netarkivet.harvester.distribute.HarvesterMessage; 031import dk.netarkivet.harvester.distribute.HarvesterMessageVisitor; 032 033/** 034 * The HarvestControllerServer periodically sends {@link HarvesterReadyMessage}s to the JobDispatcher to 035 * notify it whether it is available for processing a job or already processing one. 036 */ 037@SuppressWarnings({"serial"}) 038public class HarvesterReadyMessage extends HarvesterMessage implements Serializable { 039 040 /** The name of the channel of jobs crawled by the sender. */ 041 private final String harvestChannelName; 042 043 /** The sender's application instance ID. */ 044 private final String applicationInstanceId; 045 046 /** The host of the sender. */ 047 private final String hostName; 048 049 /** 050 * Builds a new message. 051 * 052 * @param harvestChannelName the channel of jobs crawled by the sender. 053 * @param applicationInstanceId the sender's application instance ID. 054 */ 055 public HarvesterReadyMessage(String applicationInstanceId, String harvestChannelName) { 056 super(HarvesterChannels.getHarvesterStatusChannel(), Channels.getError()); 057 this.applicationInstanceId = applicationInstanceId; 058 this.harvestChannelName = harvestChannelName; 059 this.hostName = SystemUtils.getLocalHostName(); 060 } 061 062 @Override 063 public void accept(HarvesterMessageVisitor v) { 064 v.visit(this); 065 } 066 067 /** 068 * @return the associated harvest channel name 069 */ 070 public String getHarvestChannelName() { 071 return harvestChannelName; 072 } 073 074 /** 075 * @return the application instance ID. 076 */ 077 public String getApplicationInstanceId() { 078 return applicationInstanceId; 079 } 080 081 /** 082 * @return the hostname of the sender. 083 */ 084 public String getHostName() { 085 return hostName; 086 } 087 088 089 090}