« May 2007 | June 2007 Archives | July 2007 »

x64 Socket Server framework

My new development box arrived last week. It's a bit of a monster, dual processor (Intel Xeon E5320 quad core, 1.86 GHz), 8GB ram, and it runs 64bit Vista very nicely indeed. Since it's an x64 box I have started work on porting The Server Framework to x64. So far things are going very smoothly. The main issue is that I have, in the past, tended to overuse size_t when I really mean "a reasonable sized unsigned value". Since size_t doesn't really fit the bill for that on x64 most of the changes I've had to make are to reduce size_t counts…

Performance counter installation on Vista

I've been aware that there was a 'need to run as Administrator' issue with some of my server examples for a while; only the ones that installed/removed performance counter dlls or installed/removed themselves as Windows Services. The service installation problem was obvious, you got a message box saying that the user had insufficient rights and now, on Vista, this message box lets you try again and it relaunches the application with the "run_as" verb and you get a chance to run it as Admin... The performance counter issue seems more complex. Firstly the counters I use are based on some…

IPv6 support - in anger...

Whilst The Server Framework has supported IPv6 for a while now I haven't really used the functionality a great deal. My previous development box didn't have IPv6 installed and so I never really got around to playing with it. Since my new box has IPv6 installed and since porting, building and testing can become a bit dull after a while I've spent a little time this afternoon playing with making sure the example servers are fully IPv6 aware, and, in fact, address type agnostic. The bulk of the code was already address type agnostic, so much so that we've built bluetooth servers…

x64 port - a diversion

The x64 port of The Server Framework is going well. I've run the tests for the OpenSSL servers and things are looking good there; this is always an important stage to get to for me as these servers and their tests really thrash the framework and are good at shaking out any bugs that might be hiding... So, now I'm faced with the monkey work of adjusting all of the other example servers to build cleanly on all platforms and (in addition to the x64 work) to support either IPv4 or IPv6... My problem is that I now support 5 compilers; VC6…

Pluggable log systems

In the past I've mentioned my lack of enthusiasm for the normal 'debug trace' files that some systems seem to include... I pretty much consider them a design smell... But, some of my clients seem to like them and over the years I've been asked to provide high performance logging systems so that they can spew random messages to files and still run at a reasonable speed. I've written and adjusted an asynchronous file writing log file class a couple of times now and it finally ripened to the point where it was time to harvest it. I finally decided…

Reliable UDP

I've been doing some work for a client on their reliable UDP implementation. It's been interesting stuff. They had picked out a 'best of breed' open source, reliable UDP protocol implementation (ENet) which was in 'C' and integrated it into their server that was written in C++ with my framework. Unfortunately the 'C' API assumed a synchronous 'pull' model for the communications and The Server Framework gave them an asynchronous 'push' model. They called me in to look at the system and improve the performance. The work has been interesting and the conversion from the 'C', synchronous API to C++ async has…
« May 2007 | June 2007 Archives | July 2007 »

About this Archive

This page is an archive of entries from June 2007 listed from newest to oldest.

May 2007 is the previous archive.

July 2007 is the next archive.

I usually write about C++ development on Windows platforms, but I often ramble on about other less technical stuff...

Find recent content on the main index or look in the archives to find all content.

I have other blogs...

Subscribe to feed The Server Framework - high performance server development
Subscribe to feed Lock Explorer - deadlock detection and multi-threaded performance tools
Subscribe to feed l'Hexapod - embedded electronics and robotics