mirror of
https://github.com/zeromq/libzmq.git
synced 2025-03-10 16:06:09 +00:00
Problem: status method duplicated between curve_server_t and plain_server_t
Solution: extract into new intermediate base class zap_client_common_handshake_t
This commit is contained in:
parent
ebba815a4d
commit
314a3acfa9
@ -42,8 +42,7 @@ zmq::curve_server_t::curve_server_t (session_base_t *session_,
|
|||||||
const std::string &peer_address_,
|
const std::string &peer_address_,
|
||||||
const options_t &options_) :
|
const options_t &options_) :
|
||||||
mechanism_t (options_),
|
mechanism_t (options_),
|
||||||
zap_client_t (session_, peer_address_, options_),
|
zap_client_common_handshake_t (session_, peer_address_, options_),
|
||||||
state (waiting_for_hello),
|
|
||||||
current_error_detail (no_detail),
|
current_error_detail (no_detail),
|
||||||
cn_nonce (1),
|
cn_nonce (1),
|
||||||
cn_peer_nonce (1)
|
cn_peer_nonce (1)
|
||||||
@ -260,17 +259,6 @@ int zmq::curve_server_t::zap_msg_available ()
|
|||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
zmq::mechanism_t::status_t zmq::curve_server_t::status () const
|
|
||||||
{
|
|
||||||
if (state == ready)
|
|
||||||
return mechanism_t::ready;
|
|
||||||
else
|
|
||||||
if (state == error_sent)
|
|
||||||
return mechanism_t::error;
|
|
||||||
else
|
|
||||||
return mechanism_t::handshaking;
|
|
||||||
}
|
|
||||||
|
|
||||||
zmq::mechanism_t::error_detail_t zmq::curve_server_t::error_detail() const
|
zmq::mechanism_t::error_detail_t zmq::curve_server_t::error_detail() const
|
||||||
{
|
{
|
||||||
return current_error_detail;
|
return current_error_detail;
|
||||||
|
@ -59,7 +59,7 @@ namespace zmq
|
|||||||
class msg_t;
|
class msg_t;
|
||||||
class session_base_t;
|
class session_base_t;
|
||||||
|
|
||||||
class curve_server_t : public zap_client_t
|
class curve_server_t : public zap_client_common_handshake_t
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|
||||||
@ -74,14 +74,10 @@ namespace zmq
|
|||||||
virtual int encode (msg_t *msg_);
|
virtual int encode (msg_t *msg_);
|
||||||
virtual int decode (msg_t *msg_);
|
virtual int decode (msg_t *msg_);
|
||||||
virtual int zap_msg_available ();
|
virtual int zap_msg_available ();
|
||||||
virtual status_t status () const;
|
|
||||||
virtual error_detail_t error_detail () const;
|
virtual error_detail_t error_detail () const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
// Current FSM state
|
|
||||||
state_t state;
|
|
||||||
|
|
||||||
// Details about the current error state
|
// Details about the current error state
|
||||||
error_detail_t current_error_detail;
|
error_detail_t current_error_detail;
|
||||||
|
|
||||||
|
@ -41,8 +41,7 @@ zmq::plain_server_t::plain_server_t (session_base_t *session_,
|
|||||||
const std::string &peer_address_,
|
const std::string &peer_address_,
|
||||||
const options_t &options_) :
|
const options_t &options_) :
|
||||||
mechanism_t (options_),
|
mechanism_t (options_),
|
||||||
zap_client_t (session_, peer_address_, options_),
|
zap_client_common_handshake_t (session_, peer_address_, options_)
|
||||||
state (waiting_for_hello)
|
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -104,17 +103,6 @@ int zmq::plain_server_t::process_handshake_command (msg_t *msg_)
|
|||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
zmq::mechanism_t::status_t zmq::plain_server_t::status () const
|
|
||||||
{
|
|
||||||
if (state == ready)
|
|
||||||
return mechanism_t::ready;
|
|
||||||
else
|
|
||||||
if (state == error_sent)
|
|
||||||
return mechanism_t::error;
|
|
||||||
else
|
|
||||||
return mechanism_t::handshaking;
|
|
||||||
}
|
|
||||||
|
|
||||||
int zmq::plain_server_t::zap_msg_available ()
|
int zmq::plain_server_t::zap_msg_available ()
|
||||||
{
|
{
|
||||||
if (state != waiting_for_zap_reply) {
|
if (state != waiting_for_zap_reply) {
|
||||||
|
@ -40,7 +40,7 @@ namespace zmq
|
|||||||
class msg_t;
|
class msg_t;
|
||||||
class session_base_t;
|
class session_base_t;
|
||||||
|
|
||||||
class plain_server_t : public zap_client_t
|
class plain_server_t : public zap_client_common_handshake_t
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|
||||||
@ -53,7 +53,6 @@ namespace zmq
|
|||||||
virtual int next_handshake_command (msg_t *msg_);
|
virtual int next_handshake_command (msg_t *msg_);
|
||||||
virtual int process_handshake_command (msg_t *msg_);
|
virtual int process_handshake_command (msg_t *msg_);
|
||||||
virtual int zap_msg_available ();
|
virtual int zap_msg_available ();
|
||||||
virtual status_t status () const;
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
|
@ -220,4 +220,23 @@ int zap_client_t::receive_and_process_zap_reply ()
|
|||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
zap_client_common_handshake_t::zap_client_common_handshake_t (
|
||||||
|
session_base_t *const session_,
|
||||||
|
const std::string &peer_address_,
|
||||||
|
const options_t &options_) :
|
||||||
|
zap_client_t (session_, peer_address_, options_),
|
||||||
|
state (waiting_for_hello)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
zmq::mechanism_t::status_t zap_client_common_handshake_t::status () const
|
||||||
|
{
|
||||||
|
if (state == ready)
|
||||||
|
return mechanism_t::ready;
|
||||||
|
else if (state == error_sent)
|
||||||
|
return mechanism_t::error;
|
||||||
|
else
|
||||||
|
return mechanism_t::handshaking;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -63,6 +63,17 @@ class zap_client_t : public virtual mechanism_t
|
|||||||
|
|
||||||
// Status code as received from ZAP handler
|
// Status code as received from ZAP handler
|
||||||
std::string status_code;
|
std::string status_code;
|
||||||
|
};
|
||||||
|
|
||||||
|
class zap_client_common_handshake_t : public zap_client_t
|
||||||
|
{
|
||||||
|
protected:
|
||||||
|
zap_client_common_handshake_t (session_base_t *const session_,
|
||||||
|
const std::string &peer_address_,
|
||||||
|
const options_t &options_);
|
||||||
|
|
||||||
|
// methods from mechanism_t
|
||||||
|
status_t status () const;
|
||||||
|
|
||||||
enum state_t
|
enum state_t
|
||||||
{
|
{
|
||||||
@ -75,6 +86,9 @@ class zap_client_t : public virtual mechanism_t
|
|||||||
error_sent,
|
error_sent,
|
||||||
ready
|
ready
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// Current FSM state
|
||||||
|
state_t state;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user