Old: heartbeat mechanism
Problem: if the client is blocked for > 30 secs
(e.g. because it takes a long time to write the state file,
of because it's stopped in a debugger)
then apps exit.
This is bad is the app doesn't checkpoint and has been
running for a long time.
New: the client passes its PID to the app.
The app periodically (10 sec) checks that the process still exists.
Notes:
- For backward compatibility (e.g. new API w/ old client,
or vice versa) the client still sends heartbeats,
and the API checks heartbeats if the client doesn't pass a PID.
- The new mechanism works only if the client's PID isn't assigned
to a new process within 10 secs of the client exiting.
Windows 2000 reuses PIDs immediately, so check for Win2K
and don't use this mechanism if so.
TODO: For Unix multithread apps,
critical sections aren't currently being enforced.
Need to fix this by masking signals.
svn path=/trunk/boinc/; revision=26147
proc_control: controlling processes
procinfo: enumerating and querying processes
run_app_windows: launching apps as other users on Win
svn path=/trunk/boinc/; revision=24120
building in a Unicode enabled environment.
NOTE: For files that are shared between the core client and
the manager, it was simpliar to just call the ANSI versions
of the specific Windows API functions then to monkey with
all of the string handling code and convert between ANSI
and UCS-2 strings. CreateFile becomes CreateFileA instead
of the default of CreateFileW.
Down to 11 compile time errors from over 100.
clientgui/
BOINCBaseFrame.cpp
BOINCTaskBar.cpp
browser.cpp
browser.h
sg_StatImageLoader.cpp
lib/
boinc_win.h
diagnostics_win.cpp
filesys.cpp
gui_rpc_client_ops.cpp
proc_control.cpp
stackwalker_imports.h
stackwalker_win.cpp
str_util.cpp
util.cpp
win_util.cpp, .h
svn path=/trunk/boinc/; revision=17859