On Mon, 29 Jun 2009 16:25:10 -0400 (EDT), [email protected] wrote: > >There is a long story here, but I would prefer to simply put the question >out. > >If you wanted to sell "seats" to your program, or limit the number of >simultaneous users, what would be your approach? > >The program runs on a server, all users at different PCs have a shortcut >to the application on the server. Delphi 5, windows LAN. > >Easy for the program to insert a session record at login, remove it at >logout. > >Clearly this will fail if the program exits (crashes) without removing the >session record. > >Another approach might involve some polling after login: query how many >instances are running at this very moment, refuse login if all seats >taken. In this case the details are over my head: exactly what port, how >to poll, supporting inter-process communication etc. I fear implementing >this may introduce more problems than I solve. > >Finally, as I write this, it occurs to me I can start a timer, and update >"last activity" in the session record every X minutes. Then, at login, >remove all records where last activity is more than X minutes ago, before >attempting to take a seat. I could toss that in probably without too much >fear of introducing more bugs, but it would leave a window of X minutes >where the problem exists. > >Just fishing for thoughts. >Any ideas or links appreciated. >Thank you.
My (unimplemented) idea on this was to go client-server for database access. Have the user "log" into the server and have their server run one thread per seat, permitting only one log in per thread. The thread would need to have a timed auto log out so that crashed clients would not screw the setup. Regards, Allan

