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 java.lang.String |
TRACE_PREFIX |
fingerprint, flowController, hostIp, hostName, hostPort, NON_UNICODE_SERVER_CHARSET, NON_UNICODE_SERVER_CHARSET_NAME, ourIp, ourPort, p4Charset, props, secure, selfSigned, serverCerts, stats, trusted, UNICODE_SERVER_CHARSET, UNICODE_SERVER_CHARSET_NAME, unicodeServer, UNKNOWN_SERVER_HOST, UNKNOWN_SERVER_PORT, usingCompression| Constructor and Description |
|---|
RpcStreamConnection(java.lang.String serverHost,
int serverPort,
java.util.Properties props,
ServerStats stats,
P4Charset p4Charset,
boolean secure)
Construct a new Perforce RPC connection to the named Perforce server
using java.io socket streams at the lowest level.
|
RpcStreamConnection(java.lang.String serverHost,
int serverPort,
java.util.Properties props,
ServerStats stats,
P4Charset p4Charset,
java.net.Socket socket,
RpcSocketPool pool,
boolean secure,
java.lang.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.
|
java.lang.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.
|
java.lang.String |
getServerHostNamePort() |
java.lang.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, getDigest, getDigest, getFilesysRestrictedSymlinks, getFilesysUtf8bom, getFingerprint, getFlowController, getHostIp, getHostName, getHostPort, getNormalizedBytes, getNormalizedString, getP4Charset, getProps, getServerCerts, getStats, isSecure, isSelfSigned, isTrusted, isUnicodeServer, isUsingCompression, marshalPacketField, marshalPacketValue, setClientCharset, setFingerprint, setFlowController, setHostIp, setHostName, setHostPort, setProps, setSecure, setStats, setTrusted, setUnicodeServer, setUsingCompressionpublic static final java.lang.String TRACE_PREFIX
protected static final int INITIAL_SENDBUF_SIZE
protected static final int SENDBUF_REALLOC_INCR
public RpcStreamConnection(java.lang.String serverHost,
int serverPort,
java.util.Properties props,
ServerStats stats,
P4Charset p4Charset,
boolean secure)
throws ConnectionException
serverHost - serverHostserverPort - serverPortprops - propsstats - statsp4Charset - p4Charsetsecure - secureConnectionException - on errorpublic RpcStreamConnection(java.lang.String serverHost,
int serverPort,
java.util.Properties props,
ServerStats stats,
P4Charset p4Charset,
java.net.Socket socket,
RpcSocketPool pool,
boolean secure,
java.lang.String rsh)
throws ConnectionException
serverHost - serverHostserverPort - serverPortprops - propsstats - statsp4Charset - p4Charsetsocket - socketpool - poolsecure - securersh - rshConnectionException - on errorpublic java.lang.String getServerIpPort()
RpcConnectiongetServerIpPort in class RpcConnectionpublic java.lang.String getServerHostNamePort()
getServerHostNamePort in class RpcConnectionpublic java.lang.String getClientIpPort()
RpcConnectiongetClientIpPort in class RpcConnectionRpcConnection.getClientIpPort()public void disconnect(RpcPacketDispatcher dispatcher) throws ConnectionException
RpcConnectiondisconnect in class RpcConnectiondispatcher - dispatcherConnectionException - on errorpublic RpcPacket getRpcPacket() throws ConnectionException
getRpcPacket in class RpcConnectionConnectionException - on errorpublic RpcPacket getRpcPacket(RpcPacketFieldRule fieldRule, IFilterCallback filterCallback) throws ConnectionException
getRpcPacket in class RpcConnectionfieldRule - fieldRulefilterCallback - filterCallbackConnectionException - on errorpublic int getSystemRecvBufferSize()
RpcConnectiongetSystemRecvBufferSize in class RpcConnectionpublic int getSystemSendBufferSize()
RpcConnectiongetSystemSendBufferSize in class RpcConnectionpublic long putRpcPackets(@Nonnull
RpcPacket[] packets)
throws ConnectionException
RpcConnectionputRpcPackets in class RpcConnectionpackets - rpcPacketsConnectionException - on errorpublic 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 RpcConnectionpacket - rpcPacketConnectionException - on errorpublic void useConnectionCompression()
throws ConnectionException
RpcConnectionuseConnectionCompression in class RpcConnectionConnectionException - on error