Exemple #1
0
void ChatAgent::processInput(PPtr<KString> input) {
  if(_nickName.empty()) {
    _nickName = input->toUtf8String();
    _pConsole.print("You shall be known as \"" + _nickName + "\".");
    _pConsole.print("Type anything to send. Enter \"quit\" to finish.");
  } else if(input->equals("quit")) {
    _pConsole.print("Bye!");
    quit();
  } else {
    Ptr<KRecord> message = new KRecord(message_t());
    message->getString(MESSAGE_T_SENDER)->set(_nickName);
    message->getString(MESSAGE_T_CONTENT)->set(input.AS(KValue));
    sendToAll(OP_MESSAGE, message.AS(KValue));
  }
}
Exemple #2
0
void uv_udp_handle_t::on_read(uv_udp_t* handle, ssize_t nread, uv_buf_t buf, struct sockaddr* addr, unsigned flags)
{
	/* udp max datagram read pack size: SHARED_READ_BUFFER_SIZE(64 * 1024) */
	if (nread == 0) {
		return;
	}
	uv_udp_handle_t* udp_handle = (uv_udp_handle_t*)(handle->data);
	if (nread == -1) {
		singleton_ref(node_lua_t).context_send(udp_handle->m_source, 0, udp_handle->m_lua_ref, RESPONSE_UDP_READ, singleton_ref(network_t).last_error());
		return;
	}
	buffer_t buffer = buffer_new(nread, buf.base, nread);
	char* host = (char*)nl_malloc(64);
	uint16_t port = 0;
	bool ipv6 = false;
	*host = '\0';
	sockaddr_host(addr, host, 64, &ipv6, &port);
	message_array_t* array = message_array_create(4);
	array->m_array[0] = message_t(0, udp_handle->m_lua_ref, RESPONSE_UDP_READ, buffer);
	array->m_array[1] = message_t(0, udp_handle->m_lua_ref, RESPONSE_UDP_READ, host);
	array->m_array[2] = message_t(0, udp_handle->m_lua_ref, RESPONSE_UDP_READ, (int64_t)port);
	array->m_array[3] = message_t(0, udp_handle->m_lua_ref, RESPONSE_UDP_READ, ipv6);
	singleton_ref(node_lua_t).context_send_array_release(udp_handle->m_source, 0, udp_handle->m_lua_ref, RESPONSE_UDP_READ, array);
}
Exemple #3
0
void send_message_tuple(void *z_sock, int flags, Args... args) {
  using message_t = msgpack::type::tuple<
    typename std::remove_reference<Args>::type...>;
  send_message(z_sock, flags, message_t(args...));
}