30 #include "../include/zmq.h" 36 #include "platform.hpp" 38 #if defined ZMQ_HAVE_WINDOWS 48 #if defined ZMQ_HAVE_WINDOWS 49 static unsigned int __stdcall
worker (
void *ctx_)
61 printf (
"error in zmq_socket: %s\n",
zmq_strerror (errno));
67 printf (
"error in zmq_connect: %s\n",
zmq_strerror (errno));
73 printf (
"error in zmq_msg_init: %s\n",
zmq_strerror (errno));
80 printf (
"error in zmq_recvmsg: %s\n",
zmq_strerror (errno));
85 printf (
"error in zmq_sendmsg: %s\n",
zmq_strerror (errno));
92 printf (
"error in zmq_msg_close: %s\n",
zmq_strerror (errno));
98 printf (
"error in zmq_close: %s\n",
zmq_strerror (errno));
102 #if defined ZMQ_HAVE_WINDOWS 109 int main (
int argc,
char *argv [])
111 #if defined ZMQ_HAVE_WINDOWS 114 pthread_t local_thread;
122 unsigned long elapsed;
126 printf (
"usage: inproc_lat <message-size> <roundtrip-count>\n");
131 roundtrip_count = atoi (argv [2]);
135 printf (
"error in zmq_init: %s\n",
zmq_strerror (errno));
141 printf (
"error in zmq_socket: %s\n",
zmq_strerror (errno));
145 rc =
zmq_bind (s,
"inproc://lat_test");
147 printf (
"error in zmq_bind: %s\n",
zmq_strerror (errno));
151 #if defined ZMQ_HAVE_WINDOWS 152 local_thread = (HANDLE) _beginthreadex (NULL, 0,
154 if (local_thread == 0) {
155 printf (
"error in _beginthreadex\n");
159 rc = pthread_create (&local_thread, NULL,
worker, ctx);
161 printf (
"error in pthread_create: %s\n",
zmq_strerror (rc));
168 printf (
"error in zmq_msg_init_size: %s\n",
zmq_strerror (errno));
174 printf (
"roundtrip count: %d\n", (
int) roundtrip_count);
181 printf (
"error in zmq_sendmsg: %s\n",
zmq_strerror (errno));
186 printf (
"error in zmq_recvmsg: %s\n",
zmq_strerror (errno));
190 printf (
"message of incorrect size received\n");
199 printf (
"error in zmq_msg_close: %s\n",
zmq_strerror (errno));
203 latency = (double) elapsed / (roundtrip_count * 2);
205 #if defined ZMQ_HAVE_WINDOWS 206 DWORD rc2 = WaitForSingleObject (local_thread, INFINITE);
207 if (rc2 == WAIT_FAILED) {
208 printf (
"error in WaitForSingleObject\n");
211 BOOL rc3 = CloseHandle (local_thread);
213 printf (
"error in CloseHandle\n");
217 rc = pthread_join (local_thread, NULL);
219 printf (
"error in pthread_join: %s\n",
zmq_strerror (rc));
224 printf (
"average latency: %.3f [us]\n", (
double) latency);
228 printf (
"error in zmq_close: %s\n",
zmq_strerror (errno));
234 printf (
"error in zmq_ctx_term: %s\n",
zmq_strerror (errno));
static void * worker(void *ctx_)
static size_t message_size
ZMQ_EXPORT void * zmq_init(int io_threads)
ZMQ_EXPORT int zmq_recvmsg(void *s, zmq_msg_t *msg, int flags)
ZMQ_EXPORT unsigned long zmq_stopwatch_stop(void *watch_)
ZMQ_EXPORT void * zmq_msg_data(zmq_msg_t *msg)
ZMQ_EXPORT void * zmq_socket(void *, int type)
ZMQ_EXPORT int zmq_connect(void *s, const char *addr)
ZMQ_EXPORT int zmq_close(void *s)
ZMQ_EXPORT int zmq_sendmsg(void *s, zmq_msg_t *msg, int flags)
ZMQ_EXPORT const char * zmq_strerror(int errnum)
ZMQ_EXPORT int zmq_bind(void *s, const char *addr)
ZMQ_EXPORT int zmq_ctx_term(void *context)
ZMQ_EXPORT void * zmq_stopwatch_start(void)
ZMQ_EXPORT int zmq_msg_close(zmq_msg_t *msg)
ZMQ_EXPORT int zmq_msg_init_size(zmq_msg_t *msg, size_t size)
int main(int argc, char *argv[])
ZMQ_EXPORT size_t zmq_msg_size(zmq_msg_t *msg)
ZMQ_EXPORT int zmq_msg_init(zmq_msg_t *msg)
static int roundtrip_count