github.com/rstandt/terraform@v0.12.32-0.20230710220336-b1063613405c/backend/remote-state/inmem/client.go (about)

     1  package inmem
     2  
     3  import (
     4  	"crypto/md5"
     5  
     6  	"github.com/hashicorp/terraform/state"
     7  	"github.com/hashicorp/terraform/state/remote"
     8  )
     9  
    10  // RemoteClient is a remote client that stores data in memory for testing.
    11  type RemoteClient struct {
    12  	Data []byte
    13  	MD5  []byte
    14  	Name string
    15  }
    16  
    17  func (c *RemoteClient) Get() (*remote.Payload, error) {
    18  	if c.Data == nil {
    19  		return nil, nil
    20  	}
    21  
    22  	return &remote.Payload{
    23  		Data: c.Data,
    24  		MD5:  c.MD5,
    25  	}, nil
    26  }
    27  
    28  func (c *RemoteClient) Put(data []byte) error {
    29  	md5 := md5.Sum(data)
    30  
    31  	c.Data = data
    32  	c.MD5 = md5[:]
    33  	return nil
    34  }
    35  
    36  func (c *RemoteClient) Delete() error {
    37  	c.Data = nil
    38  	c.MD5 = nil
    39  	return nil
    40  }
    41  
    42  func (c *RemoteClient) Lock(info *state.LockInfo) (string, error) {
    43  	return locks.lock(c.Name, info)
    44  }
    45  func (c *RemoteClient) Unlock(id string) error {
    46  	return locks.unlock(c.Name, id)
    47  }