NetworkSocketAPI

Dependencies:   DnsQuery

Dependents:   HelloWizFi250Interface

Fork of NetworkSocketAPI by NetworkSocketAPI

Committer:
Christopher Haster
Date:
Tue Apr 19 18:20:38 2016 -0500
Revision:
89:b1d417383c0d
Parent:
87:94e2cf3a06be
Child:
90:0a988e4abb72
Adopt mbed style doxygen comments

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Christopher Haster 89:b1d417383c0d 1 /* Socket
Christopher Haster 89:b1d417383c0d 2 * Copyright (c) 2015 ARM Limited
Christopher Haster 89:b1d417383c0d 3 *
Christopher Haster 89:b1d417383c0d 4 * Licensed under the Apache License, Version 2.0 (the "License");
Christopher Haster 89:b1d417383c0d 5 * you may not use this file except in compliance with the License.
Christopher Haster 89:b1d417383c0d 6 * You may obtain a copy of the License at
Christopher Haster 89:b1d417383c0d 7 *
Christopher Haster 89:b1d417383c0d 8 * http://www.apache.org/licenses/LICENSE-2.0
Christopher Haster 89:b1d417383c0d 9 *
Christopher Haster 89:b1d417383c0d 10 * Unless required by applicable law or agreed to in writing, software
Christopher Haster 89:b1d417383c0d 11 * distributed under the License is distributed on an "AS IS" BASIS,
Christopher Haster 89:b1d417383c0d 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
Christopher Haster 89:b1d417383c0d 13 * See the License for the specific language governing permissions and
Christopher Haster 89:b1d417383c0d 14 * limitations under the License.
Christopher Haster 89:b1d417383c0d 15 */
Christopher Haster 89:b1d417383c0d 16
Christopher Haster 89:b1d417383c0d 17 #ifndef SOCKET_H
Christopher Haster 89:b1d417383c0d 18 #define SOCKET_H
Christopher Haster 89:b1d417383c0d 19
Christopher Haster 89:b1d417383c0d 20 #include "SocketAddress.h"
Christopher Haster 89:b1d417383c0d 21 #include "NetworkInterface.h"
Christopher Haster 89:b1d417383c0d 22
Christopher Haster 89:b1d417383c0d 23 /** Abstract socket class
Christopher Haster 89:b1d417383c0d 24 */
Christopher Haster 89:b1d417383c0d 25 class Socket {
Christopher Haster 89:b1d417383c0d 26 public:
Christopher Haster 89:b1d417383c0d 27 /** Socket lifetime
Christopher Haster 89:b1d417383c0d 28 */
Christopher Haster 89:b1d417383c0d 29 virtual ~Socket();
Christopher Haster 89:b1d417383c0d 30
Christopher Haster 89:b1d417383c0d 31 /** Set blocking or non-blocking mode of the socket
Christopher Haster 89:b1d417383c0d 32 * @param blocking true for blocking mode, false for non-blocking mode.
Christopher Haster 89:b1d417383c0d 33 */
Christopher Haster 89:b1d417383c0d 34 void set_blocking(bool blocking);
Christopher Haster 89:b1d417383c0d 35
Christopher Haster 89:b1d417383c0d 36 /** Set timeout on a socket operation if blocking behaviour is enabled
Christopher Haster 89:b1d417383c0d 37 * @param timeout timeout in ms
Christopher Haster 89:b1d417383c0d 38 */
Christopher Haster 89:b1d417383c0d 39 void set_timeout(unsigned int timeout);
Christopher Haster 89:b1d417383c0d 40
Christopher Haster 89:b1d417383c0d 41 /* Set socket options
Christopher Haster 89:b1d417383c0d 42 * @param optname Option ID
Christopher Haster 89:b1d417383c0d 43 * @param optval Option value
Christopher Haster 89:b1d417383c0d 44 * @param optlen Length of the option value
Christopher Haster 89:b1d417383c0d 45 * @return 0 on success, negative on failure
Christopher Haster 89:b1d417383c0d 46 */
Christopher Haster 89:b1d417383c0d 47 int set_option(int optname, const void *optval, unsigned optlen);
Christopher Haster 89:b1d417383c0d 48
Christopher Haster 89:b1d417383c0d 49 /* Get socket options
Christopher Haster 89:b1d417383c0d 50 * @param optname Option ID
Christopher Haster 89:b1d417383c0d 51 * @param optval Buffer pointer where to write the option value
Christopher Haster 89:b1d417383c0d 52 * @param optlen Length of the option value
Christopher Haster 89:b1d417383c0d 53 * @return 0 on success, negative on failure
Christopher Haster 89:b1d417383c0d 54 */
Christopher Haster 89:b1d417383c0d 55 int get_option(int optname, void *optval, unsigned *optlen);
Christopher Haster 89:b1d417383c0d 56
Christopher Haster 89:b1d417383c0d 57 /** Close the socket
Christopher Haster 89:b1d417383c0d 58 * @param shutdown free the left-over data in message queues
Christopher Haster 89:b1d417383c0d 59 */
Christopher Haster 89:b1d417383c0d 60 int close(bool shutdown=true);
Christopher Haster 89:b1d417383c0d 61
Christopher Haster 89:b1d417383c0d 62 protected:
Christopher Haster 89:b1d417383c0d 63 Socket(NetworkInterface *iface, nsapi_protocol_t proto);
Christopher Haster 89:b1d417383c0d 64
Christopher Haster 89:b1d417383c0d 65 static void thunk(void *);
Christopher Haster 89:b1d417383c0d 66
Christopher Haster 89:b1d417383c0d 67 NetworkInterface *_iface;
Christopher Haster 89:b1d417383c0d 68 void *_socket;
Christopher Haster 89:b1d417383c0d 69 bool _blocking;
Christopher Haster 89:b1d417383c0d 70 unsigned _timeout;
Christopher Haster 89:b1d417383c0d 71 };
Christopher Haster 89:b1d417383c0d 72
Christopher Haster 89:b1d417383c0d 73 #endif