Commit Graph

12 Commits

Author SHA1 Message Date
John Brooks 32230b77c1 core: Reuse protobuf structures for configuration
The existing configuration was partially compatible with Ricochet's,
but not enough to actually be useful. It also required a bunch of
boilerplate code to copy data between configuration data structures,
internal data structures, and RPC data structures.

Protobuf conveniently supports encoding messages to JSON, and we already
need to store most data (e.g. contacts) in protobuf structures. This
commit changes the configuration to be a protobuf JSON serialization of
the Config message, which can directly reuse RPC messages like Contact.

Additionally, the RWMutex-based configuration type was a deadlock
waiting to happen. There is now a read-only clone of the configuration
available atomically at any time. Writers need an exclusive lock on the
ConfigFile object, which commits its changes to disk and readers on
unlock.
2017-09-24 16:59:44 -06:00
John Brooks dcda924d56 core: Implement inbound contact requests
This does not yet include persistence of inbound requests in the config,
and it's mostly untested, but it's more or less complete.
2017-08-10 11:26:09 -06:00
John Brooks df56cd1757 Update RPC generated code 2016-11-30 19:37:46 -08:00
John Brooks 91dbe5a261 core: Remove outdated todo comments 2016-11-05 20:44:20 -06:00
John Brooks 2fd3cd2ea0 rpc: Add 'go generate' commands and update ContactRequest
It's now possible to regenerate the protobuf files by calling 'go
generate' in rpc/. You will need protoc and protoc-gen-go in PATH.
This is only necessary after changing the protobuf definitions.
2016-10-27 13:50:34 -06:00
John Brooks 8664873b5b cli: Keep track of conversations and prettify output 2016-10-22 17:52:26 -07:00
John Brooks bb530cfc2f core: Track unread state of received messages 2016-10-15 19:00:16 -06:00
John Brooks 623dccb26d core: Early proof-of-concept conversations API 2016-10-05 14:38:18 -07:00
John Brooks 6e68f861d8 rpc: Add UNKNOWN connection status for contacts
UNKNOWN is the new default status for contacts. A contact is in the
UNKNOWN state when we're not sure whether they are available or not, and
is in the OFFLINE state when we believe that we're online but attempts
to connect to that contact have failed.
2016-09-15 18:30:37 -06:00
John Brooks 2c4a1c8b37 core: Load contacts from config 2016-08-29 20:46:41 -06:00
John Brooks 0b44f08f32 rpc: Draft more RPC API calls 2016-08-16 17:43:39 -07:00
John Brooks 0547162586 Skeleton of RPC 2016-08-02 17:35:39 -06:00