blob: 94bb5d9ee8f0587c3e0dcba1562449c78d740139 [file] [log] [blame]
/*
* Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code 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 General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
package com.sun.corba.se.impl.orb ;
import java.net.URL ;
import org.omg.CORBA.CompletionStatus ;
import org.omg.PortableInterceptor.ORBInitializer ;
import com.sun.corba.se.pept.transport.Acceptor;
import com.sun.corba.se.spi.ior.iiop.GIOPVersion ;
import com.sun.corba.se.spi.logging.CORBALogDomains ;
import com.sun.corba.se.spi.orb.DataCollector ;
import com.sun.corba.se.spi.orb.ORB ;
import com.sun.corba.se.spi.orb.ORBData ;
import com.sun.corba.se.spi.orb.ParserImplTableBase ;
import com.sun.corba.se.spi.orb.StringPair ;
import com.sun.corba.se.spi.transport.CorbaContactInfoListFactory;
import com.sun.corba.se.spi.transport.CorbaTransportManager;
import com.sun.corba.se.spi.transport.IORToSocketInfo;
import com.sun.corba.se.spi.transport.IIOPPrimaryToContactInfo;
import com.sun.corba.se.spi.transport.ReadTimeouts;
import com.sun.corba.se.impl.encoding.CodeSetComponentInfo ;
import com.sun.corba.se.impl.legacy.connection.USLPort;
import com.sun.corba.se.impl.orbutil.ORBConstants ;
import com.sun.corba.se.impl.logging.ORBUtilSystemException ;
public class ORBDataParserImpl extends ParserImplTableBase implements ORBData
{
private ORB orb ;
private ORBUtilSystemException wrapper ;
private String ORBInitialHost ;
private int ORBInitialPort ;
private String ORBServerHost ;
private int ORBServerPort ;
private String listenOnAllInterfaces;
private com.sun.corba.se.spi.legacy.connection.ORBSocketFactory legacySocketFactory ;
private com.sun.corba.se.spi.transport.ORBSocketFactory socketFactory;
private USLPort[] userSpecifiedListenPorts ;
private IORToSocketInfo iorToSocketInfo;
private IIOPPrimaryToContactInfo iiopPrimaryToContactInfo;
private String orbId ;
private boolean orbServerIdPropertySpecified ;
private URL servicesURL ;
private String propertyInitRef ;
private boolean allowLocalOptimization ;
private GIOPVersion giopVersion ;
private int highWaterMark ;
private int lowWaterMark ;
private int numberToReclaim ;
private int giopFragmentSize ;
private int giopBufferSize ;
private int giop11BuffMgr ;
private int giop12BuffMgr ;
private short giopTargetAddressPreference ;
private short giopAddressDisposition ;
private boolean useByteOrderMarkers ;
private boolean useByteOrderMarkersInEncaps ;
private boolean alwaysSendCodeSetCtx ;
private boolean persistentPortInitialized ;
private int persistentServerPort ;
private boolean persistentServerIdInitialized ;
private int persistentServerId ;
private boolean serverIsORBActivated ;
private Class badServerIdHandlerClass ;
private CodeSetComponentInfo.CodeSetComponent charData ;
private CodeSetComponentInfo.CodeSetComponent wcharData ;
private ORBInitializer[] orbInitializers ;
private StringPair[] orbInitialReferences ;
private String defaultInitRef ;
private String[] debugFlags ;
private Acceptor[] acceptors;
private CorbaContactInfoListFactory corbaContactInfoListFactory;
private String acceptorSocketType;
private boolean acceptorSocketUseSelectThreadToWait;
private boolean acceptorSocketUseWorkerThreadForEvent;
private String connectionSocketType;
private boolean connectionSocketUseSelectThreadToWait;
private boolean connectionSocketUseWorkerThreadForEvent;
private ReadTimeouts readTimeouts;
private boolean disableDirectByteBufferUse;
private boolean enableJavaSerialization;
private boolean useRepId;
// This is not initialized from ParserTable.
private CodeSetComponentInfo codesets ;
// Public accessor methods ========================================================================
public String getORBInitialHost()
{
return ORBInitialHost;
}
public int getORBInitialPort()
{
return ORBInitialPort;
}
public String getORBServerHost()
{
return ORBServerHost;
}
public String getListenOnAllInterfaces()
{
return listenOnAllInterfaces;
}
public int getORBServerPort()
{
return ORBServerPort;
}
public com.sun.corba.se.spi.legacy.connection.ORBSocketFactory getLegacySocketFactory()
{
return legacySocketFactory;
}
public com.sun.corba.se.spi.transport.ORBSocketFactory getSocketFactory()
{
return socketFactory;
}
public USLPort[] getUserSpecifiedListenPorts ()
{
return userSpecifiedListenPorts;
}
public IORToSocketInfo getIORToSocketInfo()
{
return iorToSocketInfo;
}
public IIOPPrimaryToContactInfo getIIOPPrimaryToContactInfo()
{
return iiopPrimaryToContactInfo;
}
public String getORBId()
{
return orbId;
}
public boolean getORBServerIdPropertySpecified()
{
return orbServerIdPropertySpecified;
}
public boolean isLocalOptimizationAllowed()
{
return allowLocalOptimization ;
}
public GIOPVersion getGIOPVersion()
{
return giopVersion;
}
public int getHighWaterMark()
{
return highWaterMark;
}
public int getLowWaterMark()
{
return lowWaterMark;
}
public int getNumberToReclaim()
{
return numberToReclaim;
}
public int getGIOPFragmentSize()
{
return giopFragmentSize;
}
public int getGIOPBufferSize()
{
return giopBufferSize;
}
public int getGIOPBuffMgrStrategy(GIOPVersion gv)
{
if(gv!=null){
if (gv.equals(GIOPVersion.V1_0)) return 0; //Always grow for 1.0
if (gv.equals(GIOPVersion.V1_1)) return giop11BuffMgr;
if (gv.equals(GIOPVersion.V1_2)) return giop12BuffMgr;
}
//If a "faulty" GIOPVersion is passed, it's going to return 0;
return 0;
}
/**
* @return the GIOP Target Addressing preference of the ORB.
* This ORB by default supports all addressing dispositions unless specified
* otherwise via a java system property ORBConstants.GIOP_TARGET_ADDRESSING
*/
public short getGIOPTargetAddressPreference()
{
return giopTargetAddressPreference;
}
public short getGIOPAddressDisposition()
{
return giopAddressDisposition;
}
public boolean useByteOrderMarkers()
{
return useByteOrderMarkers;
}
public boolean useByteOrderMarkersInEncapsulations()
{
return useByteOrderMarkersInEncaps;
}
public boolean alwaysSendCodeSetServiceContext()
{
return alwaysSendCodeSetCtx;
}
public boolean getPersistentPortInitialized()
{
return persistentPortInitialized ;
}
//public void setPersistentServerPort(int sp)
//{
//persistentServerPort = sp;
//persistentPortInitialized = true;
//}
public int getPersistentServerPort()
{
if ( persistentPortInitialized ) // this is a user-activated server
return persistentServerPort;
else {
throw wrapper.persistentServerportNotSet(
CompletionStatus.COMPLETED_MAYBE );
}
}
public boolean getPersistentServerIdInitialized()
{
return persistentServerIdInitialized;
}
/** Set the persistent-server-id of this server. This id is the same
* across multiple activations of this server. The id can be set to any
* integer value other than 0. This id must be set before any persistent
* objects can be created.
*/
//public void setPersistentServerId(int id)
//{
//persistentServerId = id;
//persistentServerIdInitialized = true;
//}
/** Return the persistent-server-id of this server. This id is the same
* across multiple activations of this server. This is in contrast to
* com.sun.corba.se.impl.iiop.ORB.getTransientServerId() which
* returns a transient id that is guaranteed to be different
* across multiple activations of
* this server. The user/environment is required to supply the
* persistent-server-id every time this server is started, in
* the ORBServerId parameter, System properties, or other means.
* The user is also required to ensure that no two persistent servers
* on the same host have the same server-id.
*/
public int getPersistentServerId()
{
if ( persistentServerIdInitialized ) {
return persistentServerId;
} else {
throw wrapper.persistentServeridNotSet(
CompletionStatus.COMPLETED_MAYBE);
}
}
public boolean getServerIsORBActivated()
{
return serverIsORBActivated ;
}
public Class getBadServerIdHandler()
{
return badServerIdHandlerClass ;
}
/**
* Get the prefered code sets for connections. Should the client send the code set service context on every
* request?
*/
public CodeSetComponentInfo getCodeSetComponentInfo()
{
return codesets;
}
public ORBInitializer[] getORBInitializers()
{
return orbInitializers ;
}
public StringPair[] getORBInitialReferences()
{
return orbInitialReferences ;
}
public String getORBDefaultInitialReference()
{
return defaultInitRef ;
}
public String[] getORBDebugFlags()
{
return debugFlags ;
}
public Acceptor[] getAcceptors()
{
return acceptors;
}
public CorbaContactInfoListFactory getCorbaContactInfoListFactory()
{
return corbaContactInfoListFactory;
}
public String acceptorSocketType()
{
return acceptorSocketType;
}
public boolean acceptorSocketUseSelectThreadToWait()
{
return acceptorSocketUseSelectThreadToWait;
}
public boolean acceptorSocketUseWorkerThreadForEvent()
{
return acceptorSocketUseWorkerThreadForEvent;
}
public String connectionSocketType()
{
return connectionSocketType;
}
public boolean connectionSocketUseSelectThreadToWait()
{
return connectionSocketUseSelectThreadToWait;
}
public boolean connectionSocketUseWorkerThreadForEvent()
{
return connectionSocketUseWorkerThreadForEvent;
}
public boolean isJavaSerializationEnabled()
{
return enableJavaSerialization;
}
public ReadTimeouts getTransportTCPReadTimeouts()
{
return readTimeouts;
}
public boolean disableDirectByteBufferUse()
{
return disableDirectByteBufferUse ;
}
public boolean useRepId()
{
return useRepId;
}
// Methods for constructing and initializing this object ===========================================
public ORBDataParserImpl( ORB orb, DataCollector coll )
{
super( ParserTable.get().getParserData() ) ;
this.orb = orb ;
wrapper = ORBUtilSystemException.get( orb, CORBALogDomains.ORB_LIFECYCLE ) ;
init( coll ) ;
complete() ;
}
public void complete()
{
codesets = new CodeSetComponentInfo(charData, wcharData);
}
}
// End of file.