1
0
mirror of https://github.com/EDCD/EDMarketConnector.git synced 2025-04-22 03:40:46 +03:00
Athanasius fda91df04f
eddn: Working with tk 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.
2022-11-23 13:29:47 +00:00
2022-09-10 15:42:27 +01:00
2022-01-26 18:51:49 +02:00
2022-10-18 14:27:33 +01:00
2022-10-18 14:27:33 +01:00
2022-01-27 19:52:51 +02:00
2021-07-05 11:17:19 +02:00
2021-08-22 21:45:51 +02:00
2021-08-13 15:14:02 +01:00

Any questions or offers of help can be directed to the EDCD Discord #edmc channel:

Discord chat

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.

Description
Downloads commodity market and other station data from the game Elite: Dangerous for use with all popular online and offline trading tools.
Readme GPL-2.0 63 MiB
Languages
Python 99.6%
Shell 0.4%