Struct xpcom::interfaces::nsISocketTransport [] [src]

#[repr(C)]
pub struct nsISocketTransport { /* fields omitted */ }

interface nsISocketTransport : nsITransport

/**
 * nsISocketTransport
 *
 * NOTE: Connection setup is triggered by opening an input or output stream,
 * it does not start on its own. Completion of the connection setup is
 * indicated by a STATUS_CONNECTED_TO notification to the event sink (if set).
 *
 * NOTE: This is a free-threaded interface, meaning that the methods on
 * this interface may be called from any thread.
 */

Methods

impl nsISocketTransport
[src]

[src]

Cast this nsISocketTransport to one of its base interfaces.

impl nsISocketTransport
[src]

TIMEOUT_CONNECT: i64 = 0
/**
     * Values for the aType parameter passed to get/setTimeout.
     */

TIMEOUT_READ_WRITE: i64 = 1

STATUS_RESOLVING: i64 = 2152398851
/**
     * nsITransportEventSink status codes.
     *
     * Although these look like XPCOM error codes and are passed in an nsresult
     * variable, they are *not* error codes.  Note that while they *do* overlap
     * with existing error codes in Necko, these status codes are confined
     * within a very limited context where no error codes may appear, so there
     * is no ambiguity.
     *
     * The values of these status codes must never change.
     *
     * The status codes appear in near-chronological order (not in numeric
     * order).  STATUS_RESOLVING may be skipped if the host does not need to be
     * resolved.  STATUS_WAITING_FOR is an optional status code, which the impl
     * of this interface may choose not to generate.
     *
     * In C++, these constants have a type of uint32_t, so C++ callers must use
     * the NS_NET_STATUS_* constants defined below, which have a type of
     * nsresult.
     */

STATUS_RESOLVED: i64 = 2152398859

STATUS_CONNECTING_TO: i64 = 2152398855

STATUS_CONNECTED_TO: i64 = 2152398852

STATUS_SENDING_TO: i64 = 2152398853

STATUS_WAITING_FOR: i64 = 2152398858

STATUS_RECEIVING_FROM: i64 = 2152398854

STATUS_TLS_HANDSHAKE_STARTING: i64 = 2152398860

STATUS_TLS_HANDSHAKE_ENDED: i64 = 2152398861

BYPASS_CACHE: i64 = 1
/**
     * Values for the connectionFlags
     *
     * When making a new connection BYPASS_CACHE will force the Necko DNS
     * cache entry to be refreshed with a new call to NSPR if it is set before
     * opening the new stream.
     */

ANONYMOUS_CONNECT: i64 = 2
/**
     * When setting this flag, the socket will not apply any
     * credentials when establishing a connection. For example,
     * an SSL connection would not send any client-certificates
     * if this flag is set.
     */

DISABLE_IPV6: i64 = 4
/**
     * If set, we will skip all IPv6 addresses the host may have and only
     * connect to IPv4 ones.
     */

NO_PERMANENT_STORAGE: i64 = 8
/**
     * If set, indicates that the connection was initiated from a source
     * defined as being private in the sense of Private Browsing. Generally,
     * there should be no state shared between connections that are private
     * and those that are not; it is OK for multiple private connections
     * to share state with each other, and it is OK for multiple non-private
     * connections to share state with each other.
     */

DISABLE_IPV4: i64 = 16
/**
     * If set, we will skip all IPv4 addresses the host may have and only
     * connect to IPv6 ones.
     */

DISABLE_RFC1918: i64 = 32
/**
     * If set, indicates that the socket should not connect if the hostname
     * resolves to an RFC1918 address or IPv6 equivalent.
     */

MITM_OK: i64 = 64
/**
     * This flag is an explicit opt-in that allows a normally secure socket
     * provider to use, at its discretion, an insecure algorithm. e.g.
     * a TLS socket without authentication.
     */

BE_CONSERVATIVE: i64 = 128
/**
     * If set, do not use newer protocol features that might have interop problems
     * on the Internet. Intended only for use with critical infra like the updater.
     * default is false.
     */

[src]

/**
     * Get the peer's host for the underlying socket connection.
     * For Unix domain sockets, this is a pathname, or the empty string for
     * unnamed and abstract socket addresses.
     */

readonly attribute AUTF8String host;

[src]

/**
     * Get the port for the underlying socket connection.
     * For Unix domain sockets, this is zero.
     */

readonly attribute long port;

[src]

/**
     * The platform-specific network interface id that this socket
     * associated with. Note that this attribute can be only accessed
     * in the socket thread.
     */

