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.