Overview
| Comment: | OFDatagramSocket: Add broadcastAllowed property |
|---|---|
| Downloads: | Tarball | ZIP archive | SQL archive |
| Timelines: | family | ancestors | descendants | both | trunk |
| Files: | files | file ages | folders |
| SHA3-256: |
310fd74f895a9a0e5f31e02adefbc2b9 |
| User & Date: | js on 2020-05-03 12:14:25 |
| Other Links: | manifest | tags |
Context
|
2020-05-03
| ||
| 19:36 | Add OFSPXStreamSocket (check-in: 0ded796f1a user: js tags: trunk) | |
| 12:14 | OFDatagramSocket: Add broadcastAllowed property (check-in: 310fd74f89 user: js tags: trunk) | |
|
2020-05-02
| ||
| 19:13 | Update buildsys (check-in: 64f22ba97e user: js tags: trunk) | |
Changes
Modified src/OFDatagramSocket.h from [a18e14bea6] to [c9598f3c24].
| ︙ | ︙ | |||
109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 |
* was called to create one "instance" for every thread!
*/
@interface OFDatagramSocket: OFObject <OFCopying, OFReadyForReadingObserving,
OFReadyForWritingObserving>
{
of_socket_t _socket;
bool _blocking;
id <OFDatagramSocketDelegate> _Nullable _delegate;
OF_RESERVE_IVARS(4)
}
/*!
* @brief Whether the socket is in blocking mode.
*
* By default, a socket is in blocking mode.
*/
@property (nonatomic, getter=isBlocking) bool blocking;
/*!
* @brief The delegate for asynchronous operations on the socket.
*
* @note The delegate is retained for as long as asynchronous operations are
* still ongoing.
*/
@property OF_NULLABLE_PROPERTY (assign, nonatomic)
| > > > > > > > > | 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 |
* was called to create one "instance" for every thread!
*/
@interface OFDatagramSocket: OFObject <OFCopying, OFReadyForReadingObserving,
OFReadyForWritingObserving>
{
of_socket_t _socket;
bool _blocking;
#ifdef OF_WII
bool _broadcastAllowed;
#endif
id <OFDatagramSocketDelegate> _Nullable _delegate;
OF_RESERVE_IVARS(4)
}
/*!
* @brief Whether the socket is in blocking mode.
*
* By default, a socket is in blocking mode.
*/
@property (nonatomic, getter=isBlocking) bool blocking;
/*!
* @brief Whether the socket is allowed to send to broadcast addresses.
*/
@property (nonatomic, getter=isBroadcastAllowed) bool broadcastAllowed;
/*!
* @brief The delegate for asynchronous operations on the socket.
*
* @note The delegate is retained for as long as asynchronous operations are
* still ongoing.
*/
@property OF_NULLABLE_PROPERTY (assign, nonatomic)
|
| ︙ | ︙ |
Modified src/OFDatagramSocket.m from [047e480ca4] to [08aed9e1e3].
| ︙ | ︙ | |||
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | #endif #import "OFDatagramSocket.h" #import "OFData.h" #import "OFRunLoop+Private.h" #import "OFRunLoop.h" #import "OFInitializationFailedException.h" #import "OFNotOpenException.h" #import "OFOutOfRangeException.h" #import "OFReadFailedException.h" #import "OFSetOptionFailedException.h" #import "OFWriteFailedException.h" #import "socket.h" #import "socket_helpers.h" @implementation OFDatagramSocket | > > | 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | #endif #import "OFDatagramSocket.h" #import "OFData.h" #import "OFRunLoop+Private.h" #import "OFRunLoop.h" #import "OFGetOptionFailedException.h" #import "OFInitializationFailedException.h" #import "OFNotOpenException.h" #import "OFOutOfRangeException.h" #import "OFReadFailedException.h" #import "OFSetOptionFailedException.h" #import "OFSetOptionFailedException.h" #import "OFWriteFailedException.h" #import "socket.h" #import "socket_helpers.h" @implementation OFDatagramSocket |
| ︙ | ︙ | |||
122 123 124 125 126 127 128 129 130 131 132 133 134 135 |
errNo: of_socket_errno()];
_blocking = enable;
#else
OF_UNRECOGNIZED_SELECTOR
#endif
}
- (size_t)receiveIntoBuffer: (void *)buffer
length: (size_t)length
sender: (of_socket_address_t *)sender
{
ssize_t ret;
| > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 |
errNo: of_socket_errno()];
_blocking = enable;
#else
OF_UNRECOGNIZED_SELECTOR
#endif
}
- (void)setBroadcastAllowed: (bool)allowed
{
int v = allowed;
if (setsockopt(_socket, SOL_SOCKET, SO_BROADCAST,
(char *)&v, (socklen_t)sizeof(v)) != 0)
@throw [OFSetOptionFailedException
exceptionWithObject: self
errNo: of_socket_errno()];
#ifdef OF_WII
_broadcastAllowed = allowed;
#endif
}
- (bool)isBroadcastAllowed
{
#ifndef OF_WII
int v;
socklen_t len = sizeof(v);
if (getsockopt(_socket, SOL_SOCKET, SO_BROADCAST,
(char *)&v, &len) != 0 || len != sizeof(v))
@throw [OFGetOptionFailedException
exceptionWithObject: self
errNo: of_socket_errno()];
return v;
#else
return _broadcastAllowed;
#endif
}
- (size_t)receiveIntoBuffer: (void *)buffer
length: (size_t)length
sender: (of_socket_address_t *)sender
{
ssize_t ret;
|
| ︙ | ︙ |
Modified src/OFTCPSocket.m from [aa9ac8bab1] to [48edda05b6].
| ︙ | ︙ | |||
947 948 949 950 951 952 953 |
{
int v;
socklen_t len = sizeof(v);
if (getsockopt(_socket, SOL_SOCKET, SO_KEEPALIVE,
(char *)&v, &len) != 0 || len != sizeof(v))
@throw [OFGetOptionFailedException
| | | 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 |
{
int v;
socklen_t len = sizeof(v);
if (getsockopt(_socket, SOL_SOCKET, SO_KEEPALIVE,
(char *)&v, &len) != 0 || len != sizeof(v))
@throw [OFGetOptionFailedException
exceptionWithObject: self
errNo: of_socket_errno()];
return v;
}
#endif
#ifndef OF_WII
|
| ︙ | ︙ | |||
974 975 976 977 978 979 980 |
{
int v;
socklen_t len = sizeof(v);
if (getsockopt(_socket, IPPROTO_TCP, TCP_NODELAY,
(char *)&v, &len) != 0 || len != sizeof(v))
@throw [OFGetOptionFailedException
| | | 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 |
{
int v;
socklen_t len = sizeof(v);
if (getsockopt(_socket, IPPROTO_TCP, TCP_NODELAY,
(char *)&v, &len) != 0 || len != sizeof(v))
@throw [OFGetOptionFailedException
exceptionWithObject: self
errNo: of_socket_errno()];
return v;
}
#endif
- (void)close
|
| ︙ | ︙ |
Modified src/exceptions/OFGetOptionFailedException.h from [4a4969db85] to [70541d2ad1].
| ︙ | ︙ | |||
15 16 17 18 19 20 21 | * file. */ #import "OFException.h" OF_ASSUME_NONNULL_BEGIN | < < | | | | | | | | | 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
* file.
*/
#import "OFException.h"
OF_ASSUME_NONNULL_BEGIN
/*!
* @class OFGetOptionFailedException \
* OFGetOptionFailedException.h ObjFW/OFGetOptionFailedException.h
*
* @brief An exception indicating that getting an option for an object failed.
*/
@interface OFGetOptionFailedException: OFException
{
id _object;
int _errNo;
}
/*!
* @brief The object for which the option could not be retrieved.
*/
@property (readonly, nonatomic) id object;
/*!
* @brief The errno of the error that occurred.
*/
@property (readonly, nonatomic) int errNo;
+ (instancetype)exception OF_UNAVAILABLE;
/*!
* @brief Creates a new, autoreleased get option failed exception.
*
* @param object The object for which the option could not be retrieved
* @param errNo The errno of the error that occurred
* @return A new, autoreleased get option failed exception
*/
+ (instancetype)exceptionWithObject: (id)object
errNo: (int)errNo;
- (instancetype)init OF_UNAVAILABLE;
/*!
* @brief Initializes an already allocated get option failed exception.
*
* @param object The object for which the option could not be retrieved
* @param errNo The errno of the error that occurred
* @return An initialized get option failed exception
*/
- (instancetype)initWithObject: (id)object
errNo: (int)errNo OF_DESIGNATED_INITIALIZER;
@end
OF_ASSUME_NONNULL_END
|
Modified src/exceptions/OFGetOptionFailedException.m from [2c7cb59f5d] to [a2104983ac].
| ︙ | ︙ | |||
15 16 17 18 19 20 21 | * file. */ #include "config.h" #import "OFGetOptionFailedException.h" #import "OFString.h" | < | | | | | | | | | 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
* file.
*/
#include "config.h"
#import "OFGetOptionFailedException.h"
#import "OFString.h"
@implementation OFGetOptionFailedException
@synthesize object = _object, errNo = _errNo;
+ (instancetype)exception
{
OF_UNRECOGNIZED_SELECTOR
}
+ (instancetype)exceptionWithObject: (id)object
errNo: (int)errNo
{
return [[[self alloc] initWithObject: object
errNo: errNo] autorelease];
}
- (instancetype)init
{
OF_INVALID_INIT_METHOD
}
- (instancetype)initWithObject: (id)object
errNo: (int)errNo
{
self = [super init];
_object = [object retain];
_errNo = errNo;
return self;
}
- (void)dealloc
{
[_object release];
[super dealloc];
}
- (OFString *)description
{
return [OFString stringWithFormat:
@"Getting an option in an object of type %@ failed: %@",
[_object class], of_strerror(_errNo)];
}
@end
|