bama4 / simple-http-server Goto Github PK
View Code? Open in Web Editor NEWA simple lightweight HTTP server in C
A simple lightweight HTTP server in C
Description
This ticket involves implementing a task structure. The task
library should be a separate folder under the utils
top level directory.
This task
library should be linked with all of the other util packages into one library called libutils.so
.
Depending on the design, the components may need to be split up into separate libraries.
The task takes a callback function, and void *
function as its members.
Suggested layout:
typedef void * (*callback) (void *);
typedef struct _task{
callback a_task;
void * arg;
} task;
Goal
The task structure is created and its members include
There should be a simple way to run all unit tests in a sub-directory or the entire project.
The automated test should:
This could be achieved with the introduction of a testing framework, but make sure to keep an eye open for uneeded complexity. We could also hand-roll our own testing framework to exactly suit our needs but this could be a large time sink.
Testing policy specified here: Simple HTTP Server Testing
Description
This ticket involves implementing a hashmap library. The hashmap
library should be under the utils
top level directory.
This hashmap
library should be linked with all of the other util packages into one library called libutils.so
This will be implemented as:
(See Open Addressing)
Goal
The following functions are created for the hashmap:
Also:
Description
Add unity/cmock to the current testing
Goal
Description
This ticket involves adding a state diagram for the socket_tcp_manager library.
The library should include the following:
Prerequisites
N/A
Goal
Design conveys:
The testing framework should offer the ability to log the line number where the assert failed. This can be achieved through the usage of the __LINE__
, and will greatly improve testing, as currently the test can only output if it failed or succeeded. This will involve a significant change to the way that the testing process works.
Heavy string processing on null terminated strings can become a tricky and tedious process, and the standard string library has many functions that will readily supply buffer overflows. To deal with this, a string implementation that holds the length of the string with the actual contents of the string can be used instead.
The string library needs to fit the following qualifications
The vector is similar to the std::vector implementation in the C++ STL. The key difference from other C vector implementation is that it should hold the actual contents of the data its stores, instead of storing pointers to the data. This allows the data to be accessed as the contiguous array it is and allows for better cache locality.
Description
This issue involves adding a bare project structure to the main
branch
The structure of the project is as follows:
socket_tcp_manager
|_____________ src
|_____________ socket_tcp_manager.c
|_____________ test
|_____________ test_socket_tcp_manager.c
|_____________ include
|_____________ socket_tcp_manager.h
http
|_____________ src
|_____________ http.c
|_____________ test
|_____________ test_http.c
|_____________ include
|_____________ http.h
simple_http_server
|_____________ src
|____________ simple_http_server.c
|_____________ test
|_____________ test_simple_http_server.c
|_____________ include
|_____________ simple_http_server.h
scripts
|_____________ install.sh
man
|_____________ simple_http_server.man
Prerequisites
Design documents are done.
Goal
This ticket requires the following:
Definition of Done
This ticket is completed when this is merged into main
Description
This ticket involves implementing a queue library. The queue
library should be a separate folder under the utils
top level directory.
This queue
library should be linked with all of the other util packages into one library called libutils.so
Goal
The following functions are created for the queue:
Also:
Description
Build instructions should be added to the README.md file
Prerequisites
N/A
Goal
Description
This ticket makes changes to the implementation of queue/linked list
Goal
The following functions are created:
remove_node
function that given a node, removes it from the linked list.A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.