summaryrefslogtreecommitdiffstats
path: root/src/client/ClientBase.cpp
diff options
context:
space:
mode:
authorJoursoir <chat@joursoir.net>2020-12-09 19:34:04 +0000
committerJoursoir <chat@joursoir.net>2020-12-09 19:34:04 +0000
commit4131de177e36b19b20b8bbdb7bd43b18b6e22690 (patch)
tree7540050cbe152fc1257585f4fd30cf9b020508c0 /src/client/ClientBase.cpp
parent1baf22ad58cc1a9aa9089ca9a09fc80a453cb3c9 (diff)
downloadwant-chat-4131de177e36b19b20b8bbdb7bd43b18b6e22690.tar.gz
want-chat-4131de177e36b19b20b8bbdb7bd43b18b6e22690.tar.bz2
want-chat-4131de177e36b19b20b8bbdb7bd43b18b6e22690.zip
clui: architecture go to base class for clients; fix bugs
Diffstat (limited to 'src/client/ClientBase.cpp')
-rw-r--r--src/client/ClientBase.cpp28
1 files changed, 20 insertions, 8 deletions
diff --git a/src/client/ClientBase.cpp b/src/client/ClientBase.cpp
index fed4c32..aa54365 100644
--- a/src/client/ClientBase.cpp
+++ b/src/client/ClientBase.cpp
@@ -9,8 +9,8 @@
#include "ClientBase.hpp"
-ClientBase::ClientBase(const char* ip, int port) : in_buf_used(0),
- out_buf_used(0), exit_flag(false)
+ClientBase::ClientBase(const char* ip, int port)
+ : out_buf_used(0), exit_flag(false), connection(true)
{
fd = CreateSocket(ip, port);
}
@@ -50,6 +50,8 @@ int ClientBase::CreateSocket(const char* ip, int port)
int ClientBase::Run()
{
+ if(exit_flag)
+ return 0;
HandleActions();
int recive = read(fd, out_buffer+out_buf_used,
@@ -62,9 +64,11 @@ int ClientBase::Run()
else if(recive > 0)
out_buf_used += recive;
else {
- strcpy(out_buffer, "Server closed the connection. Use ESC to exit.");
- ShowMessage(out_buffer);
- //room->AddMessage(out_buffer, system_msg);
+ if(connection) {
+ strcpy(out_buffer, "Server closed the connection. Use ESC to exit.");
+ AddMessage(out_buffer, system_msg);
+ connection = false;
+ }
}
if(out_buf_used > 0) {
@@ -82,14 +86,22 @@ int ClientBase::Run()
buf += 1;
}
- //room->AddMessage(buf, spec_msg);
- ShowMessage(buf);
+ AddMessage(buf, spec_msg);
memmove(out_buffer, out_buffer + i + 1, out_buf_used - i - 1);
out_buf_used -= i + 1;
break;
}
}
}
-
return 1;
+}
+
+void ClientBase::SendMessage(const char *msg)
+{
+ int len = strlen(msg) + 1;
+ char *buf = new char[len];
+ strcpy(buf, msg);
+ buf[len-1] = '\n';
+
+ write(fd, buf, len * sizeof(char));
} \ No newline at end of file