1
0
mirror of https://github.com/solemnwarning/directplay-lite synced 2024-12-30 16:45:37 +01:00

25 Commits

Author SHA1 Message Date
Daniel Collins
e7f5d0f68d Proper implementation of IDirectPlay8Peer::Close() 2018-10-11 12:26:20 +01:00
Daniel Collins
61e8d23da8 Don't leak peer sockets and handle I/O errors on them. 2018-10-06 22:06:05 +01:00
Daniel Collins
fffbfe3ce4 Don't poll for TCP recv() events when processing one.
Clearing FD_RECV and FD_CLOSE from the event flags when processing a
recv() event will prevent the other worker threads associated with that
socket from waking up repeatedly, checking recv_busy, then sleeping
without having done anything, wasting time and potentially preventing
them from servicing their other sockets.
2018-10-06 14:07:51 +01:00
Daniel Collins
f000152a7a Fix message ordering race in IDirectPlay8Peer::SetPeerInfo()
Ensure the DPNMSG_ASYNC_OP_COMPLETE message is always dispatched after
the local DPLITE_MSGID_PLAYERINFO message.
2018-10-06 14:02:51 +01:00
Daniel Collins
8db9aa277f Maintain worker_pool only when DirectPlay8Peer is initialised.
This ensures any worker threads have stopped by the time we finish
returning to STATE_NEW when closing.
2018-10-06 10:53:25 +01:00
Daniel Collins
818adcbba1 Connect non-host peers in sessions together. 2018-10-05 19:26:05 +01:00
Daniel Collins
a91ded1268 Allow connecting to "IPX" addresses. 2018-10-03 23:28:47 +01:00
Daniel Collins
d2bd2bc85a Tweak debug logging. 2018-10-03 21:35:23 +01:00
Daniel Collins
b1289366be Address handling improvements.
- IDirectPlay8Peer::EnumHosts() requires a device address to specify
  the service provider to emulate.

- IDirectPlay8Peer::EnumHosts() allows overriding the address/port
  that discovery messages are sent to.

- IDirectPlay8Peer::Host() requires at least one address. Addresses
  with different service providers are not supported yet.

- Implement IDirectPlay8Peer::GetPeerAddress() method.

- Populate pAddressSender in DPNMSG_ENUM_HOSTS_QUERY message.

- Popupate pAddressPlayer in DPNMSG_INDICATE_CONNECT message.

- Base host addresses created by IDirectPlay8Peer on service provider
  of device address given to Host() method.
2018-10-03 21:21:56 +01:00
Daniel Collins
f8ee41f365 Implement basic logging functions, do some TODOs. 2018-10-02 00:46:05 +01:00
Daniel Collins
8b70fea3bc Finish implementation of (Get|Set)ApplicationDesc() 2018-10-01 23:03:33 +01:00
Daniel Collins
f5c660f22a Copy values for DPN_APPLICATION_DESC between peers. 2018-09-30 19:45:57 +01:00
Daniel Collins
f150264c93 Implement IDirectPlay8Peer::GetSPCaps() and SetSPCaps() 2018-09-29 19:56:47 +01:00
Daniel Collins
82a8842fa0 Implement IDirectPlay8Peer::GetCaps() and SetCaps() 2018-09-29 19:31:01 +01:00
Daniel Collins
c2a3b51c9d Implement IDirectPlay8Peer::EnumServiceProviders() 2018-09-29 19:00:45 +01:00
Daniel Collins
2b1a0fb687 Exchange peer information between host/peer. 2018-09-27 22:56:36 +01:00
Daniel Collins
f19678217f SendTo() support for DPNID_ALL_PLAYERS_GROUP, DPNSEND_NOLOOPBACK. 2018-09-24 21:43:25 +01:00
Daniel Collins
2635fd04cd Initial SetPeerInfo() and SetPeerInfo() implementations.
Doesn't copy between peers and only allows fetching local player info
at this time.
2018-09-24 21:40:34 +01:00
Daniel Collins
45b4fd19bd Basic message sending. 2018-09-21 01:03:49 +01:00
Daniel Collins
25341f2488 Milestone: Connect a single peer! 2018-09-20 00:58:41 +01:00
Daniel Collins
da3cd1a55f Use HandleHandlingPool to run DirectPlay8Peer worker threads. 2018-09-15 23:24:54 +01:00
Daniel Collins
d10a456883 Fix use of uninitialised memory, leaks. 2018-09-13 01:20:45 +01:00
Daniel Collins
c63945facd Initial prototype of network I/O and session enumeration.
The threading model used for processing messages here will need
redesigning; we can't allow the application to block the event loop
when processing a message in case it calls something which won't
return until a message is processed.

Final model will probably use a pool of workers which will handle I/O
one-at-a-time, blocking and allowing other threads to deal with the
I/O when in the application message callback.
2018-09-11 22:09:27 +01:00
Daniel Collins
f829367d1b Create sockets for hosting. 2018-08-30 22:55:00 +01:00
Daniel Collins
b2c025b530 Implemented initial skeleton of dpnet.dll and DirectPlay8Peer. 2018-08-21 22:59:27 +01:00