/* * 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.