From e9122394f97d54a6b28b4dd52db24e22cb1ab340 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juan=20Manuel=20Tom=C3=A1s?= Date: Fri, 17 Jul 2020 23:31:57 -0300 Subject: Move main files into subdirectories --- Makefile | 10 +-- src/client/jetc.cpp | 98 +++++++++++++++++++++++++++ src/jet.cpp | 72 -------------------- src/jetc.cpp | 98 --------------------------- src/server/jet.cpp | 72 ++++++++++++++++++++ test.txt | 187 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 6 files changed, 362 insertions(+), 175 deletions(-) create mode 100644 src/client/jetc.cpp delete mode 100644 src/jet.cpp delete mode 100644 src/jetc.cpp create mode 100644 src/server/jet.cpp create mode 100644 test.txt diff --git a/Makefile b/Makefile index 7ead0a1..e845244 100644 --- a/Makefile +++ b/Makefile @@ -1,11 +1,11 @@ -FLAGS=-ggdb -O0 +FLAGS=-ggdb -O0 -I ./src/ _PHONY=all all:jet jetc -jet: Makefile src/jet.cpp src/server/*.cpp src/common/*.cpp - g++ $(FLAGS) src/jet.cpp -o $@ +jet: Makefile src/server/*.cpp src/common/*.cpp + g++ $(FLAGS) src/server/jet.cpp -o $@ -jetc: Makefile src/jetc.cpp src/client/*.cpp src/common/*.cpp - g++ $(FLAGS) src/jetc.cpp -o $@ $(shell pkg-config --cflags --libs ncurses) +jetc: Makefile src/client/*.cpp src/common/*.cpp + g++ $(FLAGS) src/client/jetc.cpp -o $@ $(shell pkg-config --cflags --libs ncurses) diff --git a/src/client/jetc.cpp b/src/client/jetc.cpp new file mode 100644 index 0000000..8d31d72 --- /dev/null +++ b/src/client/jetc.cpp @@ -0,0 +1,98 @@ +#include +#include +#include + +#include +#include +#include +#include +#include + +#include +#include +#include + +#define NORMAL_MODE 0 +#define INSERT_MODE 1 +#define PORT 6969 + +int main(int argc, char *argv[]) { + initscr(); + cbreak(); + noecho(); + intrflush(stdscr, FALSE); + keypad(stdscr, TRUE); + + Window window; + getmaxyx(stdscr, window.height, window.width); + window.init(); + + int s = socket(AF_INET, SOCK_STREAM, 0); + sockaddr_in addr = { AF_INET, htons(PORT), htonl(INADDR_LOOPBACK) }; + connect(s, (sockaddr *) &addr, sizeof(sockaddr_in)); + + int mode = NORMAL_MODE; + Cursor cursor = { 0, 0, &window }; + + int quit = 0; + while (!quit) { + clear(); + + int8_t msg[5]; + msg[0] = OP_SHOW; + encode2(window.width, msg, 1); + encode2(window.height, msg, 3); + write(s, msg, 5); + read(s, window.view, window.width * window.height); + for (int i = 0; i < window.width * window.height; i++) { + printw("%c", window.view[i]); + } + move(cursor.y, cursor.x); + + int8_t mov[2]; + int8_t del[1]; + int8_t ins[2]; + int input = getch(); + if (mode == NORMAL_MODE) { + switch (input) { + case '': + quit = 1; + break; + case 'i': + mode = INSERT_MODE; + break; + case 'h': + mov[0] = OP_MOVE1; + mov[1] = -1; + write(s, mov, 2); + cursor.move_left(); + break; + case 'l': + mov[0] = OP_MOVE1; + mov[1] = 1; + write(s, mov, 2); + cursor.move_right(); + break; + } + } else { + switch (input) { + case '': + mode = NORMAL_MODE; + break; + case KEY_BACKSPACE: + del[0] = OP_DELETE; + write(s, del, 1); + break; + default: + ins[0] = OP_INSERT; + ins[1] = input; + write(s, ins, 2); + } + } + } + + close(s); + + endwin(); + return 0; +} diff --git a/src/jet.cpp b/src/jet.cpp deleted file mode 100644 index 6cc4470..0000000 --- a/src/jet.cpp +++ /dev/null @@ -1,72 +0,0 @@ -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include - -#include "common/ipc.cpp" -#include "server/page.cpp" -#include "server/buffer.cpp" -#include "server/point.cpp" -#include "server/client.cpp" - -#define PORT 6969 -#define MAX_EVENTS 10 - -int create_listener() { - int s = socket(AF_INET, SOCK_STREAM, 0); - sockaddr_in addr = { AF_INET, htons(PORT), htonl(INADDR_LOOPBACK)}; - int opt = 1; - setsockopt(s, SOL_SOCKET, SO_REUSEADDR | SO_REUSEPORT, &opt, sizeof(opt)); - bind(s, (sockaddr *) &addr, sizeof(sockaddr_in)); - listen(s, MAX_EVENTS); - return s; -} - -int main() { - Buffer scratch("scratch"); - scratch.read_file("test.txt"); - - int listener = create_listener(); - - int epollfd = epoll_create1(0); - - epoll_event ev; - ev.events = EPOLLIN; - ev.data.fd = listener; - epoll_ctl(epollfd, EPOLL_CTL_ADD, listener, &ev); - - epoll_event events[MAX_EVENTS]; - Client *clients[1024] = {}; - - while (true) { - int nfds = epoll_wait(epollfd, events, MAX_EVENTS, -1); - - for (int i = 0; i < nfds; i++) { - if (events[i].data.fd == listener) { - int clientfd = accept(listener, 0, 0); - ev.events = EPOLLIN | EPOLLET; - ev.data.fd = clientfd; - if (clients[clientfd]) { - delete clients[clientfd]; - } - Client *c = new Client(scratch); - c->sockfd = clientfd; - clients[clientfd] = c; - epoll_ctl(epollfd, EPOLL_CTL_ADD, clientfd, &ev); - } else { - clients[events[i].data.fd]->parse_message(); - } - } - } - - close(listener); -} diff --git a/src/jetc.cpp b/src/jetc.cpp deleted file mode 100644 index 9650eb6..0000000 --- a/src/jetc.cpp +++ /dev/null @@ -1,98 +0,0 @@ -#include -#include -#include - -#include -#include -#include -#include -#include - -#include "common/ipc.cpp" -#include "client/window.cpp" -#include "client/cursor.cpp" - -#define NORMAL_MODE 0 -#define INSERT_MODE 1 -#define PORT 6969 - -int main(int argc, char *argv[]) { - initscr(); - cbreak(); - noecho(); - intrflush(stdscr, FALSE); - keypad(stdscr, TRUE); - - Window window; - getmaxyx(stdscr, window.height, window.width); - window.init(); - - int s = socket(AF_INET, SOCK_STREAM, 0); - sockaddr_in addr = { AF_INET, htons(PORT), htonl(INADDR_LOOPBACK) }; - connect(s, (sockaddr *) &addr, sizeof(sockaddr_in)); - - int mode = NORMAL_MODE; - Cursor cursor = { 0, 0, &window }; - - int quit = 0; - while (!quit) { - clear(); - - int8_t msg[5]; - msg[0] = OP_SHOW; - encode2(window.width, msg, 1); - encode2(window.height, msg, 3); - write(s, msg, 5); - read(s, window.view, window.width * window.height); - for (int i = 0; i < window.width * window.height; i++) { - printw("%c", window.view[i]); - } - move(cursor.y, cursor.x); - - int8_t mov[2]; - int8_t del[1]; - int8_t ins[2]; - int input = getch(); - if (mode == NORMAL_MODE) { - switch (input) { - case '': - quit = 1; - break; - case 'i': - mode = INSERT_MODE; - break; - case 'h': - mov[0] = OP_MOVE1; - mov[1] = -1; - write(s, mov, 2); - cursor.move_left(); - break; - case 'l': - mov[0] = OP_MOVE1; - mov[1] = 1; - write(s, mov, 2); - cursor.move_right(); - break; - } - } else { - switch (input) { - case '': - mode = NORMAL_MODE; - break; - case KEY_BACKSPACE: - del[0] = OP_DELETE; - write(s, del, 1); - break; - default: - ins[0] = OP_INSERT; - ins[1] = input; - write(s, ins, 2); - } - } - } - - close(s); - - endwin(); - return 0; -} diff --git a/src/server/jet.cpp b/src/server/jet.cpp new file mode 100644 index 0000000..5cc3ee4 --- /dev/null +++ b/src/server/jet.cpp @@ -0,0 +1,72 @@ +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +#define PORT 6969 +#define MAX_EVENTS 10 + +int create_listener() { + int s = socket(AF_INET, SOCK_STREAM, 0); + sockaddr_in addr = { AF_INET, htons(PORT), htonl(INADDR_LOOPBACK)}; + int opt = 1; + setsockopt(s, SOL_SOCKET, SO_REUSEADDR | SO_REUSEPORT, &opt, sizeof(opt)); + bind(s, (sockaddr *) &addr, sizeof(sockaddr_in)); + listen(s, MAX_EVENTS); + return s; +} + +int main() { + Buffer scratch("scratch"); + scratch.read_file("test.txt"); + + int listener = create_listener(); + + int epollfd = epoll_create1(0); + + epoll_event ev; + ev.events = EPOLLIN; + ev.data.fd = listener; + epoll_ctl(epollfd, EPOLL_CTL_ADD, listener, &ev); + + epoll_event events[MAX_EVENTS]; + Client *clients[1024] = {}; + + while (true) { + int nfds = epoll_wait(epollfd, events, MAX_EVENTS, -1); + + for (int i = 0; i < nfds; i++) { + if (events[i].data.fd == listener) { + int clientfd = accept(listener, 0, 0); + ev.events = EPOLLIN | EPOLLET; + ev.data.fd = clientfd; + if (clients[clientfd]) { + delete clients[clientfd]; + } + Client *c = new Client(scratch); + c->sockfd = clientfd; + clients[clientfd] = c; + epoll_ctl(epollfd, EPOLL_CTL_ADD, clientfd, &ev); + } else { + clients[events[i].data.fd]->parse_message(); + } + } + } + + close(listener); +} diff --git a/test.txt b/test.txt new file mode 100644 index 0000000..b545c26 --- /dev/null +++ b/test.txt @@ -0,0 +1,187 @@ +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque feugiat +eros id elementum pulvinar. Mauris leo purus, dapibus et ullamcorper ut, +convallis sit amet metus. Phasellus eget bibendum nulla, ut mattis nisi. +Suspendisse ut rutrum libero, non tempus quam. Duis velit ex, porta a tempus +quis, fringilla non dui. Nullam nibh lacus, vehicula in sollicitudin a, luctus +id lorem. Ut tempus, purus eget auctor ultricies, orci justo volutpat ante, id +euismod erat sapien in dolor. Donec quis ullamcorper libero. Curabitur +vulputate ipsum ut purus accumsan ornare. Quisque diam massa, imperdiet non +posuere vitae, convallis et nibh. Ut accumsan cursus arcu vitae scelerisque. + +Phasellus ut odio vestibulum, pellentesque nunc at, interdum nulla. Cras elit +nulla, tristique nec metus aliquet, congue varius lorem. Quisque iaculis, +sapien sed finibus fringilla, tellus tortor tincidunt elit, et maximus nisl +metus in nulla. Nulla nec placerat dui. Duis porta nisi purus. Nam sed maximus +tortor. Donec in dictum nunc. Curabitur lobortis condimentum ante, quis finibus +dui tempus sit amet. Orci varius natoque penatibus et magnis dis parturient +montes, nascetur ridiculus mus. Aliquam eget dui accumsan dolor accumsan +fermentum non at lectus. Mauris pellentesque pretium nibh interdum aliquam. + +In varius gravida nulla in aliquet. Cras iaculis eros vel ligula interdum +ornare. Vestibulum vehicula tellus justo, mollis euismod dolor elementum eu. +Phasellus lorem massa, pellentesque quis elit eu, pulvinar aliquet sem. Duis +metus lorem, sollicitudin quis ante ut, semper viverra metus. Nulla laoreet +libero nec iaculis gravida. Sed imperdiet faucibus turpis, quis vehicula mauris +vulputate et. Vivamus luctus quis libero quis mattis. Quisque bibendum auctor +ullamcorper. Proin blandit erat vitae mauris posuere, id malesuada erat +ultricies. Ut eget erat sed magna convallis maximus. Suspendisse non ligula in +tellus suscipit mattis sit amet id velit. + +Quisque consequat leo nec condimentum imperdiet. Fusce sit amet elementum urna, +eu tristique massa. Nam a nibh nec quam pellentesque cursus. Fusce condimentum +id augue egestas sollicitudin. Donec varius interdum justo sit amet tristique. +Suspendisse molestie rutrum sem non rhoncus. Quisque finibus gravida sem, vitae +tincidunt orci laoreet eget. Nunc felis felis, luctus vel est a, ultrices +eleifend neque. Duis luctus, nunc at pellentesque facilisis, massa tortor +volutpat justo, finibus fringilla nulla urna nec nisl. + +Proin et dignissim mi. Donec a accumsan felis. Aliquam erat volutpat. Vivamus +porta sapien et turpis lobortis eleifend. Fusce semper pretium nunc a +dignissim. Fusce pharetra convallis lacus, vel feugiat orci pulvinar vel. In +lacinia tristique tempus. Quisque aliquam urna condimentum erat hendrerit +dictum. Sed lacinia blandit neque a accumsan. Nulla vestibulum viverra laoreet. +Aenean tincidunt nec nunc a accumsan. Pellentesque eget consequat quam, vitae +blandit magna. + +Nulla ligula arcu, blandit id sodales nec, pulvinar in sem. Mauris quis mauris +quis urna dictum ornare. Pellentesque tincidunt mi tellus, at faucibus nunc +posuere et. In lorem orci, efficitur vitae facilisis ut, semper in est. +Phasellus sit amet leo ac lectus molestie finibus. Nunc iaculis mollis dolor, +id vulputate est. Duis quis tristique eros. Morbi eget ornare quam, nec +convallis magna. Proin eget feugiat lacus. Sed cursus augue sed lorem +tincidunt, mollis ultricies ante accumsan. Quisque cursus tristique nibh a +dictum. + +Etiam aliquam viverra dolor, vitae varius ante commodo a. Nam quis tellus +ultrices, placerat neque non, tempus quam. Donec porta pharetra sapien non +dapibus. Duis lacus nunc, congue at nunc quis, laoreet molestie orci. Aenean +sed faucibus eros, in interdum nunc. Fusce non erat tellus. Etiam tristique est +metus, quis venenatis augue tempor sit amet. Sed nunc ex, cursus at metus a, +posuere tincidunt tortor. Integer elementum pretium viverra. Nulla ullamcorper +tristique justo a egestas. Sed nec felis at mauris auctor molestie. Cras +molestie nisl sit amet laoreet volutpat. Phasellus orci turpis, accumsan ac +purus eu, condimentum pretium odio. Aliquam bibendum gravida sodales. Integer +eu porttitor felis, vitae volutpat elit. + +Nullam at scelerisque mauris, non venenatis erat. Class aptent taciti sociosqu +ad litora torquent per conubia nostra, per inceptos himenaeos. Proin rutrum +varius mi vitae tincidunt. Quisque ultrices orci vitae massa efficitur, id +sollicitudin elit cursus. In non pulvinar ipsum. Curabitur facilisis dolor sit +amet sem gravida eleifend. Proin accumsan scelerisque est, in malesuada ipsum +ultrices vel. Etiam maximus, elit et pellentesque porta, odio justo fringilla +lectus, vitae convallis leo nunc vel felis. + +Curabitur quis suscipit felis. Nunc laoreet dolor non est egestas, eu hendrerit +enim molestie. Etiam id consequat eros, et maximus mauris. Integer posuere +consequat erat vel dignissim. Duis aliquam accumsan scelerisque. Ut blandit +urna urna, vehicula ultrices nunc convallis ac. Pellentesque non odio nisi. +Nulla vel mi lobortis, semper nulla in, vulputate nibh. Maecenas quis sagittis +dui. Mauris et quam aliquet, venenatis tellus a, ultrices mauris. Sed +scelerisque massa ligula, et lobortis justo venenatis a. Integer tincidunt +blandit convallis. Donec ut lacinia eros. Quisque pellentesque libero ut +imperdiet bibendum. + +Fusce velit tortor, pellentesque non felis quis, tincidunt blandit enim. +Aliquam commodo lobortis dui sit amet lacinia. Pellentesque sollicitudin, +libero at sagittis condimentum, lacus turpis vestibulum nulla, non posuere +metus velit rhoncus neque. Donec sodales ultricies vestibulum. Class aptent +taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. +Nulla dignissim mattis ultricies. Pellentesque rutrum odio nec mauris dapibus, +sed vehicula nisi molestie. Praesent tristique mollis iaculis. Phasellus metus +lacus, ultrices eu luctus dignissim, tempus in est. Aenean tempor orci sit amet +ipsum facilisis, sed laoreet erat blandit. Nullam a commodo lectus. Nullam +eleifend diam tellus, in suscipit nisi egestas nec. Etiam mollis sapien a velit +tincidunt elementum. + +Nunc dictum orci ac enim vestibulum viverra. Nulla fermentum mollis nunc in +mollis. Etiam ac nibh eu eros elementum sollicitudin. Nunc vitae enim velit. +Donec urna augue, pulvinar in ultricies a, ullamcorper at justo. Vestibulum +diam tortor, tempor ut cursus non, pharetra sit amet ipsum. Duis mollis turpis +sed pretium egestas. Cras sed erat eu sapien blandit finibus. Nulla mollis, +erat ut vestibulum sagittis, lorem odio pellentesque felis, quis interdum +sapien nisl quis neque. Vestibulum sed congue sapien, a congue mauris. Proin +quis nulla eget tellus tincidunt dictum ut ac ante. Mauris tempus libero id +accumsan lacinia. Quisque et sodales lectus. Suspendisse potenti. In porttitor +lectus id odio malesuada egestas. + +Praesent arcu massa, lacinia a porta et, viverra a nisl. Suspendisse vitae +sodales diam, at sodales tellus. Phasellus mattis purus vitae tortor +consectetur maximus. Etiam nec turpis at elit accumsan blandit ac quis eros. +Class aptent taciti sociosqu ad litora torquent per conubia nostra, per +inceptos himenaeos. Mauris pulvinar auctor mauris, ut tristique nunc. Duis +lacinia iaculis eros eu feugiat. Ut sed est nunc. Pellentesque habitant morbi +tristique senectus et netus et malesuada fames ac turpis egestas. In lacinia +turpis vitae massa volutpat, interdum imperdiet diam mollis. Duis dui odio, +bibendum vel lorem elementum, rhoncus placerat risus. + +Aenean mollis varius felis eget viverra. Nulla at elit neque. Suspendisse +rutrum augue nulla, non pulvinar leo lacinia quis. Nam sit amet dictum ipsum. +Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere +cubilia curae; Aliquam erat volutpat. Sed sodales quam posuere dignissim +gravida. Donec dolor dolor, consequat vel tempus at, iaculis et justo. Mauris +eu varius nunc. Nunc pharetra eu ligula vitae malesuada. + +Sed gravida ac nulla ac condimentum. Curabitur rhoncus ipsum in sodales +gravida. Vivamus lobortis, metus in interdum consequat, nibh enim fringilla +justo, in pharetra eros augue ac magna. Phasellus varius risus elit, vel +accumsan elit interdum in. Pellentesque habitant morbi tristique senectus et +netus et malesuada fames ac turpis egestas. Ut sed libero auctor, venenatis +tellus eget, egestas massa. In a ex in enim ornare fringilla non tincidunt +justo. + +Aenean suscipit sollicitudin justo, pellentesque maximus turpis feugiat sit +amet. Integer pulvinar pulvinar velit, ac mattis nisl pretium id. Ut eget massa +in mauris vehicula posuere ut euismod massa. Sed a orci vitae risus condimentum +pulvinar. Vivamus egestas lacus magna. Integer in nibh id est accumsan +bibendum. In maximus nibh sed dolor placerat facilisis. Nullam enim quam, +cursus a nibh vitae, accumsan auctor neque. Praesent aliquet blandit tortor, at +vehicula ipsum hendrerit ut. Duis id lectus vel metus eleifend vestibulum. +Fusce nec laoreet turpis. Vivamus vulputate, arcu at facilisis rutrum, ligula +nibh sagittis est, id pellentesque purus risus a libero. Suspendisse commodo +nibh lacus, vel hendrerit turpis vehicula quis. Etiam eget ante commodo, +suscipit ipsum quis, bibendum metus. Aenean porttitor sapien nunc, et pretium +libero molestie a. Nam et tortor nec justo volutpat faucibus. + +Donec blandit odio in tortor vestibulum rutrum. In hac habitasse platea +dictumst. Fusce eget diam nec ex consequat porta. Praesent in sem gravida, +pretium risus quis, tincidunt metus. In in nulla pellentesque, iaculis lectus +in, sodales elit. Mauris a tellus ac nunc ultricies consequat. Vestibulum ut +quam vitae leo iaculis aliquam. Proin vulputate ornare ex vitae tincidunt. +Morbi sit amet neque eu mauris finibus malesuada. + +Suspendisse iaculis posuere urna, in ornare justo finibus id. Ut in malesuada +libero, in vestibulum ligula. Vestibulum sit amet eros accumsan lectus +dignissim euismod. Integer magna libero, volutpat sed sodales non, ultricies id +libero. Nam suscipit, elit elementum egestas lobortis, mauris urna cursus urna, +id accumsan turpis nisi quis tortor. Donec eu tristique ipsum, nec pulvinar +erat. Cras nec vehicula justo. + +Nulla facilisi. Suspendisse vel neque efficitur, elementum diam blandit, porta +odio. Duis tempor velit non elementum ornare. Suspendisse efficitur mattis est +in pulvinar. Pellentesque non justo nec orci maximus vehicula id non odio. +Vestibulum non varius neque. Mauris porttitor sollicitudin arcu. Vestibulum +lobortis faucibus hendrerit. Duis justo eros, luctus et sapien ut, tincidunt +aliquet justo. Nulla ullamcorper dui ipsum, a venenatis tortor fermentum in. +Nam id tincidunt mauris, et euismod dolor. Aliquam laoreet lacus ut nisl auctor +posuere. Ut sed orci venenatis, sollicitudin felis at, porttitor nisi. + +Suspendisse id velit et dui ultricies lobortis. Mauris congue, orci et +imperdiet viverra, sem velit tempor quam, in suscipit nunc orci eu dolor. +Aliquam ultrices rhoncus ante id tempor. Fusce dignissim arcu quis ultrices +scelerisque. Aenean eros nisi, aliquet eu mi et, suscipit lacinia quam. Aenean +eu risus posuere, commodo mauris et, euismod quam. Cras posuere metus quis +tincidunt blandit. Sed id dolor at lacus placerat commodo quis eu justo. +Aliquam pulvinar, lacus a tempus consectetur, nulla sem condimentum ex, sed +scelerisque felis purus et elit. Donec dictum augue non luctus fringilla. +Vivamus viverra augue at ante gravida, sed tincidunt arcu blandit. Aenean sit +amet varius ligula. + +Etiam vestibulum, purus id tristique imperdiet, ex magna ullamcorper odio, id +ultrices tortor sapien vel augue. Phasellus dolor urna, semper in erat +vehicula, venenatis porttitor lorem. Phasellus faucibus dolor sit amet nunc +accumsan facilisis. Phasellus dignissim eu justo eget porttitor. Sed eleifend +velit et libero pretium pulvinar. Duis quis ex dignissim, consectetur nibh nec, +semper arcu. Phasellus non massa porttitor, dictum arcu nec, elementum tellus. +Morbi luctus eget mauris sit amet vehicula. Pellentesque mi augue, cursus ut +est at, accumsan lacinia urna. Interdum et malesuada fames ac ante ipsum primis +in faucibus. -- cgit v1.2.3