mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-08-16 08:53:46 +00:00
whisper: updated processing of incoming messages
This commit is contained in:
parent
c6125266a1
commit
15fc6eab07
1 changed files with 14 additions and 8 deletions
|
|
@ -225,7 +225,7 @@ func (api *PublicWhisperAPI) UninstallFilter(filterId uint32) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetFilterChanges retrieves all the new messages matched by a filter since the last retrieval.
|
// GetFilterChanges retrieves all the new messages matched by a filter since the last retrieval.
|
||||||
func (api *PublicWhisperAPI) GetFilterChanges(filterId uint32) []WhisperMessage {
|
func (api *PublicWhisperAPI) GetFilterChanges(filterId uint32) []*WhisperMessage {
|
||||||
f := api.whisper.GetFilter(filterId)
|
f := api.whisper.GetFilter(filterId)
|
||||||
if f != nil {
|
if f != nil {
|
||||||
newMail := f.Retrieve()
|
newMail := f.Retrieve()
|
||||||
|
|
@ -235,14 +235,14 @@ func (api *PublicWhisperAPI) GetFilterChanges(filterId uint32) []WhisperMessage
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetMessages retrieves all the known messages that match a specific filter.
|
// GetMessages retrieves all the known messages that match a specific filter.
|
||||||
func (api *PublicWhisperAPI) GetMessages(filterId uint32) []WhisperMessage {
|
func (api *PublicWhisperAPI) GetMessages(filterId uint32) []*WhisperMessage {
|
||||||
all := api.whisper.Messages(filterId)
|
all := api.whisper.Messages(filterId)
|
||||||
return toWhisperMessages(all)
|
return toWhisperMessages(all)
|
||||||
}
|
}
|
||||||
|
|
||||||
// toWhisperMessages converts a Whisper message to a RPC whisper message.
|
// toWhisperMessages converts a Whisper message to a RPC whisper message.
|
||||||
func toWhisperMessages(messages []*ReceivedMessage) []WhisperMessage {
|
func toWhisperMessages(messages []*ReceivedMessage) []*WhisperMessage {
|
||||||
msgs := make([]WhisperMessage, len(messages))
|
msgs := make([]*WhisperMessage, len(messages))
|
||||||
for i, msg := range messages {
|
for i, msg := range messages {
|
||||||
msgs[i] = NewWhisperMessage(msg)
|
msgs[i] = NewWhisperMessage(msg)
|
||||||
}
|
}
|
||||||
|
|
@ -449,15 +449,21 @@ type WhisperMessage struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewWhisperMessage converts an internal message into an API version.
|
// NewWhisperMessage converts an internal message into an API version.
|
||||||
func NewWhisperMessage(message *ReceivedMessage) WhisperMessage {
|
func NewWhisperMessage(message *ReceivedMessage) *WhisperMessage {
|
||||||
return WhisperMessage{
|
msg := WhisperMessage{
|
||||||
Payload: common.ToHex(message.Payload),
|
Payload: common.ToHex(message.Payload),
|
||||||
Padding: common.ToHex(message.Padding),
|
Padding: common.ToHex(message.Padding),
|
||||||
From: common.ToHex(crypto.FromECDSAPub(message.SigToPubKey())),
|
|
||||||
To: common.ToHex(crypto.FromECDSAPub(message.Dst)),
|
|
||||||
Sent: message.Sent,
|
Sent: message.Sent,
|
||||||
TTL: message.TTL,
|
TTL: message.TTL,
|
||||||
PoW: message.PoW,
|
PoW: message.PoW,
|
||||||
Hash: common.ToHex(message.EnvelopeHash.Bytes()),
|
Hash: common.ToHex(message.EnvelopeHash.Bytes()),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if message.Dst != nil {
|
||||||
|
msg.To = common.ToHex(crypto.FromECDSAPub(message.Dst))
|
||||||
|
}
|
||||||
|
if isMessageSigned(message.Raw[0]) {
|
||||||
|
msg.From = common.ToHex(crypto.FromECDSAPub(message.SigToPubKey()))
|
||||||
|
}
|
||||||
|
return &msg
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue