32 #include "platform.hpp" 33 #ifdef ZMQ_HAVE_WINDOWS 77 const unsigned char *cmd_data =
78 static_cast <
unsigned char *> (msg_->
data ());
79 const size_t data_size = msg_->
size ();
82 if (data_size >= 8 && !memcmp (cmd_data,
"\7WELCOME", 8))
85 if (data_size >= 6 && !memcmp (cmd_data,
"\5READY", 6))
88 if (data_size >= 6 && !memcmp (cmd_data,
"\5ERROR", 6))
92 puts (
"PLAIN I: invalid handshake command");
126 const size_t command_size = 6 + 1 + username.length ()
127 + 1 + password.length ();
129 const int rc = msg_->
init_size (command_size);
132 unsigned char *ptr = static_cast <
unsigned char *> (msg_->
data ());
133 memcpy (ptr,
"\x05HELLO", 6);
136 *ptr++ = static_cast <
unsigned char> (username.length ());
137 memcpy (ptr, username.c_str (), username.length ());
138 ptr += username.length ();
140 *ptr++ = static_cast <
unsigned char> (password.length ());
141 memcpy (ptr, password.c_str (), password.length ());
142 ptr += password.length ();
148 const unsigned char *cmd_data,
size_t data_size)
156 if (data_size != 8) {
166 unsigned char *
const command_buffer = (
unsigned char *) malloc (512);
169 unsigned char *ptr = command_buffer;
172 memcpy (ptr,
"\x08INITIATE", 9);
177 ptr +=
add_property (ptr,
"Socket-Type", socket_type, strlen (socket_type));
186 const size_t command_size = ptr - command_buffer;
187 const int rc = msg_->
init_size (command_size);
189 memcpy (msg_->
data (), command_buffer, command_size);
190 free (command_buffer);
196 const unsigned char *cmd_data,
size_t data_size)
209 const unsigned char *cmd_data,
size_t data_size)
219 const size_t error_reason_len = static_cast <
size_t> (cmd_data [6]);
220 if (error_reason_len > data_size - 7) {
std::string plain_username
virtual ~plain_client_t()
int process_error(const unsigned char *cmd_data, size_t data_size)
int process_ready(const unsigned char *cmd_data, size_t data_size)
int produce_hello(msg_t *msg_) const
int process_welcome(const unsigned char *cmd_data, size_t data_size)
int init_size(size_t size_)
#define LIBZMQ_UNUSED(object)
virtual int next_handshake_command(msg_t *msg_)
int parse_metadata(const unsigned char *ptr_, size_t length, bool zap_flag=false)
unsigned char identity[256]
std::string plain_password
virtual int process_handshake_command(msg_t *msg_)
int produce_initiate(msg_t *msg_) const
const char * socket_type_string(int socket_type) const
unsigned char data[max_vsm_size]
virtual status_t status() const
plain_client_t(const options_t &options_)
size_t add_property(unsigned char *ptr, const char *name, const void *value, size_t value_len) const
unsigned char identity_size