Skip to content

Conversation

@vinniefalco
Copy link
Member

No description provided.

- Create socket_impl class deriving from intrusive_list node
- Create win_iocp_sockets service to track all sockets
- Service provides IOCP association and graceful shutdown
- Update socket to register/unregister with service
Add pending_ counter to track work items in win_iocp_scheduler:
- post() increments pending_ before posting to IOCP
- do_run() decrements pending_ after executing each handler
- run(), run_one(), run_until() check pending_ before blocking
- shutdown() decrements pending_ when destroying unexecuted work
- Only honor shutdown signals when actually stopped (fixes restart)

Update testRunFor() to expect immediate return when no work pending
(matching Asio semantics)
- Add real IOCP socket implementation with native SOCKET handle
- Add overlapped_op base for IOCP operations (connect, read, write, accept)
- Add tcp::endpoint using boost::urls::ipv4_address
- Add tcp::acceptor for accepting incoming connections
- Add buffers_param for type-erased buffer sequences
- Add work_started/work_finished to scheduler for I/O tracking
- Link ws2_32 on Windows
- Add Boost.Buffers and Boost.URL dependencies
- Rename io_context::executor to executor_type (remove alias)
- Store io_context* instead of scheduler* in executor_type
- Add context(), on_work_started(), on_work_finished(), defer() methods
- Extend detail::scheduler interface with on_work_started/finished, defer
- Implement work tracking in win_iocp_scheduler and reactive_scheduler
- Update Javadoc comments to follow style guide
- win_iocp_scheduler.hpp/cpp: reorder declarations and definitions
- reactive_scheduler.hpp/cpp: move init_task() after overrides
- win_iocp_sockets.hpp/cpp: reorder win_socket_impl and win_iocp_sockets
- Move inline implementations to out-of-line definitions
- Add blank lines between sections, remove comments
- Add explicit continue in do_one() when processing shutdown_key with
  context not stopped (after restart), ensuring we immediately try
  GQCS again instead of timing out

- Fix tests to call restart() after poll/poll_one with no work,
  matching Asio semantics where stop() is called

- Fix testRunOneFor to not expect wait when no outstanding work
- Add stop() call to wait_one() when outstanding_work == 0
- Remove has_outstanding_work() from scheduler interfaces (no longer needed)
- Simplify run_one_until() to use stopped() check only
- Update Javadocs to document stopping behavior and restart() requirement
- Update tests to verify stopped() state after timed methods return
- Rename design.md to corosio-design.md
- Remove coverage-rule.md, format-rule.md, javadoc-rule.md (now in agent-cpp)
- Add tls-stream.adoc user guide for the TLS stream adapter
- Add design-rationale.adoc explaining key design decisions
- Update nav.adoc with new pages
@vinniefalco vinniefalco merged commit ea7b8f2 into cppalliance:master Jan 11, 2026
0 of 5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant