mirror of
https://github.com/status-im/status-go.git
synced 2025-01-18 10:42:07 +00:00
e65760ca85
This commit adds basic syncing capabilities with peers if they are both online. It updates the work done on MVDS, but I decided to create the code in status-go instead, since it's very tight to the application (similarly the code that was the inspiration for mvds, bramble, is all tight together at the database level). I reused parts of the protobufs. The flow is: 1) An OFFER message is sent periodically with a bunch of message-ids and group-ids. 2) Anyone can REQUEST some of those messages if not present in their database. 3) The peer will then send over those messages. It's disabled by default, but I am planning to add a way to set up the flags.
42 lines
1.1 KiB
Go
42 lines
1.1 KiB
Go
package common
|
|
|
|
import (
|
|
"crypto/ecdsa"
|
|
|
|
"github.com/status-im/status-go/protocol/protobuf"
|
|
)
|
|
|
|
type CommKeyExMsgType uint8
|
|
|
|
const (
|
|
KeyExMsgNone CommKeyExMsgType = 0
|
|
KeyExMsgReuse CommKeyExMsgType = 1
|
|
KeyExMsgRekey CommKeyExMsgType = 2
|
|
)
|
|
|
|
// RawMessage represent a sent or received message, kept for being able
|
|
// to re-send/propagate
|
|
type RawMessage struct {
|
|
ID string
|
|
LocalChatID string
|
|
LastSent uint64
|
|
SendCount int
|
|
Sent bool
|
|
ResendAutomatically bool
|
|
SkipEncryptionLayer bool // don't wrap message into ProtocolMessage
|
|
SendPushNotification bool
|
|
MessageType protobuf.ApplicationMetadataMessage_Type
|
|
Payload []byte
|
|
Sender *ecdsa.PrivateKey
|
|
Recipients []*ecdsa.PublicKey
|
|
SkipGroupMessageWrap bool
|
|
SkipApplicationWrap bool
|
|
SendOnPersonalTopic bool
|
|
CommunityID []byte
|
|
CommunityKeyExMsgType CommKeyExMsgType
|
|
Ephemeral bool
|
|
BeforeDispatch func(*RawMessage) error
|
|
HashRatchetGroupID []byte
|
|
PubsubTopic string
|
|
}
|