openpilot is an open source driver assistance system. openpilot performs the functions of Automated Lane Centering and Adaptive Cruise Control for over 200 supported car makes and models.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

110 lines
3.8 KiB

/* =========================================================================
zsocket - working with 0MQ sockets
Copyright (c) the Contributors as noted in the AUTHORS file.
This file is part of CZMQ, the high-level C binding for 0MQ:
http://czmq.zeromq.org.
This Source Code Form is subject to the terms of the Mozilla Public
License, v. 2.0. If a copy of the MPL was not distributed with this
file, You can obtain one at http://mozilla.org/MPL/2.0/.
=========================================================================
*/
#ifndef __ZSOCKET_H_INCLUDED__
#define __ZSOCKET_H_INCLUDED__
#ifdef __cplusplus
extern "C" {
#endif
// @interface
// This port range is defined by IANA for dynamic or private ports
// We use this when choosing a port for dynamic binding.
#define ZSOCKET_DYNFROM 0xc000
#define ZSOCKET_DYNTO 0xffff
// Callback function for zero-copy methods
typedef void (zsocket_free_fn) (void *data, void *arg);
// Create a new socket within our CZMQ context, replaces zmq_socket.
// Use this to get automatic management of the socket at shutdown.
// Note: SUB sockets do not automatically subscribe to everything; you
// must set filters explicitly.
CZMQ_EXPORT void *
zsocket_new (zctx_t *self, int type);
// Destroy a socket within our CZMQ context, replaces zmq_close.
CZMQ_EXPORT void
zsocket_destroy (zctx_t *ctx, void *self);
// Bind a socket to a formatted endpoint. If the port is specified as
// '*', binds to any free port from ZSOCKET_DYNFROM to ZSOCKET_DYNTO
// and returns the actual port number used. Otherwise asserts that the
// bind succeeded with the specified port number. Always returns the
// port number if successful.
CZMQ_EXPORT int
zsocket_bind (void *self, const char *format, ...);
// Unbind a socket from a formatted endpoint.
// Returns 0 if OK, -1 if the endpoint was invalid or the function
// isn't supported.
CZMQ_EXPORT int
zsocket_unbind (void *self, const char *format, ...);
// Connect a socket to a formatted endpoint
// Returns 0 if OK, -1 if the endpoint was invalid.
CZMQ_EXPORT int
zsocket_connect (void *self, const char *format, ...);
// Disconnect a socket from a formatted endpoint
// Returns 0 if OK, -1 if the endpoint was invalid or the function
// isn't supported.
CZMQ_EXPORT int
zsocket_disconnect (void *self, const char *format, ...);
// Poll for input events on the socket. Returns TRUE if there is input
// ready on the socket, else FALSE.
CZMQ_EXPORT bool
zsocket_poll (void *self, int msecs);
// Returns socket type as printable constant string
CZMQ_EXPORT const char *
zsocket_type_str (void *self);
// Send data over a socket as a single message frame.
// Accepts these flags: ZFRAME_MORE and ZFRAME_DONTWAIT.
// Returns -1 on error, 0 on success
CZMQ_EXPORT int
zsocket_sendmem (void *self, const void *data, size_t size, int flags);
// Send a signal over a socket. A signal is a zero-byte message.
// Signals are used primarily between threads, over pipe sockets.
// Returns -1 if there was an error sending the signal.
CZMQ_EXPORT int
zsocket_signal (void *self);
// Wait on a signal. Use this to coordinate between threads, over
// pipe pairs. Returns -1 on error, 0 on success.
CZMQ_EXPORT int
zsocket_wait (void *self);
// Self test of this class
CZMQ_EXPORT void
zsocket_test (bool verbose);
// @end
// Compiler hints
CZMQ_EXPORT int zsocket_bind (void *self, const char *format, ...) CHECK_PRINTF (2);
CZMQ_EXPORT int zsocket_unbind (void *self, const char *format, ...) CHECK_PRINTF (2);
CZMQ_EXPORT int zsocket_connect (void *self, const char *format, ...) CHECK_PRINTF (2);
CZMQ_EXPORT int zsocket_disconnect (void *self, const char *format, ...) CHECK_PRINTF (2);
// Emulation of widely-used 2.x socket options
CZMQ_EXPORT void zsocket_set_hwm (void *self, int hwm);
#ifdef __cplusplus
}
#endif
#endif