Add context to the listresp packet construction

Registered by Sean Ryan

Currently, a LISTREQ responds with a LISTRESP packet, and includes all server sessions. We want it changed so that the client can pre-determine what servers it is looking for without having to fetch the entire server list, and then query each server.

Change the composition of the responded list to be ( in pseudo ):

for each server data item
   for each client session filter attribute
     if server contains attribute, and attribute matches filter value ( possibly regex ? )
        add server to response list.
   done
done

Make sure to have an option that implies "send me servers that have no attributes" in order to allow filtering setup, but account for old servers that have not set any attributes.

So for example:

- old cyphesis server registers, sets no attributes
- new cyphesis server registers, sets the following attributes:
  GAME=Mason
  SERVER=cyphesis
  VERSION=0.2.23

- client sets filter attributes:
  SERVER=cyphesis
- client sets option:
  STRICTFILTER ( or something, this is not determined yet )

- client sends a LISTREQ packet, as normal.

Use Case 1: client has set STRICTFILTER
- LISTRESP only contains the new server that has the attribute set ( essentially treating missing criteria as a failed match )

Use Case 2: client has NOT set STRICTFILTER
- LISTRESP packet contains *BOTH* the new and old servers even though the old server doesn't match the criteria ( essentially missing criteria is treated as a match )

This gives the client option. Default to no strictfilter.

Blueprint information

Status:
Started
Approver:
Sean Ryan
Priority:
High
Drafter:
Sean Ryan
Direction:
Approved
Assignee:
Sean Ryan
Definition:
Approved
Series goal:
None
Implementation:
Started
Milestone target:
None
Started by
Sean Ryan

Related branches

Sprints

Whiteboard

(?)

Work Items

This blueprint contains Public information 
Everyone can see this information.

Subscribers

No subscribers.