blob: 77f61e9458089122bd5d8185b7f55c2955bfb376 [file] [log] [blame]
/*
* 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 flex.messaging.config;
import flex.messaging.services.messaging.MessagingConstants;
/**
* Server settings for a message destination.
*/
public class ServerSettings
{
// Errors
private static final int INVALID_CLUSTER_MESSAGE_ROUTING = 11121;
private boolean allowSubtopics;
private boolean disallowWildcardSubtopics;
private long messageTTL = -1; //We need to keep track of uninitialized value
private boolean isDurable;
private int priority = -1;
private String subtopicSeparator;
private RoutingMode routingMode = RoutingMode.SERVER_TO_SERVER;
public static enum RoutingMode {NONE,BROADCAST,SERVER_TO_SERVER};
/**
* Creates a default <code>ServerSettings</code> instance.
*/
public ServerSettings()
{
isDurable = false;
subtopicSeparator = MessagingConstants.DEFAULT_SUBTOPIC_SEPARATOR;
}
/**
* Returns <code>allow-subtopics</code> property.
*
* @return a boolean specifying whether or not the server has the <code>allow-subtopics</code> property.
*/
public boolean getAllowSubtopics()
{
return allowSubtopics;
}
/**
* Sets <code>allow-subtopics</code> property.
*
* @param value The value for <code>allow-subtopics</code> property.
*/
public void setAllowSubtopics(boolean value)
{
allowSubtopics = value;
}
/**
* Returns <code>cluster-message-routing</code> property.
*
* @return a boolean specifying whether or not the server has the <code>cluster-message-routing</code> property.
*/
public boolean isBroadcastRoutingMode()
{
return routingMode == RoutingMode.BROADCAST;
}
/**
* Returns the routing mode configured.
*
* @return The configured routing mode.
*/
public RoutingMode getRoutingMode()
{
return routingMode;
}
/**
* Sets the <code>cluster-message-routing</code> property.
*
* @param routingMode <code>server-to-server</code>(default)
* or <code>broadcast</code>.
*/
public void setBroadcastRoutingMode(String routingMode)
{
if (routingMode.equalsIgnoreCase("broadcast"))
this.routingMode = RoutingMode.BROADCAST;
else if (routingMode.equalsIgnoreCase("server-to-server"))
this.routingMode = RoutingMode.SERVER_TO_SERVER;
else if (routingMode.equalsIgnoreCase("none"))
this.routingMode = RoutingMode.NONE;
else
{
ConfigurationException ce = new ConfigurationException();
ce.setMessage(INVALID_CLUSTER_MESSAGE_ROUTING, new Object[] {routingMode});
throw ce;
}
}
/**
* @deprecated Not used anymore.
*/
public int getMaxCacheSize()
{
return 0;
}
/**
* @deprecated Not used anymore.
*/
public void setMaxCacheSize(int size)
{
// No-op.
}
/**
* Returns the <code>message-time-to-live</code> property.
*
* @return the <code>message-time-to-live</code> property.
*/
public long getMessageTTL()
{
return messageTTL;
}
/**
* Sets the <code>message-time-to-live</code> property. Default value is -1.
*
* @param ttl The value for <code>message-time-to-live</code> property.
*/
public void setMessageTTL(long ttl)
{
messageTTL = ttl;
}
/**
* Returns true if wildcard subtopics are disallowed.
*
* @return true if wilcard subtopics are disallowed.
*/
public boolean isDisallowWildcardSubtopics()
{
return disallowWildcardSubtopics;
}
/**
* Sets whether the wildcard subtopics are disallowed.
*
* @param value Whether the wildcard subtopics are disallowed.
*/
public void setDisallowWildcardSubtopics(boolean value)
{
disallowWildcardSubtopics = value;
}
/**
* Returns whether destination is durable.
*
* @return <code>true</code> if destination is durable; otherwise <code>false</code>.
*/
public boolean isDurable()
{
return isDurable;
}
/**
* Sets whether destination is durable. Default value is <code>false</code>.
*
* @param durable The value for <code>durable</code> property.
*/
public void setDurable(boolean durable)
{
isDurable = durable;
}
/**
* Returns the default message priority for the destination which is a numerical
* value between 0 and 9 (and -1 means no default priority).
*
* @return The default message priority for the destination.
*/
public int getPriority()
{
return priority;
}
/**
* Sets the default message priority of the destination which should be
* a numerical value between 0 and 9. Values less than 0 and greater than 9
* are treated as 0 and 9 respectively.
*
* @param priority The new value for the priority.
*/
public void setPriority(int priority)
{
priority = priority < 0? 0 : priority > 9? 9 : priority;
this.priority = priority;
}
/**
* Returns the <code>subtopic-separator</code> property.
*
* @return the <code>subtopic-separator</code> property.
*/
public String getSubtopicSeparator()
{
return subtopicSeparator;
}
/**
* Sets the <code>subtopic-separator</code> property.
* Optional; the default value is period.
*
* @param value The value for <code>subtopic-separator</code> property.
*/
public void setSubtopicSeparator(String value)
{
subtopicSeparator = value;
}
}