diff options
Diffstat (limited to 'myservice.c')
-rw-r--r-- | myservice.c | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/myservice.c b/myservice.c new file mode 100644 index 0000000..89a031b --- /dev/null +++ b/myservice.c @@ -0,0 +1,70 @@ +/* myservice.c: Service (publisher) component. + * + * Copyright (C) 2011 VMware, Inc. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <unistd.h> +#include <zmq.h> + +#define ERR_EXIT(what) { \ + fprintf (stderr, "error in %s: %s\n", what, zmq_strerror (errno)); \ + exit (EXIT_FAILURE); \ + } + +int main (int argc, char *argv []) +{ + const char *bind_to; + const char *message = "MESSAGE"; + void *ctx; + void *s; + int rc; + + if (argc != 2) { + fprintf (stderr, "usage: myservice <service-bind-ep>\n"); + exit (EXIT_FAILURE); + } + bind_to = argv [1]; + + ctx = zmq_init (1); + if (!ctx) + ERR_EXIT ("zmq_init"); + + s = zmq_socket (ctx, ZMQ_PUB); + if (!s) + ERR_EXIT ("zmq_socket"); + + rc = zmq_bind (s, bind_to); + if (rc != 0) + ERR_EXIT ("zmq_bind"); + + for (;;) { + rc = zmq_send (s, message, sizeof message, 0); + if (rc != sizeof message) + ERR_EXIT ("zmq_send"); + + sleep (1); + } + + exit (EXIT_SUCCESS); +} |