Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
  • Mar 24 18:06
    StevenLiekens commented #59
  • Mar 24 18:05
    StevenLiekens closed #59
  • Mar 24 18:05
    StevenLiekens commented #59
  • Mar 24 17:47
    StevenLiekens closed #58
  • Mar 24 17:47
    StevenLiekens commented #58
  • Mar 19 13:02
    Friesinator edited #59
  • Mar 19 13:01
    Friesinator opened #59
  • Mar 18 12:38
    StevenLiekens commented #58
  • Mar 15 15:19
    GHOSCHT commented #58
  • Mar 14 22:01
    Seeker1437 commented #58
  • Mar 14 20:08
    GHOSCHT commented #58
  • Mar 12 15:40
    StevenLiekens commented #58
  • Mar 10 15:46
    GHOSCHT opened #58
  • Apr 15 2018 16:43

    Ruhrpottpatriot on ServiceClient

    Remove superfluous compression … Add simple caching to Core proj… Move files into different folde… and 8 more (compare)

  • Apr 10 2018 21:09

    Ruhrpottpatriot on ServiceClient

    Add fluent api to create HttpRe… Fix Stylecop errors Remove dead code and 3 more (compare)

  • Mar 29 2018 13:11

    Ruhrpottpatriot on NetCore2.0

    Remove disabled and superseded … Delete unused leftover code fro… Move V1.Guild test to appropria… and 8 more (compare)

  • Mar 29 2018 12:17

    Ruhrpottpatriot on NetCore2.0

    Update .gitignore to exclude St… Add Api builder class (compare)

  • Feb 01 2018 09:33

    Ruhrpottpatriot on master

    Refactorize ServiceClient.GetHt… Merge pull request #57 from Kor… (compare)

  • Feb 01 2018 09:33
    Ruhrpottpatriot closed #57
  • Dec 27 2017 17:37
    Korjam opened #57
Steven Liekens
@StevenLiekens
by the way can you pull from here https://github.com/StevenLiekens/GW2.NET
it's kind of a messy situation with changes happening in both master and maintenance
Steven Liekens
@StevenLiekens
Still have to change chat codes in maintenance :( the game client uses new header bytes
Steven Liekens
@StevenLiekens
@Ruhrpottpatriot core.autocrlf "true" converts all line endings to LF when committing
then converts them back to CRLF when checking out
is that what we want?
Robert Logiewa
@Ruhrpottpatriot
yes
that is what we want
it converts all to LF and checks out CRLF on windows
on OSX and Linux it keeps them at LF
Need yout input on something:
With the new repositories I first do a check if the items are in the cache (which does a check if they are stale), if they are i return the cached items.
However: What to do about the method that returns all items?
Possible Solutions:
  • Change the cache to include a property that stores all possible IDs indipendent from the objects stored). Then when doing the check, I do a complement operation on the IDs and request only the missing ids
  • Always do a full a request against the API bypassing the cache
Robert Logiewa
@Ruhrpottpatriot
Thoughts?
Steven Liekens
@StevenLiekens
hmm
third option
Robert Logiewa
@Ruhrpottpatriot
I'm listening
Steven Liekens
@StevenLiekens
actually nvm
first option is the way to go
Robert Logiewa
@Ruhrpottpatriot
the first would mean, that we are doing a discover if the cache is empty.
and set the stale timer for it separately
Steven Liekens
@StevenLiekens
so basically
get all IDs at most every 5 minutes (or whatever the expires header value is)
and only fetch items that are not already in the cache or stale
right?
Robert Logiewa
@Ruhrpottpatriot
yeah, basically. Check if the ids are stale. If they are fetch a new set. Then do an intersect with the ids of stored objects in the cache not yet stale. Then query all missing ids
Steven Liekens
@StevenLiekens
missing ids + ...stale items?
or only missing ids?
Robert Logiewa
@Ruhrpottpatriot
yeah. Since if the item is stale it's not getting returned in the second set so it cannot be removed via the intersect
Steven Liekens
@StevenLiekens
you don't have to do the intersect since your code won't hit the network for items already in the cache
so it will just give you a bunch of references to objects already in the cache
Robert Logiewa
@Ruhrpottpatriot
sec

Let I be a set if Ids from discover, let S be a set of ids of objects in the cache.
Then we do the following:

if I == stale { update I }
S := cache.Ids.Where(i => i.NotStale)
Q := I \ S
call api with Q

We have to hit the cache to check if n > 0 items are stale. These items have to be requieried, since we can't guarantee them to be accurate, too

Steven Liekens
@StevenLiekens
accurate?
Robert Logiewa
@Ruhrpottpatriot
not outdated
Steven Liekens
@StevenLiekens
that could be a problem for commerce APIs
Robert Logiewa
@Ruhrpottpatriot
A repository does not automatically have a cache
Also: We always can set the expires header to the same timestamp as the query date
with that the items are always considered stale, effectively bypassing a cache
Steven Liekens
@StevenLiekens
first things first
the game client uses new header bytes for chat links
that needs to be fixed
Robert Logiewa
@Ruhrpottpatriot
yeah
Steven Liekens
@StevenLiekens
uhm
there are some commits in my fork that haven't made it back to you
it's a bit of a mess
Robert Logiewa
@Ruhrpottpatriot
do I need to pull some commits?
Steven Liekens
@StevenLiekens
I'm thinking
this commit was a mistake Ruhrpottpatriot/GW2.NET@a0782a5
because that change was supposed to be done on the maintenance branch and then merged
Robert Logiewa
@Ruhrpottpatriot
ugh