added a little good old fashioned command-line chat action
This commit is contained in:
parent
d0a995d6da
commit
eed5fc25d9
@ -7,6 +7,6 @@ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -pedantic")
|
||||
find_package(Boost COMPONENTS system REQUIRED)
|
||||
include_directories(${Boost_INCLUDE_DIR})
|
||||
|
||||
set(SOURCE_FILES teszt.cpp chat_messages.hpp chat_networking.hpp)
|
||||
set(SOURCE_FILES commandline_chat.cpp chat_messages.hpp chat_networking.hpp)
|
||||
add_executable(cpp11NHF2_chat ${SOURCE_FILES})
|
||||
target_link_libraries(cpp11NHF2_chat ${Boost_LIBRARIES})
|
@ -16,30 +16,7 @@ namespace chat
|
||||
using boost::asio::ip::tcp;
|
||||
|
||||
|
||||
struct receive_policy_stdout
|
||||
{
|
||||
static void message_do_what(chat_message msg)
|
||||
{ std::cout << msg.get_content() << '\n'; }
|
||||
|
||||
static void handshake_do_what(chat_message msg)
|
||||
{ std::cout << "Handshake üzenetek:\n" << msg.get_content() << '\n'; }
|
||||
|
||||
static void serverdirection_do_what(chat_message msg)
|
||||
{ std::cout << "Szerver üzenet: " << msg.get_content() << '\n'; }
|
||||
|
||||
static void login_do_what(chat_message msg)
|
||||
{ std::cout << msg.get_content() << " belépett.\n"; }
|
||||
|
||||
static void logout_do_what(chat_message msg)
|
||||
{ std::cout << msg.get_content() << " kilépett.\n"; }
|
||||
};
|
||||
|
||||
|
||||
/* most ezt így üres template paraméterekkel kell példányosítani,
|
||||
* már amennyiben nem akarunk valami custom receive policyt megadni,
|
||||
* pl.: client_network_manager<> cnm;
|
||||
* meg lehet oldani úgy, hogy ne kelljen? usingot/typedefet nem enged saját magára */
|
||||
template <class receive_policy = receive_policy_stdout>
|
||||
template <class receive_policy>
|
||||
class client_network_manager
|
||||
{
|
||||
/* compile-time check for whether receive_policy is valid or not */
|
||||
|
51
commandline_chat.cpp
Normal file
51
commandline_chat.cpp
Normal file
@ -0,0 +1,51 @@
|
||||
#include <iostream>
|
||||
#include <thread>
|
||||
#include "chat_networking.hpp"
|
||||
|
||||
|
||||
|
||||
struct receive_policy_stdout
|
||||
{
|
||||
static void message_do_what(chat::chat_message msg)
|
||||
{ std::cout << msg.get_content() << '\n'; }
|
||||
|
||||
static void handshake_do_what(chat::chat_message msg)
|
||||
{ std::cout << "Handshake üzenetek:\n" << msg.get_content() << '\n'; }
|
||||
|
||||
static void serverdirection_do_what(chat::chat_message msg)
|
||||
{ std::cout << "Szerver üzenet: " << msg.get_content() << '\n'; }
|
||||
|
||||
static void login_do_what(chat::chat_message msg)
|
||||
{ std::cout << msg.get_content() << " belépett.\n"; }
|
||||
|
||||
static void logout_do_what(chat::chat_message msg)
|
||||
{ std::cout << msg.get_content() << " kilépett.\n"; }
|
||||
};
|
||||
|
||||
|
||||
int main()
|
||||
{
|
||||
boost::asio::io_service ios;
|
||||
boost::asio::ip::tcp::resolver resolver(ios);
|
||||
boost::asio::ip::tcp::resolver::query query("infoc.eet.bme.hu", "8888");
|
||||
auto epit = resolver.resolve(query);
|
||||
|
||||
|
||||
chat::client_network_manager<receive_policy_stdout> cnm(ios, epit, "BATMAN");
|
||||
std::thread t([&ios]{ ios.run(); });
|
||||
|
||||
|
||||
std::string input;
|
||||
while (true)
|
||||
{
|
||||
std::cin >> input;
|
||||
if (input == "exit")
|
||||
break;
|
||||
|
||||
chat::chat_message msg(chat::message::MESSAGE, input);
|
||||
cnm.send(msg);
|
||||
}
|
||||
|
||||
cnm.close_connection();
|
||||
t.join();
|
||||
}
|
Loading…
Reference in New Issue
Block a user