attribute ACString networkInterfaceId;

[src]

/**
     * The platform-specific network interface id that this socket
     * associated with. Note that this attribute can be only accessed
     * in the socket thread.
     */

attribute ACString networkInterfaceId;

[src]

/**
     * Returns a scriptable version of getPeerAddr. This attribute is defined
     * only once a connection has been established.
     */

nsINetAddr getScriptablePeerAddr ();

[src]

/**
     * Returns a scriptable version of getSelfAddr. This attribute is defined
     * only once a connection has been established.
     */

nsINetAddr getScriptableSelfAddr ();

[src]

/**
     * Security info object returned from the secure socket provider.  This
     * object supports nsISSLSocketControl, nsITransportSecurityInfo, and
     * possibly other interfaces.
     *
     * This attribute is only available once the socket is connected.
     */

readonly attribute nsISupports securityInfo;

[src]

/**
     * Security notification callbacks passed to the secure socket provider
     * via nsISSLSocketControl at socket creation time.
     *
     * NOTE: this attribute cannot be changed once a stream has been opened.
     */

attribute nsIInterfaceRequestor securityCallbacks;

[src]

/**
     * Security notification callbacks passed to the secure socket provider
     * via nsISSLSocketControl at socket creation time.
     *
     * NOTE: this attribute cannot be changed once a stream has been opened.
     */

attribute nsIInterfaceRequestor securityCallbacks;

[src]

/**
     * Test if this socket transport is (still) connected.
     */

boolean isAlive ();

[src]

/**
     * Socket timeouts in seconds.  To specify no timeout, pass UINT32_MAX
     * as aValue to setTimeout.  The implementation may truncate timeout values
     * to a smaller range of values (e.g., 0 to 0xFFFF).
     */

unsigned long getTimeout (in unsigned long aType);

[src]

void setTimeout (in unsigned long aType, in unsigned long aValue);

[src]

/**
     * True to set addr and port reuse socket options.
     */

void setReuseAddrPort (in bool reuseAddrPort);

[src]

/**
     * connectionFlags is a bitmask that can be used to modify underlying
     * behavior of the socket connection. See the flags below.
     */

attribute unsigned long connectionFlags;

[src]

/**
     * connectionFlags is a bitmask that can be used to modify underlying
     * behavior of the socket connection. See the flags below.
     */

attribute unsigned long connectionFlags;

[src]

/**
     * An opaque flags for non-standard behavior of the TLS system.
     * It is unlikely this will need to be set outside of telemetry studies
     * relating to the TLS implementation.
     */

attribute unsigned long tlsFlags;

[src]

/**
     * An opaque flags for non-standard behavior of the TLS system.
     * It is unlikely this will need to be set outside of telemetry studies
     * relating to the TLS implementation.
     */

attribute unsigned long tlsFlags;

[src]

/**
     * Socket QoS/ToS markings. Valid values are IPTOS_DSCP_AFxx or
     * IPTOS_CLASS_CSx (or IPTOS_DSCP_EF, but currently no supported
     * services require expedited-forwarding).
     * Not setting this value will leave the socket with the default
     * ToS value, which on most systems if IPTOS_CLASS_CS0 (formerly
     * IPTOS_PREC_ROUTINE).
     */

attribute octet QoSBits;

[src]

/**
     * Socket QoS/ToS markings. Valid values are IPTOS_DSCP_AFxx or
     * IPTOS_CLASS_CSx (or IPTOS_DSCP_EF, but currently no supported
     * services require expedited-forwarding).
     * Not setting this value will leave the socket with the default
     * ToS value, which on most systems if IPTOS_CLASS_CS0 (formerly
     * IPTOS_PREC_ROUTINE).
     */

attribute octet QoSBits;

[src]

/**
     * TCP send and receive buffer sizes. A value of 0 means OS level
     * auto-tuning is in effect.
     */

attribute unsigned long recvBufferSize;

[src]

/**
     * TCP send and receive buffer sizes. A value of 0 means OS level
     * auto-tuning is in effect.
     */

attribute unsigned long recvBufferSize;

[src]

attribute unsigned long sendBufferSize;

[src]

attribute unsigned long sendBufferSize;

[src]

/**
     * TCP keepalive configuration (support varies by platform).
     * Note that the attribute as well as the setter can only accessed
     * in the socket thread.
     */

attribute boolean keepaliveEnabled;

[src]

/**
     * TCP keepalive configuration (support varies by platform).
     * Note that the attribute as well as the setter can only accessed
     * in the socket thread.
     */

