This repository provides the basic source code necessary to get started on the chirc project. It also includes several automated tests for students to verify the correctness of their implementation. Please see http://chi.cs.uchicago.edu/chirc/ for a specification of the chirc project, including specific assignments, instructions on how to build the project, and on how to run the tests. CMSC 23320 - Foundations of Computer Networks https://uchicago-cs.github.io/cmsc23320/ https://uchicago-cs.github.io/cmsc23320/projects/project1_tips.html http://chi.cs.uchicago.edu/chirc/ Installing, Building, and Running chirc http://chi.cs.uchicago.edu/chirc/installing.html Assignment 1: Basic Message Processing http://chi.cs.uchicago.edu/chirc/assignment1.html #exec brew install cmake cd ~/5Circle/chirc cmake -B build/ cd build make VERBOSE=1 ./chirc -o foobar nc 127.0.0.1 6667 foobar http://chi.cs.uchicago.edu/chirc/testing.html pip3 install Click pip3 install pytest cd build make assignment-1 cd ../tests python3 -m pytest # check this out https://github.com/uchicago-cs/cmsc23320/blob/master/samples/chirc https://github.com/uchicago-cs/cmsc23320/tree/master/samples/sockets # Concepts that needs to consider ## Dones • Only 1 poll() or select() • fcntl(fd, F_SETFL, O_NONBLOCK); <- use this just after setting socket options because it is just like fd setting • use fd key instead of id key, then you can get max fd just with rbegin(), but keep id as a property ## Need to do • c++ sigint handling: sigint • string parsing: nick user saavc^D \n reply.hpp #define RPL_LISTSTART "021" reply(int cs, int errcode, params) reply.cfg 021 = If there are no channels available <nick> to return, only the end reply MUST b outMessages[cs].append() outMessages[cs]