gather.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 "gather.hpp"
6 #include "err.hpp"
7 #include "msg.hpp"
8 #include "pipe.hpp"
9 
10 zmq::gather_t::gather_t (class ctx_t *parent_, uint32_t tid_, int sid_) :
11  socket_base_t (parent_, tid_, sid_, true)
12 {
13  options.type = ZMQ_GATHER;
14 }
15 
16 zmq::gather_t::~gather_t ()
17 {
18 }
19 
20 void zmq::gather_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  zmq_assert (pipe_);
28  _fq.attach (pipe_);
29 }
30 
31 void zmq::gather_t::xread_activated (pipe_t *pipe_)
32 {
33  _fq.activated (pipe_);
34 }
35 
36 void zmq::gather_t::xpipe_terminated (pipe_t *pipe_)
37 {
38  _fq.pipe_terminated (pipe_);
39 }
40 
41 int zmq::gather_t::xrecv (msg_t *msg_)
42 {
43  int rc = _fq.recvpipe (msg_, NULL);
44 
45  // Drop any messages with more flag
46  while (rc == 0 && msg_->flags () & msg_t::more) {
47  // drop all frames of the current multi-frame message
48  rc = _fq.recvpipe (msg_, NULL);
49 
50  while (rc == 0 && msg_->flags () & msg_t::more)
51  rc = _fq.recvpipe (msg_, NULL);
52 
53  // get the new message
54  if (rc == 0)
55  rc = _fq.recvpipe (msg_, NULL);
56  }
57 
58  return rc;
59 }
60 
61 bool zmq::gather_t::xhas_in ()
62 {
63  return _fq.has_in ();
64 }
gather.hpp
ZMQ_GATHER
#define ZMQ_GATHER
Definition: zmq_draft.h:18
NULL
NULL
Definition: test_security_zap.cpp:405
options
Message * options
Definition: src/google/protobuf/descriptor.cc:3119
precompiled.hpp
zmq_assert
#define zmq_assert(x)
Definition: err.hpp:102
macros.hpp
LIBZMQ_UNUSED
#define LIBZMQ_UNUSED(object)
Definition: macros.hpp:6
pipe.hpp
msg.hpp
err.hpp
true
#define true
Definition: cJSON.c:65


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