All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.ebay.jetstream.messaging.config.MessageServiceProperties Maven / Gradle / Ivy

/*******************************************************************************
 *  Copyright © 2012-2015 eBay Software Foundation
 *  This program is dual licensed under the MIT and Apache 2.0 licenses.
 *  Please see LICENSE for more information.
 *******************************************************************************/
package com.ebay.jetstream.messaging.config;

import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.ebay.jetstream.config.AbstractNamedBean;
import com.ebay.jetstream.config.ConfigException;
import com.ebay.jetstream.config.NICUsage;
import com.ebay.jetstream.config.NotFoundException;
import com.ebay.jetstream.config.dns.DNSMap;
import com.ebay.jetstream.config.dns.DNSServiceRecord;
import com.ebay.jetstream.util.CommonUtils;
import com.ebay.jetstream.xmlser.XSerializable;

/**
 * @author shmurthy ([email protected])
 * 
 * MessageServiceProperties - Configuration for Message Service
 */

public class MessageServiceProperties extends AbstractNamedBean implements XSerializable {
	private static final Logger LOGGER = LoggerFactory.getLogger("com.ebay.jetstream.messaging");

	private NICUsage m_nicUsage;
	private DNSMap m_dnsMap;
	private String m_transport;
	private final Map m_contextMap = new HashMap();
	private ArrayList m_transports = new ArrayList();
	private final ArrayList m_mcastcontexts = new ArrayList();
	private final ArrayList m_ucastcontexts = new ArrayList();
	private int m_upstreamDispatchQueueSize = 30000;
	private int m_upstreamDispatchThreadPoolSize = 1;

	/**
	 * 
	 */
	public MessageServiceProperties() {
	}

		
	/**
	 * @return
	 */
	public Map getContextMap() {
		return m_contextMap;
	}

	/**
	 * @return
	 */
	public DNSMap getDnsMap() {
		return m_dnsMap;
	}

	/**
	 * @return the mcastcontexts
	 */
	public ArrayList getMcastcontexts() {
		return m_mcastcontexts;
	}

	
	/**
	 * @return
	 */
	public NICUsage getNicUsage() {
		return m_nicUsage;
	}

	/**
	 * @return
	 */
	public String getTransport() {
		return m_transport;
	}

	/**
	 * @param transportName
	 * @return
	 */
	public TransportConfig getTransport(String transportName) {
		TransportConfig tport = null;

		Iterator itr = m_transports.iterator();

		while (itr.hasNext()) {
			tport = itr.next();

			if (tport.getTransportName().equals(transportName)) {
				return tport;
			}
		}

		return null;
	}

	/**
	 * @return the stacks
	 */
	public ArrayList getTransports() {
		return m_transports;
	}

	/**
	 * @return the ucastcontexts
	 */
	public ArrayList getUcastcontexts() {
		return m_ucastcontexts;
	}

	
	/**
	 * @return the upstreamDispatchQueueSize
	 */
	public int getUpstreamDispatchQueueSize() {
		return m_upstreamDispatchQueueSize;
	}

	/**
	 * @return the upstreamDispatchThreadPoolSize
	 */
	public int getUpstreamDispatchThreadPoolSize() {
		return m_upstreamDispatchThreadPoolSize;
	}

		
	/**
	 * @param transports
	 * @return
	 * @throws Exception 
	 */
	private boolean hasContextOverlapOverTransports(ArrayList transports) throws Exception {

		Iterator itr = m_transports.iterator();

		Map contextMap = new HashMap();

		while (itr.hasNext()) {

			TransportConfig tke = itr.next();

			Iterator ctxitr = tke.getContextList().iterator();

			while (ctxitr.hasNext()) {
						
				ContextConfig context = ctxitr.next();

				if (contextMap.containsKey(context.getContextname())) {
					LOGGER.error( "Context Overlap between transport instances - config needs to be changed");
					throw new Exception("Context Overlap between transport instances - context = " + context.getContextname());
				}
				else
					contextMap.put(context.getContextname(), new Boolean(true));

			}

		}

		return false;
	}

	
	
	/**
	 * @param dnsMap
	 */
	public void setDnsMap(DNSMap dnsMap) {
		m_dnsMap = dnsMap;
	}

	/**
	 * @param nicUsage
	 */
	public void setNicUsage(NICUsage nicUsage) {
		m_nicUsage = nicUsage;
	}

	/**
	 * @param transport
	 */
	public void setTransport(String transport) {
		m_transport = transport;
	}

	/**
	 * @param stacks
	 *          the stacks to set
	 * @throws Exception 
	 */
	public void setTransports(ArrayList transports) throws Exception {
		m_transports = transports;
		
		try {
			hasContextOverlapOverTransports(transports); // this method throws exception if there is a context overlap between transports

		} catch (Exception e) {
			throw e;
		}
		
	}

	/**
	 * @param upstreamDispatchQueueSize
	 *          the upstreamDispatchQueueSize to set
	 */
	public void setUpstreamDispatchQueueSize(int upstreamDispatchQueueSize) {
		m_upstreamDispatchQueueSize = upstreamDispatchQueueSize;
	}

	/**
	 * @param upstreamDispatchThreadPoolSize
	 *          the upstreamDispatchThreadPoolSize to set
	 */
	public void setUpstreamDispatchThreadPoolSize(int upstreamDispatchThreadPoolSize) {
		m_upstreamDispatchThreadPoolSize = upstreamDispatchThreadPoolSize;
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy