Commit Graph

64 Commits

Author SHA1 Message Date
Archi
2bef94e3b4 Misc 2023-12-23 23:37:29 +01:00
Archi
cf94c417d2 Misc 2023-12-23 23:16:44 +01:00
Archi
e480aca8b2 Use inventories items deduplication logic aligned with ASFB 2023-12-22 00:18:52 +01:00
Archi
2befe20f76 Use set parts also as inventories request optimization 2023-12-21 23:46:42 +01:00
Archi
40ab1d848c .NET 8 code enhancements 2023-12-11 23:55:13 +01:00
Archi
27f965d4af Kill API keys entirely
Economy bans we can handle ourselves server-side
2023-12-03 21:49:05 +01:00
Archi
eff60bf307 Implement background announcements for ASF STM
This will be used exclusively by users with extraordinary large inventories, or if ASF backend will just be slower than usual.
2023-12-02 19:36:34 +01:00
Archi
c7546194f8 Add handling of points shop items, and skip them for announcements 2023-11-29 19:17:02 +01:00
Archi
aea9dee4ea Further decrease server load
We can keep inventory checksum before deduplication in the cache. If it's determined to be the same, then our inventory state didn't change, so it also doesn't make much sense to ask server for set parts and announcement.
2023-11-29 14:26:57 +01:00
Archi
a3270e4081 Misc optimization 2023-11-29 13:21:12 +01:00
Łukasz Domeradzki
36ae066c65 Closes #3073 (#3077)
* Initial implementation of announce with diff

* Add missing logic pieces

* Change in logic

* Fix checksums

* Add deduplication logic

* Update SetPart.cs

* Use standalone endpoint for diff

* Use different hashcode impl

* Update AssetForListing.cs

* Misc

* Push all the changes for this to finally work

* Use original index rather than self-calculated

ASFB makes some calculations based on index, it's better for us to have holes rather than hiding skipped items.

* Handle edge case of no assets after deduplication

* Remove dead code

* Address trim warnings

