Commit Graph

273 Commits

Author SHA1 Message Date
David Anderson 8f7e94ec5d Client and Manager: make notices translatable
- Add a GUI RPC ("set_language") that lets the Manager communicate
  the user's selected language code to the client at startup.
- The client stores the language code in the client state file
- The client appends a "lang=X" GET argument to the URLs from
  which notices are fetched.
- The next steps (not done) are 1) to change the get_notices.php
  script to parse the argument and do translation, and
  2) extend our Pootle system to allow volunteer translation
  of notices by all projects.
2013-12-03 10:47:56 -08:00
David Anderson f3ffbf67f4 GUI RPC: add cpu_time (as well as elapsed_time) to OLD_RESULT 2013-10-18 00:46:48 -07:00
David Anderson d6398b0834 Client and boinccmd: fixes for get_old_results GUI RPC
- Add binding for get_old_results GUI RPC
- Add --get_old_tasks option to boinccmd
- Compile fixes for gcc (can't have a var named "or")
2013-09-08 12:11:09 -07:00
David Anderson 1a6a7128a1 client: get product name in Android
We want to track the product name (e.g. "HTC One X") of Android devices.
On Android, the API to get this is Java,
so we need to do it in the GUI rather than the client.
- Add product_name field to HOST_INFO
- Add a GUI RPC for passing this info from the GUI to the client.
- Store it in client_state.xml, so that the client knows it initially.

The product name is included in scheduler RPC requests, as part of <host_info>.
TODO: add server-side support for parsing it and storing in DB.

Also: move DEVICE_STATUS out of HOST_INFO; it didn't belong there.
2013-05-21 13:20:56 -07:00
Charlie Fenton 93aad6826c client & MGR: add support for <max_event_log_lines>N</max_event_log_lines> in cc_config.xml
Default is 2000
0 means unlimited
2013-05-18 03:25:44 -07:00
David Anderson 61913b181f client (Android): GUI reports battery and wifi status to client
Previously the client had (C++) code to
- check whether on AC or USB power
- get battery status and temperature
- check whether on wifi
These functions looked in various places under /sys.
Problem: the paths are system-dependent,
so whatever we do won't work on all devices.

The Android APIs for getting this info are in Java,
so we can't call them from the client.

Solution: have the GUI periodically get this info
and report it to the client via a GUI RPC.
The GUI must make this RPC periodically:
if the client doesn't get one within some period of time
(currently 30 sec) it suspends computing and network.

Also: if suspending jobs because of battery charge level
or temperature, leave them in memory.
2013-05-14 12:28:09 -07:00
David Anderson aa07305eeb - GUI RPC: add "project_dir" field to PROJECT struct.
GUIs can look for image files (stat_icon etc.) in this directory.
2013-04-18 12:43:17 -07:00
Charlie Fenton af10fb6cdd MGR: Limit event log to 2000 messages, deleting oldest if necessary 2013-03-05 16:42:45 +01:00
David Anderson 994f4d6b4c - Manager: fix case where the client has only an Intel GPU,
and the manager was acting as if it had no GPUs.
2013-03-05 13:39:42 +01:00
David Anderson 10f8baca5b - lib: function name tweak 2013-03-05 13:33:27 +01:00
Charlie Fenton b37c720661 Mgr: Display "Fetching notices..." instead of "There are no notices" while getting notices. Display "There are no notices" only if we have actually determined there are no notices 2013-03-04 17:19:40 +01:00
Rom Walton 2dd82881de - client/server: fix build breaks I introduced last night with a variable
rename.
2013-03-04 15:30:03 +01:00
Charlie Fenton ce87ec9848 OpenCL: First pass at adding support for Intel Ivy Bridge GPUs 2013-03-04 15:23:39 +01:00
David Anderson 5b740acee0 - client/manager: move the conditional define of MAXPATHLEN
from boinc_win.h to filesys.h,
	so that the client will hopefully build on Hurd,
	which doesn't define MAXPATHLEN.
2013-03-01 16:17:19 +01:00
David Anderson 9cf10b400a - GUI RPC: expose TIME_STATS info (e.g. on_frac) in
the binding of the get_state() RPC
- client: move client_start_time and previous_uptime
    from CLIENT_STATE to TIME_STATS,
    so that these are also visible in GUI RPC
- scheduler RPC: move uptime and previous_uptime
    into <time_stats>
- client: condition an RR simulation message on <rrsim_detail>
- boinccmd: show TIME_STATS info in --get_state
2013-03-01 16:08:52 +01:00
David Anderson 1db61a208c - Client/manager: if a GPU app is suspended because a GPU-exclusive
app is running, show an appropriate message.


svn path=/trunk/boinc/; revision=26128
2012-09-20 06:09:02 +00:00
David Anderson 32a08d27d9 - C++ code: use MAXPATHLEN for char arrays that hold paths
svn path=/trunk/boinc/; revision=25659
2012-05-09 16:11:50 +00:00
David Anderson d5bf5c46e3 - Manager: in Project Properties page,
show if a GPU type is excluded by configuration
- client: don't fetch work for a resource type if all instances
    of that type are excluded
- web: don't use filter_var(, FILTER_SANITIZE_STRING)
    to strip HTML tags from a string.
    This escapes singles quotes also.
    Use strip_tags() instead.


svn path=/trunk/boinc/; revision=25375
2012-03-04 04:58:41 +00:00
David Anderson 7c3bc68a05 - API, client, and Manager: add an optional "reason" argument to
boinc_temporary_exit(),
        explaining why the app is exiting.
        Convey this to the client, and then to the Manager,
        and display it there and in the log.

    clientgui/
        MainDocument.cpp
    lib/
        gui_rpc_client_ops.cpp
        gui_rpc_client.h
    api/
        boinc_api.cpp,h
    client/
        client_types.cpp,h
        app.h
        app_control.cpp

svn path=/trunk/boinc/; revision=25315
2012-02-22 22:56:05 +00:00
David Anderson 721493bf29 - Manager/Client: fix bugs in GUI RPC that prevented
updates to proxy info from being saved by client


svn path=/trunk/boinc/; revision=25297
2012-02-20 21:32:26 +00:00
David Anderson 7e48057f44 - client/Manager/GUI RPC: clean up RPC stuff involving
resource-specific backoff and exclusion

    Old: client writes
            <rsc_backoff_time>
            <rsc_backoff_interval>
            <no_rsc_ams>
            <no_rsc_apps>
            <no_rsc_pref>
        in GUI RPC entries for projects.
        Manager (GUI RPC client): PROJECT struct has
            cpu_backoff_time
            cpu_backoff_interval
            ... cuda, ati
            no_cpu_pref
            ... cuda, ati
        and it parses tags of these names.
        In other words, no information is being conveyed
        from client to Manager.

    New:
        manager parses both forms


svn path=/trunk/boinc/; revision=25217
2012-02-08 01:39:01 +00:00
David Anderson d281e43d6a - update_versions: for gzipped files,
send the size of the compressed file as well.
- client: parse and write the compressed size (FILE_INFO::gzipped_nbytes).
    For get_transfer GUI RPCs, if it's a compressed download send
    the compressed size.
    That way the manager will show the fraction done correctly.


svn path=/trunk/boinc/; revision=25152
2012-01-26 08:39:51 +00:00
David Anderson c05444ad1e - GUI RPC: switching to the new XML parser
(which won't parse a double as an int)
    revealed a type mismatch in FILE_TRANSFER::next_request_time
    between client and server.


svn path=/trunk/boinc/; revision=25125
2012-01-23 05:03:52 +00:00
David Anderson 81b29b0cc9 - API: fix queueing problem for graphics-related messages
(web graphics URL and remote desktop addr)
- GUI RPC and API:
    change "remote_desktop_connection" to "remote_desktop_addr" everywhere.
    It's an address, not a connection.
- vboxwrapper: log message cleanup


svn path=/trunk/boinc/; revision=25044
2012-01-13 19:00:16 +00:00
Rom Walton 3bc326db3e - client: Add plumbing to support passing the remote desktop
connection information to the manager
    - MGR: Add a "Show VM Console" button for those tasks which
        report a remote desktop port number.

    client/
        app.cpp, .h
        app_control.cpp
    clientgui/
        Events.h
        MainDocument.cpp, .h
        ViewWork.cpp, .h
    lib/
        gui_rpc_client.h
        gui_rpc_client_ops.cpp

svn path=/trunk/boinc/; revision=25036
2012-01-12 22:05:25 +00:00
David Anderson fc6d530a6c - client: shuffle disk usage code in preparation for disk accounting
- use new XML parser in some GUI RPC code


svn path=/trunk/boinc/; revision=24925
2011-12-28 14:52:03 +00:00
David Anderson b003b8e290 - add support for APP::needs_network flag.
If set, don't run jobs for that app while network is suspended.
		- client: parse this flag and maintain in state file;
			do a job reschedule when network suspend state changes
		- GUI RPC: add RESULT::network_wait flag;
			if set, this job is waiting for network access to be allowed
		- Manager: display the above in task info
	- add support for "web graphics URL" (see above)
		- client: parse message containing URL on graphics_reply channel
			and store in ACTIVE_TASK::web_graphics_url
		- GUI RPC: add RESULT::web_graphics_url
		- Manager: if web graphics URL is present, Show Graphics opens a browser
	- remove some vestigial code for pre-V6 graphics

svn path=/trunk/boinc/; revision=24899
2011-12-26 03:30:32 +00:00
David Anderson e8027a224e - client: isdigit() asserts if its arg is negative (which it can be).
Call isascii() first.
	- GUI RPC lib: add some consts

svn path=/trunk/boinc/; revision=24726
2011-12-04 19:02:36 +00:00
Rom Walton afb727eba3 - Remove dead code related to v5 graphics applications from the
client software.
    
    client/
        boinc_cmd.cpp
    clientgui/
        AsyncRPC.cpp, .h
        BOINCGUIApp.cpp, .h
        MainDocument.cpp
    clientgui/gtk/
        taskbarex.cpp
    clientscr/
        screensaver.cpp
    lib/
        gui_rpc_client.h
        gui_rpc_client_ops.cpp
    win_build/
        win-config.h

svn path=/trunk/boinc/; revision=24398
2011-10-14 19:02:43 +00:00
David Anderson 115ca46730 - GUI RPC: add get_daily_xfer_history() RPC for getting
the daily records of #bytes uploaded and downloaded


svn path=/trunk/boinc/; revision=24340
2011-10-06 17:23:16 +00:00
David Anderson e279b59913 - Updates Linux notifications to use current libnotify.
- Fix build problems on Mac OS X using autotools
- Consistently use #if HAVE_X for platform checks,
    rather than #ifdef HAVE_X or #if defined(HAVE_X)
- In Unix build, make lots of compiler checks standard
- Fix some compile warnings

From Matt Arsenault.

Note: there are now lots of compile warnings in clientgui/ on Unix,
    mostly in WxWidgets code


svn path=/trunk/boinc/; revision=24303
2011-09-27 19:45:27 +00:00
David Anderson 55b9d48deb - client, GUI RPC, Manager:
in GUI RPC, change RESULT.gpu_mem_wait to scheduler_wait.
    It means that the app did a boinc_temporary_exit(),
    and is waiting to be rescheduled.
    GPU mem wait is one source of this, not the only one


svn path=/trunk/boinc/; revision=24176
2011-09-13 05:54:55 +00:00
David Anderson 609d5665cc - client: pass XML_PARSER& rather than MIOFILE& to parse functions.
Preparatory to using new-style XML parsing everywhere.


svn path=/trunk/boinc/; revision=23975
2011-08-09 21:44:14 +00:00
David Anderson 8296968cbb - client: changes to the client file model to support distributed storage,
as described here: http://boinc.berkeley.edu/trac/wiki/ClientDataModel
        Compatibility:
            clients that upgrade to this version should see nothing unusual.
            Clients that downgrade from this version to a previous version
            should see all projects reset
            (i.e. tasks disappear and then get re-downloaded).
    - manager: always show whether a file transfer is upload or download
    - client: don't scale work requests by resource share

svn path=/trunk/boinc/; revision=23862
2011-07-20 19:12:10 +00:00
David Anderson b8ba609604 - Manager and GUI RPC:
Remove debt fields from PROJECT: not used anymore
    Add sched_priority field


svn path=/trunk/boinc/; revision=23830
2011-07-11 04:57:56 +00:00
Charlie Fenton 163978a369 lib: fill in missing entries in COPROCS GUI RPCs, ensure that old data is reset when connecting to a different host (not yet complete)
svn path=/trunk/boinc/; revision=23765
2011-06-22 11:25:06 +00:00
David Anderson 6c59ef3bff - GUI RPC: restore <have_cuda>, <have_ati> elements in CC_STATE for compatibility
- client: copy coprocs to host_info._coprocs at startup
		(else GUI RPCs don't have right info)

svn path=/trunk/boinc/; revision=23757
2011-06-20 23:18:37 +00:00
David Anderson 04c48d67b8 - web: use ReCaptcha for account creation as well as profile creation
(from Daniel)
- GUI RPC: remove have_cuda from CC_STATE.
    Use the info in host_info.coprocs instead.


svn path=/trunk/boinc/; revision=23755
2011-06-20 17:17:56 +00:00
Charlie Fenton 9a4b695299 lib, MGR: Implement get_cc_config, set_cc_config RPCs
svn path=/trunk/boinc/; revision=23470
2011-04-27 11:01:07 +00:00
David Anderson 3b906a191c - client: generalize the GPU framework so that
- new GPU types can be added easily
		- users can specify GPUs in cc_config.xml,
			referred to by app_info.xml,
			and they will be scheduled by BOINC
			and passed --device N options
			Note: the parsing of cc_config.xml is not done yet.
		- RPC protocols (account manager and scheduler)
			can now specify GPU types in separate elements
			rather than embedding them in tag names
			e.g. <no_rsc>NVIDIA</no_rsc> rather than <no_cuda/>
	- client: in account manager replies, parse elements of the form
		<no_rsc>NAME</no_rsc>
		indicating the GPUs of type NAME should not be used.
		This allows account managers to control GPU types
		not hardwired into the client.
		Note: <no_cuda/> and <no_ati/> will continue to be supported.
	- scheduler RPC reply: add
		<no_rsc_apps>NAME</no_rsc_apps>
		(NAME = GPU name)
		to indicate that the project has no jobs for the indicated GPU type.
		<no_cuda_apps> etc. are still supported 
	- client/lib: remove set_debts() GUI RPC
	- client/scheduler RPC
		remove <cuda_backoff> etc. (superceded by no_app)
		Exception: <ip_result> elements in sched request
		still have <ncudas> and <natis>.
		Fix this later.

	Implementation notes:
	- client/lib: change "CUDA" to "NVIDIA" in type/variable names, and in XML
		Continue to recognize "CUDA" for compatibility
	- host_info.coprocs no longer used within the client;
		use a global var (COPROCS coprocs) instead.
		COPROCS now has an array of COPROCs;
		GPUs types are identified by the array index.
		Index zero means CPU.
	- a bunch of other resource-specific structs (like RSC_WORK_FETCH)
		are now stored in arrays, with same indices as COPROCS
		(i.e. index 0 is CPU)
	- COPROCS still has COPROC_NVIDIA and COPROC_ATI structs to hold vendor-specific info
	- APP_VERSION now has a struct GPU_USAGE to describe its GPU usage

svn path=/trunk/boinc/; revision=23253
2011-03-25 03:44:09 +00:00
David Anderson b2f04c9784 - client/manager: show venue in project properties
svn path=/trunk/boinc/; revision=22995
2011-02-04 18:52:14 +00:00
David Anderson 789f0b67fc - GUI RPC: parse GPU info, FLOPS from APP_VERSION records
(client already sends this info)

svn path=/trunk/boinc/; revision=22624
2010-11-04 21:32:05 +00:00
David Anderson 746f62ff1a - GUI RPC: remove unneeded isIPV6 flag, factor out sizeof() logic
svn path=/trunk/boinc/; revision=22472
2010-10-07 17:41:34 +00:00
Charlie Fenton 528d2b40cf lib: Fix problem with IPV6-compatible code on Mac
svn path=/trunk/boinc/; revision=22428
2010-09-30 07:42:32 +00:00
Charlie Fenton bbcc7cd36d lib: Temporary work-around for unknown problem with IPV6-compatible code on Mac
svn path=/trunk/boinc/; revision=22425
2010-09-29 23:27:44 +00:00
David Anderson 0d41de283a - client: revert to old network functions (gethostbyname() etc.) on Win:
- inet_ntop() etc. exist only on Vista+
		- the other functions are declared in winsock2.h.
			This breaks the Manager build, since wxwidgets includes winsock.h.
		So to hell with it.
	- windows build: manager doesn't depend on client

svn path=/trunk/boinc/; revision=22358
2010-09-15 20:33:44 +00:00
David Anderson 0f4735352a - client: a bit of IPv6 compatibility
- use "sockaddr_storage" to store network addresses
        (which may be IPv4 or IPv6)
        rather than assuming they fit in an int.
    - the entries in gui_rpc_auth.cfg may now be IPv6 addresses
        (a🅱️c:e:f:g format),
        or domain names of hosts that support only IPv6
    Note: GUI RPCs are still constrained to use IPv4,
    but this should be easy to change if it's every needed

    Also: replace deprecated gethostbyname() with getaddrinfo().

svn path=/trunk/boinc/; revision=22353
2010-09-15 17:41:25 +00:00
David Anderson 5989051b73 - lib: removed unneeded include. Fixes #1004
svn path=/trunk/boinc/; revision=22235
2010-08-14 13:48:26 +00:00
David Anderson e2299ef8bb - client/manager/GUI RPC: add optional "translatable" arg
to get_messages() RPC; if absent or false,
    client will strip _( ) from messages.

svn path=/trunk/boinc/; revision=21946
2010-07-14 21:23:17 +00:00
David Anderson f575d3ddd9 - GUI RPC: add NOTICES::complete, so caller knows whether
what's being returned is new notices or all notices.

svn path=/trunk/boinc/; revision=21843
2010-06-29 21:40:12 +00:00