KDECore
KNetwork::KSocketDevice Class Reference
Low-level socket functionality. More...
#include <ksocketdevice.h>
Public Types | |
enum | Capabilities { CanConnectString = 0x01, CanBindString = 0x02, CanNotBind = 0x04, CanNotListen = 0x08, CanMulticast = 0x10, CanNotUseDatagrams = 0x20 } |
Public Member Functions | |
virtual KSocketDevice * | accept () |
virtual bool | bind (const KResolverEntry &address) |
virtual Q_LONG | bytesAvailable () const |
virtual int | capabilities () const |
virtual void | close () |
virtual bool | connect (const KResolverEntry &address) |
bool | create (const KResolverEntry &address) |
virtual bool | create (int family, int type, int protocol) |
virtual bool | disconnect () |
QSocketNotifier * | exceptionNotifier () const |
virtual KSocketAddress | externalAddress () const |
virtual void | flush () |
KSocketDevice (int fd) | |
KSocketDevice (const KSocketBase *=0L) | |
virtual bool | listen (int backlog=5) |
virtual KSocketAddress | localAddress () const |
virtual bool | open (int mode) |
virtual Q_LONG | peekBlock (char *data, Q_ULONG maxlen, KSocketAddress &from) |
virtual Q_LONG | peekBlock (char *data, Q_ULONG maxlen) |
virtual KSocketAddress | peerAddress () const |
bool | poll (int timeout=-1, bool *timedout=0L) |
virtual bool | poll (bool *input, bool *output, bool *exception=0L, int timeout=-1, bool *timedout=0L) |
virtual Q_LONG | readBlock (char *data, Q_ULONG maxlen, KSocketAddress &from) |
virtual Q_LONG | readBlock (char *data, Q_ULONG maxlen) |
QSocketNotifier * | readNotifier () const |
virtual bool | setSocketOptions (int opts) |
int | socket () const |
virtual Q_LONG | waitForMore (int msecs, bool *timeout=0L) |
virtual Q_LONG | writeBlock (const char *data, Q_ULONG len, const KSocketAddress &to) |
virtual Q_LONG | writeBlock (const char *data, Q_ULONG len) |
QSocketNotifier * | writeNotifier () const |
virtual | ~KSocketDevice () |
Static Public Member Functions | |
static void | addNewImpl (KSocketDeviceFactoryBase *factory, int capabilities) |
static KSocketDevice * | createDefault (KSocketBase *parent, int capabilities) |
static KSocketDevice * | createDefault (KSocketBase *parent) |
static KSocketDeviceFactoryBase * | setDefaultImpl (KSocketDeviceFactoryBase *factory) |
Protected Member Functions | |
virtual QSocketNotifier * | createNotifier (QSocketNotifier::Type type) const |
KSocketDevice (bool, const KSocketBase *parent=0L) | |
Protected Attributes | |
int | m_sockfd |
Detailed Description
Low-level socket functionality.This class provides low-level socket functionality.
Most users will prefer "cooked" interfaces like those of KStreamSocket or KServerSocket.
Descended classes from this one provide some other kinds of socket functionality, like proxying or specific socket types.
Definition at line 50 of file ksocketdevice.h.
Member Enumeration Documentation
Capabilities for the socket implementation.
KSocketDevice-derived classes can implement certain capabilities that are not available in the default class. These capabilities are described by these flags. The default KSocketDevice class has none of these capabilities.
For the negative capabilities (inabilities, the CanNot* forms), when a capability is not present, the implementation will default to the original behaviour.
- Enumerator:
-
CanConnectString Can connect to hostnames. If this flag is present, the string form of connect can be used.
CanBindString Can bind to hostnames. If this flag is present, the string form of bind can be used
CanNotBind Can not bind. If this flag is present, this implementation cannot bind
CanNotListen Can not listen. If this flag is present, this implementation cannot listen
CanMulticast Can send multicast as well as join/leave multicast groups. CanNotUseDatagrams Can not use datagrams. Note that this implies multicast capability not being available either.
Definition at line 63 of file ksocketdevice.h.
Constructor & Destructor Documentation
KSocketDevice::KSocketDevice | ( | const KSocketBase * | parent = 0L |
) | [explicit] |
Default constructor.
The parameter is used to specify which socket this object is used as a device for.
Definition at line 78 of file ksocketdevice.cpp.
KSocketDevice::KSocketDevice | ( | int | fd | ) | [explicit] |
Constructs a new object around an already-open socket.
Note: you should write programs that create sockets through the classes whenever possible.
Definition at line 86 of file ksocketdevice.cpp.
KSocketDevice::~KSocketDevice | ( | ) | [virtual] |
KSocketDevice::KSocketDevice | ( | bool | , | |
const KSocketBase * | parent = 0L | |||
) | [protected] |
Special constructor.
This constructor will cause the internal socket device NOT to be set. Use this if your socket device class takes another underlying socket device.
- Parameters:
-
parent the parent, if any
Definition at line 95 of file ksocketdevice.cpp.
Member Function Documentation
KSocketDevice * KSocketDevice::accept | ( | ) | [virtual] |
Accepts a new incoming connection.
Note: this function returns a socket of type KSocketDevice.
Implements KNetwork::KPassiveSocketBase.
Reimplemented in KNetwork::KSocksSocketDevice.
Definition at line 309 of file ksocketdevice.cpp.
void KSocketDevice::addNewImpl | ( | KSocketDeviceFactoryBase * | factory, | |
int | capabilities | |||
) | [static] |
Adds a factory of KSocketDevice objects to the list, along with its capabilities flag.
Definition at line 879 of file ksocketdevice.cpp.
bool KSocketDevice::bind | ( | const KResolverEntry & | address | ) | [virtual] |
Binds this socket to the given address.
Implements KNetwork::KActiveSocketBase.
Reimplemented in KNetwork::KSocksSocketDevice.
Definition at line 232 of file ksocketdevice.cpp.
Q_LONG KSocketDevice::bytesAvailable | ( | ) | const [virtual] |
Returns the number of bytes available for reading without blocking.
Implements KNetwork::KActiveSocketBase.
Definition at line 367 of file ksocketdevice.cpp.
virtual int KNetwork::KSocketDevice::capabilities | ( | ) | const [inline, virtual] |
Returns the set of capabilities this socket class implements.
The set of capabilities is defined as an OR-ed mask of Capabilities bits.
The default implementation is guaranteed to always return 0. That is, derived implementations always return bits where they differ from the system standard sockets.
Reimplemented in KNetwork::KHttpProxySocketDevice, KNetwork::KMulticastSocketImpl, and KNetwork::KSocksSocketDevice.
Definition at line 134 of file ksocketdevice.h.
void KSocketDevice::close | ( | ) | [virtual] |
Closes the socket.
Reimplemented from QIODevice.
Use this function to close the socket this object is holding open.
Implements KNetwork::KPassiveSocketBase.
Reimplemented in KNetwork::KHttpProxySocketDevice.
Definition at line 180 of file ksocketdevice.cpp.
bool KSocketDevice::connect | ( | const KResolverEntry & | address | ) | [virtual] |
Connect to a remote host.
Implements KNetwork::KActiveSocketBase.
Reimplemented in KNetwork::KHttpProxySocketDevice, KNetwork::KMulticastSocketImpl, and KNetwork::KSocksSocketDevice.
Definition at line 276 of file ksocketdevice.cpp.
bool KSocketDevice::create | ( | const KResolverEntry & | address | ) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. Creates a socket but don't connect or bind anywhere.
Definition at line 227 of file ksocketdevice.cpp.
bool KSocketDevice::create | ( | int | family, | |
int | type, | |||
int | protocol | |||
) | [virtual] |
Creates a socket but don't connect or bind anywhere.
This function is the equivalent of the system call socket(2).
Reimplemented in KNetwork::KMulticastSocketImpl.
Definition at line 201 of file ksocketdevice.cpp.
KSocketDevice * KSocketDevice::createDefault | ( | KSocketBase * | parent, | |
int | capabilities | |||
) | [static] |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. This will create an object only if the requested capabilities match.
- Parameters:
-
parent the parent capabilities the requested capabilities
Definition at line 854 of file ksocketdevice.cpp.
KSocketDevice * KSocketDevice::createDefault | ( | KSocketBase * | parent | ) | [static] |
Creates a new default KSocketDevice object given the parent object.
The capabilities flag indicates the desired capabilities the object being created should possess. Those capabilities are not guaranteed: if no factory can provide such an object, a default object will be created.
- Parameters:
-
parent the KSocketBase parent
Definition at line 839 of file ksocketdevice.cpp.
QSocketNotifier * KSocketDevice::createNotifier | ( | QSocketNotifier::Type | type | ) | const [protected, virtual] |
Creates a socket notifier of the given type.
This function is called by readNotifier, writeNotifier and exceptionNotifier when they need to create a socket notifier (i.e., the first call to those functions after the socket is open). After that call, those functions cache the socket notifier and will not need to call this function again.
Reimplement this function in your derived class if your socket type requires a different kind of QSocketNotifier. The return value should be deleteable with delete. (close deletes them).
- Parameters:
-
type the socket notifier type
Definition at line 791 of file ksocketdevice.cpp.
bool KSocketDevice::disconnect | ( | ) | [virtual] |
Disconnects this socket.
Implements KNetwork::KActiveSocketBase.
Definition at line 333 of file ksocketdevice.cpp.
QSocketNotifier * KSocketDevice::exceptionNotifier | ( | ) | const |
Returns a socket notifier for exceptional events on this socket.
The is created only when requested.
This function might return NULL.
Definition at line 645 of file ksocketdevice.cpp.
KSocketAddress KSocketDevice::externalAddress | ( | ) | const [virtual] |
Returns this socket's externally visible local address.
If this socket has a local address visible externally different from the normal local address (as returned by localAddress), then return it.
Certain implementations will use proxies and thus have externally visible addresses different from the local socket values. The default implementation returns the same value as localAddress.
- Note:
- This function may return an empty KSocketAddress. In that case, the externally visible address could/can not be determined.
Implements KNetwork::KPassiveSocketBase.
Reimplemented in KNetwork::KHttpProxySocketDevice, and KNetwork::KSocksSocketDevice.
Definition at line 602 of file ksocketdevice.cpp.
virtual void KNetwork::KSocketDevice::flush | ( | ) | [inline, virtual] |
This call is not supported on sockets.
Reimplemented from QIODevice.
Reimplemented from QIODevice.
Definition at line 157 of file ksocketdevice.h.
bool KSocketDevice::listen | ( | int | backlog = 5 |
) | [virtual] |
Puts this socket into listening mode.
Implements KNetwork::KPassiveSocketBase.
Reimplemented in KNetwork::KSocksSocketDevice.
Definition at line 255 of file ksocketdevice.cpp.
KSocketAddress KSocketDevice::localAddress | ( | ) | const [virtual] |
Returns this socket's local address.
Implements KNetwork::KActiveSocketBase.
Reimplemented in KNetwork::KSocksSocketDevice.
Definition at line 530 of file ksocketdevice.cpp.
bool KSocketDevice::open | ( | int | mode | ) | [virtual] |
Reimplementation from QIODevice.
You should not call this function in sockets.
Reimplemented from QIODevice.
Definition at line 174 of file ksocketdevice.cpp.
Q_LONG KSocketDevice::peekBlock | ( | char * | data, | |
Q_ULONG | maxlen, | |||
KSocketAddress & | from | |||
) | [virtual] |
Peeks the data in the socket and the source address.
Implements KNetwork::KActiveSocketBase.
Reimplemented in KNetwork::KSocksSocketDevice.
Definition at line 480 of file ksocketdevice.cpp.
Q_LONG KSocketDevice::peekBlock | ( | char * | data, | |
Q_ULONG | maxlen | |||
) | [virtual] |
Peeks data in the socket.
Implements KNetwork::KActiveSocketBase.
Reimplemented in KNetwork::KSocksSocketDevice.
Definition at line 459 of file ksocketdevice.cpp.
KSocketAddress KSocketDevice::peerAddress | ( | ) | const [virtual] |
Returns this socket's peer address.
If this implementation does proxying of some sort, this is the real external address, not the proxy's address.
Implements KNetwork::KActiveSocketBase.
Reimplemented in KNetwork::KHttpProxySocketDevice, and KNetwork::KSocksSocketDevice.
Definition at line 566 of file ksocketdevice.cpp.
Shorter version to poll for any events in a socket.
This call polls for input, output and exceptional events in a socket but does not return their states. This is useful if you need to wait for any event, but don't need to know which; or for timeouts.
- Parameters:
-
timeout the time in milliseconds to wait for an event; 0 for no wait and any negative value to wait forever timedout on exit, will contain true if the polling timed out
- Returns:
- true if the poll call succeeded and false if an error occurred
Definition at line 785 of file ksocketdevice.cpp.
bool KSocketDevice::poll | ( | bool * | input, | |
bool * | output, | |||
bool * | exception = 0L , |
|||
int | timeout = -1 , |
|||
bool * | timedout = 0L | |||
) | [virtual] |
Executes a poll in the socket, via select(2) or poll(2).
The events polled are returned in the parameters pointers. Set any of them to NULL to disable polling of that event.
On exit, input
, output
and exception
will contain true if an event of that kind is waiting on the socket or false if not. If a timeout occurred, set timedout
to true (all other parameters are necessarily set to false).
- Parameters:
-
input if set, turns on polling for input events output if set, turns on polling for output events exception if set, turns on polling for exceptional events timeout the time in milliseconds to wait for an event; 0 for no wait and any negative value to wait forever timedout on exit, will contain true if the polling timed out
- Returns:
- true if the poll call succeeded and false if an error occurred
Reimplemented in KNetwork::KSocksSocketDevice.
Definition at line 663 of file ksocketdevice.cpp.
Q_LONG KSocketDevice::readBlock | ( | char * | data, | |
Q_ULONG | maxlen, | |||
KSocketAddress & | from | |||
) | [virtual] |
Reads data and the source address from this socket.
Implements KNetwork::KActiveSocketBase.
Reimplemented in KNetwork::KSocksSocketDevice.
Definition at line 438 of file ksocketdevice.cpp.
Q_LONG KSocketDevice::readBlock | ( | char * | data, | |
Q_ULONG | maxlen | |||
) | [virtual] |
Reads data from this socket.
Implements KNetwork::KActiveSocketBase.
Reimplemented in KNetwork::KSocksSocketDevice.
Definition at line 417 of file ksocketdevice.cpp.
QSocketNotifier * KSocketDevice::readNotifier | ( | ) | const |
Returns a socket notifier for input on this socket.
The notifier is created only when requested. Whether it is enabled or not depends on the implementation.
This function might return NULL.
Definition at line 609 of file ksocketdevice.cpp.
KSocketDeviceFactoryBase * KSocketDevice::setDefaultImpl | ( | KSocketDeviceFactoryBase * | factory | ) | [static] |
Sets the default KSocketDevice implementation to use and return the old factory.
- Parameters:
-
factory the factory object for the implementation
Definition at line 871 of file ksocketdevice.cpp.
bool KSocketDevice::setSocketOptions | ( | int | opts | ) | [virtual] |
This implementation sets the options on the socket.
Reimplemented from KNetwork::KSocketBase.
Definition at line 110 of file ksocketdevice.cpp.
int KNetwork::KSocketDevice::socket | ( | ) | const [inline] |
Q_LONG KSocketDevice::waitForMore | ( | int | msecs, | |
bool * | timeout = 0L | |||
) | [virtual] |
Waits up to msecs
for more data to be available on this socket.
This function is a wrapper against poll. This function will wait for any read events.
Implements KNetwork::KActiveSocketBase.
Definition at line 379 of file ksocketdevice.cpp.
Q_LONG KSocketDevice::writeBlock | ( | const char * | data, | |
Q_ULONG | len, | |||
const KSocketAddress & | to | |||
) | [virtual] |
Writes the given data to the given destination address.
Implements KNetwork::KActiveSocketBase.
Reimplemented in KNetwork::KSocksSocketDevice.
Definition at line 506 of file ksocketdevice.cpp.
Q_LONG KSocketDevice::writeBlock | ( | const char * | data, | |
Q_ULONG | len | |||
) | [virtual] |
Writes data to the socket.
Implements KNetwork::KActiveSocketBase.
Reimplemented in KNetwork::KSocksSocketDevice.
Definition at line 501 of file ksocketdevice.cpp.
QSocketNotifier * KSocketDevice::writeNotifier | ( | ) | const |
Returns a socket notifier for output on this socket.
The is created only when requested.
This function might return NULL.
Definition at line 627 of file ksocketdevice.cpp.
Member Data Documentation
int KNetwork::KSocketDevice::m_sockfd [protected] |
The socket file descriptor.
It is used throughout the implementation and subclasses.
Definition at line 95 of file ksocketdevice.h.
The documentation for this class was generated from the following files: