#include <connection.h>
Inheritance diagram for Connection:
Public Member Functions | |
Connection (ConnectionManager *manager, PRFileDesc *socket) | |
Creates a connection. | |
~Connection () | |
Closes a connection. | |
NetAddress | get_address () const |
Returns the address bound to this connection, if it is a TCP connection. | |
ConnectionManager * | get_manager () const |
Returns a pointer to the ConnectionManager object that serves this connection. | |
PRFileDesc * | get_socket () const |
Returns the internal NSPR pointer that defines the connection. | |
void | set_collect_tcp (bool collect_tcp) |
Enables or disables "collect-tcp" mode. | |
bool | get_collect_tcp () const |
Returns the current setting of "collect-tcp" mode. | |
void | set_collect_tcp_interval (double interval) |
Specifies the interval in time, in seconds, for which to hold TCP packets before sending all of the recently received packets at once. | |
double | get_collect_tcp_interval () const |
Returns the interval in time, in seconds, for which to hold TCP packets before sending all of the recently received packets at once. | |
bool | consider_flush () |
Sends the most recently queued TCP datagram(s) if enough time has elapsed. | |
bool | flush () |
Sends the most recently queued TCP datagram(s) now. | |
void | set_nonblock (bool flag) |
Sets whether nonblocking I/O should be in effect. | |
void | set_linger (bool flag, double time) |
Sets the time to linger on close if data is present. | |
void | set_reuse_addr (bool flag) |
Sets whether local address reuse is allowed. | |
void | set_keep_alive (bool flag) |
Sets whether the connection is periodically tested to see if it is still alive. | |
void | set_recv_buffer_size (int size) |
Sets the size of the receive buffer, in bytes. | |
void | set_send_buffer_size (int size) |
Sets the size of the send buffer, in bytes. | |
void | set_ip_time_to_live (int ttl) |
Sets IP time-to-live. | |
void | set_ip_type_of_service (int tos) |
Sets IP type-of-service and precedence. | |
void | set_no_delay (bool flag) |
If flag is true, this disables the Nagle algorithm, and prevents delaying of send to coalesce packets. | |
void | set_max_segment (int size) |
Sets the maximum segment size. | |
int | get_ref_count () const |
Returns the current reference count. | |
int | ref () const |
Explicitly increments the reference count. | |
int | unref () const |
Explicitly decrements the reference count. | |
void | test_ref_count_integrity () const |
Does some easy checks to make sure that the reference count isn't completely bogus. | |
Static Public Member Functions | |
TypeHandle | get_class_type () |
void | init_type () |
Private Member Functions | |
bool | send_datagram (const NetDatagram &datagram) |
This method is intended only to be called by ConnectionWriter. | |
bool | send_raw_datagram (const NetDatagram &datagram) |
This method is intended only to be called by ConnectionWriter. | |
bool | do_flush () |
The private implementation of flush(), this assumes the _write_mutex has already been locked on entry. | |
bool | check_send_error (PRInt32 result, PRErrorCode errcode, PRInt32 bytes_to_send) |
Checks the return value of a PR_Send() or PR_SendTo() call. | |
Private Attributes | |
ConnectionManager * | _manager |
PRFileDesc * | _socket |
PRLock * | _write_mutex |
bool | _collect_tcp |
double | _collect_tcp_interval |
double | _queued_data_start |
string | _queued_data |
int | _queued_count |
Friends | |
class | ConnectionWriter |
Definition at line 45 of file connection.h.
|
Creates a connection. Normally this constructor should not be used directly by user code; use one of the methods in ConnectionManager to make a new connection. Definition at line 48 of file connection.cxx. |
|
Closes a connection.
Definition at line 68 of file connection.cxx. |
|
Checks the return value of a PR_Send() or PR_SendTo() call.
Definition at line 635 of file connection.cxx. |
|
Sends the most recently queued TCP datagram(s) if enough time has elapsed. This only has meaning if set_collect_tcp() has been set to true. Definition at line 249 of file connection.cxx. |
|
The private implementation of flush(), this assumes the _write_mutex has already been locked on entry. It will be unlocked on return. Definition at line 593 of file connection.cxx. Referenced by set_collect_tcp(). |
|
Sends the most recently queued TCP datagram(s) now. This only has meaning if set_collect_tcp() has been set to true. Definition at line 274 of file connection.cxx. References _socket. |
|
Returns the address bound to this connection, if it is a TCP connection.
Definition at line 95 of file connection.cxx. References _manager. |
|
|
Returns the current setting of "collect-tcp" mode. See set_collect_tcp(). Definition at line 190 of file connection.cxx. |
|
Returns the interval in time, in seconds, for which to hold TCP packets before sending all of the recently received packets at once. This only has meaning if "collect-tcp" mode is enabled; see set_collect_tcp(). Definition at line 232 of file connection.cxx. References _socket. |
|
Returns a pointer to the ConnectionManager object that serves this connection.
Definition at line 115 of file connection.cxx. |
|
Returns the current reference count.
Definition at line 183 of file referenceCount.I. Referenced by RenderState::determine_bin_index(), RenderEffects::determine_show_bounds(), FontPool::ns_garbage_collect(), TexturePool::ns_garbage_collect(), MaterialPool::ns_get_material(), and TexturePool::ns_release_texture(). |
|
Returns the internal NSPR pointer that defines the connection.
Definition at line 130 of file connection.cxx. References _collect_tcp, and collect_tcp. Referenced by ConnectionWriter::send(). |
|
|
Explicitly increments the reference count. User code should avoid using ref() and unref() directly, which can result in missed reference counts. Instead, let a PointerTo object manage the reference counting automatically. This function is const, even though it changes the object, because generally fiddling with an object's reference count isn't considered part of fiddling with the object. An object might be const in other ways, but we still need to accurately count the number of references to it. The return value is the new reference count. Definition at line 225 of file referenceCount.I. Referenced by ClientDevice::ClientDevice(), EggGroupNode::find_textures(), EggGroupNode::r_apply_texmats(), EggGroupNode::r_flatten_transforms(), and EggGroupNode::reverse_vertex_ordering(). |
|
This method is intended only to be called by ConnectionWriter. It atomically writes the given datagram to the socket, returning true on success, false on failure. If the socket seems to be closed, it notifies the ConnectionManager. Definition at line 475 of file connection.cxx. References _queued_count. Referenced by ConnectionWriter::send(). |
|
This method is intended only to be called by ConnectionWriter. It atomically writes the given datagram to the socket, without the Datagram header. Definition at line 537 of file connection.cxx. Referenced by ConnectionWriter::send(). |
|
Enables or disables "collect-tcp" mode. In this mode, individual TCP packets are not sent immediately, but rather they are collected together and accumulated to be sent periodically as one larger TCP packet. This cuts down on overhead from the TCP/IP protocol, especially if many small packets need to be sent on the same connection, but it introduces additional latency (since packets must be held before they can be sent). See set_collect_tcp_interval() to specify the interval of time for which to hold packets before sending them. If you enable this mode, you may also need to periodically call consider_flush() to flush the queue if no packets have been sent recently. Definition at line 175 of file connection.cxx. References _collect_tcp, _collect_tcp_interval, _queued_data_start, _write_mutex, do_flush(), ClockObject::get_global_clock(), and ClockObject::get_real_time(). |
|
Specifies the interval in time, in seconds, for which to hold TCP packets before sending all of the recently received packets at once. This only has meaning if "collect-tcp" mode is enabled; see set_collect_tcp(). Definition at line 211 of file connection.cxx. References _socket. |
|
Sets IP time-to-live.
Definition at line 401 of file connection.cxx. |
|
Sets IP type-of-service and precedence.
Definition at line 417 of file connection.cxx. References _socket, _write_mutex, and Datagram::get_message(). |
|
Sets whether the connection is periodically tested to see if it is still alive.
Definition at line 353 of file connection.cxx. References _socket, _write_mutex, DatagramUDPHeader::get_header(), Datagram::get_message(), nassertr, and NULL. |
|
Sets the time to linger on close if data is present. If flag is false, when you close a socket with data available the system attempts to deliver the data to the peer (the default behavior). If flag is false but time is zero, the system discards any undelivered data when you close the socket. If flag is false but time is nonzero, the system waits up to time seconds to deliver the data. Definition at line 318 of file connection.cxx. |
|
Sets the maximum segment size.
Definition at line 451 of file connection.cxx. |
|
If flag is true, this disables the Nagle algorithm, and prevents delaying of send to coalesce packets.
Definition at line 435 of file connection.cxx. |
|
Sets whether nonblocking I/O should be in effect.
Definition at line 288 of file connection.cxx. References _socket. |
|
Sets the size of the receive buffer, in bytes.
Definition at line 369 of file connection.cxx. |
|
Sets whether local address reuse is allowed.
Definition at line 335 of file connection.cxx. References _socket. |
|
Sets the size of the send buffer, in bytes.
Definition at line 385 of file connection.cxx. References _queued_count, and _queued_data. |
|
Does some easy checks to make sure that the reference count isn't completely bogus.
Definition at line 328 of file referenceCount.I. References INLINE. Referenced by EggNode::determine_bin(), and ReferenceCount::~ReferenceCount(). |
|
Explicitly decrements the reference count. Note that the object will not be implicitly deleted by unref() simply because the reference count drops to zero. (Having a member function delete itself is problematic; plus, we don't have a virtual destructor anyway.) However, see the helper function unref_delete(). User code should avoid using ref() and unref() directly, which can result in missed reference counts. Instead, let a PointerTo object manage the reference counting automatically. This function is const, even though it changes the object, because generally fiddling with an object's reference count isn't considered part of fiddling with the object. An object might be const in other ways, but we still need to accurately count the number of references to it. The return value is the new reference count. Definition at line 293 of file referenceCount.I. References INLINE. Referenced by RenderState::determine_bin_index(), and RenderEffects::determine_show_bounds(). |
|
Definition at line 91 of file connection.h. |
|
Definition at line 85 of file connection.h. Referenced by get_socket(), and set_collect_tcp(). |
|
Definition at line 86 of file connection.h. Referenced by set_collect_tcp(). |
|
Definition at line 81 of file connection.h. Referenced by get_address(). |
|
Definition at line 89 of file connection.h. Referenced by send_datagram(), and set_send_buffer_size(). |
|
Definition at line 88 of file connection.h. Referenced by set_send_buffer_size(). |
|
Definition at line 87 of file connection.h. Referenced by set_collect_tcp(). |
|
Definition at line 82 of file connection.h. Referenced by flush(), get_collect_tcp_interval(), set_collect_tcp_interval(), set_ip_type_of_service(), set_keep_alive(), set_nonblock(), and set_reuse_addr(). |
|
Definition at line 83 of file connection.h. Referenced by set_collect_tcp(), set_ip_type_of_service(), and set_keep_alive(). |