github.com/MetalBlockchain/metalgo@v1.11.9/vms/rpcchainvm/messenger/messenger_client.go (about)

     1  // Copyright (C) 2019-2024, Ava Labs, Inc. All rights reserved.
     2  // See the file LICENSE for licensing terms.
     3  
     4  package messenger
     5  
     6  import (
     7  	"context"
     8  
     9  	"github.com/MetalBlockchain/metalgo/snow/engine/common"
    10  
    11  	messengerpb "github.com/MetalBlockchain/metalgo/proto/pb/messenger"
    12  )
    13  
    14  // Client is an implementation of a messenger channel that talks over RPC.
    15  type Client struct {
    16  	client messengerpb.MessengerClient
    17  }
    18  
    19  // NewClient returns a client that is connected to a remote channel
    20  func NewClient(client messengerpb.MessengerClient) *Client {
    21  	return &Client{client: client}
    22  }
    23  
    24  func (c *Client) Notify(msg common.Message) error {
    25  	_, err := c.client.Notify(context.Background(), &messengerpb.NotifyRequest{
    26  		Message: messengerpb.Message(msg),
    27  	})
    28  	return err
    29  }