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]
pub fn coerce<T: nsISocketTransportCoerce>(&self) -> &T
[src]
Cast this nsISocketTransport
to one of its base interfaces.
impl nsISocketTransport
[src]
pub const TIMEOUT_CONNECT: i64
TIMEOUT_CONNECT: i64 = 0
/**
* Values for the aType parameter passed to get/setTimeout.
*/
pub const TIMEOUT_READ_WRITE: i64
TIMEOUT_READ_WRITE: i64 = 1
pub const STATUS_RESOLVING: i64
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.
*/
pub const STATUS_RESOLVED: i64
STATUS_RESOLVED: i64 = 2152398859
pub const STATUS_CONNECTING_TO: i64
STATUS_CONNECTING_TO: i64 = 2152398855
pub const STATUS_CONNECTED_TO: i64
STATUS_CONNECTED_TO: i64 = 2152398852
pub const STATUS_SENDING_TO: i64
STATUS_SENDING_TO: i64 = 2152398853
pub const STATUS_WAITING_FOR: i64
STATUS_WAITING_FOR: i64 = 2152398858
pub const STATUS_RECEIVING_FROM: i64
STATUS_RECEIVING_FROM: i64 = 2152398854
pub const STATUS_TLS_HANDSHAKE_STARTING: i64
STATUS_TLS_HANDSHAKE_STARTING: i64 = 2152398860
pub const STATUS_TLS_HANDSHAKE_ENDED: i64
STATUS_TLS_HANDSHAKE_ENDED: i64 = 2152398861
pub const BYPASS_CACHE: i64
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.
*/
pub const ANONYMOUS_CONNECT: i64
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.
*/
pub const DISABLE_IPV6: i64
DISABLE_IPV6: i64 = 4
/**
* If set, we will skip all IPv6 addresses the host may have and only
* connect to IPv4 ones.
*/
pub const NO_PERMANENT_STORAGE: i64
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.
*/
pub const DISABLE_IPV4: i64
DISABLE_IPV4: i64 = 16
/**
* If set, we will skip all IPv4 addresses the host may have and only
* connect to IPv6 ones.
*/
pub const DISABLE_RFC1918: i64
DISABLE_RFC1918: i64 = 32
/**
* If set, indicates that the socket should not connect if the hostname
* resolves to an RFC1918 address or IPv6 equivalent.
*/
pub const MITM_OK: i64
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.
*/
pub const BE_CONSERVATIVE: i64
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.
*/
pub unsafe fn GetHost(&self, aHost: &mut nsACString) -> nsresult
[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;
pub unsafe fn GetPort(&self, aPort: *mut int32_t) -> nsresult
[src]
/**
* Get the port for the underlying socket connection.
* For Unix domain sockets, this is zero.
*/
readonly attribute long port;
pub unsafe fn GetNetworkInterfaceId(
&self,
aNetworkInterfaceId: &mut nsACString
) -> nsresult
[src]
&self,
aNetworkInterfaceId: &mut nsACString
) -> nsresult
/**
* 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;
pub unsafe fn SetNetworkInterfaceId(
&self,
aNetworkInterfaceId: &nsACString
) -> nsresult
[src]
&self,
aNetworkInterfaceId: &nsACString
) -> nsresult
/**
* 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;
pub unsafe fn GetScriptablePeerAddr(
&self,
_retval: *mut *const nsINetAddr
) -> nsresult
[src]
&self,
_retval: *mut *const nsINetAddr
) -> nsresult
/**
* Returns a scriptable version of getPeerAddr. This attribute is defined
* only once a connection has been established.
*/
nsINetAddr getScriptablePeerAddr ();
pub unsafe fn GetScriptableSelfAddr(
&self,
_retval: *mut *const nsINetAddr
) -> nsresult
[src]
&self,
_retval: *mut *const nsINetAddr
) -> nsresult
/**
* Returns a scriptable version of getSelfAddr. This attribute is defined
* only once a connection has been established.
*/
nsINetAddr getScriptableSelfAddr ();
pub unsafe fn GetSecurityInfo(
&self,
aSecurityInfo: *mut *const nsISupports
) -> nsresult
[src]
&self,
aSecurityInfo: *mut *const nsISupports
) -> nsresult
/**
* 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;
pub unsafe fn GetSecurityCallbacks(
&self,
aSecurityCallbacks: *mut *const nsIInterfaceRequestor
) -> nsresult
[src]
&self,
aSecurityCallbacks: *mut *const nsIInterfaceRequestor
) -> nsresult
/**
* 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;
pub unsafe fn SetSecurityCallbacks(
&self,
aSecurityCallbacks: *const nsIInterfaceRequestor
) -> nsresult
[src]
&self,
aSecurityCallbacks: *const nsIInterfaceRequestor
) -> nsresult
/**
* 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;
pub unsafe fn IsAlive(&self, _retval: *mut bool) -> nsresult
[src]
/**
* Test if this socket transport is (still) connected.
*/
boolean isAlive ();
pub unsafe fn GetTimeout(
&self,
aType: uint32_t,
_retval: *mut uint32_t
) -> nsresult
[src]
&self,
aType: uint32_t,
_retval: *mut uint32_t
) -> nsresult
/**
* 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);
pub unsafe fn SetTimeout(&self, aType: uint32_t, aValue: uint32_t) -> nsresult
[src]
void setTimeout (in unsigned long aType, in unsigned long aValue);
pub unsafe fn SetReuseAddrPort(&self, reuseAddrPort: bool) -> nsresult
[src]
/**
* True to set addr and port reuse socket options.
*/
void setReuseAddrPort (in bool reuseAddrPort);
pub unsafe fn GetConnectionFlags(
&self,
aConnectionFlags: *mut uint32_t
) -> nsresult
[src]
&self,
aConnectionFlags: *mut uint32_t
) -> nsresult
/**
* connectionFlags is a bitmask that can be used to modify underlying
* behavior of the socket connection. See the flags below.
*/
attribute unsigned long connectionFlags;
pub unsafe fn SetConnectionFlags(&self, aConnectionFlags: uint32_t) -> nsresult
[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;
pub unsafe fn GetTlsFlags(&self, aTlsFlags: *mut uint32_t) -> nsresult
[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;
pub unsafe fn SetTlsFlags(&self, aTlsFlags: uint32_t) -> nsresult
[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;
pub unsafe fn GetQoSBits(&self, aQoSBits: *mut uint8_t) -> nsresult
[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;
pub unsafe fn SetQoSBits(&self, aQoSBits: uint8_t) -> nsresult
[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;
pub unsafe fn GetRecvBufferSize(
&self,
aRecvBufferSize: *mut uint32_t
) -> nsresult
[src]
&self,
aRecvBufferSize: *mut uint32_t
) -> nsresult
/**
* TCP send and receive buffer sizes. A value of 0 means OS level
* auto-tuning is in effect.
*/
attribute unsigned long recvBufferSize;
pub unsafe fn SetRecvBufferSize(&self, aRecvBufferSize: uint32_t) -> nsresult
[src]
/**
* TCP send and receive buffer sizes. A value of 0 means OS level
* auto-tuning is in effect.
*/
attribute unsigned long recvBufferSize;
pub unsafe fn GetSendBufferSize(
&self,
aSendBufferSize: *mut uint32_t
) -> nsresult
[src]
&self,
aSendBufferSize: *mut uint32_t
) -> nsresult
attribute unsigned long sendBufferSize;
pub unsafe fn SetSendBufferSize(&self, aSendBufferSize: uint32_t) -> nsresult
[src]
attribute unsigned long sendBufferSize;
pub unsafe fn GetKeepaliveEnabled(
&self,
aKeepaliveEnabled: *mut bool
) -> nsresult
[src]
&self,
aKeepaliveEnabled: *mut bool
) -> nsresult
/**
* 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;
pub unsafe fn SetKeepaliveEnabled(&self, aKeepaliveEnabled: bool) -> nsresult
[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;
pub unsafe fn SetKeepaliveVals(
&self,
keepaliveIdleTime: int32_t,
keepaliveRetryInterval: int32_t
) -> nsresult
[src]
&self,
keepaliveIdleTime: int32_t,
keepaliveRetryInterval: int32_t
) -> nsresult
void setKeepaliveVals (in long keepaliveIdleTime, in long keepaliveRetryInterval);
pub unsafe fn GetFirstRetryError(
&self,
aFirstRetryError: *mut nsresult
) -> nsresult
[src]
&self,
aFirstRetryError: *mut nsresult
) -> nsresult
readonly attribute nsresult firstRetryError;
Methods from Deref<Target = nsITransport>
pub fn coerce<T: nsITransportCoerce>(&self) -> &T
[src]
Cast this nsITransport
to one of its base interfaces.
pub const OPEN_BLOCKING: i64
pub const OPEN_UNBUFFERED: i64
pub const STATUS_READING: i64
pub const STATUS_WRITING: i64
pub unsafe fn OpenInputStream(
&self,
aFlags: uint32_t,
aSegmentSize: uint32_t,
aSegmentCount: uint32_t,
_retval: *mut *const nsIInputStream
) -> nsresult
[src]
&self,
aFlags: uint32_t,
aSegmentSize: uint32_t,
aSegmentCount: uint32_t,
_retval: *mut *const nsIInputStream
) -> nsresult
/**
* 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);
pub unsafe fn OpenOutputStream(
&self,
aFlags: uint32_t,
aSegmentSize: uint32_t,
aSegmentCount: uint32_t,
_retval: *mut *const nsIOutputStream
) -> nsresult
[src]
&self,
aFlags: uint32_t,
aSegmentSize: uint32_t,
aSegmentCount: uint32_t,
_retval: *mut *const nsIOutputStream
) -> nsresult
/**
* 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);
pub unsafe fn Close(&self, aReason: nsresult) -> nsresult
[src]
/**
* Close the transport and any open streams.
*
* @param aReason
* the reason for closing the stream.
*/
void close (in nsresult aReason);
pub unsafe fn SetEventSink(
&self,
aSink: *const nsITransportEventSink,
aEventTarget: *const nsIEventTarget
) -> nsresult
[src]
&self,
aSink: *const nsITransportEventSink,
aEventTarget: *const nsIEventTarget
) -> nsresult
/**
* 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]
const IID: nsIID
IID: nsIID = nsID(2032277553, 34274, 17320, [129, 82, 5, 215, 125, 111, 222, 49])
fn query_interface<T: XpCom>(&self) -> Option<RefPtr<T>>
[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]
unsafe fn addref(&self)
[src]
Increment the reference count.
unsafe fn release(&self)
[src]
Decrement the reference count, potentially freeing backing memory.
impl Deref for nsISocketTransport
[src]
type Target = nsITransport
The resulting type after dereferencing.
fn deref(&self) -> &nsITransport
[src]
Dereferences the value.