Documentation
¶
Overview ¶
bcnet implements the Blobcache Protocol (BCP).
Index ¶
- Constants
- func Abort(ctx context.Context, tp Transport, ep blobcache.Endpoint, tx blobcache.Handle) error
- func AddFrom(ctx context.Context, tp Transport, ep blobcache.Endpoint, tx blobcache.Handle, ...) error
- func AllowLink(ctx context.Context, tp Transport, ep blobcache.Endpoint, tx blobcache.Handle, ...) error
- func Await(ctx context.Context, tp Transport, ep blobcache.Endpoint, ...) error
- func BeginTx(ctx context.Context, tp Transport, ep blobcache.Endpoint, ...) (*blobcache.Handle, error)
- func CloneVolume(ctx context.Context, tp Transport, ep blobcache.Endpoint, ...) (*blobcache.Handle, error)
- func Commit(ctx context.Context, tp Transport, ep blobcache.Endpoint, tx blobcache.Handle, ...) error
- func CreateVolume(ctx context.Context, tp Transport, ep blobcache.Endpoint, ...) (*blobcache.Handle, error)
- func Delete(ctx context.Context, tp Transport, ep blobcache.Endpoint, tx blobcache.Handle, ...) error
- func Drop(ctx context.Context, tp Transport, ep blobcache.Endpoint, h blobcache.Handle) error
- func Exists(ctx context.Context, tp Transport, ep blobcache.Endpoint, tx blobcache.Handle, ...) error
- func Get(ctx context.Context, tp Transport, ep blobcache.Endpoint, txh blobcache.Handle, ...) (int, error)
- func InspectHandle(ctx context.Context, tp Transport, ep blobcache.Endpoint, h blobcache.Handle) (*blobcache.HandleInfo, error)
- func InspectTx(ctx context.Context, tp Transport, ep blobcache.Endpoint, tx blobcache.Handle) (*blobcache.TxInfo, error)
- func InspectVolume(ctx context.Context, tp Transport, ep blobcache.Endpoint, vol blobcache.Handle) (*blobcache.VolumeInfo, error)
- func IsVisited(ctx context.Context, tp Transport, ep blobcache.Endpoint, tx blobcache.Handle, ...) error
- func KeepAlive(ctx context.Context, tp Transport, ep blobcache.Endpoint, ...) error
- func Load(ctx context.Context, tp Transport, ep blobcache.Endpoint, tx blobcache.Handle, ...) error
- func OpenFiat(ctx context.Context, tp Transport, ep blobcache.Endpoint, target blobcache.OID, ...) (*blobcache.Handle, error)
- func OpenFrom(ctx context.Context, tp Transport, ep blobcache.Endpoint, ...) (*blobcache.Handle, error)
- func ParseWireError(code MessageType, x []byte) error
- func Post(ctx context.Context, tp Transport, ep blobcache.Endpoint, txh blobcache.Handle, ...) (blobcache.CID, error)
- func Save(ctx context.Context, tp Transport, ep blobcache.Endpoint, tx blobcache.Handle, ...) error
- func Share(ctx context.Context, tp Transport, ep blobcache.Endpoint, h blobcache.Handle, ...) (*blobcache.Handle, error)
- func Visit(ctx context.Context, tp Transport, ep blobcache.Endpoint, tx blobcache.Handle, ...) error
- type AbortReq
- type AbortResp
- type AccessFunc
- type AddFromReq
- type AddFromResp
- type AllowLinkReq
- type AllowLinkResp
- type AwaitReq
- type AwaitResp
- type BeginTxReq
- type BeginTxResp
- type CloneVolumeReq
- type CloneVolumeResp
- type CommitReq
- type CommitResp
- type CreateVolumeReq
- type CreateVolumeResp
- type DeleteReq
- type DeleteResp
- type DropReq
- type DropResp
- type ExistsReq
- type ExistsResp
- type GetReq
- type GetResp
- type InspectHandleReq
- type InspectHandleResp
- type InspectTxReq
- type InspectTxResp
- type InspectVolumeReq
- type InspectVolumeResp
- type IsVisitedReq
- type IsVisitedResp
- type KeepAliveReq
- type KeepAliveResp
- type LoadReq
- type LoadResp
- type Marshaller
- type Message
- func (m *Message) Body() []byte
- func (m *Message) Header() MessageHeader
- func (m *Message) ReadFrom(r io.Reader) (int64, error)
- func (m *Message) SetBody(body []byte)
- func (m *Message) SetCode(code MessageType)
- func (m *Message) SetError(err error)
- func (m *Message) WriteTo(w io.Writer) (int64, error)
- type MessageHeader
- type MessageType
- type Node
- func (n *Node) Ask(ctx context.Context, remote blobcache.Endpoint, req Message, resp *Message) error
- func (n *Node) LocalAddr() netip.AddrPort
- func (n *Node) LocalEndpoint() blobcache.Endpoint
- func (n *Node) LocalID() blobcache.PeerID
- func (n *Node) Serve(ctx context.Context, srv Server) error
- func (n *Node) Tell(ctx context.Context, remote blobcache.Endpoint, req *Message) error
- type OpenFiatReq
- type OpenFiatResp
- type OpenFromReq
- type OpenFromResp
- type SaveReq
- type SaveResp
- type Server
- type ShareReq
- type ShareResp
- type Transport
- type Tx
- func (tx *Tx) Abort(ctx context.Context) error
- func (tx *Tx) AllowLink(ctx context.Context, subvol blobcache.Handle) error
- func (tx *Tx) Commit(ctx context.Context) error
- func (tx *Tx) Delete(ctx context.Context, cids []blobcache.CID) error
- func (tx *Tx) Exists(ctx context.Context, cids []blobcache.CID, dst []bool) error
- func (tx *Tx) Get(ctx context.Context, cid blobcache.CID, buf []byte, opts blobcache.GetOpts) (int, error)
- func (tx *Tx) Hash(salt *blobcache.CID, data []byte) blobcache.CID
- func (tx *Tx) IsVisited(ctx context.Context, cids []blobcache.CID, dst []bool) error
- func (tx *Tx) Load(ctx context.Context, dst *[]byte) error
- func (tx *Tx) MaxSize() int
- func (tx *Tx) Post(ctx context.Context, data []byte, opts blobcache.PostOpts) (blobcache.CID, error)
- func (tx *Tx) Save(ctx context.Context, src []byte) error
- func (tx *Tx) Visit(ctx context.Context, cids []blobcache.CID) error
- func (tx *Tx) Volume() volumes.Volume
- type Unmarshaller
- type VisitReq
- type VisitResp
- type Volume
- func NewVolume(node Transport, ep blobcache.Endpoint, h blobcache.Handle, ...) *Volume
- func OpenVolumeAs(ctx context.Context, tp Transport, ep blobcache.Endpoint, target blobcache.OID, ...) (*Volume, error)
- func OpenVolumeFrom(ctx context.Context, tp Transport, ep blobcache.Endpoint, ...) (*Volume, error)
- func (v *Volume) Await(ctx context.Context, prev []byte, next *[]byte) error
- func (v *Volume) BeginTx(ctx context.Context, spec blobcache.TxParams) (volumes.Tx, error)
- func (v *Volume) Endpoint() blobcache.Endpoint
- func (v *Volume) Handle() blobcache.Handle
- func (v *Volume) Info() *blobcache.VolumeInfo
Constants ¶
View Source
const ( MT_OK = 128 + iota MT_ERROR_TIMEOUT MT_ERROR_INVALID_HANDLE MT_ERROR_NOT_FOUND MT_ERROR_NO_PERMISSION MT_ERROR_NO_LINK MT_ERROR_UNKNOWN = 255 )
Response messages
View Source
const HeaderLen = 1 + 4
Variables ¶
This section is empty.
Functions ¶
func CloneVolume ¶
func CreateVolume ¶
func InspectHandle ¶
func InspectVolume ¶
func ParseWireError ¶
func ParseWireError(code MessageType, x []byte) error
Types ¶
type AccessFunc ¶
AccessFun is called to get a service to access
type AddFromReq ¶
func (AddFromReq) Marshal ¶
func (ar AddFromReq) Marshal(out []byte) []byte
func (*AddFromReq) Unmarshal ¶
func (ar *AddFromReq) Unmarshal(data []byte) error
type AddFromResp ¶
type AddFromResp struct {
Added []bool
}
func (AddFromResp) Marshal ¶
func (ar AddFromResp) Marshal(out []byte) []byte
func (*AddFromResp) Unmarshal ¶
func (ar *AddFromResp) Unmarshal(data []byte) error
type AllowLinkReq ¶
func (AllowLinkReq) Marshal ¶
func (ar AllowLinkReq) Marshal(out []byte) []byte
func (*AllowLinkReq) Unmarshal ¶
func (ar *AllowLinkReq) Unmarshal(data []byte) error
type AllowLinkResp ¶
type AllowLinkResp struct{}
func (AllowLinkResp) Marshal ¶
func (ar AllowLinkResp) Marshal(out []byte) []byte
func (*AllowLinkResp) Unmarshal ¶
func (ar *AllowLinkResp) Unmarshal(data []byte) error
type AwaitReq ¶
type AwaitReq struct {
Cond blobcache.Conditions
}
type BeginTxReq ¶
func (BeginTxReq) Marshal ¶
func (btx BeginTxReq) Marshal(out []byte) []byte
func (*BeginTxReq) Unmarshal ¶
func (btx *BeginTxReq) Unmarshal(data []byte) error
type BeginTxResp ¶
type BeginTxResp struct { // Tx is the handle for the transaction. Tx blobcache.Handle // VolumeInfo is the volume info for the transaction. VolumeInfo blobcache.VolumeInfo }
func (BeginTxResp) Marshal ¶
func (btx BeginTxResp) Marshal(out []byte) []byte
func (*BeginTxResp) Unmarshal ¶
func (btx *BeginTxResp) Unmarshal(data []byte) error
type CloneVolumeReq ¶
func (CloneVolumeReq) Marshal ¶
func (cr CloneVolumeReq) Marshal(out []byte) []byte
func (*CloneVolumeReq) Unmarshal ¶
func (cr *CloneVolumeReq) Unmarshal(data []byte) error
type CloneVolumeResp ¶
func (CloneVolumeResp) Marshal ¶
func (cr CloneVolumeResp) Marshal(out []byte) []byte
func (*CloneVolumeResp) Unmarshal ¶
func (cr *CloneVolumeResp) Unmarshal(data []byte) error
type CommitReq ¶
type CommitResp ¶
type CommitResp struct{}
func (CommitResp) Marshal ¶
func (cr CommitResp) Marshal(out []byte) []byte
func (*CommitResp) Unmarshal ¶
func (cr *CommitResp) Unmarshal(data []byte) error
type CreateVolumeReq ¶
type CreateVolumeReq struct {
Spec blobcache.VolumeSpec
}
func (CreateVolumeReq) Marshal ¶
func (cr CreateVolumeReq) Marshal(out []byte) []byte
func (*CreateVolumeReq) Unmarshal ¶
func (cr *CreateVolumeReq) Unmarshal(data []byte) error
type CreateVolumeResp ¶
type CreateVolumeResp struct { Handle blobcache.Handle Info blobcache.VolumeInfo }
func (CreateVolumeResp) Marshal ¶
func (cr CreateVolumeResp) Marshal(out []byte) []byte
func (*CreateVolumeResp) Unmarshal ¶
func (cr *CreateVolumeResp) Unmarshal(data []byte) error
type DeleteResp ¶
type DeleteResp struct{}
func (DeleteResp) Marshal ¶
func (dr DeleteResp) Marshal(out []byte) []byte
func (*DeleteResp) Unmarshal ¶
func (dr *DeleteResp) Unmarshal(data []byte) error
type ExistsResp ¶
type ExistsResp struct {
Exists []bool
}
func (ExistsResp) Marshal ¶
func (er ExistsResp) Marshal(out []byte) []byte
func (*ExistsResp) Unmarshal ¶
func (er *ExistsResp) Unmarshal(data []byte) error
type InspectHandleReq ¶
func (InspectHandleReq) Marshal ¶
func (ir InspectHandleReq) Marshal(out []byte) []byte
func (*InspectHandleReq) Unmarshal ¶
func (ir *InspectHandleReq) Unmarshal(data []byte) error
type InspectHandleResp ¶
type InspectHandleResp struct {
Info blobcache.HandleInfo
}
func (InspectHandleResp) Marshal ¶
func (ir InspectHandleResp) Marshal(out []byte) []byte
func (*InspectHandleResp) Unmarshal ¶
func (ir *InspectHandleResp) Unmarshal(data []byte) error
type InspectTxReq ¶
func (InspectTxReq) Marshal ¶
func (r InspectTxReq) Marshal(out []byte) []byte
func (*InspectTxReq) Unmarshal ¶
func (r *InspectTxReq) Unmarshal(data []byte) error
type InspectTxResp ¶
func (InspectTxResp) Marshal ¶
func (r InspectTxResp) Marshal(out []byte) []byte
func (*InspectTxResp) Unmarshal ¶
func (r *InspectTxResp) Unmarshal(data []byte) error
type InspectVolumeReq ¶
func (InspectVolumeReq) Marshal ¶
func (iv InspectVolumeReq) Marshal(out []byte) []byte
func (*InspectVolumeReq) Unmarshal ¶
func (iv *InspectVolumeReq) Unmarshal(data []byte) error
type InspectVolumeResp ¶
type InspectVolumeResp struct {
Info blobcache.VolumeInfo
}
func (InspectVolumeResp) Marshal ¶
func (iv InspectVolumeResp) Marshal(out []byte) []byte
func (*InspectVolumeResp) Unmarshal ¶
func (iv *InspectVolumeResp) Unmarshal(data []byte) error
type IsVisitedReq ¶
func (IsVisitedReq) Marshal ¶
func (ir IsVisitedReq) Marshal(out []byte) []byte
func (*IsVisitedReq) Unmarshal ¶
func (ir *IsVisitedReq) Unmarshal(data []byte) error
type IsVisitedResp ¶
type IsVisitedResp struct {
Visited []bool
}
func (IsVisitedResp) Marshal ¶
func (ir IsVisitedResp) Marshal(out []byte) []byte
func (*IsVisitedResp) Unmarshal ¶
func (ir *IsVisitedResp) Unmarshal(data []byte) error
type KeepAliveReq ¶
func (KeepAliveReq) Marshal ¶
func (kr KeepAliveReq) Marshal(out []byte) []byte
func (*KeepAliveReq) Unmarshal ¶
func (kr *KeepAliveReq) Unmarshal(data []byte) error
type KeepAliveResp ¶
type KeepAliveResp struct{}
func (KeepAliveResp) Marshal ¶
func (kr KeepAliveResp) Marshal(out []byte) []byte
func (*KeepAliveResp) Unmarshal ¶
func (kr *KeepAliveResp) Unmarshal(data []byte) error
type Marshaller ¶
type Message ¶
type Message struct {
// contains filtered or unexported fields
}
func (*Message) Header ¶
func (m *Message) Header() MessageHeader
func (*Message) SetCode ¶
func (m *Message) SetCode(code MessageType)
type MessageHeader ¶
func (MessageHeader) BodyLen ¶
func (h MessageHeader) BodyLen() int
func (MessageHeader) Code ¶
func (h MessageHeader) Code() MessageType
func (*MessageHeader) SetBodyLen ¶
func (h *MessageHeader) SetBodyLen(bodyLen int)
func (*MessageHeader) SetCode ¶
func (h *MessageHeader) SetCode(code MessageType)
type MessageType ¶
type MessageType uint8
const ( MT_UNKNOWN MessageType = iota // MT_PING is a request to ping the remote peer. MT_PING )
const ( MT_HANDLE_INSPECT MessageType = 16 + iota MT_HANDLE_DROP MT_HANDLE_KEEP_ALIVE MT_HANDLE_SHARE )
Handle messages
const ( MT_OPEN_AS MessageType = 32 + iota MT_OPEN_FROM MT_CREATE_VOLUME MT_VOLUME_INSPECT MT_VOLUME_AWAIT MT_VOLUME_BEGIN_TX MT_VOLUME_CLONE )
Volume messages
const ( MT_TX_INSPECT MessageType = 48 + iota MT_TX_COMMIT MT_TX_ABORT MT_TX_LOAD MT_TX_SAVE MT_TX_POST MT_TX_POST_SALT MT_TX_GET MT_TX_EXISTS MT_TX_DELETE MT_TX_ADD_FROM MT_TX_ALLOW_LINK MT_TX_VISIT MT_TX_IS_VISITED )
Tx messages
const ( // MT_LAYER2_TELL is used for volume implementations to communicate with other volumes. MT_LAYER2_TELL MessageType = 96 + iota // MT_LAYER2_ASK is used for volume implementations to communicate with other volumes. MT_LAYER2_ASK )
func (MessageType) IsError ¶
func (mt MessageType) IsError() bool
func (MessageType) IsOK ¶
func (mt MessageType) IsOK() bool
type Node ¶
type Node struct {
// contains filtered or unexported fields
}
func New ¶
func New(privateKey ed25519.PrivateKey, pc net.PacketConn) *Node
func (*Node) Ask ¶
func (n *Node) Ask(ctx context.Context, remote blobcache.Endpoint, req Message, resp *Message) error
Ask opens a bidirectional stream to the given peer and sends the given request, then waits for a response.
func (*Node) LocalEndpoint ¶
type OpenFiatReq ¶
func (OpenFiatReq) Marshal ¶
func (oa OpenFiatReq) Marshal(out []byte) []byte
func (*OpenFiatReq) Unmarshal ¶
func (oa *OpenFiatReq) Unmarshal(data []byte) error
type OpenFiatResp ¶
type OpenFiatResp struct { Handle blobcache.Handle Info blobcache.VolumeInfo }
func (OpenFiatResp) Marshal ¶
func (oa OpenFiatResp) Marshal(out []byte) []byte
func (*OpenFiatResp) Unmarshal ¶
func (oa *OpenFiatResp) Unmarshal(data []byte) error
type OpenFromReq ¶
func (OpenFromReq) Marshal ¶
func (of OpenFromReq) Marshal(out []byte) []byte
func (*OpenFromReq) Unmarshal ¶
func (of *OpenFromReq) Unmarshal(data []byte) error
type OpenFromResp ¶
type OpenFromResp struct { Handle blobcache.Handle Info blobcache.VolumeInfo }
func (OpenFromResp) Marshal ¶
func (of OpenFromResp) Marshal(out []byte) []byte
func (*OpenFromResp) Unmarshal ¶
func (of *OpenFromResp) Unmarshal(data []byte) error
type Server ¶
type Server struct {
Access AccessFunc
}
type Tx ¶
type Tx struct {
// contains filtered or unexported fields
}
Tx is a transaction on a remote volume.
type Unmarshaller ¶
type Volume ¶
type Volume struct {
// contains filtered or unexported fields
}
Volume is a remote volume.
func OpenVolumeAs ¶
func OpenVolumeFrom ¶
func (*Volume) Info ¶
func (v *Volume) Info() *blobcache.VolumeInfo
Click to show internal directories.
Click to hide internal directories.