blob: 59bbd5140767574f8eac015866bed96bae5553cc [file] [log] [blame]
/*
* Copyright (c) 2002, 2010, 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.spi.transport;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.channels.SocketChannel;
import org.omg.CORBA.SystemException;
import com.sun.org.omg.SendingContext.CodeBase;
import com.sun.corba.se.pept.encoding.InputObject;
import com.sun.corba.se.pept.encoding.OutputObject;
import com.sun.corba.se.pept.protocol.MessageMediator;
import com.sun.corba.se.pept.transport.Connection;
import com.sun.corba.se.pept.transport.ResponseWaitingRoom;
import com.sun.corba.se.spi.ior.IOR ;
import com.sun.corba.se.spi.ior.iiop.GIOPVersion;
import com.sun.corba.se.spi.orb.ORB;
import com.sun.corba.se.spi.protocol.CorbaMessageMediator;
import com.sun.corba.se.impl.encoding.CodeSetComponentInfo;
import com.sun.corba.se.impl.logging.ORBUtilSystemException;
/**
* @author Harold Carr
*/
public interface CorbaConnection
extends
Connection,
com.sun.corba.se.spi.legacy.connection.Connection
{
public boolean shouldUseDirectByteBuffers();
public boolean shouldReadGiopHeaderOnly();
public ByteBuffer read(int size, int offset, int length, long max_wait_time)
throws IOException;
public ByteBuffer read(ByteBuffer byteBuffer, int offset,
int length, long max_wait_time) throws IOException;
public void write(ByteBuffer byteBuffer)
throws IOException;
public void dprint(String msg);
//
// From iiop.Connection.java
//
public int getNextRequestId();
public ORB getBroker();
public CodeSetComponentInfo.CodeSetContext getCodeSetContext();
public void setCodeSetContext(CodeSetComponentInfo.CodeSetContext csc);
//
// from iiop.IIOPConnection.java
//
// Facade to ResponseWaitingRoom.
public MessageMediator clientRequestMapGet(int requestId);
public void clientReply_1_1_Put(MessageMediator x);
public MessageMediator clientReply_1_1_Get();
public void clientReply_1_1_Remove();
public void serverRequest_1_1_Put(MessageMediator x);
public MessageMediator serverRequest_1_1_Get();
public void serverRequest_1_1_Remove();
public boolean isPostInitialContexts();
// Can never be unset...
public void setPostInitialContexts();
public void purgeCalls(SystemException systemException,
boolean die, boolean lockHeld);
//
// Connection status
//
public static final int OPENING = 1;
public static final int ESTABLISHED = 2;
public static final int CLOSE_SENT = 3;
public static final int CLOSE_RECVD = 4;
public static final int ABORT = 5;
// Begin Code Base methods ---------------------------------------
//
// Set this connection's code base IOR. The IOR comes from the
// SendingContext. This is an optional service context, but all
// JavaSoft ORBs send it.
//
// The set and get methods don't need to be synchronized since the
// first possible get would occur during reading a valuetype, and
// that would be after the set.
// Sets this connection's code base IOR. This is done after
// getting the IOR out of the SendingContext service context.
// Our ORBs always send this, but it's optional in CORBA.
void setCodeBaseIOR(IOR ior);
IOR getCodeBaseIOR();
// Get a CodeBase stub to use in unmarshaling. The CachedCodeBase
// won't connect to the remote codebase unless it's necessary.
CodeBase getCodeBase();
// End Code Base methods -----------------------------------------
public void sendCloseConnection(GIOPVersion giopVersion)
throws IOException;
public void sendMessageError(GIOPVersion giopVersion)
throws IOException;
public void sendCancelRequest(GIOPVersion giopVersion, int requestId)
throws
IOException;
public void sendCancelRequestWithLock(GIOPVersion giopVersion,
int requestId)
throws
IOException;
public ResponseWaitingRoom getResponseWaitingRoom();
public void serverRequestMapPut(int requestId,
CorbaMessageMediator messageMediator);
public CorbaMessageMediator serverRequestMapGet(int requestId);
public void serverRequestMapRemove(int requestId);
// REVISIT: WRONG: should not expose sockets here.
public SocketChannel getSocketChannel();
// REVISIT - MessageMediator parameter?
public void serverRequestProcessingBegins();
public void serverRequestProcessingEnds();
/** Clean up all connection resources. Used when shutting down an ORB.
*/
public void closeConnectionResources();
}
// End of file.