BrokerParameters.java
/*
** Module : BrokerParameters.java
** Abstract : broker parameters storage.
**
** Copyright (c) 2014-2023, Golden Code Development Corporation.
**
** -#- -I- --Date-- ---------------------------------Description----------------------------------
** 001 MAG 20140707 Implements remote launcher (broker).
** 002 SBI 20171022 Added agentAddress and associatedUser.
** 003 SBI 20230411 Changed getAgentAddress() to return host name or IP address string presentation.
** 004 GBB 20230512 Logging methods replaced by CentralLogger/ConversionStatus.
*/
/*
** This program is free software: you can redistribute it and/or modify
** it under the terms of the GNU Affero General Public License as
** published by the Free Software Foundation, either version 3 of the
** License, or (at your option) any later version.
**
** This program is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
** GNU Affero General Public License for more details.
**
** You may find a copy of the GNU Affero GPL version 3 at the following
** location: https://www.gnu.org/licenses/agpl-3.0.en.html
**
** Additional terms under GNU Affero GPL version 3 section 7:
**
** Under Section 7 of the GNU Affero GPL version 3, the following additional
** terms apply to the works covered under the License. These additional terms
** are non-permissive additional terms allowed under Section 7 of the GNU
** Affero GPL version 3 and may not be removed by you.
**
** 0. Attribution Requirement.
**
** You must preserve all legal notices or author attributions in the covered
** work or Appropriate Legal Notices displayed by works containing the covered
** work. You may not remove from the covered work any author or developer
** credit already included within the covered work.
**
** 1. No License To Use Trademarks.
**
** This license does not grant any license or rights to use the trademarks
** Golden Code, FWD, any Golden Code or FWD logo, or any other trademarks
** of Golden Code Development Corporation. You are not authorized to use the
** name Golden Code, FWD, or the names of any author or contributor, for
** publicity purposes without written authorization.
**
** 2. No Misrepresentation of Affiliation.
**
** You may not represent yourself as Golden Code Development Corporation or FWD.
**
** You may not represent yourself for publicity purposes as associated with
** Golden Code Development Corporation, FWD, or any author or contributor to
** the covered work, without written authorization.
**
** 3. No Misrepresentation of Source or Origin.
**
** You may not represent the covered work as solely your work. All modified
** versions of the covered work must be marked in a reasonable way to make it
** clear that the modified work is not originating from Golden Code Development
** Corporation or FWD. All modified versions must contain the notices of
** attribution required in this license.
*/
package com.goldencode.p2j.main;
import java.util.concurrent.*;
import java.util.logging.*;
import com.goldencode.p2j.net.Session;
import com.goldencode.p2j.util.logging.*;
/**
* Broker parameters storage.
*/
public class BrokerParameters
{
/** Logger. */
private static final CentralLogger LOG = CentralLogger.get(BrokerParameters.class.getName());
/** Broker UUID */
private String uuid;
/** P2J process account ID */
private String userId;
/** Broker name associated to process account */
private String brokerName;
/** Broker client side services */
private BrokerClientServices remote;
/** P2J session */
private Session session;
/** Keep connection between server and broker open */
private CountDownLatch ready;
/** The remote broker client address: host name or IP address */
private String agentAddress;
/** The user account name associated with this broker client */
private String associatedUser;
/** Broker state */
private volatile BrokerState state = BrokerState.CLOSE;
/**
* Return assigned UUID.
*
* @return Assigned UUID.
*/
public String getUuid()
{
return uuid;
}
/**
* Set assigned UUID.
*
* @param uuid
* Assigned UUID.
*/
public void setUuid(String uuid)
{
this.uuid = uuid;
}
/**
* Get user id.
*
* @return User id.
*/
public String getUserId()
{
return userId;
}
/**
* Set user id.
*
* @param userId
* User id.
*/
public void setUserId(String userId)
{
this.userId = userId;
}
/**
* Get broker name.
*
* @return Broker name.
*/
public String getBrokerName()
{
return brokerName;
}
/**
* Set broker name.
*
* @param brokerName
* Broker name.
*/
public void setBrokerName(String brokerName)
{
this.brokerName = brokerName;
}
/**
* Get remote proxy interface.
*
* @return Remote interface.
*/
public BrokerClientServices getRemote()
{
return remote;
}
/**
* Set remote proxy interface.
*
* @param remote
* Remote proxy interface.
*/
public void setRemote(BrokerClientServices remote)
{
this.remote = remote;
}
/**
* Get P2J broker session.
*
* @return P2J broker session.
*/
public Session getSession()
{
return session;
}
/**
* Set P2J broker session.
*
* @param session
* P2J broker session.
*/
public void setSession(Session session)
{
this.session = session;
}
/**
* Return broker state.
*
* @return broker state.
*/
public BrokerState getState()
{
return state;
}
/**
* Gets the remote broker client address
*
* @return The remote broker client address
*/
public String getAgentAddress()
{
return agentAddress;
}
/**
* Sets the remote broker client address.
*
* @param agentAddress
* The remote broker client address
*/
public void setAgentAddress(String agentAddress)
{
this.agentAddress = agentAddress;
}
/**
* Gets the user account name associated with this broker client.
*
* @return The user account name associated with this broker client
*/
public String getAssociatedUser()
{
return associatedUser;
}
/**
* Sets the user account name associated with this broker client.
*
* @param associatedUser
* The user account name associated with this broker client
*/
public void setAssociatedUser(String associatedUser)
{
this.associatedUser = associatedUser;
}
/**
* Returns a hash code value for the object.
*
* @return a hash code value for this object.
*/
@Override
public int hashCode()
{
final int prime = 31;
int result = 1;
result = prime * result + ((uuid == null) ? 0 : uuid.hashCode());
return result;
}
/**
* Indicates whether some other object is "equal to" this one.
*
* @param obj
* the reference object with which to compare.
*
* @return {@code true} if this object is the same as the obj
* argument; {@code false} otherwise.
*/
@Override
public boolean equals(Object obj)
{
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
BrokerParameters other = (BrokerParameters) obj;
if (uuid == null)
{
if (other.uuid != null)
return false;
} else if (!uuid.equals(other.uuid))
return false;
return true;
}
/**
* Arms latch and wait until session is closed.
*/
void open()
{
try
{
// if latch is armed
close();
state = BrokerState.OPEN;
ready = new CountDownLatch(1);
ready.await();
state = BrokerState.CLOSE;
}
catch (InterruptedException e)
{
state = BrokerState.INTERRUPTED;
LOG.logp(Level.INFO,
"BrokerParameters.open()",
"",
"Interrupted.",
e);
}
}
/**
* Reset latch on session close.
*/
void close()
{
if (ready != null && ready.getCount() > 0)
{
ready.countDown();
}
}
}