Looks like a learning project for someone relatively new to C++.
I suggest using git tags instead of putting a version number in every commit message.
Have you looked into epoll or kqueue or even poll? Or for your windows backend, WSAEventSelect/WaitForMultipleObjects or IOCP... Trying to get all these disparate ways of doing async sockets to use a consistent wrapper interface is an interesting challenge.
I do use git tags but I also include version numbers in my commit messages so that I can easily determine in which version a given commit was published.
I find it pretty useful. I know some people prefer to create a dev branch, then squash merge, but sometimes you got multiple features and I feel it is more convenient to separate them into multiple commits that will belongs to the same release.
Do you have some other suggestions, I would be interested :)
Concerning epoll/poll, the networking part was first based on it.
However, the poll implementation on windows is buggy and thus it is more advised to use select on windows apparently... So to keep consistency between unix and windows versions, I decided to switch back to select for both platform for now.
I'm planning to switch back to poll for unix and look at WSAEventSelect.
I also looked at IOCP and it is really interesting.
However, it is pretty hard to implement a portable library that uses select/poll under unix but IOCP on windows as the implementation is pretty different. There are some ways, but the way I designed the networking part does not make it possible without changing completely the design on one platform
> I do use git tags but I also include version numbers in my commit messages so that I can easily determine in which version a given commit was published.
If we look at a commit on github, I'll see all tags that contain that commit:
I suggest using git tags instead of putting a version number in every commit message.
Have you looked into epoll or kqueue or even poll? Or for your windows backend, WSAEventSelect/WaitForMultipleObjects or IOCP... Trying to get all these disparate ways of doing async sockets to use a consistent wrapper interface is an interesting challenge.