scatter.cpp
Go to the documentation of this file.
1 /* SPDX-License-Identifier: MPL-2.0 */
2 
3 #include "precompiled.hpp"
4 #include "macros.hpp"
5 #include "scatter.hpp"
6 #include "pipe.hpp"
7 #include "err.hpp"
8 #include "msg.hpp"
9 
10 zmq::scatter_t::scatter_t (class ctx_t *parent_, uint32_t tid_, int sid_) :
11  socket_base_t (parent_, tid_, sid_, true)
12 {
13  options.type = ZMQ_SCATTER;
14 }
15 
16 zmq::scatter_t::~scatter_t ()
17 {
18 }
19 
20 void zmq::scatter_t::xattach_pipe (pipe_t *pipe_,
21  bool subscribe_to_all_,
22  bool locally_initiated_)
23 {
24  LIBZMQ_UNUSED (subscribe_to_all_);
25  LIBZMQ_UNUSED (locally_initiated_);
26 
27  // Don't delay pipe termination as there is no one
28  // to receive the delimiter.
29  pipe_->set_nodelay ();
30 
31  zmq_assert (pipe_);
32  _lb.attach (pipe_);
33 }
34 
35 void zmq::scatter_t::xwrite_activated (pipe_t *pipe_)
36 {
37  _lb.activated (pipe_);
38 }
39 
40 void zmq::scatter_t::xpipe_terminated (pipe_t *pipe_)
41 {
42  _lb.pipe_terminated (pipe_);
43 }
44 
45 int zmq::scatter_t::xsend (msg_t *msg_)
46 {
47  // SCATTER sockets do not allow multipart data (ZMQ_SNDMORE)
48  if (msg_->flags () & msg_t::more) {
49  errno = EINVAL;
50  return -1;
51  }
52 
53  return _lb.send (msg_);
54 }
55 
56 bool zmq::scatter_t::xhas_out ()
57 {
58  return _lb.has_out ();
59 }
scatter.hpp
options
Message * options
Definition: src/google/protobuf/descriptor.cc:3119
EINVAL
#define EINVAL
Definition: errno.hpp:25
precompiled.hpp
zmq_assert
#define zmq_assert(x)
Definition: err.hpp:102
errno
int errno
macros.hpp
LIBZMQ_UNUSED
#define LIBZMQ_UNUSED(object)
Definition: macros.hpp:6
pipe.hpp
msg.hpp
ZMQ_SCATTER
#define ZMQ_SCATTER
Definition: zmq_draft.h:19
err.hpp
true
#define true
Definition: cJSON.c:65


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