public class RpcStreamConnection extends RpcConnection
The implementation here uses a small stack of input and output streams based on socket streams at the lowest level, with (at least) an optional connection compression stream on top of that layer, and with charset conversion where necessary.
| Modifier and Type | Field and Description |
|---|---|
protected static int |
INITIAL_SENDBUF_SIZE
Number of bytes we allocate for initial byte arrays for sending RPC
packets.
|
protected static int |
SENDBUF_REALLOC_INCR
When we run out of send buffer space in putPacket, we allocate another,
larger, buffer; this constant determines how much larger than the
existing buffer the new one should be, or, alternatively, how much bigger
than the incoming field length the new buffer should be.
|
static String |
TRACE_PREFIX |
clientCharset, filesysUtf8bom, fingerprint, flowController, hostIp, hostName, hostPort, NON_UNICODE_SERVER_CHARSET, NON_UNICODE_SERVER_CHARSET_NAME, ourIp, ourPort, props, secure, stats, trusted, UNICODE_SERVER_CHARSET, UNICODE_SERVER_CHARSET_NAME, unicodeServer, UNKNOWN_SERVER_HOST, UNKNOWN_SERVER_PORT, usingCompression| Constructor and Description |
|---|
RpcStreamConnection(String serverHost,
int serverPort,
Properties props,
ServerStats stats,
Charset charset)
Construct a new Perforce RPC connection to the named Perforce server
using java.io socket streams at the lowest level.
|
RpcStreamConnection(String serverHost,
int serverPort,
Properties props,
ServerStats stats,
Charset charset,
boolean secure)
Construct a new Perforce RPC connection to the named Perforce server
using java.io socket streams at the lowest level.
|
RpcStreamConnection(String serverHost,
int serverPort,
Properties props,
ServerStats stats,
Charset charset,
RpcSocketPool pool)
Construct a new Perforce RPC connection to the named Perforce server
using java.io socket streams at the lowest level.
|
RpcStreamConnection(String serverHost,
int serverPort,
Properties props,
ServerStats stats,
Charset charset,
RpcSocketPool pool,
boolean secure)
Construct a new Perforce RPC connection to the named Perforce server
using java.io socket streams at the lowest level.
|
RpcStreamConnection(String serverHost,
int serverPort,
Properties props,
ServerStats stats,
Charset charset,
Socket socket)
Construct a new Perforce RPC connection to the named Perforce server
using java.io socket streams at the lowest level.
|
RpcStreamConnection(String serverHost,
int serverPort,
Properties props,
ServerStats stats,
Charset charset,
Socket socket,
boolean secure)
Construct a new Perforce RPC connection to the named Perforce server
using java.io socket streams at the lowest level.
|
RpcStreamConnection(String serverHost,
int serverPort,
Properties props,
ServerStats stats,
Charset charset,
Socket socket,
RpcSocketPool pool,
boolean secure)
Construct a new Perforce RPC connection to the named Perforce server
using java.io socket streams at the lowest level.
|
RpcStreamConnection(String serverHost,
int serverPort,
Properties props,
ServerStats stats,
Charset charset,
Socket socket,
RpcSocketPool pool,
boolean secure,
String rsh)
Construct a new Perforce RPC connection to the named Perforce server
using java.io socket streams at the lowest level.
|
| Modifier and Type | Method and Description |
|---|---|
void |
disconnect(RpcPacketDispatcher dispatcher)
Disconnect this server.
|
String |
getClientIpPort()
Get the client's IP and port used for the RPC connection.
|
RpcPacket |
getRpcPacket()
Get a Perforce RPC packet from the underlying stream.
|
RpcPacket |
getRpcPacket(RpcPacketFieldRule fieldRule,
IFilterCallback filterCallback)
Get a Perforce RPC packet from the underlying stream with an optional
rule to handle the RPC packet fields.
|
String |
getServerIpPort()
Get the server's IP and port used for the RPC connection.
|
int |
getSystemRecvBufferSize()
Return the system (i.e.
|
int |
getSystemSendBufferSize()
Return the system (i.e.
|
long |
putRpcPacket(RpcPacket packet)
Put a Perforce RPC packet onto the output stream.
|
long |
putRpcPackets(RpcPacket[] packets)
Put an array of RPC packets.
|
void |
useConnectionCompression()
If called, will set this connection to use (GZIP) compression for all
traffic on this connection from this point on.
|
clientConfirm, getClientCharset, getFilesysUtf8bom, getFingerprint, getFlowController, getHostIp, getHostName, getHostPort, getNormalizedBytes, getNormalizedString, getProps, getStats, isSecure, isTrusted, isUnicodeServer, isUsingCompression, marshalPacketField, marshalPacketValue, setClientCharset, setFingerprint, setFlowController, setHostIp, setHostName, setHostPort, setProps, setSecure, setStats, setTrusted, setUnicodeServer, setUsingCompressionpublic static final String TRACE_PREFIX
protected static final int INITIAL_SENDBUF_SIZE
protected static final int SENDBUF_REALLOC_INCR
public RpcStreamConnection(String serverHost, int serverPort, Properties props, ServerStats stats, Charset charset) throws ConnectionException
ConnectionExceptionpublic RpcStreamConnection(String serverHost, int serverPort, Properties props, ServerStats stats, Charset charset, boolean secure) throws ConnectionException
ConnectionExceptionpublic RpcStreamConnection(String serverHost, int serverPort, Properties props, ServerStats stats, Charset charset, Socket socket) throws ConnectionException
ConnectionExceptionpublic RpcStreamConnection(String serverHost, int serverPort, Properties props, ServerStats stats, Charset charset, RpcSocketPool pool) throws ConnectionException
ConnectionExceptionpublic RpcStreamConnection(String serverHost, int serverPort, Properties props, ServerStats stats, Charset charset, Socket socket, boolean secure) throws ConnectionException
ConnectionExceptionpublic RpcStreamConnection(String serverHost, int serverPort, Properties props, ServerStats stats, Charset charset, RpcSocketPool pool, boolean secure) throws ConnectionException
ConnectionExceptionpublic RpcStreamConnection(String serverHost, int serverPort, Properties props, ServerStats stats, Charset charset, Socket socket, RpcSocketPool pool, boolean secure) throws ConnectionException
ConnectionExceptionpublic RpcStreamConnection(String serverHost, int serverPort, Properties props, ServerStats stats, Charset charset, Socket socket, RpcSocketPool pool, boolean secure, String rsh) throws ConnectionException
ConnectionExceptionpublic String getServerIpPort()
RpcConnectiongetServerIpPort in class RpcConnectionpublic String getClientIpPort()
RpcConnectiongetClientIpPort in class RpcConnectionRpcConnection.getClientIpPort()public void disconnect(RpcPacketDispatcher dispatcher) throws ConnectionException
RpcConnectiondisconnect in class RpcConnectionConnectionExceptionpublic RpcPacket getRpcPacket() throws ConnectionException
getRpcPacket in class RpcConnectionConnectionExceptionpublic RpcPacket getRpcPacket(RpcPacketFieldRule fieldRule, IFilterCallback filterCallback) throws ConnectionException
getRpcPacket in class RpcConnectionConnectionExceptionpublic int getSystemRecvBufferSize()
RpcConnectiongetSystemRecvBufferSize in class RpcConnectionpublic int getSystemSendBufferSize()
RpcConnectiongetSystemSendBufferSize in class RpcConnectionpublic long putRpcPackets(@Nonnull RpcPacket[] packets) throws ConnectionException
RpcConnectionputRpcPackets in class RpcConnectionConnectionExceptionpublic long putRpcPacket(@Nonnull RpcPacket packet) throws ConnectionException
Note that in general, we don't know how large the packet's output byte buffer is going to have to be until we've finished the packet contents marshaling, so we implement buffer resizing when needed. Our initial guess isINITIAL_SENDBUF_SIZEbytes; we grow the buffer by increasing itSENDBUF_REALLOC_INCRtimes each buffer increase.
putRpcPacket in class RpcConnectionConnectionExceptionpublic void useConnectionCompression()
throws ConnectionException
RpcConnectionuseConnectionCompression in class RpcConnectionConnectionExceptionCopyright © 2017 Perforce Software. All Rights Reserved.