attribute boolean keepaliveEnabled;

[src]

void setKeepaliveVals (in long keepaliveIdleTime, in long keepaliveRetryInterval);

[src]

readonly attribute nsresult firstRetryError;

Methods from Deref<Target = nsITransport>

[src]

Cast this nsITransport to one of its base interfaces.

[src]

/**
     * Open an input stream on this transport.
     *
     * Flags have the following meaning:
     *
     * OPEN_BLOCKING
     *   If specified, then the resulting stream will have blocking stream
     *   semantics.  This means that if the stream has no data and is not
     *   closed, then reading from it will block the calling thread until
     *   at least one byte is available or until the stream is closed.
     *   If this flag is NOT specified, then the stream has non-blocking
     *   stream semantics.  This means that if the stream has no data and is
     *   not closed, then reading from it returns NS_BASE_STREAM_WOULD_BLOCK.
     *   In addition, in non-blocking mode, the stream is guaranteed to
     *   support nsIAsyncInputStream.  This interface allows the consumer of
     *   the stream to be notified when the stream can again be read.
     *
     * OPEN_UNBUFFERED
     *   If specified, the resulting stream may not support ReadSegments.
     *   ReadSegments is only gauranteed to be implemented when this flag is
     *   NOT specified.
     *
     * @param aFlags
     *        optional transport specific flags.
     * @param aSegmentSize
     *        if OPEN_UNBUFFERED is not set, then this parameter specifies the
     *        size of each buffer segment (pass 0 to use default value).
     * @param aSegmentCount
     *        if OPEN_UNBUFFERED is not set, then this parameter specifies the
     *        maximum number of buffer segments (pass 0 to use default value).
     */

nsIInputStream openInputStream (in unsigned long aFlags, in unsigned long aSegmentSize, in unsigned long aSegmentCount);

[src]

/**
     * Open an output stream on this transport.
     *
     * Flags have the following meaning:
     *
     * OPEN_BLOCKING
     *   If specified, then the resulting stream will have blocking stream
     *   semantics.  This means that if the stream is full and is not closed,
     *   then writing to it will block the calling thread until ALL of the
     *   data can be written or until the stream is closed.  If this flag is
     *   NOT specified, then the stream has non-blocking stream semantics.
     *   This means that if the stream is full and is not closed, then writing
     *   to it returns NS_BASE_STREAM_WOULD_BLOCK.  In addition, in non-
     *   blocking mode, the stream is guaranteed to support
     *   nsIAsyncOutputStream.  This interface allows the consumer of the
     *   stream to be notified when the stream can again accept more data.
     *
     * OPEN_UNBUFFERED
     *   If specified, the resulting stream may not support WriteSegments and
     *   WriteFrom.  WriteSegments and WriteFrom are only guaranteed to be
     *   implemented when this flag is NOT specified.
     *
     * @param aFlags
     *        optional transport specific flags.
     * @param aSegmentSize
     *        if OPEN_UNBUFFERED is not set, then this parameter specifies the
     *        size of each buffer segment (pass 0 to use default value).
     * @param aSegmentCount
     *        if OPEN_UNBUFFERED is not set, then this parameter specifies the
     *        maximum number of buffer segments (pass 0 to use default value).
     */

nsIOutputStream openOutputStream (in unsigned long aFlags, in unsigned long aSegmentSize, in unsigned long aSegmentCount);

[src]

/**
     * Close the transport and any open streams.
     *
     * @param aReason
     *        the reason for closing the stream.
     */

void close (in nsresult aReason);

[src]

/**
     * Set the transport event sink.
     *
     * @param aSink
     *        receives transport layer notifications
     * @param aEventTarget
     *        indicates the event target to which the notifications should
     *        be delivered.  if NULL, then the notifications may occur on
     *        any thread.
     */

void setEventSink (in nsITransportEventSink aSink, in nsIEventTarget aEventTarget);

Trait Implementations

impl XpCom for nsISocketTransport
[src]

IID: nsIID = nsID(2032277553, 34274, 17320, [129, 82, 5, 215, 125, 111, 222, 49])

[src]

Perform a QueryInterface call on this object, attempting to dynamically cast it to the requested interface type. Returns Some(RefPtr) if the cast succeeded, and None otherwise. Read more

impl RefCounted for nsISocketTransport
[src]

[src]

Increment the reference count.

[src]

Decrement the reference count, potentially freeing backing memory.

impl Deref for nsISocketTransport
[src]

The resulting type after dereferencing.

[src]

Dereferences the value.