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

65 Commits

Author SHA1 Message Date
Daniel Collins
8ffad7fbdd Fix logging. 2018-10-23 22:04:06 +01:00
Daniel Collins
4b962954ef Release lock when dispatching DPNMSG_CREATE_PLAYER in IDirectPlay8::Host() 2018-10-23 22:03:18 +01:00
Daniel Collins
a5ff5b9a09 Build dpnet.dll 2018-10-21 21:17:06 +01:00
Daniel Collins
780a37965b Implement IDirectPlay8Peer::GetLocalHostAddresses() method 2018-10-21 21:17:01 +01:00
Daniel Collins
b04735e8ea Don't crash if IDirectPlay8Peer::Host() is passed a NULL session name. 2018-10-21 20:50:35 +01:00
Daniel Collins
d9c78f14bf Delete obsolete Makefile 2018-10-17 00:07:10 +01:00
Daniel Collins
5ccf66fceb Implement cancelling of queued asynchronous sends. 2018-10-16 23:25:08 +01:00
Daniel Collins
5c8f19d5a8 Log failures in hookdll 2018-10-16 13:48:51 +01:00
Daniel Collins
dd6488969e Track and wait for synchronous EnumHosts() calls in Close() 2018-10-16 13:23:48 +01:00
Daniel Collins
0239e5357d Add missing lock uses in DirectPlay8Peer 2018-10-16 13:13:45 +01:00
Daniel Collins
9fc69d67ea Remove code duplication in disconnect/cleanup paths. 2018-10-15 18:13:10 +01:00
Daniel Collins
b74b018ff2 Implement IDirectPlay8Peer::TerminateSession() 2018-10-15 13:29:07 +01:00
Daniel Collins
b44689b38f Implement IDirectPlay8Peer::DestroyPeer() 2018-10-14 17:41:57 +01:00
Daniel Collins
7723fc04e3 Implement player enumeration in IDirectPlay8Peer::EnumPlayersAndGroups() 2018-10-14 13:42:07 +01:00
Daniel Collins
c88355efb9 DirectPlay8Peer: Support cancelling in-progress connections. 2018-10-14 11:18:56 +01:00
Daniel Collins
f753f42d44 Allocate async handles correctly. 2018-10-14 01:06:00 +01:00
Daniel Collins
56ab6ea75a Destroy local player is connecting to a peer fails. 2018-10-12 16:41:49 +01:00
Daniel Collins
1b16624577 Handle IDirectPlay8Peer::Close() being called by the host. 2018-10-12 10:14:20 +01:00
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
551cbcf43c Include Wine DirectPlay headers rather than needing the DX SDK. 2018-10-03 23:21:02 +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
d4d0c2f64a Use same host enumeration parameters as DirectX. 2018-09-29 19:59:38 +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
6b8d3eab9b HostEnumerator: Populate host address port correctly. 2018-09-27 22:22:56 +01:00
Daniel Collins
ca6184b1c9 DirectPlay8Address: Convert ANSI strings to Unicode. 2018-09-27 22:05:38 +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
c28f880fee Initial prototype of a hook DLL (ddraw.dll) 2018-09-23 15:43:15 +01:00
Daniel Collins
45b4fd19bd Basic message sending. 2018-09-21 01:03:49 +01:00
Daniel Collins
e8fdf2ecb1 Simple SendTo tests 2018-09-20 22:51:54 +01:00
Daniel Collins
25341f2488 Milestone: Connect a single peer! 2018-09-20 00:58:41 +01:00
Daniel Collins
98b37cf76c WIP: DirectPlay8Peer::Connect() tests
Currently being developed against real DirectPlay to be a baseline.
2018-09-17 23:18:49 +01:00
Daniel Collins
da3cd1a55f Use HandleHandlingPool to run DirectPlay8Peer worker threads. 2018-09-15 23:24:54 +01:00
Daniel Collins
f06f219d61 Implement HandleHandlingPool class.
This will run all the main I/O threads in DirectPlay8Peer, only
the host enumeration will be outside of it at this time.
2018-09-15 21:38:01 +01:00
Daniel Collins
26c038a24d Build with Visual Studio toolchain rather than GCC.
I want C++17 features :(
2018-09-13 01:42:31 +01:00
Daniel Collins
1dd9e45145 Improve DirectPlay8Peer object management in tests. 2018-09-13 01:40:47 +01:00
Daniel Collins
d10a456883 Fix use of uninitialised memory, leaks. 2018-09-13 01:20:45 +01:00