Documentation
¶
Overview ¶
Package bcp implements the Blobcache Protocol (BCP).
Index ¶
- Constants
- func Abort(ctx context.Context, tp Asker, ep blobcache.Endpoint, tx blobcache.Handle) error
- func Commit(ctx context.Context, tp Asker, ep blobcache.Endpoint, tx blobcache.Handle) error
- func Copy(ctx context.Context, tp Asker, ep blobcache.Endpoint, tx blobcache.Handle, ...) error
- func Delete(ctx context.Context, tp Asker, ep blobcache.Endpoint, tx blobcache.Handle, ...) error
- func Dequeue(ctx context.Context, tp Asker, ep blobcache.Endpoint, qh blobcache.Handle, ...) (int, error)
- func Drop(ctx context.Context, tp Asker, ep blobcache.Endpoint, h blobcache.Handle) error
- func Endpoint(ctx context.Context, tp Asker) (blobcache.Endpoint, error)
- func Enqueue(ctx context.Context, tp Asker, ep blobcache.Endpoint, qh blobcache.Handle, ...) (*blobcache.InsertResp, error)
- func Exists(ctx context.Context, tp Asker, ep blobcache.Endpoint, tx blobcache.Handle, ...) error
- func Get(ctx context.Context, tp Asker, ep blobcache.Endpoint, txh blobcache.Handle, ...) (int, error)
- func Inspect(ctx context.Context, tp Asker, ep blobcache.Endpoint, h blobcache.Handle) (blobcache.Info, error)
- func InspectHandle(ctx context.Context, tp Asker, ep blobcache.Endpoint, h blobcache.Handle) (*blobcache.HandleInfo, error)
- func InspectQueue(ctx context.Context, tp Asker, ep blobcache.Endpoint, qh blobcache.Handle) (blobcache.QueueInfo, error)
- func InspectTx(ctx context.Context, tp Asker, ep blobcache.Endpoint, tx blobcache.Handle) (*blobcache.TxInfo, error)
- func InspectVolume(ctx context.Context, tp Asker, ep blobcache.Endpoint, vol blobcache.Handle) (*blobcache.VolumeInfo, error)
- func IsVisited(ctx context.Context, tp Asker, ep blobcache.Endpoint, tx blobcache.Handle, ...) error
- func KeepAlive(ctx context.Context, tp Asker, ep blobcache.Endpoint, hs []blobcache.Handle) error
- func Link(ctx context.Context, tp Asker, ep blobcache.Endpoint, tx blobcache.Handle, ...) (*blobcache.LinkToken, error)
- func Load(ctx context.Context, tp Asker, ep blobcache.Endpoint, tx blobcache.Handle, ...) error
- func OpenFiat(ctx context.Context, tp Asker, ep blobcache.Endpoint, target blobcache.OID, ...) (blobcache.FQHandle, blobcache.Info, error)
- func OpenFrom(ctx context.Context, tp Asker, ep blobcache.Endpoint, base blobcache.Handle, ...) (blobcache.FQHandle, blobcache.Info, error)
- func Ping(ctx context.Context, tp Asker, ep blobcache.Endpoint) error
- func Post(ctx context.Context, tp Asker, ep blobcache.Endpoint, txh blobcache.Handle, ...) (blobcache.CID, error)
- func Save(ctx context.Context, tp Asker, ep blobcache.Endpoint, tx blobcache.Handle, ...) error
- func Serve(ctx context.Context, lis net.Listener, srv Handler) error
- func ServeStream(ctx context.Context, ep blobcache.Endpoint, conn io.ReadWriteCloser, ...) error
- func ShareIn(ctx context.Context, tp Asker, ep blobcache.Endpoint, host blobcache.NodeID, ...) (blobcache.Handle, error)
- func ShareOut(ctx context.Context, tp Asker, ep blobcache.Endpoint, h blobcache.Handle, ...) (*blobcache.Handle, error)
- func SubToVolume(ctx context.Context, tp Asker, ep blobcache.Endpoint, qh blobcache.Handle, ...) error
- func Unlink(ctx context.Context, tp Asker, ep blobcache.Endpoint, tx blobcache.Handle, ...) error
- func Visit(ctx context.Context, tp Asker, ep blobcache.Endpoint, tx blobcache.Handle, ...) error
- func VisitLinks(ctx context.Context, tp Asker, ep blobcache.Endpoint, tx blobcache.Handle, ...) error
- type AbortReq
- type AbortResp
- type AccessFunc
- type Asker
- type BeginTxReq
- type BeginTxResp
- type CloneVolumeReq
- type CloneVolumeResp
- type CommitReq
- type CommitResp
- type CopyReq
- type CopyResp
- type CreateQueueReq
- type CreateQueueResp
- type CreateVolumeReq
- type CreateVolumeResp
- type DeleteReq
- type DeleteResp
- type DequeueReq
- type DequeueResp
- type DropReq
- type DropResp
- type EndpointReq
- type EndpointResp
- type EnqueueReq
- type EnqueueResp
- type ExistsReq
- type ExistsResp
- type GetReq
- type GetResp
- type GetSaltReq
- type Handler
- type InspectHandleReq
- type InspectHandleResp
- type InspectQueueReq
- type InspectQueueResp
- type InspectReq
- type InspectResp
- type InspectTxReq
- type InspectTxResp
- type InspectVolumeReq
- type InspectVolumeResp
- type IsVisitedReq
- type IsVisitedResp
- type KeepAliveReq
- type KeepAliveResp
- type LinkReq
- type LinkResp
- type LoadReq
- type LoadResp
- type Marshaller
- type Message
- func (m *Message) Body() []byte
- func (m *Message) Header() MessageHeader
- func (m *Message) ReadDatagramFrom(r io.Reader, alloc int) error
- func (m *Message) ReadFrom(r io.Reader) (int64, error)
- func (m *Message) SetBody(body []byte)
- func (m *Message) SetCode(code MessageCode)
- func (m *Message) SetError(err error)
- func (m *Message) SetSendable(x Sendable)
- func (m *Message) WriteTo(w io.Writer) (int64, error)
- type MessageCode
- type MessageHeader
- type OpenFiatReq
- type OpenFiatResp
- type OpenFromReq
- type OpenFromResp
- type SaveReq
- type SaveResp
- type Sendable
- type Server
- type ShareInReq
- type ShareInResp
- type ShareOutReq
- type ShareOutResp
- type SubToVolumeReq
- type SubToVolumeResp
- type Teller
- type TopicMessage
- type UnlinkReq
- type UnlinkResp
- type Unmarshaller
- type VisitLinksReq
- type VisitLinksResp
- type VisitReq
- type VisitResp
Constants ¶
View Source
const ( MT_OK = MessageCode((255 * sectionSize) + iota) MT_ERROR_TIMEOUT MT_ERROR_INVALID_HANDLE MT_ERROR_NOT_FOUND MT_ERROR_NO_PERMISSION MT_ERROR_NO_LINK MT_ERROR_TOO_LARGE MT_ERROR_UNKNOWN = MessageCode(256*sectionSize - 1) )
Response messages
View Source
const HeaderLen = 8
Variables ¶
This section is empty.
Functions ¶
func InspectHandle ¶
func InspectQueue ¶
func InspectVolume ¶
func ServeStream ¶
func ServeStream(ctx context.Context, ep blobcache.Endpoint, conn io.ReadWriteCloser, srv Handler) error
ServeStream serves BCP over a bidi-stream
func SubToVolume ¶
Types ¶
type AccessFunc ¶
AccessFunc is called to get a Service to access If the returned Service is nil, then the connection is disconnected as quickly as possible, and no further information should be sent to the initiator.
"Get off the phone" https://i.gifer.com/2Yv2.gif
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
// TxInfo is the info for the transaction.
Info blobcache.TxInfo
// PreemptData contains preemptively sent data in the blobstream protocol.
PreemptData [][]byte
}
func BeginTx ¶
func BeginTx(ctx context.Context, tp Asker, ep blobcache.Endpoint, req BeginTxReq) (BeginTxResp, error)
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 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 CopyReq ¶
type CreateQueueReq ¶
func (CreateQueueReq) Marshal ¶
func (cq CreateQueueReq) Marshal(out []byte) []byte
func (*CreateQueueReq) Unmarshal ¶
func (cq *CreateQueueReq) Unmarshal(data []byte) error
type CreateQueueResp ¶
func CreateQueue ¶
func CreateQueue(ctx context.Context, tp Asker, ep blobcache.Endpoint, req CreateQueueReq) (CreateQueueResp, error)
func (CreateQueueResp) Marshal ¶
func (cq CreateQueueResp) Marshal(out []byte) []byte
func (*CreateQueueResp) Unmarshal ¶
func (cq *CreateQueueResp) Unmarshal(data []byte) error
type CreateVolumeReq ¶
type CreateVolumeReq struct {
Host blobcache.Endpoint
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 CreateVolume ¶
func CreateVolume(ctx context.Context, tp Asker, ep blobcache.Endpoint, req CreateVolumeReq) (CreateVolumeResp, error)
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 DequeueReq ¶
type DequeueReq struct {
Queue blobcache.Handle
Opts blobcache.DequeueOpts
Max int
}
func (DequeueReq) Marshal ¶
func (dr DequeueReq) Marshal(out []byte) []byte
func (*DequeueReq) Unmarshal ¶
func (dr *DequeueReq) Unmarshal(data []byte) error
type DequeueResp ¶
func (DequeueResp) Marshal ¶
func (nr DequeueResp) Marshal(out []byte) []byte
func (*DequeueResp) Unmarshal ¶
func (nr *DequeueResp) Unmarshal(data []byte) error
type EndpointReq ¶
type EndpointReq struct{}
func (EndpointReq) Marshal ¶
func (req EndpointReq) Marshal(out []byte) []byte
func (*EndpointReq) Unmarshal ¶
func (req *EndpointReq) Unmarshal(out []byte) error
type EndpointResp ¶
func (EndpointResp) Marshal ¶
func (ep EndpointResp) Marshal(out []byte) []byte
func (*EndpointResp) Unmarshal ¶
func (ep *EndpointResp) Unmarshal(out []byte) error
type EnqueueReq ¶
func (EnqueueReq) Marshal ¶
func (er EnqueueReq) Marshal(out []byte) []byte
func (*EnqueueReq) Unmarshal ¶
func (er *EnqueueReq) Unmarshal(data []byte) error
type EnqueueResp ¶
type EnqueueResp struct {
Success uint32
}
func (EnqueueResp) Marshal ¶
func (ir EnqueueResp) Marshal(out []byte) []byte
func (*EnqueueResp) Unmarshal ¶
func (ir *EnqueueResp) Unmarshal(data []byte) error
type ExistsResp ¶
func (ExistsResp) Marshal ¶
func (er ExistsResp) Marshal(out []byte) []byte
func (*ExistsResp) Unmarshal ¶
func (er *ExistsResp) Unmarshal(data []byte) error
type GetSaltReq ¶
func (GetSaltReq) Marshal ¶
func (gsr GetSaltReq) Marshal(out []byte) []byte
func (*GetSaltReq) Unmarshal ¶
func (gsr *GetSaltReq) 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 InspectQueueReq ¶
func (InspectQueueReq) Marshal ¶
func (iq InspectQueueReq) Marshal(out []byte) []byte
func (*InspectQueueReq) Unmarshal ¶
func (iq *InspectQueueReq) Unmarshal(data []byte) error
type InspectQueueResp ¶
func (InspectQueueResp) Marshal ¶
func (iq InspectQueueResp) Marshal(out []byte) []byte
func (*InspectQueueResp) Unmarshal ¶
func (iq *InspectQueueResp) Unmarshal(data []byte) error
type InspectReq ¶
func (InspectReq) Marshal ¶
func (r InspectReq) Marshal(out []byte) []byte
func (*InspectReq) Unmarshal ¶
func (r *InspectReq) Unmarshal(data []byte) error
type InspectResp ¶
func (InspectResp) Marshal ¶
func (r InspectResp) Marshal(out []byte) []byte
func (*InspectResp) Unmarshal ¶
func (r *InspectResp) 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 ¶
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 NewMessage ¶
func (*Message) Header ¶
func (m *Message) Header() MessageHeader
func (*Message) SetCode ¶
func (m *Message) SetCode(code MessageCode)
func (*Message) SetSendable ¶
SetSendable sets the body of the message to a Sendable
type MessageCode ¶
type MessageCode uint16
const ( MT_UNKNOWN MessageCode = iota // MT_PING is a request to ping the remote peer. MT_PING // MT_ENDPOINT is a request for the remote to respond with its Endpoint MT_ENDPOINT // MT_INSPECT can be used to inspect any object MT_INSPECT // MT_OPEN_FIAT calls the OpenFiat method. MT_OPEN_FIAT )
const ( MT_HANDLE_INSPECT MessageCode = (1 * sectionSize) + iota MT_HANDLE_DROP MT_HANDLE_KEEP_ALIVE MT_HANDLE_SHARE_OUT MT_HANDLE_SHARE_IN )
Handle messages
const ( MT_VOLUME_INSPECT MessageCode = (2 * sectionSize) + iota MT_VOLUME_BEGIN_TX MT_OPEN_FROM MT_CREATE_VOLUME MessageCode = (3 * sectionSize) - 1 )
Volume messages
const ( MT_TX_INSPECT MessageCode = (3 * sectionSize) + iota MT_TX_ABORT MT_TX_COMMIT MT_TX_LOAD MT_TX_SAVE MT_TX_POST MT_TX_POST_SALT MT_TX_GET MT_TX_GET_SALT MT_TX_EXISTS MT_TX_DELETE MT_TX_COPY MT_TX_LINK MT_TX_UNLINK MT_TX_VISIT MT_TX_IS_VISITED MT_TX_VISIT_LINKS )
Tx messages
const ( MT_QUEUE_INSPECT MessageCode = (4 * sectionSize) + iota MT_QUEUE_ENQUEUE MT_QUEUE_DEQUEUE MT_QUEUE_SUB_TO_VOLUME MT_QUEUE_CREATE MessageCode = (5 * sectionSize) - 1 )
func (MessageCode) IsError ¶
func (mt MessageCode) IsError() bool
func (MessageCode) IsOK ¶
func (mt MessageCode) IsOK() bool
func (MessageCode) ObjectType ¶
func (mt MessageCode) ObjectType() uint8
ObjectType is the first 8 bits on the wire
func (MessageCode) OpCode ¶
func (mt MessageCode) OpCode() uint8
OpCode is the second 8 bits on the wire.
func (*MessageCode) SetObjectType ¶
func (mt *MessageCode) SetObjectType(oc uint8)
func (*MessageCode) SetOpCode ¶
func (mt *MessageCode) SetOpCode(oc uint8)
type MessageHeader ¶
func (MessageHeader) BodyLen ¶
func (h MessageHeader) BodyLen() int
func (MessageHeader) Code ¶
func (h MessageHeader) Code() (ret MessageCode)
func (*MessageHeader) SetBodyLen ¶
func (h *MessageHeader) SetBodyLen(bodyLen int)
func (*MessageHeader) SetCode ¶
func (h *MessageHeader) SetCode(code MessageCode)
type OpenFiatReq ¶
func (OpenFiatReq) Marshal ¶
func (oa OpenFiatReq) Marshal(out []byte) []byte
func (*OpenFiatReq) Unmarshal ¶
func (oa *OpenFiatReq) Unmarshal(data []byte) error
type OpenFiatResp ¶
func (OpenFiatResp) Marshal ¶
func (oa OpenFiatResp) Marshal(out []byte) []byte
func (*OpenFiatResp) Unmarshal ¶
func (oa *OpenFiatResp) Unmarshal(data []byte) error
type OpenFromReq ¶
type OpenFromReq struct {
Base blobcache.Handle
Token blobcache.LinkToken
Mask blobcache.ActionSet
}
func (OpenFromReq) Marshal ¶
func (of OpenFromReq) Marshal(out []byte) []byte
func (*OpenFromReq) Unmarshal ¶
func (of *OpenFromReq) Unmarshal(data []byte) error
type OpenFromResp ¶
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 ShareInReq ¶
type ShareInReq struct {
}
func (ShareInReq) Marshal ¶
func (ar ShareInReq) Marshal(out []byte) []byte
func (*ShareInReq) Unmarshal ¶
func (ar *ShareInReq) Unmarshal(data []byte) error
type ShareInResp ¶
type ShareInResp struct {
}
func (ShareInResp) Marshal ¶
func (ar ShareInResp) Marshal(out []byte) []byte
func (*ShareInResp) Unmarshal ¶
func (ar *ShareInResp) Unmarshal(data []byte) error
type ShareOutReq ¶
type ShareOutReq struct {
}
func (ShareOutReq) Marshal ¶
func (sr ShareOutReq) Marshal(out []byte) []byte
func (*ShareOutReq) Unmarshal ¶
func (sr *ShareOutReq) Unmarshal(data []byte) error
type ShareOutResp ¶
type ShareOutResp struct {
}
func (ShareOutResp) Marshal ¶
func (sr ShareOutResp) Marshal(out []byte) []byte
func (*ShareOutResp) Unmarshal ¶
func (sr *ShareOutResp) Unmarshal(data []byte) error
type SubToVolumeReq ¶
type SubToVolumeReq struct {
Queue blobcache.Handle
Volume blobcache.Handle
Spec blobcache.VolSubSpec
}
func (SubToVolumeReq) Marshal ¶
func (sr SubToVolumeReq) Marshal(out []byte) []byte
func (*SubToVolumeReq) Unmarshal ¶
func (sr *SubToVolumeReq) Unmarshal(data []byte) error
type SubToVolumeResp ¶
type SubToVolumeResp struct{}
func (SubToVolumeResp) Marshal ¶
func (sr SubToVolumeResp) Marshal(out []byte) []byte
func (*SubToVolumeResp) Unmarshal ¶
func (sr *SubToVolumeResp) Unmarshal(data []byte) error
type TopicMessage ¶
type UnlinkResp ¶
type UnlinkResp struct{}
func (UnlinkResp) Marshal ¶
func (ur UnlinkResp) Marshal(out []byte) []byte
func (*UnlinkResp) Unmarshal ¶
func (ur *UnlinkResp) Unmarshal(data []byte) error
type Unmarshaller ¶
type VisitLinksReq ¶
func (VisitLinksReq) Marshal ¶
func (vr VisitLinksReq) Marshal(out []byte) []byte
func (*VisitLinksReq) Unmarshal ¶
func (vr *VisitLinksReq) Unmarshal(data []byte) error
type VisitLinksResp ¶
type VisitLinksResp struct{}
func (VisitLinksResp) Marshal ¶
func (vr VisitLinksResp) Marshal(out []byte) []byte
func (*VisitLinksResp) Unmarshal ¶
func (vr *VisitLinksResp) Unmarshal(data []byte) error
Click to show internal directories.
Click to hide internal directories.