Artifact e31807ae921c3fcfab1ab922efb16577798c27ba2e8b48bdbc643e3ceaceff92:
- File
src/OFSocket.h
— part of check-in
[70874cf3c5]
at
2008-12-07 03:06:33
on branch trunk
— Remove writeWideCString as that's a bad idea.
Endianess, size etc. may differ from system to system. While this might
be ok when writing files that are only read local again, this is
definitely not ok with sockets. So it's better to remove it from the
OFStream protocol. (user: js, size: 2917) [annotate] [blame] [check-ins using]
/* * Copyright (c) 2008 * Jonathan Schleifer <js@webkeks.org> * * All rights reserved. * * This file is part of libobjfw. It may be distributed under the terms of the * Q Public License 1.0, which can be found in the file LICENSE included in * the packaging of this file. */ #import <stdio.h> #import <sys/types.h> #import <sys/socket.h> #import <netdb.h> #import "OFObject.h" #import "OFStream.h" /** * The OFSocketAddress class is a class to build socket addresses. */ @interface OFSocketAddress: OFObject { char *hoststr, portstr[6]; struct addrinfo hints, *res; } /** * \param host The host of the address * \param port The port of the address * \param family The protocol family to use * \param type The socket type to use * \param protocol The specific protocol to use * \return A new OFSocketAddress */ + newWithHost: (const char*)host andPort: (uint16_t)port andFamily: (int)family andType: (int)type andProtocol: (int)protocol; /** * Initializes an already allocated OFSocketAddress. * * \param host The host of the address * \param port The port of the address * \param family The protocol family to use * \param type The socket type to use * \param protocol The specific protocol to use * \return An initialized OFSocketAddress */ - initWithHost: (const char*)host andPort: (uint16_t)port andFamily: (int)family andType: (int)type andProtocol: (int)protocol; /* * \return The addrinfo struct for the OFSocketAddress */ - (struct addrinfo*)getAddressInfo; - free; @end /** * The OFSocket class provides functions to create and use sockets. */ @interface OFSocket: OFObject <OFStream> { int sock; } - free; /** * Connect the OFSocket to a destination specified in an OFSocketAddress. * * \param addr A OFSocketAddress to connect to. */ - connect: (OFSocketAddress*)addr; /** * Receive data from the socket into a buffer. * * \param buf The buffer into which the data is read * \param size The size of the data that should be read. * The buffer MUST be at least size big! * \return The number of bytes read */ - (size_t)readNBytes: (size_t)size intoBuffer: (uint8_t*)buf; /** * Receive data from the socket into a new buffer. * * \param size The size of the data that should be read * \return A new buffer with the data read. * It is part of the memory pool of the OFFile. */ - (uint8_t*)readNBytes: (size_t)size; /** * Sends data from a buffer. * * \param buf The buffer from which the data is written to the file * \param size The size of the data that should be written * \return The number of bytes written */ - (size_t)writeNBytes: (size_t)size fromBuffer: (const uint8_t*)buf; /** * Sends a C string, without the trailing zero. * * \param str The C string from which the data is sent * \return The number of bytes written */ - (size_t)writeCString: (const char*)str; @end