File Information
Library: RemotingNG/HTTP
Package: HTTP
Header: Poco/RemotingNG/HTTP/Transport.h
Description
The Transport implementation for RemotingNG HTTP.
This transport implements the RemotingNG binary serialization protocol on top of HTTP.
The transport supports HTTP Basic and HTTP Digest authentication. Please note that for HTTP Digest authentication to work, chunked transfer encoding must be disabled. Also, HTTP Digest authentication is not supported for one-way requests.
Inheritance
Direct Base Classes: Poco::RemotingNG::Transport
All Base Classes: Poco::RefCountedObject, Poco::RemotingNG::AttributedObject, Poco::RemotingNG::Transport
Member Summary
Member Functions: beginMessage, beginRequest, connect, connected, disconnect, enableChunkedTransferEncoding, enableCompression, enableKeepAlive, endPoint, endRequest, getAuthentication, getCredentials, getCustomHeader, getKeepAliveTimeout, getProxyConfig, getTimeout, getUserAgent, hasCustomHeader, httpSessionFactory, isChunkedTransferEncodingEnabled, isCompressionEnabled, isKeepAliveEnabled, prepareRequest, removeCustomHeader, requireSession, sendMessage, sendRequest, setAuthentication, setCredentials, setCustomHeader, setKeepAliveTimeout, setProxyConfig, setTimeout, setUserAgent
Inherited Functions: beginMessage, beginRequest, clearAttributes, connect, connected, countAttributes, disconnect, duplicate, endPoint, endRequest, enumerateAttributes, getAttribute, hasAttribute, lock, operator =, referenceCount, release, removeAttribute, sendMessage, sendRequest, setAttribute, unlock
Enumerations
AuthMode
Authentication mode.
AUTH_NONE = 0
No authentication.
AUTH_BASIC = 1
HTTP Basic Authentication only (credentials are always sent).
AUTH_DIGEST = 2
HTTP Digest Authentication only.
AUTH_ANY = 3
HTTP Basic or Digest authentication (whichever the server requests).
Constructors
Transport
Transport();
Creates a Transport for RemotingNG HTTP.
Destructor
~Transport
~Transport();
Destroys the Transport.
Member Functions
beginMessage
Poco::RemotingNG::Serializer & beginMessage(
const Poco::RemotingNG::Identifiable::ObjectId & oid,
const Poco::RemotingNG::Identifiable::TypeId & tid,
const std::string & messageName,
Poco::RemotingNG::SerializerBase::MessageType messageType
);
beginRequest
Poco::RemotingNG::Serializer & beginRequest(
const Poco::RemotingNG::Identifiable::ObjectId & oid,
const Poco::RemotingNG::Identifiable::TypeId & tid,
const std::string & messageName,
Poco::RemotingNG::SerializerBase::MessageType messageType
);
connect
void connect(
const std::string & endPoint
);
See also: Poco::RemotingNG::Transport::connect()
connected
bool connected() const;
See also: Poco::RemotingNG::Transport::connected()
disconnect
void disconnect();
enableChunkedTransferEncoding
void enableChunkedTransferEncoding(
bool enable = true
);
Enables or disables chunked transfer encoding for HTTP requests. This is normally enabled. However, some poorly implemented HTTP stacks cannot handle chunked HTTP messages. Also, chunked transfer encoding must be disabled if AUTH_DIGEST or AUTH_ANY authentication is used.
Regardless of this setting, chunked transfer encoding is always supported for responses sent by the server.
enableCompression
void enableCompression(
bool enable
);
Enables or disables HTTP compression via GZIP Content-Encoding for requests. This is normally disabled, due to a lack of support by most servers.
Note that chunked transfer encoding must also be enabled in order to allow compression.
Regardless of this setting, server responses can always be compressed using GZIP Content-Encoding.
enableKeepAlive
void enableKeepAlive(
bool enable
);
Enables or disables HTTP/1.1 persistent connections.
The Transport must be connected, otherwise a Poco::IllegalStateException will be thrown.
endPoint
const std::string & endPoint() const;
See also: Poco::RemotingNG::Transport::endPoint()
endRequest
void endRequest();
getAuthentication
AuthMode getAuthentication() const;
Returns the authentication mode.
getCredentials
Credentials getCredentials() const;
Returns the credentials, containing username and password attributes.
getCustomHeader
const std::string & getCustomHeader(
const std::string & name
) const;
Returns the value of the custom HTTP header with the given name.
Throws a Poco::NotFoundException if the custom header with the given name does not exist.
getKeepAliveTimeout
Poco::Timespan getKeepAliveTimeout() const;
Returns the timeout for HTTP/1.1 persistent connections.
The Transport must be connected, otherwise a Poco::IllegalStateException will be thrown.
getProxyConfig
const Poco::Net::HTTPClientSession::ProxyConfig & getProxyConfig() const;
Returns the proxy configuration.
getTimeout
Poco::Timespan getTimeout() const;
Returns the HTTP timeout.
The Transport must be connected, otherwise a Poco::IllegalStateException will be thrown.
getUserAgent
const std::string & getUserAgent() const;
Returns the value of the User-Agent header sent with HTTP requests, or an empty string if no User-Agent value has been set.
hasCustomHeader
bool hasCustomHeader(
const std::string & name
) const;
Returns true if a custom HTTP header with the given name has been set.
httpSessionFactory
static Poco::Net::HTTPSessionFactory & httpSessionFactory();
Returns the Poco::Net::HTTPSessionFactory instance used by the transport.
isChunkedTransferEncodingEnabled
bool isChunkedTransferEncodingEnabled() const;
Returns true iff chunked transfer encoding is enabled, which is the default unless enableChunkedTransferEncoding(false) has been called.
isCompressionEnabled
bool isCompressionEnabled() const;
Returns true iff HTTP compression (GZIP) is enabled for requests. Default is disabled.
isKeepAliveEnabled
bool isKeepAliveEnabled() const;
Returns true iff HTTP/1.1 persistent connections are enabled.
The Transport must be connected, otherwise a Poco::IllegalStateException will be thrown.
removeCustomHeader
void removeCustomHeader(
const std::string & name
);
Removes a custom HTTP header previously added with setCustomHeader().
sendMessage
void sendMessage(
const Poco::RemotingNG::Identifiable::ObjectId & oid,
const Poco::RemotingNG::Identifiable::TypeId & tid,
const std::string & messageName,
Poco::RemotingNG::SerializerBase::MessageType messageType
);
sendRequest
Poco::RemotingNG::Deserializer & sendRequest(
const Poco::RemotingNG::Identifiable::ObjectId & oid,
const Poco::RemotingNG::Identifiable::TypeId & tid,
const std::string & messageName,
Poco::RemotingNG::SerializerBase::MessageType messageType
);
setAuthentication
void setAuthentication(
AuthMode authMode
);
Sets the authentication mode.
Please note that for AUTH_DIGEST or AUTH_ANY, chunked transfer encoding must be disabled.
setCredentials
void setCredentials(
const Credentials & creds
);
Sets the credentials for client authentication.
The Credentials object should contain a username (Credentials::ATTR_USERNAME, "n") and a password (Credentials::ATTR_PASSWORD, "p") attribute.
setCustomHeader
void setCustomHeader(
const std::string & name,
const std::string & value
);
setKeepAliveTimeout
void setKeepAliveTimeout(
const Poco::Timespan & timeout
);
Sets the timeout for HTTP/1.1 persistent connections.
The Transport must be connected, otherwise a Poco::IllegalStateException will be thrown.
setProxyConfig
void setProxyConfig(
const Poco::Net::HTTPClientSession::ProxyConfig & proxyConfig
);
Sets the proxy configuration.
setTimeout
void setTimeout(
const Poco::Timespan & timeout
);
Sets the HTTP timeout.
The Transport must be connected, otherwise a Poco::IllegalStateException will be thrown.
setUserAgent
void setUserAgent(
const std::string & userAgent
);
Sets the value of the User-Agent header sent with HTTP requests. If an empty string is given (default), no User-Agent header is included in the request.
prepareRequest
void prepareRequest(
Poco::Net::HTTPRequest & request
);
requireSession
const Poco::Net::HTTPClientSession & requireSession() const;
requireSession
Poco::Net::HTTPClientSession & requireSession();
Variables
CONTENT_TYPE
static const std::string CONTENT_TYPE;
PROTOCOL
static const std::string PROTOCOL;
USER_AGENT
static const std::string USER_AGENT;