De voorbije twee dagen heb ik me voornamelijk bezig gehouden met het verbeteren van de bestaande code, in plaats van met het toevoegen van functionaliteit.
Hiervoor ben ik begonnen met het schrijven van Unit Tests (hetgeen gemakkelijk is dankzij de unittesting library in Python), die al meteen een bug lieten bovenkomen. Gesloten sockets werden namelijk niet verwijderd uit de socketList van de server. Ook bleek uit de Unit Tests dat, wanneer een client zijn socket sloot, de geüpdate presence list nog niet werd gebroadcast naar alle andere clients.
Aangezien ik toch aan het refactoren was, heb ik meteen ook maar een hoop exception handling code geschreven, zodat de server niet crasht bij de kleinste fout, maar deze proper afhandelt en dan verder loopt.
Verder heb ik ook de code van de originele facadedaemon lichtjes aangepast, zodat lokaal de presence wordt aangegeven als ‘away’ indien er een andere computer in het netwerk zit die een hoger presence level heeft dan de huidige client. Hij stuurt nu ook een presence level van ’5′ uit indien presence gedetecteerd wordt.
Door het integreren van mijn code met het bestaande framework heb ik nog een foutje ontdekt. Het was me namelijk blijkbaar ontgaan dat TCP werkt met streams in plaats van messages. Aangezien de facadedaemon vaak van presence verandert, zou het kunnen dat 2 of meer presence messages als 1 message worden gezien. Bijgevolg eindigen alle messages nu met de code ‘///’, om aan te geven dat de message daar stopt.

2 reacties
Feed met reacties voor dit artikel
12/02/2009 bij 14:25
Wim Leers
Is het echt de bedoeling dat we zo gedetailleerd bloggen over onze vooruitgang? In dat geval ga ik ook meer moeten gaan bloggen …
P.S.: waarom kan ik niet naar de “notify me …” checkbox tabben? :S Die wordt gewoon overgeslagen.
12/02/2009 bij 14:35
Bram Bonné
Ik denk niet dat we dat zo gedetailleerd moeten doen als ik in mijn vorige post, maar ik had even zin om een blogpostje te maken.
Geen idee wat betreft de notify me… checkbox, da’s gekke wordpress.