mirror of
https://github.com/zeromq/libzmq.git
synced 2025-03-12 17:12:46 +00:00
This commit introduces the necessary changes necessary for implementing flow control. None of the socket types implements the flow control yet. The code will crash when the flow control is enabled and the thw lwm is reached. The following commits will add flow-control support for individual socket types.
63 lines
1.9 KiB
C++
63 lines
1.9 KiB
C++
/*
|
|
Copyright (c) 2007-2010 iMatix Corporation
|
|
|
|
This file is part of 0MQ.
|
|
|
|
0MQ is free software; you can redistribute it and/or modify it under
|
|
the terms of the Lesser GNU General Public License as published by
|
|
the Free Software Foundation; either version 3 of the License, or
|
|
(at your option) any later version.
|
|
|
|
0MQ is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
Lesser GNU General Public License for more details.
|
|
|
|
You should have received a copy of the Lesser GNU General Public License
|
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
#ifndef __ZMQ_DOWNSTREAM_HPP_INCLUDED__
|
|
#define __ZMQ_DOWNSTREAM_HPP_INCLUDED__
|
|
|
|
#include "socket_base.hpp"
|
|
#include "lb.hpp"
|
|
|
|
namespace zmq
|
|
{
|
|
|
|
class downstream_t : public socket_base_t
|
|
{
|
|
public:
|
|
|
|
downstream_t (class app_thread_t *parent_);
|
|
~downstream_t ();
|
|
|
|
// Overloads of functions from socket_base_t.
|
|
void xattach_pipes (class reader_t *inpipe_, class writer_t *outpipe_,
|
|
const blob_t &peer_identity_);
|
|
void xdetach_inpipe (class reader_t *pipe_);
|
|
void xdetach_outpipe (class writer_t *pipe_);
|
|
void xkill (class reader_t *pipe_);
|
|
void xrevive (class reader_t *pipe_);
|
|
void xrevive (class writer_t *pipe_);
|
|
int xsetsockopt (int option_, const void *optval_, size_t optvallen_);
|
|
int xsend (zmq_msg_t *msg_, int flags_);
|
|
int xflush ();
|
|
int xrecv (zmq_msg_t *msg_, int flags_);
|
|
bool xhas_in ();
|
|
bool xhas_out ();
|
|
|
|
private:
|
|
|
|
// Load balancer managing the outbound pipes.
|
|
lb_t lb;
|
|
|
|
downstream_t (const downstream_t&);
|
|
void operator = (const downstream_t&);
|
|
};
|
|
|
|
}
|
|
|
|
#endif
|