after()
, on timer or when docked
* An aborted attempt was made to use a thread worker, but: 1. sqlite3 doesn't allow cross-thread use of the same sqlite3 connection. 2. Having an on-going query on one cursor, e.g. gathering all the outstanding message `id`, whilst trying to DELETE a row hits a "database is locked" error. * So, back to tk `after()`. `send_message_by_id()` has been audited to ensure its boolean return is accurate. So there shouldn't be any way in which to get hung up on a single message *other than if the EDDN Gateway is having issues, and thus it should be retried anyway*. Any reason for a 'bad message' will cause `True` return and thus deletion of the message in *this* call to `queue_check_and_send()`. * There is a new `reschedule` parameter to `queue_check_and_send()`. If `True` then at the end it should re-schedule. There is a check in `journal_entry()` for the `Docked` event, and if this occurs it will schedule `queue_check_and_send()` with `reschedule` set to `False` so that we don't end up with multiple parallel schedulings. It's still possible for a docking to have coincided with a scheduled run and thus cause double-rate sending to EDDN, but we can live with that. * The same scheduling mechanism is used, with a much smaller delay, to process more than one queued message per run. Hence the `have_rescheduled` bool *in* the function to indicate if a 'fast' reschedule has already been set. This prevents the slow one *also* being set in this scenario. The latter will be scheduled when the fast one found no more rows to process.
Any questions or offers of help can be directed to the EDCD Discord #edmc channel:
Elite: Dangerous Market Connector (EDMC)
This application is only of use to PC players of the game Elite Dangerous (and its expansions). It won't work with PS4 or Xbox accounts.
It utilises the Journal files written by the game on the user's computer, together with data from the API Frontier Developments supplies in order to feed this data to various third party sites that the user may find useful.
See the Wiki documentation for more details.
Installation & Uninstall
Please see the Installation & Setup wiki page.
Running from source
Please see the Running from source wiki page.
Plugins
Plugins extend the behaviour of this app. See the Plugins wiki page for more information.
If you would like to write a plugin please see PLUGINS.md.
Troubleshooting
Please see the Troubleshooting wiki page.
Reporting a problem
Please report a problem as a new GitHub issue. See Reporting a problem for further guidance, including how to find the necessary log files to attach to the report.
Packaging for distribution
Please see docs/Releasing.md.
Disclaimer
This app uses the “Companion” web API that Frontier originally supplied for their Elite Dangerous iOS app and now support for third-party apps. If that API ceases to function in the future then much of this application's functionality will be curtailed (although it could still utilise Journal files).
Acknowledgements
Please see the Acknowledgements wiki page.
License
Copyright © 2015-2019 Jonathan Harris, 2020-2021 EDCD
Licensed under the GNU Public License (GPL) version 2 or later.