remote_thr.cpp
Go to the documentation of this file.
1 /* SPDX-License-Identifier: MPL-2.0 */
2 
3 #include "../include/zmq.h"
4 #include <stdio.h>
5 #include <stdlib.h>
6 #include <string.h>
7 
8 // keys are arbitrary but must match local_lat.cpp
9 const char server_pubkey[] = "DX4nh=yUn{-9ugra0X3Src4SU-4xTgqxcYY.+<SH";
10 const char client_pubkey[] = "<n^oA}I:66W+*ds3tAmi1+KJzv-}k&fC2aA5Bj0K";
11 const char client_prvkey[] = "9R9bV}[6z6DC-%$!jTVTKvWc=LEL{4i4gzUe$@Zx";
12 
13 int main (int argc, char *argv[])
14 {
15  const char *connect_to;
16  int message_count;
17  int message_size;
18  void *ctx;
19  void *s;
20  int rc;
21  int i;
22  zmq_msg_t msg;
23  int curve = 0;
24 
25  if (argc != 4 && argc != 5) {
26  printf ("usage: remote_thr <connect-to> <message-size> "
27  "<message-count> [<enable_curve>]\n");
28  return 1;
29  }
30  connect_to = argv[1];
31  message_size = atoi (argv[2]);
32  message_count = atoi (argv[3]);
33  if (argc >= 5 && atoi (argv[4])) {
34  curve = 1;
35  }
36 
37  ctx = zmq_init (1);
38  if (!ctx) {
39  printf ("error in zmq_init: %s\n", zmq_strerror (errno));
40  return -1;
41  }
42 
43  s = zmq_socket (ctx, ZMQ_PUSH);
44  if (!s) {
45  printf ("error in zmq_socket: %s\n", zmq_strerror (errno));
46  return -1;
47  }
48 
49  // Add your socket options here.
50  // For example ZMQ_RATE, ZMQ_RECOVERY_IVL and ZMQ_MCAST_LOOP for PGM.
51  if (curve) {
53  sizeof (client_prvkey));
54  if (rc != 0) {
55  printf ("error in zmq_setsockoopt: %s\n", zmq_strerror (errno));
56  return -1;
57  }
58 
60  sizeof (client_pubkey));
61  if (rc != 0) {
62  printf ("error in zmq_setsockoopt: %s\n", zmq_strerror (errno));
63  return -1;
64  }
65 
67  sizeof (server_pubkey));
68  if (rc != 0) {
69  printf ("error in zmq_setsockoopt: %s\n", zmq_strerror (errno));
70  return -1;
71  }
72  }
73 
74  rc = zmq_connect (s, connect_to);
75  if (rc != 0) {
76  printf ("error in zmq_connect: %s\n", zmq_strerror (errno));
77  return -1;
78  }
79 
80  for (i = 0; i != message_count; i++) {
81  rc = zmq_msg_init_size (&msg, message_size);
82  if (rc != 0) {
83  printf ("error in zmq_msg_init_size: %s\n", zmq_strerror (errno));
84  return -1;
85  }
86  rc = zmq_sendmsg (s, &msg, 0);
87  if (rc < 0) {
88  printf ("error in zmq_sendmsg: %s\n", zmq_strerror (errno));
89  return -1;
90  }
91  rc = zmq_msg_close (&msg);
92  if (rc != 0) {
93  printf ("error in zmq_msg_close: %s\n", zmq_strerror (errno));
94  return -1;
95  }
96  }
97 
98  rc = zmq_close (s);
99  if (rc != 0) {
100  printf ("error in zmq_close: %s\n", zmq_strerror (errno));
101  return -1;
102  }
103 
104  rc = zmq_ctx_term (ctx);
105  if (rc != 0) {
106  printf ("error in zmq_ctx_term: %s\n", zmq_strerror (errno));
107  return -1;
108  }
109 
110  return 0;
111 }
zmq_strerror
const ZMQ_EXPORT char * zmq_strerror(int errnum_)
Definition: zmq.cpp:96
server_pubkey
const char server_pubkey[]
Definition: remote_thr.cpp:9
s
XmlRpcServer s
ZMQ_CURVE_SECRETKEY
#define ZMQ_CURVE_SECRETKEY
Definition: zmq.h:314
ZMQ_CURVE_SERVERKEY
#define ZMQ_CURVE_SERVERKEY
Definition: zmq.h:315
zmq_sendmsg
ZMQ_EXPORT int zmq_sendmsg(void *s_, zmq_msg_t *msg_, int flags_)
Definition: zmq.cpp:372
errno
int errno
zmq_connect
ZMQ_EXPORT int zmq_connect(void *s_, const char *addr_)
Definition: zmq.cpp:307
message_size
static size_t message_size
Definition: inproc_lat.cpp:18
zmq_setsockopt
ZMQ_EXPORT int zmq_setsockopt(void *s_, int option_, const void *optval_, size_t optvallen_)
Definition: zmq.cpp:250
ZMQ_PUSH
#define ZMQ_PUSH
Definition: zmq.h:266
zmq_msg_t
Definition: zmq.h:218
zmq_socket
ZMQ_EXPORT void * zmq_socket(void *, int type_)
Definition: zmq.cpp:230
zmq_close
ZMQ_EXPORT int zmq_close(void *s_)
Definition: zmq.cpp:241
i
int i
Definition: gmock-matchers_test.cc:764
zmq_msg_init_size
ZMQ_EXPORT int zmq_msg_init_size(zmq_msg_t *msg_, size_t size_)
Definition: zmq.cpp:592
zmq_init
ZMQ_EXPORT void * zmq_init(int io_threads_)
Definition: zmq.cpp:196
client_pubkey
const char client_pubkey[]
Definition: remote_thr.cpp:10
client_prvkey
const char client_prvkey[]
Definition: remote_thr.cpp:11
main
int main(int argc, char *argv[])
Definition: remote_thr.cpp:13
zmq_ctx_term
ZMQ_EXPORT int zmq_ctx_term(void *context_)
Definition: zmq.cpp:128
message_count
static int message_count
Definition: inproc_thr.cpp:18
zmq_msg_close
ZMQ_EXPORT int zmq_msg_close(zmq_msg_t *msg_)
Definition: zmq.cpp:625
ZMQ_CURVE_PUBLICKEY
#define ZMQ_CURVE_PUBLICKEY
Definition: zmq.h:313


libaditof
Author(s):
autogenerated on Wed May 21 2025 02:06:58