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.
		
		
		
		
			
				
					111 lines
				
				3.8 KiB
			
		
		
			
		
	
	
					111 lines
				
				3.8 KiB
			| 
								 
											6 years ago
										 
									 | 
							
								/*  =========================================================================
							 | 
						||
| 
								 | 
							
								    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
							 |