* Misc optimization
2023-11-29 00:08:16 +01:00
Archi
f2ff2f4929 Closes #3060 2023-11-14 20:01:29 +01:00
Archi
3f91b18a4d Refactor confirmations
Make it so the design actually follows what Steam gives us now. There is no need for standalone Confirmation object anymore, rather re-use what Steam gives us. Optimize parsing type, expose it as public API. Small breaking change in HandleConfirmations() action.
2023-06-29 22:34:26 +02:00
Archi
57ac7e2816 Bullet-proof against invalid Steam items 2023-06-04 16:39:16 +02:00
Archi
09ff465f4a Misc 2023-06-03 17:56:27 +02:00
Archi
cd8c9cf80e Closes #2908 2023-06-03 17:50:50 +02:00
Archi
def3bdf24a Bump limit slightly 2023-05-31 15:39:42 +02:00
Archi
b39b64e11f Add server-side limit of items also to client side 2023-05-31 15:32:56 +02:00
Jack Nolddor
db65ed7545 Minimize chances of TooManyOffersSent during MatchActively (#2904) 2023-05-28 12:50:37 +02:00
Archi
3006290170 Stop matching actively on disconnection 2023-05-23 14:28:30 +02:00
Archi
a557b62e0b Fix for accounts without SG timestamp
Initially I added check against zero as bullet-proofing for unexpected events, but some accounts actually report 0.

Assume 0 is older than needed, if we don't have information available, we shouldn't jump to conclusions.
2023-05-18 12:01:48 +02:00
Archi
8c83b8c51f Closes #2900 Closes #2901 2023-05-16 21:27:36 +02:00
Archi
f9efaed524 Misc 2023-02-23 17:20:08 +01:00
Archi
d7e8710333 Do not announce/match with limited accounts, lockdowns and trade bans, improve ArchiCacheable
We can totally make use of success previously more often
2023-02-11 15:58:15 +01:00
Archi
8008a04354 Code cleanups and improvements
- Make use of new UnixFileMode, always one native method we need to maintain less
- Add madness support for it, because new feature of course
- Add optional netstandard target and required compatibility for it, so I can test netf-oriented changes easier
2023-02-09 02:25:11 +01:00
Archi
4798b29bff Misc 2023-01-24 23:00:27 +01:00
Archi
00f7d2bfb9 Closes #2787 2023-01-24 22:49:41 +01:00
Archi
e0f9fe3555 Skip empty nickname in self persona state callback 2023-01-24 01:29:55 +01:00
Archi
8ab6137ab1 Ensure we don't skip announcement if our trade token has changed
We don't care about nickname or avatar hash, even total amount of items is not that important, but trade token is crucial for matching
2023-01-21 23:23:08 +01:00
Archi
4cb8244353 Move to announce endpoint v3
By using ordered list for json body, we can further minimize amount of data sent by getting rid of the index.

We still need previous asset ID, as we send only a subset of real data and server is unable to calculate it from the data sent.
2023-01-21 20:32:42 +01:00
Archi
8aad8b6bcf Misc 2023-01-18 23:11:17 +01:00
Archi
239d523513 Skip announcements during matching 2023-01-18 22:52:25 +01:00
Archi
bcfeb66ba4 Allow maximum of 10 pending to confirm trade offers at once 2023-01-18 14:16:35 +01:00
Archi
28a3e27a5e Account for failures in a row when sending trade offers
We expect those to be occassional, but getting 5 in a row from 5 different users, that's extremely suspicious
2023-01-17 19:42:29 +01:00
Archi
27639b32d5 Accept all confirmations from ItemsMatcher at once
Previously we accepted those after each trade, because the overhead of loading other inventory was too big to leave those pending. Since we have all possible matches at once now, it makes sense to firstly schedule all trade offers, and then just confirm them all at once, especially since confirmations endpoint is horrific and very often problematic, on top of having 10-seconds rate-limiting.
2023-01-17 19:19:27 +01:00
Archi
5049f82dad Don't stop matching on occassional two factor failure 2023-01-17 19:00:31 +01:00
Archi
fc93f86060 Improve preferences of matching
We should try to match smallest bots first, but since assets are deduplicated exclusively for us, we should use total inventory count instead
2023-01-15 01:04:15 +01:00
Archi
e5ff2e9f02 Include TotalInventoryCount for the backend 2023-01-15 00:16:53 +01:00
Archi
88cec38df4 Decrease overhead for calculating tradable sets for announcement
We don't care about classIDs there, only amounts
2023-01-14 23:57:45 +01:00
Archi
8e7d05ce5c Skip untradable items for MatchEverything bots 2023-01-14 23:41:25 +01:00
Archi
eada4356f7 Remove MinItemsCount requirement 2023-01-14 23:08:13 +01:00
Archi
ca06d03475 Relax listing requirement
We no longer require 100 tradable items, but rather, 100 total items. We can also further optimize the payload by removing assets where we have no tradable items at all.
2023-01-14 22:24:21 +01:00
Archi
e6e82e19bd Cut excessive data from announcement
Now that we don't need to transmit whole inventory to the backend anymore, we can cut it to matchable types only
2023-01-14 15:08:28 +01:00
Archi
55f7235a32 Misc 2023-01-13 17:16:15 +01:00
Archi
84be0f8077 Misc
We can save some excessive memory I guess
2023-01-12 11:47:45 +01:00
Archi
8cc705feff Skip pointless announcements if possible 2023-01-12 11:42:04 +01:00
Archi
ca67285f34 No users to match against is expected 2023-01-11 20:15:19 +01:00
Archi
2b15b9f84e Optimize filtering of no-dupes
Slightly decreases CPU spent, since we calculate sets to remove only once rather than on each entry
2023-01-06 20:58:35 +01:00
Archi
dea715ff1e Decrease announcement time, set listener for finished trade offers 2023-01-05 14:30:08 +01:00
Archi
9144684df9 I knew I forgot about something 2022-12-30 17:22:21 +01:00