pkg syncbase, const BatchSourceLocal BatchSource
pkg syncbase, const BatchSourceRemote BatchSource
pkg syncbase, const BlobDevTypeLeaf int32
pkg syncbase, const BlobDevTypeNormal int32
pkg syncbase, const BlobDevTypeServer int32
pkg syncbase, const BlobFetchStateDone BlobFetchState
pkg syncbase, const BlobFetchStateFetching BlobFetchState
pkg syncbase, const BlobFetchStateLocating BlobFetchState
pkg syncbase, const BlobFetchStatePending BlobFetchState
pkg syncbase, const NullBlobRef BlobRef
pkg syncbase, const ResolverTypeAppResolves ResolverType
pkg syncbase, const ResolverTypeDefer ResolverType
pkg syncbase, const ResolverTypeLastWins ResolverType
pkg syncbase, const ValueSelectionLocal ValueSelection
pkg syncbase, const ValueSelectionOther ValueSelection
pkg syncbase, const ValueSelectionRemote ValueSelection
pkg syncbase, const ValueStateDeleted ValueState
pkg syncbase, const ValueStateExists ValueState
pkg syncbase, const ValueStateNoExists ValueState
pkg syncbase, const ValueStateUnknown ValueState
pkg syncbase, func BatchSourceFromString(string) (BatchSource, error)
pkg syncbase, func BlobFetchStateFromString(string) (BlobFetchState, error)
pkg syncbase, func BlobManagerClient(string) BlobManagerClientStub
pkg syncbase, func BlobManagerServer(BlobManagerServerMethods) BlobManagerServerStub
pkg syncbase, func CollectionClient(string) CollectionClientStub
pkg syncbase, func CollectionServer(CollectionServerMethods) CollectionServerStub
pkg syncbase, func ConflictManagerClient(string) ConflictManagerClientStub
pkg syncbase, func ConflictManagerServer(ConflictManagerServerMethods) ConflictManagerServerStub
pkg syncbase, func DatabaseClient(string) DatabaseClientStub
pkg syncbase, func DatabaseServer(DatabaseServerMethods) DatabaseServerStub
pkg syncbase, func DatabaseWatcherClient(string) DatabaseWatcherClientStub
pkg syncbase, func DatabaseWatcherServer(DatabaseWatcherServerMethods) DatabaseWatcherServerStub
pkg syncbase, func NewErrBadExecStreamHeader(*context.T) error
pkg syncbase, func NewErrBlobNotCommitted(*context.T) error
pkg syncbase, func NewErrConcurrentBatch(*context.T) error
pkg syncbase, func NewErrCorruptDatabase(*context.T, string) error
pkg syncbase, func NewErrInvalidName(*context.T, string) error
pkg syncbase, func NewErrNotBoundToBatch(*context.T) error
pkg syncbase, func NewErrNotInDevMode(*context.T) error
pkg syncbase, func NewErrReadOnlyBatch(*context.T) error
pkg syncbase, func NewErrSyncgroupJoinFailed(*context.T) error
pkg syncbase, func NewErrUnknownBatch(*context.T) error
pkg syncbase, func ResolverTypeFromString(string) (ResolverType, error)
pkg syncbase, func RowClient(string) RowClientStub
pkg syncbase, func RowServer(RowServerMethods) RowServerStub
pkg syncbase, func SchemaManagerClient(string) SchemaManagerClientStub
pkg syncbase, func SchemaManagerServer(SchemaManagerServerMethods) SchemaManagerServerStub
pkg syncbase, func ServiceClient(string) ServiceClientStub
pkg syncbase, func ServiceServer(ServiceServerMethods) ServiceServerStub
pkg syncbase, func SyncgroupManagerClient(string) SyncgroupManagerClientStub
pkg syncbase, func SyncgroupManagerServer(SyncgroupManagerServerMethods) SyncgroupManagerServerStub
pkg syncbase, func VDLReadConflictData(vdl.Decoder, *ConflictData) error
pkg syncbase, func VDLReadOperation(vdl.Decoder, *Operation) error
pkg syncbase, func ValueSelectionFromString(string) (ValueSelection, error)
pkg syncbase, func ValueStateFromString(string) (ValueState, error)
pkg syncbase, method (*BatchHandle) FillVDLTarget(vdl.Target, *vdl.Type) error
pkg syncbase, method (*BatchHandle) MakeVDLTarget() vdl.Target
pkg syncbase, method (*BatchHandle) VDLRead(vdl.Decoder) error
pkg syncbase, method (*BatchHandleTarget) FromString(string, *vdl.Type) error
pkg syncbase, method (*BatchInfo) FillVDLTarget(vdl.Target, *vdl.Type) error
pkg syncbase, method (*BatchInfo) MakeVDLTarget() vdl.Target
pkg syncbase, method (*BatchInfo) VDLRead(vdl.Decoder) error
pkg syncbase, method (*BatchInfoTarget) FinishField(vdl.Target, vdl.Target) error
pkg syncbase, method (*BatchInfoTarget) FinishFields(vdl.FieldsTarget) error
pkg syncbase, method (*BatchInfoTarget) StartField(string) (vdl.Target, vdl.Target, error)
pkg syncbase, method (*BatchInfoTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
pkg syncbase, method (*BatchInfoTarget) ZeroField(string) error
pkg syncbase, method (*BatchOptions) FillVDLTarget(vdl.Target, *vdl.Type) error
pkg syncbase, method (*BatchOptions) MakeVDLTarget() vdl.Target
pkg syncbase, method (*BatchOptions) VDLRead(vdl.Decoder) error
pkg syncbase, method (*BatchOptionsTarget) FinishField(vdl.Target, vdl.Target) error
pkg syncbase, method (*BatchOptionsTarget) FinishFields(vdl.FieldsTarget) error
pkg syncbase, method (*BatchOptionsTarget) StartField(string) (vdl.Target, vdl.Target, error)
pkg syncbase, method (*BatchOptionsTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
pkg syncbase, method (*BatchOptionsTarget) ZeroField(string) error
pkg syncbase, method (*BatchSource) FillVDLTarget(vdl.Target, *vdl.Type) error
pkg syncbase, method (*BatchSource) MakeVDLTarget() vdl.Target
pkg syncbase, method (*BatchSource) Set(string) error
pkg syncbase, method (*BatchSource) VDLRead(vdl.Decoder) error
pkg syncbase, method (*BatchSourceTarget) FromEnumLabel(string, *vdl.Type) error
pkg syncbase, method (*BlobFetchState) FillVDLTarget(vdl.Target, *vdl.Type) error
pkg syncbase, method (*BlobFetchState) MakeVDLTarget() vdl.Target
pkg syncbase, method (*BlobFetchState) Set(string) error
pkg syncbase, method (*BlobFetchState) VDLRead(vdl.Decoder) error
pkg syncbase, method (*BlobFetchStateTarget) FromEnumLabel(string, *vdl.Type) error
pkg syncbase, method (*BlobFetchStatus) FillVDLTarget(vdl.Target, *vdl.Type) error
pkg syncbase, method (*BlobFetchStatus) MakeVDLTarget() vdl.Target
pkg syncbase, method (*BlobFetchStatus) VDLRead(vdl.Decoder) error
pkg syncbase, method (*BlobFetchStatusTarget) FinishField(vdl.Target, vdl.Target) error
pkg syncbase, method (*BlobFetchStatusTarget) FinishFields(vdl.FieldsTarget) error
pkg syncbase, method (*BlobFetchStatusTarget) StartField(string) (vdl.Target, vdl.Target, error)
pkg syncbase, method (*BlobFetchStatusTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
pkg syncbase, method (*BlobFetchStatusTarget) ZeroField(string) error
pkg syncbase, method (*BlobManagerFetchBlobServerCallStub) Init(rpc.StreamServerCall)
pkg syncbase, method (*BlobManagerFetchBlobServerCallStub) SendStream() interface {  Send(item BlobFetchStatus) error;}
pkg syncbase, method (*BlobManagerGetBlobServerCallStub) Init(rpc.StreamServerCall)
pkg syncbase, method (*BlobManagerGetBlobServerCallStub) SendStream() interface {  Send(item []byte) error;}
pkg syncbase, method (*BlobManagerPutBlobServerCallStub) Init(rpc.StreamServerCall)
pkg syncbase, method (*BlobManagerPutBlobServerCallStub) RecvStream() interface {  Advance() bool; Value() []byte; Err() error;}
pkg syncbase, method (*BlobRef) FillVDLTarget(vdl.Target, *vdl.Type) error
pkg syncbase, method (*BlobRef) MakeVDLTarget() vdl.Target
pkg syncbase, method (*BlobRef) VDLRead(vdl.Decoder) error
pkg syncbase, method (*BlobRefTarget) FromString(string, *vdl.Type) error
pkg syncbase, method (*CollectionRow) FillVDLTarget(vdl.Target, *vdl.Type) error
pkg syncbase, method (*CollectionRow) MakeVDLTarget() vdl.Target
pkg syncbase, method (*CollectionRow) VDLRead(vdl.Decoder) error
pkg syncbase, method (*CollectionRowTarget) FinishField(vdl.Target, vdl.Target) error
pkg syncbase, method (*CollectionRowTarget) FinishFields(vdl.FieldsTarget) error
pkg syncbase, method (*CollectionRowTarget) StartField(string) (vdl.Target, vdl.Target, error)
pkg syncbase, method (*CollectionRowTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
pkg syncbase, method (*CollectionRowTarget) ZeroField(string) error
pkg syncbase, method (*CollectionScanServerCallStub) Init(rpc.StreamServerCall)
pkg syncbase, method (*CollectionScanServerCallStub) SendStream() interface {  Send(item KeyValue) error;}
pkg syncbase, method (*ConflictDataTarget) FinishField(vdl.Target, vdl.Target) error
pkg syncbase, method (*ConflictDataTarget) FinishFields(vdl.FieldsTarget) error
pkg syncbase, method (*ConflictDataTarget) StartField(string) (vdl.Target, vdl.Target, error)
pkg syncbase, method (*ConflictDataTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
pkg syncbase, method (*ConflictInfo) FillVDLTarget(vdl.Target, *vdl.Type) error
pkg syncbase, method (*ConflictInfo) MakeVDLTarget() vdl.Target
pkg syncbase, method (*ConflictInfo) VDLRead(vdl.Decoder) error
pkg syncbase, method (*ConflictInfoTarget) FinishField(vdl.Target, vdl.Target) error
pkg syncbase, method (*ConflictInfoTarget) FinishFields(vdl.FieldsTarget) error
pkg syncbase, method (*ConflictInfoTarget) StartField(string) (vdl.Target, vdl.Target, error)
pkg syncbase, method (*ConflictInfoTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
pkg syncbase, method (*ConflictInfoTarget) ZeroField(string) error
pkg syncbase, method (*ConflictManagerStartConflictResolverServerCallStub) Init(rpc.StreamServerCall)
pkg syncbase, method (*ConflictManagerStartConflictResolverServerCallStub) RecvStream() interface {  Advance() bool; Value() ResolutionInfo; Err() error;}
pkg syncbase, method (*ConflictManagerStartConflictResolverServerCallStub) SendStream() interface {  Send(item ConflictInfo) error;}
pkg syncbase, method (*CrPolicy) FillVDLTarget(vdl.Target, *vdl.Type) error
pkg syncbase, method (*CrPolicy) MakeVDLTarget() vdl.Target
pkg syncbase, method (*CrPolicy) VDLRead(vdl.Decoder) error
pkg syncbase, method (*CrPolicyTarget) FinishField(vdl.Target, vdl.Target) error
pkg syncbase, method (*CrPolicyTarget) FinishFields(vdl.FieldsTarget) error
pkg syncbase, method (*CrPolicyTarget) StartField(string) (vdl.Target, vdl.Target, error)
pkg syncbase, method (*CrPolicyTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
pkg syncbase, method (*CrPolicyTarget) ZeroField(string) error
pkg syncbase, method (*CrRule) FillVDLTarget(vdl.Target, *vdl.Type) error
pkg syncbase, method (*CrRule) MakeVDLTarget() vdl.Target
pkg syncbase, method (*CrRule) VDLRead(vdl.Decoder) error
pkg syncbase, method (*CrRuleTarget) FinishField(vdl.Target, vdl.Target) error
pkg syncbase, method (*CrRuleTarget) FinishFields(vdl.FieldsTarget) error
pkg syncbase, method (*CrRuleTarget) StartField(string) (vdl.Target, vdl.Target, error)
pkg syncbase, method (*CrRuleTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
pkg syncbase, method (*CrRuleTarget) ZeroField(string) error
pkg syncbase, method (*DatabaseExecServerCallStub) Init(rpc.StreamServerCall)
pkg syncbase, method (*DatabaseExecServerCallStub) SendStream() interface {  Send(item []*vom.RawBytes) error;}
pkg syncbase, method (*DevModeUpdateVClockOpts) FillVDLTarget(vdl.Target, *vdl.Type) error
pkg syncbase, method (*DevModeUpdateVClockOpts) MakeVDLTarget() vdl.Target
pkg syncbase, method (*DevModeUpdateVClockOpts) VDLRead(vdl.Decoder) error
pkg syncbase, method (*DevModeUpdateVClockOptsTarget) FinishField(vdl.Target, vdl.Target) error
pkg syncbase, method (*DevModeUpdateVClockOptsTarget) FinishFields(vdl.FieldsTarget) error
pkg syncbase, method (*DevModeUpdateVClockOptsTarget) StartField(string) (vdl.Target, vdl.Target, error)
pkg syncbase, method (*DevModeUpdateVClockOptsTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
pkg syncbase, method (*DevModeUpdateVClockOptsTarget) ZeroField(string) error
pkg syncbase, method (*Id) FillVDLTarget(vdl.Target, *vdl.Type) error
pkg syncbase, method (*Id) MakeVDLTarget() vdl.Target
pkg syncbase, method (*Id) VDLRead(vdl.Decoder) error
pkg syncbase, method (*IdTarget) FinishField(vdl.Target, vdl.Target) error
pkg syncbase, method (*IdTarget) FinishFields(vdl.FieldsTarget) error
pkg syncbase, method (*IdTarget) StartField(string) (vdl.Target, vdl.Target, error)
pkg syncbase, method (*IdTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
pkg syncbase, method (*IdTarget) ZeroField(string) error
pkg syncbase, method (*KeyValue) FillVDLTarget(vdl.Target, *vdl.Type) error
pkg syncbase, method (*KeyValue) MakeVDLTarget() vdl.Target
pkg syncbase, method (*KeyValue) VDLRead(vdl.Decoder) error
pkg syncbase, method (*KeyValueTarget) FinishField(vdl.Target, vdl.Target) error
pkg syncbase, method (*KeyValueTarget) FinishFields(vdl.FieldsTarget) error
pkg syncbase, method (*KeyValueTarget) StartField(string) (vdl.Target, vdl.Target, error)
pkg syncbase, method (*KeyValueTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
pkg syncbase, method (*KeyValueTarget) ZeroField(string) error
pkg syncbase, method (*OperationTarget) FinishField(vdl.Target, vdl.Target) error
pkg syncbase, method (*OperationTarget) FinishFields(vdl.FieldsTarget) error
pkg syncbase, method (*OperationTarget) StartField(string) (vdl.Target, vdl.Target, error)
pkg syncbase, method (*OperationTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
pkg syncbase, method (*ResolutionInfo) FillVDLTarget(vdl.Target, *vdl.Type) error
pkg syncbase, method (*ResolutionInfo) MakeVDLTarget() vdl.Target
pkg syncbase, method (*ResolutionInfo) VDLRead(vdl.Decoder) error
pkg syncbase, method (*ResolutionInfoTarget) FinishField(vdl.Target, vdl.Target) error
pkg syncbase, method (*ResolutionInfoTarget) FinishFields(vdl.FieldsTarget) error
pkg syncbase, method (*ResolutionInfoTarget) StartField(string) (vdl.Target, vdl.Target, error)
pkg syncbase, method (*ResolutionInfoTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
pkg syncbase, method (*ResolutionInfoTarget) ZeroField(string) error
pkg syncbase, method (*ResolverType) FillVDLTarget(vdl.Target, *vdl.Type) error
pkg syncbase, method (*ResolverType) MakeVDLTarget() vdl.Target
pkg syncbase, method (*ResolverType) Set(string) error
pkg syncbase, method (*ResolverType) VDLRead(vdl.Decoder) error
pkg syncbase, method (*ResolverTypeTarget) FromEnumLabel(string, *vdl.Type) error
pkg syncbase, method (*RowInfo) FillVDLTarget(vdl.Target, *vdl.Type) error
pkg syncbase, method (*RowInfo) MakeVDLTarget() vdl.Target
pkg syncbase, method (*RowInfo) VDLRead(vdl.Decoder) error
pkg syncbase, method (*RowInfoTarget) FinishField(vdl.Target, vdl.Target) error
pkg syncbase, method (*RowInfoTarget) FinishFields(vdl.FieldsTarget) error
pkg syncbase, method (*RowInfoTarget) StartField(string) (vdl.Target, vdl.Target, error)
pkg syncbase, method (*RowInfoTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
pkg syncbase, method (*RowInfoTarget) ZeroField(string) error
pkg syncbase, method (*RowOp) FillVDLTarget(vdl.Target, *vdl.Type) error
pkg syncbase, method (*RowOp) MakeVDLTarget() vdl.Target
pkg syncbase, method (*RowOp) VDLRead(vdl.Decoder) error
pkg syncbase, method (*RowOpTarget) FinishField(vdl.Target, vdl.Target) error
pkg syncbase, method (*RowOpTarget) FinishFields(vdl.FieldsTarget) error
pkg syncbase, method (*RowOpTarget) StartField(string) (vdl.Target, vdl.Target, error)
pkg syncbase, method (*RowOpTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
pkg syncbase, method (*RowOpTarget) ZeroField(string) error
pkg syncbase, method (*ScanOp) FillVDLTarget(vdl.Target, *vdl.Type) error
pkg syncbase, method (*ScanOp) MakeVDLTarget() vdl.Target
pkg syncbase, method (*ScanOp) VDLRead(vdl.Decoder) error
pkg syncbase, method (*ScanOpTarget) FinishField(vdl.Target, vdl.Target) error
pkg syncbase, method (*ScanOpTarget) FinishFields(vdl.FieldsTarget) error
pkg syncbase, method (*ScanOpTarget) StartField(string) (vdl.Target, vdl.Target, error)
pkg syncbase, method (*ScanOpTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
pkg syncbase, method (*ScanOpTarget) ZeroField(string) error
pkg syncbase, method (*SchemaMetadata) FillVDLTarget(vdl.Target, *vdl.Type) error
pkg syncbase, method (*SchemaMetadata) MakeVDLTarget() vdl.Target
pkg syncbase, method (*SchemaMetadata) VDLRead(vdl.Decoder) error
pkg syncbase, method (*SchemaMetadataTarget) FinishField(vdl.Target, vdl.Target) error
pkg syncbase, method (*SchemaMetadataTarget) FinishFields(vdl.FieldsTarget) error
pkg syncbase, method (*SchemaMetadataTarget) StartField(string) (vdl.Target, vdl.Target, error)
pkg syncbase, method (*SchemaMetadataTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
pkg syncbase, method (*SchemaMetadataTarget) ZeroField(string) error
pkg syncbase, method (*StoreChange) FillVDLTarget(vdl.Target, *vdl.Type) error
pkg syncbase, method (*StoreChange) MakeVDLTarget() vdl.Target
pkg syncbase, method (*StoreChange) VDLRead(vdl.Decoder) error
pkg syncbase, method (*StoreChangeTarget) FinishField(vdl.Target, vdl.Target) error
pkg syncbase, method (*StoreChangeTarget) FinishFields(vdl.FieldsTarget) error
pkg syncbase, method (*StoreChangeTarget) StartField(string) (vdl.Target, vdl.Target, error)
pkg syncbase, method (*StoreChangeTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
pkg syncbase, method (*StoreChangeTarget) ZeroField(string) error
pkg syncbase, method (*SyncgroupMemberInfo) FillVDLTarget(vdl.Target, *vdl.Type) error
pkg syncbase, method (*SyncgroupMemberInfo) MakeVDLTarget() vdl.Target
pkg syncbase, method (*SyncgroupMemberInfo) VDLRead(vdl.Decoder) error
pkg syncbase, method (*SyncgroupMemberInfoTarget) FinishField(vdl.Target, vdl.Target) error
pkg syncbase, method (*SyncgroupMemberInfoTarget) FinishFields(vdl.FieldsTarget) error
pkg syncbase, method (*SyncgroupMemberInfoTarget) StartField(string) (vdl.Target, vdl.Target, error)
pkg syncbase, method (*SyncgroupMemberInfoTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
pkg syncbase, method (*SyncgroupMemberInfoTarget) ZeroField(string) error
pkg syncbase, method (*SyncgroupSpec) FillVDLTarget(vdl.Target, *vdl.Type) error
pkg syncbase, method (*SyncgroupSpec) MakeVDLTarget() vdl.Target
pkg syncbase, method (*SyncgroupSpec) VDLRead(vdl.Decoder) error
pkg syncbase, method (*SyncgroupSpecTarget) FinishField(vdl.Target, vdl.Target) error
pkg syncbase, method (*SyncgroupSpecTarget) FinishFields(vdl.FieldsTarget) error
pkg syncbase, method (*SyncgroupSpecTarget) StartField(string) (vdl.Target, vdl.Target, error)
pkg syncbase, method (*SyncgroupSpecTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
pkg syncbase, method (*SyncgroupSpecTarget) ZeroField(string) error
pkg syncbase, method (*Value) FillVDLTarget(vdl.Target, *vdl.Type) error
pkg syncbase, method (*Value) MakeVDLTarget() vdl.Target
pkg syncbase, method (*Value) VDLRead(vdl.Decoder) error
pkg syncbase, method (*ValueSelection) FillVDLTarget(vdl.Target, *vdl.Type) error
pkg syncbase, method (*ValueSelection) MakeVDLTarget() vdl.Target
pkg syncbase, method (*ValueSelection) Set(string) error
pkg syncbase, method (*ValueSelection) VDLRead(vdl.Decoder) error
pkg syncbase, method (*ValueSelectionTarget) FromEnumLabel(string, *vdl.Type) error
pkg syncbase, method (*ValueState) FillVDLTarget(vdl.Target, *vdl.Type) error
pkg syncbase, method (*ValueState) MakeVDLTarget() vdl.Target
pkg syncbase, method (*ValueState) Set(string) error
pkg syncbase, method (*ValueState) VDLRead(vdl.Decoder) error
pkg syncbase, method (*ValueStateTarget) FromEnumLabel(string, *vdl.Type) error
pkg syncbase, method (*ValueTarget) FinishField(vdl.Target, vdl.Target) error
pkg syncbase, method (*ValueTarget) FinishFields(vdl.FieldsTarget) error
pkg syncbase, method (*ValueTarget) StartField(string) (vdl.Target, vdl.Target, error)
pkg syncbase, method (*ValueTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
pkg syncbase, method (*ValueTarget) ZeroField(string) error
pkg syncbase, method (BatchHandle) VDLIsZero() bool
pkg syncbase, method (BatchHandle) VDLWrite(vdl.Encoder) error
pkg syncbase, method (BatchInfo) VDLIsZero() bool
pkg syncbase, method (BatchInfo) VDLWrite(vdl.Encoder) error
pkg syncbase, method (BatchOptions) VDLIsZero() bool
pkg syncbase, method (BatchOptions) VDLWrite(vdl.Encoder) error
pkg syncbase, method (BatchSource) String() string
pkg syncbase, method (BatchSource) VDLIsZero() bool
pkg syncbase, method (BatchSource) VDLWrite(vdl.Encoder) error
pkg syncbase, method (BlobFetchState) String() string
pkg syncbase, method (BlobFetchState) VDLIsZero() bool
pkg syncbase, method (BlobFetchState) VDLWrite(vdl.Encoder) error
pkg syncbase, method (BlobFetchStatus) VDLIsZero() bool
pkg syncbase, method (BlobFetchStatus) VDLWrite(vdl.Encoder) error
pkg syncbase, method (BlobRef) VDLIsZero() bool
pkg syncbase, method (BlobRef) VDLWrite(vdl.Encoder) error
pkg syncbase, method (CollectionRow) VDLIsZero() bool
pkg syncbase, method (CollectionRow) VDLWrite(vdl.Encoder) error
pkg syncbase, method (ConflictDataBatch) FillVDLTarget(vdl.Target, *vdl.Type) error
pkg syncbase, method (ConflictDataBatch) Index() int
pkg syncbase, method (ConflictDataBatch) Interface() interface{}
pkg syncbase, method (ConflictDataBatch) MakeVDLTarget() vdl.Target
pkg syncbase, method (ConflictDataBatch) Name() string
pkg syncbase, method (ConflictDataBatch) VDLIsZero() bool
pkg syncbase, method (ConflictDataBatch) VDLWrite(vdl.Encoder) error
pkg syncbase, method (ConflictDataRow) FillVDLTarget(vdl.Target, *vdl.Type) error
pkg syncbase, method (ConflictDataRow) Index() int
pkg syncbase, method (ConflictDataRow) Interface() interface{}
pkg syncbase, method (ConflictDataRow) MakeVDLTarget() vdl.Target
pkg syncbase, method (ConflictDataRow) Name() string
pkg syncbase, method (ConflictDataRow) VDLIsZero() bool
pkg syncbase, method (ConflictDataRow) VDLWrite(vdl.Encoder) error
pkg syncbase, method (ConflictInfo) VDLIsZero() bool
pkg syncbase, method (ConflictInfo) VDLWrite(vdl.Encoder) error
pkg syncbase, method (CrPolicy) VDLIsZero() bool
pkg syncbase, method (CrPolicy) VDLWrite(vdl.Encoder) error
pkg syncbase, method (CrRule) VDLIsZero() bool
pkg syncbase, method (CrRule) VDLWrite(vdl.Encoder) error
pkg syncbase, method (DevModeUpdateVClockOpts) VDLIsZero() bool
pkg syncbase, method (DevModeUpdateVClockOpts) VDLWrite(vdl.Encoder) error
pkg syncbase, method (Id) VDLIsZero() bool
pkg syncbase, method (Id) VDLWrite(vdl.Encoder) error
pkg syncbase, method (KeyValue) VDLIsZero() bool
pkg syncbase, method (KeyValue) VDLWrite(vdl.Encoder) error
pkg syncbase, method (OperationRead) FillVDLTarget(vdl.Target, *vdl.Type) error
pkg syncbase, method (OperationRead) Index() int
pkg syncbase, method (OperationRead) Interface() interface{}
pkg syncbase, method (OperationRead) MakeVDLTarget() vdl.Target
pkg syncbase, method (OperationRead) Name() string
pkg syncbase, method (OperationRead) VDLIsZero() bool
pkg syncbase, method (OperationRead) VDLWrite(vdl.Encoder) error
pkg syncbase, method (OperationScan) FillVDLTarget(vdl.Target, *vdl.Type) error
pkg syncbase, method (OperationScan) Index() int
pkg syncbase, method (OperationScan) Interface() interface{}
pkg syncbase, method (OperationScan) MakeVDLTarget() vdl.Target
pkg syncbase, method (OperationScan) Name() string
pkg syncbase, method (OperationScan) VDLIsZero() bool
pkg syncbase, method (OperationScan) VDLWrite(vdl.Encoder) error
pkg syncbase, method (OperationWrite) FillVDLTarget(vdl.Target, *vdl.Type) error
pkg syncbase, method (OperationWrite) Index() int
pkg syncbase, method (OperationWrite) Interface() interface{}
pkg syncbase, method (OperationWrite) MakeVDLTarget() vdl.Target
pkg syncbase, method (OperationWrite) Name() string
pkg syncbase, method (OperationWrite) VDLIsZero() bool
pkg syncbase, method (OperationWrite) VDLWrite(vdl.Encoder) error
pkg syncbase, method (ResolutionInfo) VDLIsZero() bool
pkg syncbase, method (ResolutionInfo) VDLWrite(vdl.Encoder) error
pkg syncbase, method (ResolverType) String() string
pkg syncbase, method (ResolverType) VDLIsZero() bool
pkg syncbase, method (ResolverType) VDLWrite(vdl.Encoder) error
pkg syncbase, method (RowInfo) VDLIsZero() bool
pkg syncbase, method (RowInfo) VDLWrite(vdl.Encoder) error
pkg syncbase, method (RowOp) VDLIsZero() bool
pkg syncbase, method (RowOp) VDLWrite(vdl.Encoder) error
pkg syncbase, method (ScanOp) VDLIsZero() bool
pkg syncbase, method (ScanOp) VDLWrite(vdl.Encoder) error
pkg syncbase, method (SchemaMetadata) VDLIsZero() bool
pkg syncbase, method (SchemaMetadata) VDLWrite(vdl.Encoder) error
pkg syncbase, method (StoreChange) VDLIsZero() bool
pkg syncbase, method (StoreChange) VDLWrite(vdl.Encoder) error
pkg syncbase, method (SyncgroupMemberInfo) VDLIsZero() bool
pkg syncbase, method (SyncgroupMemberInfo) VDLWrite(vdl.Encoder) error
pkg syncbase, method (SyncgroupSpec) VDLIsZero() bool
pkg syncbase, method (SyncgroupSpec) VDLWrite(vdl.Encoder) error
pkg syncbase, method (Value) VDLIsZero() bool
pkg syncbase, method (Value) VDLWrite(vdl.Encoder) error
pkg syncbase, method (ValueSelection) String() string
pkg syncbase, method (ValueSelection) VDLIsZero() bool
pkg syncbase, method (ValueSelection) VDLWrite(vdl.Encoder) error
pkg syncbase, method (ValueState) String() string
pkg syncbase, method (ValueState) VDLIsZero() bool
pkg syncbase, method (ValueState) VDLWrite(vdl.Encoder) error
pkg syncbase, type BatchHandle string
pkg syncbase, type BatchHandleTarget struct
pkg syncbase, type BatchHandleTarget struct, Value *BatchHandle
pkg syncbase, type BatchHandleTarget struct, embedded vdl.TargetBase
pkg syncbase, type BatchInfo struct
pkg syncbase, type BatchInfo struct, Hint string
pkg syncbase, type BatchInfo struct, Id uint64
pkg syncbase, type BatchInfo struct, Source BatchSource
pkg syncbase, type BatchInfoTarget struct
pkg syncbase, type BatchInfoTarget struct, Value *BatchInfo
pkg syncbase, type BatchInfoTarget struct, embedded vdl.FieldsTargetBase
pkg syncbase, type BatchInfoTarget struct, embedded vdl.TargetBase
pkg syncbase, type BatchOptions struct
pkg syncbase, type BatchOptions struct, Hint string
pkg syncbase, type BatchOptions struct, ReadOnly bool
pkg syncbase, type BatchOptionsTarget struct
pkg syncbase, type BatchOptionsTarget struct, Value *BatchOptions
pkg syncbase, type BatchOptionsTarget struct, embedded vdl.FieldsTargetBase
pkg syncbase, type BatchOptionsTarget struct, embedded vdl.TargetBase
pkg syncbase, type BatchSource int
pkg syncbase, type BatchSourceTarget struct
pkg syncbase, type BatchSourceTarget struct, Value *BatchSource
pkg syncbase, type BatchSourceTarget struct, embedded vdl.TargetBase
pkg syncbase, type BlobFetchState int
pkg syncbase, type BlobFetchStateTarget struct
pkg syncbase, type BlobFetchStateTarget struct, Value *BlobFetchState
pkg syncbase, type BlobFetchStateTarget struct, embedded vdl.TargetBase
pkg syncbase, type BlobFetchStatus struct
pkg syncbase, type BlobFetchStatus struct, Received int64
pkg syncbase, type BlobFetchStatus struct, State BlobFetchState
pkg syncbase, type BlobFetchStatus struct, Total int64
pkg syncbase, type BlobFetchStatusTarget struct
pkg syncbase, type BlobFetchStatusTarget struct, Value *BlobFetchStatus
pkg syncbase, type BlobFetchStatusTarget struct, embedded vdl.FieldsTargetBase
pkg syncbase, type BlobFetchStatusTarget struct, embedded vdl.TargetBase
pkg syncbase, type BlobManagerClientMethods interface { CommitBlob, CreateBlob, DeleteBlob, FetchBlob, GetBlob, GetBlobSize, KeepBlob, PinBlob, PutBlob, UnpinBlob }
pkg syncbase, type BlobManagerClientMethods interface, CommitBlob(*context.T, BlobRef, ...rpc.CallOpt) error
pkg syncbase, type BlobManagerClientMethods interface, CreateBlob(*context.T, ...rpc.CallOpt) (BlobRef, error)
pkg syncbase, type BlobManagerClientMethods interface, DeleteBlob(*context.T, BlobRef, ...rpc.CallOpt) error
pkg syncbase, type BlobManagerClientMethods interface, FetchBlob(*context.T, BlobRef, uint64, ...rpc.CallOpt) (BlobManagerFetchBlobClientCall, error)
pkg syncbase, type BlobManagerClientMethods interface, GetBlob(*context.T, BlobRef, int64, ...rpc.CallOpt) (BlobManagerGetBlobClientCall, error)
pkg syncbase, type BlobManagerClientMethods interface, GetBlobSize(*context.T, BlobRef, ...rpc.CallOpt) (int64, error)
pkg syncbase, type BlobManagerClientMethods interface, KeepBlob(*context.T, BlobRef, uint64, ...rpc.CallOpt) error
pkg syncbase, type BlobManagerClientMethods interface, PinBlob(*context.T, BlobRef, ...rpc.CallOpt) error
pkg syncbase, type BlobManagerClientMethods interface, PutBlob(*context.T, BlobRef, ...rpc.CallOpt) (BlobManagerPutBlobClientCall, error)
pkg syncbase, type BlobManagerClientMethods interface, UnpinBlob(*context.T, BlobRef, ...rpc.CallOpt) error
pkg syncbase, type BlobManagerClientStub interface, CommitBlob(*context.T, BlobRef, ...rpc.CallOpt) error
pkg syncbase, type BlobManagerClientStub interface, CreateBlob(*context.T, ...rpc.CallOpt) (BlobRef, error)
pkg syncbase, type BlobManagerClientStub interface, DeleteBlob(*context.T, BlobRef, ...rpc.CallOpt) error
pkg syncbase, type BlobManagerClientStub interface, FetchBlob(*context.T, BlobRef, uint64, ...rpc.CallOpt) (BlobManagerFetchBlobClientCall, error)
pkg syncbase, type BlobManagerClientStub interface, GetBlob(*context.T, BlobRef, int64, ...rpc.CallOpt) (BlobManagerGetBlobClientCall, error)
pkg syncbase, type BlobManagerClientStub interface, GetBlobSize(*context.T, BlobRef, ...rpc.CallOpt) (int64, error)
pkg syncbase, type BlobManagerClientStub interface, KeepBlob(*context.T, BlobRef, uint64, ...rpc.CallOpt) error
pkg syncbase, type BlobManagerClientStub interface, PinBlob(*context.T, BlobRef, ...rpc.CallOpt) error
pkg syncbase, type BlobManagerClientStub interface, PutBlob(*context.T, BlobRef, ...rpc.CallOpt) (BlobManagerPutBlobClientCall, error)
pkg syncbase, type BlobManagerClientStub interface, UnpinBlob(*context.T, BlobRef, ...rpc.CallOpt) error
pkg syncbase, type BlobManagerClientStub interface, unexported methods
pkg syncbase, type BlobManagerFetchBlobClientCall interface { Finish, RecvStream }
pkg syncbase, type BlobManagerFetchBlobClientCall interface, Finish() error
pkg syncbase, type BlobManagerFetchBlobClientCall interface, RecvStream() interface {  Advance() bool;; Value() BlobFetchStatus;; Err() error;}
pkg syncbase, type BlobManagerFetchBlobClientStream interface { RecvStream }
pkg syncbase, type BlobManagerFetchBlobClientStream interface, RecvStream() interface {  Advance() bool;; Value() BlobFetchStatus;; Err() error;}
pkg syncbase, type BlobManagerFetchBlobServerCall interface, SendStream() interface {  Send(item BlobFetchStatus) error;}
pkg syncbase, type BlobManagerFetchBlobServerCall interface, unexported methods
pkg syncbase, type BlobManagerFetchBlobServerCallStub struct
pkg syncbase, type BlobManagerFetchBlobServerCallStub struct, embedded rpc.StreamServerCall
pkg syncbase, type BlobManagerFetchBlobServerStream interface { SendStream }
pkg syncbase, type BlobManagerFetchBlobServerStream interface, SendStream() interface {  Send(item BlobFetchStatus) error;}
pkg syncbase, type BlobManagerGetBlobClientCall interface { Finish, RecvStream }
pkg syncbase, type BlobManagerGetBlobClientCall interface, Finish() error
pkg syncbase, type BlobManagerGetBlobClientCall interface, RecvStream() interface {  Advance() bool;; Value() []byte;; Err() error;}
pkg syncbase, type BlobManagerGetBlobClientStream interface { RecvStream }
pkg syncbase, type BlobManagerGetBlobClientStream interface, RecvStream() interface {  Advance() bool;; Value() []byte;; Err() error;}
pkg syncbase, type BlobManagerGetBlobServerCall interface, SendStream() interface {  Send(item []byte) error;}
pkg syncbase, type BlobManagerGetBlobServerCall interface, unexported methods
pkg syncbase, type BlobManagerGetBlobServerCallStub struct
pkg syncbase, type BlobManagerGetBlobServerCallStub struct, embedded rpc.StreamServerCall
pkg syncbase, type BlobManagerGetBlobServerStream interface { SendStream }
pkg syncbase, type BlobManagerGetBlobServerStream interface, SendStream() interface {  Send(item []byte) error;}
pkg syncbase, type BlobManagerPutBlobClientCall interface { Finish, SendStream }
pkg syncbase, type BlobManagerPutBlobClientCall interface, Finish() error
pkg syncbase, type BlobManagerPutBlobClientCall interface, SendStream() interface {  Send(item []byte) error;; Close() error;}
pkg syncbase, type BlobManagerPutBlobClientStream interface { SendStream }
pkg syncbase, type BlobManagerPutBlobClientStream interface, SendStream() interface {  Send(item []byte) error;; Close() error;}
pkg syncbase, type BlobManagerPutBlobServerCall interface, RecvStream() interface {  Advance() bool;; Value() []byte;; Err() error;}
pkg syncbase, type BlobManagerPutBlobServerCall interface, unexported methods
pkg syncbase, type BlobManagerPutBlobServerCallStub struct
pkg syncbase, type BlobManagerPutBlobServerCallStub struct, embedded rpc.StreamServerCall
pkg syncbase, type BlobManagerPutBlobServerStream interface { RecvStream }
pkg syncbase, type BlobManagerPutBlobServerStream interface, RecvStream() interface {  Advance() bool;; Value() []byte;; Err() error;}
pkg syncbase, type BlobManagerServerMethods interface { CommitBlob, CreateBlob, DeleteBlob, FetchBlob, GetBlob, GetBlobSize, KeepBlob, PinBlob, PutBlob, UnpinBlob }
pkg syncbase, type BlobManagerServerMethods interface, CommitBlob(*context.T, rpc.ServerCall, BlobRef) error
pkg syncbase, type BlobManagerServerMethods interface, CreateBlob(*context.T, rpc.ServerCall) (BlobRef, error)
pkg syncbase, type BlobManagerServerMethods interface, DeleteBlob(*context.T, rpc.ServerCall, BlobRef) error
pkg syncbase, type BlobManagerServerMethods interface, FetchBlob(*context.T, BlobManagerFetchBlobServerCall, BlobRef, uint64) error
pkg syncbase, type BlobManagerServerMethods interface, GetBlob(*context.T, BlobManagerGetBlobServerCall, BlobRef, int64) error
pkg syncbase, type BlobManagerServerMethods interface, GetBlobSize(*context.T, rpc.ServerCall, BlobRef) (int64, error)
pkg syncbase, type BlobManagerServerMethods interface, KeepBlob(*context.T, rpc.ServerCall, BlobRef, uint64) error
pkg syncbase, type BlobManagerServerMethods interface, PinBlob(*context.T, rpc.ServerCall, BlobRef) error
pkg syncbase, type BlobManagerServerMethods interface, PutBlob(*context.T, BlobManagerPutBlobServerCall, BlobRef) error
pkg syncbase, type BlobManagerServerMethods interface, UnpinBlob(*context.T, rpc.ServerCall, BlobRef) error
pkg syncbase, type BlobManagerServerStub interface { CommitBlob, CreateBlob, DeleteBlob, Describe__, FetchBlob, GetBlob, GetBlobSize, KeepBlob, PinBlob, PutBlob, UnpinBlob }
pkg syncbase, type BlobManagerServerStub interface, CommitBlob(*context.T, rpc.ServerCall, BlobRef) error
pkg syncbase, type BlobManagerServerStub interface, CreateBlob(*context.T, rpc.ServerCall) (BlobRef, error)
pkg syncbase, type BlobManagerServerStub interface, DeleteBlob(*context.T, rpc.ServerCall, BlobRef) error
pkg syncbase, type BlobManagerServerStub interface, Describe__() []rpc.InterfaceDesc
pkg syncbase, type BlobManagerServerStub interface, FetchBlob(*context.T, *BlobManagerFetchBlobServerCallStub, BlobRef, uint64) error
pkg syncbase, type BlobManagerServerStub interface, GetBlob(*context.T, *BlobManagerGetBlobServerCallStub, BlobRef, int64) error
pkg syncbase, type BlobManagerServerStub interface, GetBlobSize(*context.T, rpc.ServerCall, BlobRef) (int64, error)
pkg syncbase, type BlobManagerServerStub interface, KeepBlob(*context.T, rpc.ServerCall, BlobRef, uint64) error
pkg syncbase, type BlobManagerServerStub interface, PinBlob(*context.T, rpc.ServerCall, BlobRef) error
pkg syncbase, type BlobManagerServerStub interface, PutBlob(*context.T, *BlobManagerPutBlobServerCallStub, BlobRef) error
pkg syncbase, type BlobManagerServerStub interface, UnpinBlob(*context.T, rpc.ServerCall, BlobRef) error
pkg syncbase, type BlobManagerServerStubMethods interface { CommitBlob, CreateBlob, DeleteBlob, FetchBlob, GetBlob, GetBlobSize, KeepBlob, PinBlob, PutBlob, UnpinBlob }
pkg syncbase, type BlobManagerServerStubMethods interface, CommitBlob(*context.T, rpc.ServerCall, BlobRef) error
pkg syncbase, type BlobManagerServerStubMethods interface, CreateBlob(*context.T, rpc.ServerCall) (BlobRef, error)
pkg syncbase, type BlobManagerServerStubMethods interface, DeleteBlob(*context.T, rpc.ServerCall, BlobRef) error
pkg syncbase, type BlobManagerServerStubMethods interface, FetchBlob(*context.T, *BlobManagerFetchBlobServerCallStub, BlobRef, uint64) error
pkg syncbase, type BlobManagerServerStubMethods interface, GetBlob(*context.T, *BlobManagerGetBlobServerCallStub, BlobRef, int64) error
pkg syncbase, type BlobManagerServerStubMethods interface, GetBlobSize(*context.T, rpc.ServerCall, BlobRef) (int64, error)
pkg syncbase, type BlobManagerServerStubMethods interface, KeepBlob(*context.T, rpc.ServerCall, BlobRef, uint64) error
pkg syncbase, type BlobManagerServerStubMethods interface, PinBlob(*context.T, rpc.ServerCall, BlobRef) error
pkg syncbase, type BlobManagerServerStubMethods interface, PutBlob(*context.T, *BlobManagerPutBlobServerCallStub, BlobRef) error
pkg syncbase, type BlobManagerServerStubMethods interface, UnpinBlob(*context.T, rpc.ServerCall, BlobRef) error
pkg syncbase, type BlobRef string
pkg syncbase, type BlobRefTarget struct
pkg syncbase, type BlobRefTarget struct, Value *BlobRef
pkg syncbase, type BlobRefTarget struct, embedded vdl.TargetBase
pkg syncbase, type CollectionClientMethods interface { Create, DeleteRange, Destroy, Exists, GetPermissions, Scan, SetPermissions }
pkg syncbase, type CollectionClientMethods interface, Create(*context.T, BatchHandle, access.Permissions, ...rpc.CallOpt) error
pkg syncbase, type CollectionClientMethods interface, DeleteRange(*context.T, BatchHandle, []byte, []byte, ...rpc.CallOpt) error
pkg syncbase, type CollectionClientMethods interface, Destroy(*context.T, BatchHandle, ...rpc.CallOpt) error
pkg syncbase, type CollectionClientMethods interface, Exists(*context.T, BatchHandle, ...rpc.CallOpt) (bool, error)
pkg syncbase, type CollectionClientMethods interface, GetPermissions(*context.T, BatchHandle, ...rpc.CallOpt) (access.Permissions, error)
pkg syncbase, type CollectionClientMethods interface, Scan(*context.T, BatchHandle, []byte, []byte, ...rpc.CallOpt) (CollectionScanClientCall, error)
pkg syncbase, type CollectionClientMethods interface, SetPermissions(*context.T, BatchHandle, access.Permissions, ...rpc.CallOpt) error
pkg syncbase, type CollectionClientStub interface, Create(*context.T, BatchHandle, access.Permissions, ...rpc.CallOpt) error
pkg syncbase, type CollectionClientStub interface, DeleteRange(*context.T, BatchHandle, []byte, []byte, ...rpc.CallOpt) error
pkg syncbase, type CollectionClientStub interface, Destroy(*context.T, BatchHandle, ...rpc.CallOpt) error
pkg syncbase, type CollectionClientStub interface, Exists(*context.T, BatchHandle, ...rpc.CallOpt) (bool, error)
pkg syncbase, type CollectionClientStub interface, GetPermissions(*context.T, BatchHandle, ...rpc.CallOpt) (access.Permissions, error)
pkg syncbase, type CollectionClientStub interface, Scan(*context.T, BatchHandle, []byte, []byte, ...rpc.CallOpt) (CollectionScanClientCall, error)
pkg syncbase, type CollectionClientStub interface, SetPermissions(*context.T, BatchHandle, access.Permissions, ...rpc.CallOpt) error
pkg syncbase, type CollectionClientStub interface, unexported methods
pkg syncbase, type CollectionRow struct
pkg syncbase, type CollectionRow struct, CollectionId Id
pkg syncbase, type CollectionRow struct, Row string
pkg syncbase, type CollectionRowTarget struct
pkg syncbase, type CollectionRowTarget struct, Value *CollectionRow
pkg syncbase, type CollectionRowTarget struct, embedded vdl.FieldsTargetBase
pkg syncbase, type CollectionRowTarget struct, embedded vdl.TargetBase
pkg syncbase, type CollectionScanClientCall interface { Finish, RecvStream }
pkg syncbase, type CollectionScanClientCall interface, Finish() error
pkg syncbase, type CollectionScanClientCall interface, RecvStream() interface {  Advance() bool;; Value() KeyValue;; Err() error;}
pkg syncbase, type CollectionScanClientStream interface { RecvStream }
pkg syncbase, type CollectionScanClientStream interface, RecvStream() interface {  Advance() bool;; Value() KeyValue;; Err() error;}
pkg syncbase, type CollectionScanServerCall interface, SendStream() interface {  Send(item KeyValue) error;}
pkg syncbase, type CollectionScanServerCall interface, unexported methods
pkg syncbase, type CollectionScanServerCallStub struct
pkg syncbase, type CollectionScanServerCallStub struct, embedded rpc.StreamServerCall
pkg syncbase, type CollectionScanServerStream interface { SendStream }
pkg syncbase, type CollectionScanServerStream interface, SendStream() interface {  Send(item KeyValue) error;}
pkg syncbase, type CollectionServerMethods interface { Create, DeleteRange, Destroy, Exists, GetPermissions, Scan, SetPermissions }
pkg syncbase, type CollectionServerMethods interface, Create(*context.T, rpc.ServerCall, BatchHandle, access.Permissions) error
pkg syncbase, type CollectionServerMethods interface, DeleteRange(*context.T, rpc.ServerCall, BatchHandle, []byte, []byte) error
pkg syncbase, type CollectionServerMethods interface, Destroy(*context.T, rpc.ServerCall, BatchHandle) error
pkg syncbase, type CollectionServerMethods interface, Exists(*context.T, rpc.ServerCall, BatchHandle) (bool, error)
pkg syncbase, type CollectionServerMethods interface, GetPermissions(*context.T, rpc.ServerCall, BatchHandle) (access.Permissions, error)
pkg syncbase, type CollectionServerMethods interface, Scan(*context.T, CollectionScanServerCall, BatchHandle, []byte, []byte) error
pkg syncbase, type CollectionServerMethods interface, SetPermissions(*context.T, rpc.ServerCall, BatchHandle, access.Permissions) error
pkg syncbase, type CollectionServerStub interface { Create, DeleteRange, Describe__, Destroy, Exists, GetPermissions, Scan, SetPermissions }
pkg syncbase, type CollectionServerStub interface, Create(*context.T, rpc.ServerCall, BatchHandle, access.Permissions) error
pkg syncbase, type CollectionServerStub interface, DeleteRange(*context.T, rpc.ServerCall, BatchHandle, []byte, []byte) error
pkg syncbase, type CollectionServerStub interface, Describe__() []rpc.InterfaceDesc
pkg syncbase, type CollectionServerStub interface, Destroy(*context.T, rpc.ServerCall, BatchHandle) error
pkg syncbase, type CollectionServerStub interface, Exists(*context.T, rpc.ServerCall, BatchHandle) (bool, error)
pkg syncbase, type CollectionServerStub interface, GetPermissions(*context.T, rpc.ServerCall, BatchHandle) (access.Permissions, error)
pkg syncbase, type CollectionServerStub interface, Scan(*context.T, *CollectionScanServerCallStub, BatchHandle, []byte, []byte) error
pkg syncbase, type CollectionServerStub interface, SetPermissions(*context.T, rpc.ServerCall, BatchHandle, access.Permissions) error
pkg syncbase, type CollectionServerStubMethods interface { Create, DeleteRange, Destroy, Exists, GetPermissions, Scan, SetPermissions }
pkg syncbase, type CollectionServerStubMethods interface, Create(*context.T, rpc.ServerCall, BatchHandle, access.Permissions) error
pkg syncbase, type CollectionServerStubMethods interface, DeleteRange(*context.T, rpc.ServerCall, BatchHandle, []byte, []byte) error
pkg syncbase, type CollectionServerStubMethods interface, Destroy(*context.T, rpc.ServerCall, BatchHandle) error
pkg syncbase, type CollectionServerStubMethods interface, Exists(*context.T, rpc.ServerCall, BatchHandle) (bool, error)
pkg syncbase, type CollectionServerStubMethods interface, GetPermissions(*context.T, rpc.ServerCall, BatchHandle) (access.Permissions, error)
pkg syncbase, type CollectionServerStubMethods interface, Scan(*context.T, *CollectionScanServerCallStub, BatchHandle, []byte, []byte) error
pkg syncbase, type CollectionServerStubMethods interface, SetPermissions(*context.T, rpc.ServerCall, BatchHandle, access.Permissions) error
pkg syncbase, type ConflictData interface, FillVDLTarget(vdl.Target, *vdl.Type) error
pkg syncbase, type ConflictData interface, Index() int
pkg syncbase, type ConflictData interface, Interface() interface{}
pkg syncbase, type ConflictData interface, Name() string
pkg syncbase, type ConflictData interface, VDLIsZero() bool
pkg syncbase, type ConflictData interface, VDLWrite(vdl.Encoder) error
pkg syncbase, type ConflictData interface, unexported methods
pkg syncbase, type ConflictDataBatch struct
pkg syncbase, type ConflictDataBatch struct, Value BatchInfo
pkg syncbase, type ConflictDataRow struct
pkg syncbase, type ConflictDataRow struct, Value RowInfo
pkg syncbase, type ConflictDataTarget struct
pkg syncbase, type ConflictDataTarget struct, Value *ConflictData
pkg syncbase, type ConflictDataTarget struct, embedded vdl.FieldsTargetBase
pkg syncbase, type ConflictDataTarget struct, embedded vdl.TargetBase
pkg syncbase, type ConflictInfo struct
pkg syncbase, type ConflictInfo struct, Continued bool
pkg syncbase, type ConflictInfo struct, Data ConflictData
pkg syncbase, type ConflictInfoTarget struct
pkg syncbase, type ConflictInfoTarget struct, Value *ConflictInfo
pkg syncbase, type ConflictInfoTarget struct, embedded vdl.FieldsTargetBase
pkg syncbase, type ConflictInfoTarget struct, embedded vdl.TargetBase
pkg syncbase, type ConflictManagerClientMethods interface { StartConflictResolver }
pkg syncbase, type ConflictManagerClientMethods interface, StartConflictResolver(*context.T, ...rpc.CallOpt) (ConflictManagerStartConflictResolverClientCall, error)
pkg syncbase, type ConflictManagerClientStub interface, StartConflictResolver(*context.T, ...rpc.CallOpt) (ConflictManagerStartConflictResolverClientCall, error)
pkg syncbase, type ConflictManagerClientStub interface, unexported methods
pkg syncbase, type ConflictManagerServerMethods interface { StartConflictResolver }
pkg syncbase, type ConflictManagerServerMethods interface, StartConflictResolver(*context.T, ConflictManagerStartConflictResolverServerCall) error
pkg syncbase, type ConflictManagerServerStub interface { Describe__, StartConflictResolver }
pkg syncbase, type ConflictManagerServerStub interface, Describe__() []rpc.InterfaceDesc
pkg syncbase, type ConflictManagerServerStub interface, StartConflictResolver(*context.T, *ConflictManagerStartConflictResolverServerCallStub) error
pkg syncbase, type ConflictManagerServerStubMethods interface { StartConflictResolver }
pkg syncbase, type ConflictManagerServerStubMethods interface, StartConflictResolver(*context.T, *ConflictManagerStartConflictResolverServerCallStub) error
pkg syncbase, type ConflictManagerStartConflictResolverClientCall interface { Finish, RecvStream, SendStream }
pkg syncbase, type ConflictManagerStartConflictResolverClientCall interface, Finish() error
pkg syncbase, type ConflictManagerStartConflictResolverClientCall interface, RecvStream() interface {  Advance() bool;; Value() ConflictInfo;; Err() error;}
pkg syncbase, type ConflictManagerStartConflictResolverClientCall interface, SendStream() interface {  Send(item ResolutionInfo) error;; Close() error;}
pkg syncbase, type ConflictManagerStartConflictResolverClientStream interface { RecvStream, SendStream }
pkg syncbase, type ConflictManagerStartConflictResolverClientStream interface, RecvStream() interface {  Advance() bool;; Value() ConflictInfo;; Err() error;}
pkg syncbase, type ConflictManagerStartConflictResolverClientStream interface, SendStream() interface {  Send(item ResolutionInfo) error;; Close() error;}
pkg syncbase, type ConflictManagerStartConflictResolverServerCall interface, RecvStream() interface {  Advance() bool;; Value() ResolutionInfo;; Err() error;}
pkg syncbase, type ConflictManagerStartConflictResolverServerCall interface, SendStream() interface {  Send(item ConflictInfo) error;}
pkg syncbase, type ConflictManagerStartConflictResolverServerCall interface, unexported methods
pkg syncbase, type ConflictManagerStartConflictResolverServerCallStub struct
pkg syncbase, type ConflictManagerStartConflictResolverServerCallStub struct, embedded rpc.StreamServerCall
pkg syncbase, type ConflictManagerStartConflictResolverServerStream interface { RecvStream, SendStream }
pkg syncbase, type ConflictManagerStartConflictResolverServerStream interface, RecvStream() interface {  Advance() bool;; Value() ResolutionInfo;; Err() error;}
pkg syncbase, type ConflictManagerStartConflictResolverServerStream interface, SendStream() interface {  Send(item ConflictInfo) error;}
pkg syncbase, type CrPolicy struct
pkg syncbase, type CrPolicy struct, Rules []CrRule
pkg syncbase, type CrPolicyTarget struct
pkg syncbase, type CrPolicyTarget struct, Value *CrPolicy
pkg syncbase, type CrPolicyTarget struct, embedded vdl.FieldsTargetBase
pkg syncbase, type CrPolicyTarget struct, embedded vdl.TargetBase
pkg syncbase, type CrRule struct
pkg syncbase, type CrRule struct, CollectionId Id
pkg syncbase, type CrRule struct, KeyPrefix string
pkg syncbase, type CrRule struct, Resolver ResolverType
pkg syncbase, type CrRule struct, Type string
pkg syncbase, type CrRuleTarget struct
pkg syncbase, type CrRuleTarget struct, Value *CrRule
pkg syncbase, type CrRuleTarget struct, embedded vdl.FieldsTargetBase
pkg syncbase, type CrRuleTarget struct, embedded vdl.TargetBase
pkg syncbase, type DatabaseClientMethods interface, Abort(*context.T, BatchHandle, ...rpc.CallOpt) error
pkg syncbase, type DatabaseClientMethods interface, BeginBatch(*context.T, BatchOptions, ...rpc.CallOpt) (BatchHandle, error)
pkg syncbase, type DatabaseClientMethods interface, Commit(*context.T, BatchHandle, ...rpc.CallOpt) error
pkg syncbase, type DatabaseClientMethods interface, CommitBlob(*context.T, BlobRef, ...rpc.CallOpt) error
pkg syncbase, type DatabaseClientMethods interface, Create(*context.T, *SchemaMetadata, access.Permissions, ...rpc.CallOpt) error
pkg syncbase, type DatabaseClientMethods interface, CreateBlob(*context.T, ...rpc.CallOpt) (BlobRef, error)
pkg syncbase, type DatabaseClientMethods interface, CreateSyncgroup(*context.T, Id, SyncgroupSpec, SyncgroupMemberInfo, ...rpc.CallOpt) error
pkg syncbase, type DatabaseClientMethods interface, DeleteBlob(*context.T, BlobRef, ...rpc.CallOpt) error
pkg syncbase, type DatabaseClientMethods interface, Destroy(*context.T, ...rpc.CallOpt) error
pkg syncbase, type DatabaseClientMethods interface, DestroySyncgroup(*context.T, Id, ...rpc.CallOpt) error
pkg syncbase, type DatabaseClientMethods interface, EjectFromSyncgroup(*context.T, Id, string, ...rpc.CallOpt) error
pkg syncbase, type DatabaseClientMethods interface, Exec(*context.T, BatchHandle, string, []*vom.RawBytes, ...rpc.CallOpt) (DatabaseExecClientCall, error)
pkg syncbase, type DatabaseClientMethods interface, Exists(*context.T, ...rpc.CallOpt) (bool, error)
pkg syncbase, type DatabaseClientMethods interface, FetchBlob(*context.T, BlobRef, uint64, ...rpc.CallOpt) (BlobManagerFetchBlobClientCall, error)
pkg syncbase, type DatabaseClientMethods interface, GetBlob(*context.T, BlobRef, int64, ...rpc.CallOpt) (BlobManagerGetBlobClientCall, error)
pkg syncbase, type DatabaseClientMethods interface, GetBlobSize(*context.T, BlobRef, ...rpc.CallOpt) (int64, error)
pkg syncbase, type DatabaseClientMethods interface, GetResumeMarker(*context.T, BatchHandle, ...rpc.CallOpt) (watch.ResumeMarker, error)
pkg syncbase, type DatabaseClientMethods interface, GetSchemaMetadata(*context.T, ...rpc.CallOpt) (SchemaMetadata, error)
pkg syncbase, type DatabaseClientMethods interface, GetSyncgroupMembers(*context.T, Id, ...rpc.CallOpt) (map[string]SyncgroupMemberInfo, error)
pkg syncbase, type DatabaseClientMethods interface, GetSyncgroupSpec(*context.T, Id, ...rpc.CallOpt) (SyncgroupSpec, string, error)
pkg syncbase, type DatabaseClientMethods interface, JoinSyncgroup(*context.T, string, []string, Id, SyncgroupMemberInfo, ...rpc.CallOpt) (SyncgroupSpec, error)
pkg syncbase, type DatabaseClientMethods interface, KeepBlob(*context.T, BlobRef, uint64, ...rpc.CallOpt) error
pkg syncbase, type DatabaseClientMethods interface, LeaveSyncgroup(*context.T, Id, ...rpc.CallOpt) error
pkg syncbase, type DatabaseClientMethods interface, ListCollections(*context.T, BatchHandle, ...rpc.CallOpt) ([]Id, error)
pkg syncbase, type DatabaseClientMethods interface, ListSyncgroups(*context.T, ...rpc.CallOpt) ([]Id, error)
pkg syncbase, type DatabaseClientMethods interface, PauseSync(*context.T, ...rpc.CallOpt) error
pkg syncbase, type DatabaseClientMethods interface, PinBlob(*context.T, BlobRef, ...rpc.CallOpt) error
pkg syncbase, type DatabaseClientMethods interface, PutBlob(*context.T, BlobRef, ...rpc.CallOpt) (BlobManagerPutBlobClientCall, error)
pkg syncbase, type DatabaseClientMethods interface, ResumeSync(*context.T, ...rpc.CallOpt) error
pkg syncbase, type DatabaseClientMethods interface, SetSchemaMetadata(*context.T, SchemaMetadata, ...rpc.CallOpt) error
pkg syncbase, type DatabaseClientMethods interface, SetSyncgroupSpec(*context.T, Id, SyncgroupSpec, string, ...rpc.CallOpt) error
pkg syncbase, type DatabaseClientMethods interface, StartConflictResolver(*context.T, ...rpc.CallOpt) (ConflictManagerStartConflictResolverClientCall, error)
pkg syncbase, type DatabaseClientMethods interface, UnpinBlob(*context.T, BlobRef, ...rpc.CallOpt) error
pkg syncbase, type DatabaseClientMethods interface, unexported methods
pkg syncbase, type DatabaseClientStub interface, Abort(*context.T, BatchHandle, ...rpc.CallOpt) error
pkg syncbase, type DatabaseClientStub interface, BeginBatch(*context.T, BatchOptions, ...rpc.CallOpt) (BatchHandle, error)
pkg syncbase, type DatabaseClientStub interface, Commit(*context.T, BatchHandle, ...rpc.CallOpt) error
pkg syncbase, type DatabaseClientStub interface, CommitBlob(*context.T, BlobRef, ...rpc.CallOpt) error
pkg syncbase, type DatabaseClientStub interface, Create(*context.T, *SchemaMetadata, access.Permissions, ...rpc.CallOpt) error
pkg syncbase, type DatabaseClientStub interface, CreateBlob(*context.T, ...rpc.CallOpt) (BlobRef, error)
pkg syncbase, type DatabaseClientStub interface, CreateSyncgroup(*context.T, Id, SyncgroupSpec, SyncgroupMemberInfo, ...rpc.CallOpt) error
pkg syncbase, type DatabaseClientStub interface, DeleteBlob(*context.T, BlobRef, ...rpc.CallOpt) error
pkg syncbase, type DatabaseClientStub interface, Destroy(*context.T, ...rpc.CallOpt) error
pkg syncbase, type DatabaseClientStub interface, DestroySyncgroup(*context.T, Id, ...rpc.CallOpt) error
pkg syncbase, type DatabaseClientStub interface, EjectFromSyncgroup(*context.T, Id, string, ...rpc.CallOpt) error
pkg syncbase, type DatabaseClientStub interface, Exec(*context.T, BatchHandle, string, []*vom.RawBytes, ...rpc.CallOpt) (DatabaseExecClientCall, error)
pkg syncbase, type DatabaseClientStub interface, Exists(*context.T, ...rpc.CallOpt) (bool, error)
pkg syncbase, type DatabaseClientStub interface, FetchBlob(*context.T, BlobRef, uint64, ...rpc.CallOpt) (BlobManagerFetchBlobClientCall, error)
pkg syncbase, type DatabaseClientStub interface, GetBlob(*context.T, BlobRef, int64, ...rpc.CallOpt) (BlobManagerGetBlobClientCall, error)
pkg syncbase, type DatabaseClientStub interface, GetBlobSize(*context.T, BlobRef, ...rpc.CallOpt) (int64, error)
pkg syncbase, type DatabaseClientStub interface, GetResumeMarker(*context.T, BatchHandle, ...rpc.CallOpt) (watch.ResumeMarker, error)
pkg syncbase, type DatabaseClientStub interface, GetSchemaMetadata(*context.T, ...rpc.CallOpt) (SchemaMetadata, error)
pkg syncbase, type DatabaseClientStub interface, GetSyncgroupMembers(*context.T, Id, ...rpc.CallOpt) (map[string]SyncgroupMemberInfo, error)
pkg syncbase, type DatabaseClientStub interface, GetSyncgroupSpec(*context.T, Id, ...rpc.CallOpt) (SyncgroupSpec, string, error)
pkg syncbase, type DatabaseClientStub interface, JoinSyncgroup(*context.T, string, []string, Id, SyncgroupMemberInfo, ...rpc.CallOpt) (SyncgroupSpec, error)
pkg syncbase, type DatabaseClientStub interface, KeepBlob(*context.T, BlobRef, uint64, ...rpc.CallOpt) error
pkg syncbase, type DatabaseClientStub interface, LeaveSyncgroup(*context.T, Id, ...rpc.CallOpt) error
pkg syncbase, type DatabaseClientStub interface, ListCollections(*context.T, BatchHandle, ...rpc.CallOpt) ([]Id, error)
pkg syncbase, type DatabaseClientStub interface, ListSyncgroups(*context.T, ...rpc.CallOpt) ([]Id, error)
pkg syncbase, type DatabaseClientStub interface, PauseSync(*context.T, ...rpc.CallOpt) error
pkg syncbase, type DatabaseClientStub interface, PinBlob(*context.T, BlobRef, ...rpc.CallOpt) error
pkg syncbase, type DatabaseClientStub interface, PutBlob(*context.T, BlobRef, ...rpc.CallOpt) (BlobManagerPutBlobClientCall, error)
pkg syncbase, type DatabaseClientStub interface, ResumeSync(*context.T, ...rpc.CallOpt) error
pkg syncbase, type DatabaseClientStub interface, SetSchemaMetadata(*context.T, SchemaMetadata, ...rpc.CallOpt) error
pkg syncbase, type DatabaseClientStub interface, SetSyncgroupSpec(*context.T, Id, SyncgroupSpec, string, ...rpc.CallOpt) error
pkg syncbase, type DatabaseClientStub interface, StartConflictResolver(*context.T, ...rpc.CallOpt) (ConflictManagerStartConflictResolverClientCall, error)
pkg syncbase, type DatabaseClientStub interface, UnpinBlob(*context.T, BlobRef, ...rpc.CallOpt) error
pkg syncbase, type DatabaseClientStub interface, unexported methods
pkg syncbase, type DatabaseExecClientCall interface { Finish, RecvStream }
pkg syncbase, type DatabaseExecClientCall interface, Finish() error
pkg syncbase, type DatabaseExecClientCall interface, RecvStream() interface {  Advance() bool;; Value() []*vom.RawBytes;; Err() error;}
pkg syncbase, type DatabaseExecClientStream interface { RecvStream }
pkg syncbase, type DatabaseExecClientStream interface, RecvStream() interface {  Advance() bool;; Value() []*vom.RawBytes;; Err() error;}
pkg syncbase, type DatabaseExecServerCall interface, SendStream() interface {  Send(item []*vom.RawBytes) error;}
pkg syncbase, type DatabaseExecServerCall interface, unexported methods
pkg syncbase, type DatabaseExecServerCallStub struct
pkg syncbase, type DatabaseExecServerCallStub struct, embedded rpc.StreamServerCall
pkg syncbase, type DatabaseExecServerStream interface { SendStream }
pkg syncbase, type DatabaseExecServerStream interface, SendStream() interface {  Send(item []*vom.RawBytes) error;}
pkg syncbase, type DatabaseServerMethods interface, Abort(*context.T, rpc.ServerCall, BatchHandle) error
pkg syncbase, type DatabaseServerMethods interface, BeginBatch(*context.T, rpc.ServerCall, BatchOptions) (BatchHandle, error)
pkg syncbase, type DatabaseServerMethods interface, Commit(*context.T, rpc.ServerCall, BatchHandle) error
pkg syncbase, type DatabaseServerMethods interface, CommitBlob(*context.T, rpc.ServerCall, BlobRef) error
pkg syncbase, type DatabaseServerMethods interface, Create(*context.T, rpc.ServerCall, *SchemaMetadata, access.Permissions) error
pkg syncbase, type DatabaseServerMethods interface, CreateBlob(*context.T, rpc.ServerCall) (BlobRef, error)
pkg syncbase, type DatabaseServerMethods interface, CreateSyncgroup(*context.T, rpc.ServerCall, Id, SyncgroupSpec, SyncgroupMemberInfo) error
pkg syncbase, type DatabaseServerMethods interface, DeleteBlob(*context.T, rpc.ServerCall, BlobRef) error
pkg syncbase, type DatabaseServerMethods interface, Destroy(*context.T, rpc.ServerCall) error
pkg syncbase, type DatabaseServerMethods interface, DestroySyncgroup(*context.T, rpc.ServerCall, Id) error
pkg syncbase, type DatabaseServerMethods interface, EjectFromSyncgroup(*context.T, rpc.ServerCall, Id, string) error
pkg syncbase, type DatabaseServerMethods interface, Exec(*context.T, DatabaseExecServerCall, BatchHandle, string, []*vom.RawBytes) error
pkg syncbase, type DatabaseServerMethods interface, Exists(*context.T, rpc.ServerCall) (bool, error)
pkg syncbase, type DatabaseServerMethods interface, FetchBlob(*context.T, BlobManagerFetchBlobServerCall, BlobRef, uint64) error
pkg syncbase, type DatabaseServerMethods interface, GetBlob(*context.T, BlobManagerGetBlobServerCall, BlobRef, int64) error
pkg syncbase, type DatabaseServerMethods interface, GetBlobSize(*context.T, rpc.ServerCall, BlobRef) (int64, error)
pkg syncbase, type DatabaseServerMethods interface, GetResumeMarker(*context.T, rpc.ServerCall, BatchHandle) (watch.ResumeMarker, error)
pkg syncbase, type DatabaseServerMethods interface, GetSchemaMetadata(*context.T, rpc.ServerCall) (SchemaMetadata, error)
pkg syncbase, type DatabaseServerMethods interface, GetSyncgroupMembers(*context.T, rpc.ServerCall, Id) (map[string]SyncgroupMemberInfo, error)
pkg syncbase, type DatabaseServerMethods interface, GetSyncgroupSpec(*context.T, rpc.ServerCall, Id) (SyncgroupSpec, string, error)
pkg syncbase, type DatabaseServerMethods interface, JoinSyncgroup(*context.T, rpc.ServerCall, string, []string, Id, SyncgroupMemberInfo) (SyncgroupSpec, error)
pkg syncbase, type DatabaseServerMethods interface, KeepBlob(*context.T, rpc.ServerCall, BlobRef, uint64) error
pkg syncbase, type DatabaseServerMethods interface, LeaveSyncgroup(*context.T, rpc.ServerCall, Id) error
pkg syncbase, type DatabaseServerMethods interface, ListCollections(*context.T, rpc.ServerCall, BatchHandle) ([]Id, error)
pkg syncbase, type DatabaseServerMethods interface, ListSyncgroups(*context.T, rpc.ServerCall) ([]Id, error)
pkg syncbase, type DatabaseServerMethods interface, PauseSync(*context.T, rpc.ServerCall) error
pkg syncbase, type DatabaseServerMethods interface, PinBlob(*context.T, rpc.ServerCall, BlobRef) error
pkg syncbase, type DatabaseServerMethods interface, PutBlob(*context.T, BlobManagerPutBlobServerCall, BlobRef) error
pkg syncbase, type DatabaseServerMethods interface, ResumeSync(*context.T, rpc.ServerCall) error
pkg syncbase, type DatabaseServerMethods interface, SetSchemaMetadata(*context.T, rpc.ServerCall, SchemaMetadata) error
pkg syncbase, type DatabaseServerMethods interface, SetSyncgroupSpec(*context.T, rpc.ServerCall, Id, SyncgroupSpec, string) error
pkg syncbase, type DatabaseServerMethods interface, StartConflictResolver(*context.T, ConflictManagerStartConflictResolverServerCall) error
pkg syncbase, type DatabaseServerMethods interface, UnpinBlob(*context.T, rpc.ServerCall, BlobRef) error
pkg syncbase, type DatabaseServerMethods interface, unexported methods
pkg syncbase, type DatabaseServerStub interface, Abort(*context.T, rpc.ServerCall, BatchHandle) error
pkg syncbase, type DatabaseServerStub interface, BeginBatch(*context.T, rpc.ServerCall, BatchOptions) (BatchHandle, error)
pkg syncbase, type DatabaseServerStub interface, Commit(*context.T, rpc.ServerCall, BatchHandle) error
pkg syncbase, type DatabaseServerStub interface, CommitBlob(*context.T, rpc.ServerCall, BlobRef) error
pkg syncbase, type DatabaseServerStub interface, Create(*context.T, rpc.ServerCall, *SchemaMetadata, access.Permissions) error
pkg syncbase, type DatabaseServerStub interface, CreateBlob(*context.T, rpc.ServerCall) (BlobRef, error)
pkg syncbase, type DatabaseServerStub interface, DeleteBlob(*context.T, rpc.ServerCall, BlobRef) error
pkg syncbase, type DatabaseServerStub interface, Describe__() []rpc.InterfaceDesc
pkg syncbase, type DatabaseServerStub interface, Destroy(*context.T, rpc.ServerCall) error
pkg syncbase, type DatabaseServerStub interface, Exec(*context.T, *DatabaseExecServerCallStub, BatchHandle, string, []*vom.RawBytes) error
pkg syncbase, type DatabaseServerStub interface, Exists(*context.T, rpc.ServerCall) (bool, error)
pkg syncbase, type DatabaseServerStub interface, FetchBlob(*context.T, *BlobManagerFetchBlobServerCallStub, BlobRef, uint64) error
pkg syncbase, type DatabaseServerStub interface, GetBlob(*context.T, *BlobManagerGetBlobServerCallStub, BlobRef, int64) error
pkg syncbase, type DatabaseServerStub interface, GetBlobSize(*context.T, rpc.ServerCall, BlobRef) (int64, error)
pkg syncbase, type DatabaseServerStub interface, GetResumeMarker(*context.T, rpc.ServerCall, BatchHandle) (watch.ResumeMarker, error)
pkg syncbase, type DatabaseServerStub interface, KeepBlob(*context.T, rpc.ServerCall, BlobRef, uint64) error
pkg syncbase, type DatabaseServerStub interface, ListCollections(*context.T, rpc.ServerCall, BatchHandle) ([]Id, error)
pkg syncbase, type DatabaseServerStub interface, PauseSync(*context.T, rpc.ServerCall) error
pkg syncbase, type DatabaseServerStub interface, PinBlob(*context.T, rpc.ServerCall, BlobRef) error
pkg syncbase, type DatabaseServerStub interface, PutBlob(*context.T, *BlobManagerPutBlobServerCallStub, BlobRef) error
pkg syncbase, type DatabaseServerStub interface, ResumeSync(*context.T, rpc.ServerCall) error
pkg syncbase, type DatabaseServerStub interface, StartConflictResolver(*context.T, *ConflictManagerStartConflictResolverServerCallStub) error
pkg syncbase, type DatabaseServerStub interface, UnpinBlob(*context.T, rpc.ServerCall, BlobRef) error
pkg syncbase, type DatabaseServerStub interface, unexported methods
pkg syncbase, type DatabaseServerStubMethods interface, Abort(*context.T, rpc.ServerCall, BatchHandle) error
pkg syncbase, type DatabaseServerStubMethods interface, BeginBatch(*context.T, rpc.ServerCall, BatchOptions) (BatchHandle, error)
pkg syncbase, type DatabaseServerStubMethods interface, Commit(*context.T, rpc.ServerCall, BatchHandle) error
pkg syncbase, type DatabaseServerStubMethods interface, CommitBlob(*context.T, rpc.ServerCall, BlobRef) error
pkg syncbase, type DatabaseServerStubMethods interface, Create(*context.T, rpc.ServerCall, *SchemaMetadata, access.Permissions) error
pkg syncbase, type DatabaseServerStubMethods interface, CreateBlob(*context.T, rpc.ServerCall) (BlobRef, error)
pkg syncbase, type DatabaseServerStubMethods interface, DeleteBlob(*context.T, rpc.ServerCall, BlobRef) error
pkg syncbase, type DatabaseServerStubMethods interface, Destroy(*context.T, rpc.ServerCall) error
pkg syncbase, type DatabaseServerStubMethods interface, Exec(*context.T, *DatabaseExecServerCallStub, BatchHandle, string, []*vom.RawBytes) error
pkg syncbase, type DatabaseServerStubMethods interface, Exists(*context.T, rpc.ServerCall) (bool, error)
pkg syncbase, type DatabaseServerStubMethods interface, FetchBlob(*context.T, *BlobManagerFetchBlobServerCallStub, BlobRef, uint64) error
pkg syncbase, type DatabaseServerStubMethods interface, GetBlob(*context.T, *BlobManagerGetBlobServerCallStub, BlobRef, int64) error
pkg syncbase, type DatabaseServerStubMethods interface, GetBlobSize(*context.T, rpc.ServerCall, BlobRef) (int64, error)
pkg syncbase, type DatabaseServerStubMethods interface, GetResumeMarker(*context.T, rpc.ServerCall, BatchHandle) (watch.ResumeMarker, error)
pkg syncbase, type DatabaseServerStubMethods interface, KeepBlob(*context.T, rpc.ServerCall, BlobRef, uint64) error
pkg syncbase, type DatabaseServerStubMethods interface, ListCollections(*context.T, rpc.ServerCall, BatchHandle) ([]Id, error)
pkg syncbase, type DatabaseServerStubMethods interface, PauseSync(*context.T, rpc.ServerCall) error
pkg syncbase, type DatabaseServerStubMethods interface, PinBlob(*context.T, rpc.ServerCall, BlobRef) error
pkg syncbase, type DatabaseServerStubMethods interface, PutBlob(*context.T, *BlobManagerPutBlobServerCallStub, BlobRef) error
pkg syncbase, type DatabaseServerStubMethods interface, ResumeSync(*context.T, rpc.ServerCall) error
pkg syncbase, type DatabaseServerStubMethods interface, StartConflictResolver(*context.T, *ConflictManagerStartConflictResolverServerCallStub) error
pkg syncbase, type DatabaseServerStubMethods interface, UnpinBlob(*context.T, rpc.ServerCall, BlobRef) error
pkg syncbase, type DatabaseServerStubMethods interface, unexported methods
pkg syncbase, type DatabaseWatcherClientMethods interface, GetResumeMarker(*context.T, BatchHandle, ...rpc.CallOpt) (watch.ResumeMarker, error)
pkg syncbase, type DatabaseWatcherClientMethods interface, unexported methods
pkg syncbase, type DatabaseWatcherClientStub interface, GetResumeMarker(*context.T, BatchHandle, ...rpc.CallOpt) (watch.ResumeMarker, error)
pkg syncbase, type DatabaseWatcherClientStub interface, unexported methods
pkg syncbase, type DatabaseWatcherServerMethods interface, GetResumeMarker(*context.T, rpc.ServerCall, BatchHandle) (watch.ResumeMarker, error)
pkg syncbase, type DatabaseWatcherServerMethods interface, unexported methods
pkg syncbase, type DatabaseWatcherServerStub interface, Describe__() []rpc.InterfaceDesc
pkg syncbase, type DatabaseWatcherServerStub interface, GetResumeMarker(*context.T, rpc.ServerCall, BatchHandle) (watch.ResumeMarker, error)
pkg syncbase, type DatabaseWatcherServerStub interface, unexported methods
pkg syncbase, type DatabaseWatcherServerStubMethods interface, GetResumeMarker(*context.T, rpc.ServerCall, BatchHandle) (watch.ResumeMarker, error)
pkg syncbase, type DatabaseWatcherServerStubMethods interface, unexported methods
pkg syncbase, type DevModeUpdateVClockOpts struct
pkg syncbase, type DevModeUpdateVClockOpts struct, DoLocalUpdate bool
pkg syncbase, type DevModeUpdateVClockOpts struct, DoNtpUpdate bool
pkg syncbase, type DevModeUpdateVClockOpts struct, ElapsedTime time.Duration
pkg syncbase, type DevModeUpdateVClockOpts struct, Now time.Time
pkg syncbase, type DevModeUpdateVClockOpts struct, NtpHost string
pkg syncbase, type DevModeUpdateVClockOptsTarget struct
pkg syncbase, type DevModeUpdateVClockOptsTarget struct, Value *DevModeUpdateVClockOpts
pkg syncbase, type DevModeUpdateVClockOptsTarget struct, embedded vdl.FieldsTargetBase
pkg syncbase, type DevModeUpdateVClockOptsTarget struct, embedded vdl.TargetBase
pkg syncbase, type Id struct
pkg syncbase, type Id struct, Blessing string
pkg syncbase, type Id struct, Name string
pkg syncbase, type IdTarget struct
pkg syncbase, type IdTarget struct, Value *Id
pkg syncbase, type IdTarget struct, embedded vdl.FieldsTargetBase
pkg syncbase, type IdTarget struct, embedded vdl.TargetBase
pkg syncbase, type KeyValue struct
pkg syncbase, type KeyValue struct, Key string
pkg syncbase, type KeyValue struct, Value *vom.RawBytes
pkg syncbase, type KeyValueTarget struct
pkg syncbase, type KeyValueTarget struct, Value *KeyValue
pkg syncbase, type KeyValueTarget struct, embedded vdl.FieldsTargetBase
pkg syncbase, type KeyValueTarget struct, embedded vdl.TargetBase
pkg syncbase, type Operation interface, FillVDLTarget(vdl.Target, *vdl.Type) error
pkg syncbase, type Operation interface, Index() int
pkg syncbase, type Operation interface, Interface() interface{}
pkg syncbase, type Operation interface, Name() string
pkg syncbase, type Operation interface, VDLIsZero() bool
pkg syncbase, type Operation interface, VDLWrite(vdl.Encoder) error
pkg syncbase, type Operation interface, unexported methods
pkg syncbase, type OperationRead struct
pkg syncbase, type OperationRead struct, Value RowOp
pkg syncbase, type OperationScan struct
pkg syncbase, type OperationScan struct, Value ScanOp
pkg syncbase, type OperationTarget struct
pkg syncbase, type OperationTarget struct, Value *Operation
pkg syncbase, type OperationTarget struct, embedded vdl.FieldsTargetBase
pkg syncbase, type OperationTarget struct, embedded vdl.TargetBase
pkg syncbase, type OperationWrite struct
pkg syncbase, type OperationWrite struct, Value RowOp
pkg syncbase, type ResolutionInfo struct
pkg syncbase, type ResolutionInfo struct, Continued bool
pkg syncbase, type ResolutionInfo struct, Key string
pkg syncbase, type ResolutionInfo struct, Result *Value
pkg syncbase, type ResolutionInfo struct, Selection ValueSelection
pkg syncbase, type ResolutionInfoTarget struct
pkg syncbase, type ResolutionInfoTarget struct, Value *ResolutionInfo
pkg syncbase, type ResolutionInfoTarget struct, embedded vdl.FieldsTargetBase
pkg syncbase, type ResolutionInfoTarget struct, embedded vdl.TargetBase
pkg syncbase, type ResolverType int
pkg syncbase, type ResolverTypeTarget struct
pkg syncbase, type ResolverTypeTarget struct, Value *ResolverType
pkg syncbase, type ResolverTypeTarget struct, embedded vdl.TargetBase
pkg syncbase, type RowClientMethods interface { Delete, Exists, Get, Put }
pkg syncbase, type RowClientMethods interface, Delete(*context.T, BatchHandle, ...rpc.CallOpt) error
pkg syncbase, type RowClientMethods interface, Exists(*context.T, BatchHandle, ...rpc.CallOpt) (bool, error)
pkg syncbase, type RowClientMethods interface, Get(*context.T, BatchHandle, ...rpc.CallOpt) (*vom.RawBytes, error)
pkg syncbase, type RowClientMethods interface, Put(*context.T, BatchHandle, *vom.RawBytes, ...rpc.CallOpt) error
pkg syncbase, type RowClientStub interface, Delete(*context.T, BatchHandle, ...rpc.CallOpt) error
pkg syncbase, type RowClientStub interface, Exists(*context.T, BatchHandle, ...rpc.CallOpt) (bool, error)
pkg syncbase, type RowClientStub interface, Get(*context.T, BatchHandle, ...rpc.CallOpt) (*vom.RawBytes, error)
pkg syncbase, type RowClientStub interface, Put(*context.T, BatchHandle, *vom.RawBytes, ...rpc.CallOpt) error
pkg syncbase, type RowClientStub interface, unexported methods
pkg syncbase, type RowInfo struct
pkg syncbase, type RowInfo struct, BatchIds []uint64
pkg syncbase, type RowInfo struct, Op Operation
pkg syncbase, type RowInfoTarget struct
pkg syncbase, type RowInfoTarget struct, Value *RowInfo
pkg syncbase, type RowInfoTarget struct, embedded vdl.FieldsTargetBase
pkg syncbase, type RowInfoTarget struct, embedded vdl.TargetBase
pkg syncbase, type RowOp struct
pkg syncbase, type RowOp struct, AncestorValue *Value
pkg syncbase, type RowOp struct, Key string
pkg syncbase, type RowOp struct, LocalValue *Value
pkg syncbase, type RowOp struct, RemoteValue *Value
pkg syncbase, type RowOpTarget struct
pkg syncbase, type RowOpTarget struct, Value *RowOp
pkg syncbase, type RowOpTarget struct, embedded vdl.FieldsTargetBase
pkg syncbase, type RowOpTarget struct, embedded vdl.TargetBase
pkg syncbase, type RowServerMethods interface { Delete, Exists, Get, Put }
pkg syncbase, type RowServerMethods interface, Delete(*context.T, rpc.ServerCall, BatchHandle) error
pkg syncbase, type RowServerMethods interface, Exists(*context.T, rpc.ServerCall, BatchHandle) (bool, error)
pkg syncbase, type RowServerMethods interface, Get(*context.T, rpc.ServerCall, BatchHandle) (*vom.RawBytes, error)
pkg syncbase, type RowServerMethods interface, Put(*context.T, rpc.ServerCall, BatchHandle, *vom.RawBytes) error
pkg syncbase, type RowServerStub interface, Describe__() []rpc.InterfaceDesc
pkg syncbase, type RowServerStub interface, unexported methods
pkg syncbase, type RowServerStubMethods RowServerMethods
pkg syncbase, type ScanOp struct
pkg syncbase, type ScanOp struct, Limit string
pkg syncbase, type ScanOp struct, Start string
pkg syncbase, type ScanOpTarget struct
pkg syncbase, type ScanOpTarget struct, Value *ScanOp
pkg syncbase, type ScanOpTarget struct, embedded vdl.FieldsTargetBase
pkg syncbase, type ScanOpTarget struct, embedded vdl.TargetBase
pkg syncbase, type SchemaManagerClientMethods interface { GetSchemaMetadata, SetSchemaMetadata }
pkg syncbase, type SchemaManagerClientMethods interface, GetSchemaMetadata(*context.T, ...rpc.CallOpt) (SchemaMetadata, error)
pkg syncbase, type SchemaManagerClientMethods interface, SetSchemaMetadata(*context.T, SchemaMetadata, ...rpc.CallOpt) error
pkg syncbase, type SchemaManagerClientStub interface, GetSchemaMetadata(*context.T, ...rpc.CallOpt) (SchemaMetadata, error)
pkg syncbase, type SchemaManagerClientStub interface, SetSchemaMetadata(*context.T, SchemaMetadata, ...rpc.CallOpt) error
pkg syncbase, type SchemaManagerClientStub interface, unexported methods
pkg syncbase, type SchemaManagerServerMethods interface { GetSchemaMetadata, SetSchemaMetadata }
pkg syncbase, type SchemaManagerServerMethods interface, GetSchemaMetadata(*context.T, rpc.ServerCall) (SchemaMetadata, error)
pkg syncbase, type SchemaManagerServerMethods interface, SetSchemaMetadata(*context.T, rpc.ServerCall, SchemaMetadata) error
pkg syncbase, type SchemaManagerServerStub interface, Describe__() []rpc.InterfaceDesc
pkg syncbase, type SchemaManagerServerStub interface, unexported methods
pkg syncbase, type SchemaManagerServerStubMethods SchemaManagerServerMethods
pkg syncbase, type SchemaMetadata struct
pkg syncbase, type SchemaMetadata struct, Policy CrPolicy
pkg syncbase, type SchemaMetadata struct, Version int32
pkg syncbase, type SchemaMetadataTarget struct
pkg syncbase, type SchemaMetadataTarget struct, Value *SchemaMetadata
pkg syncbase, type SchemaMetadataTarget struct, embedded vdl.FieldsTargetBase
pkg syncbase, type SchemaMetadataTarget struct, embedded vdl.TargetBase
pkg syncbase, type ServiceClientMethods interface, DevModeGetTime(*context.T, ...rpc.CallOpt) (time.Time, error)
pkg syncbase, type ServiceClientMethods interface, DevModeUpdateVClock(*context.T, DevModeUpdateVClockOpts, ...rpc.CallOpt) error
pkg syncbase, type ServiceClientMethods interface, unexported methods
pkg syncbase, type ServiceClientStub interface, DevModeGetTime(*context.T, ...rpc.CallOpt) (time.Time, error)
pkg syncbase, type ServiceClientStub interface, DevModeUpdateVClock(*context.T, DevModeUpdateVClockOpts, ...rpc.CallOpt) error
pkg syncbase, type ServiceClientStub interface, unexported methods
pkg syncbase, type ServiceServerMethods interface, DevModeGetTime(*context.T, rpc.ServerCall) (time.Time, error)
pkg syncbase, type ServiceServerMethods interface, DevModeUpdateVClock(*context.T, rpc.ServerCall, DevModeUpdateVClockOpts) error
pkg syncbase, type ServiceServerMethods interface, unexported methods
pkg syncbase, type ServiceServerStub interface, Describe__() []rpc.InterfaceDesc
pkg syncbase, type ServiceServerStub interface, unexported methods
pkg syncbase, type ServiceServerStubMethods ServiceServerMethods
pkg syncbase, type StoreChange struct
pkg syncbase, type StoreChange struct, FromSync bool
pkg syncbase, type StoreChange struct, Value *vom.RawBytes
pkg syncbase, type StoreChangeTarget struct
pkg syncbase, type StoreChangeTarget struct, Value *StoreChange
pkg syncbase, type StoreChangeTarget struct, embedded vdl.FieldsTargetBase
pkg syncbase, type StoreChangeTarget struct, embedded vdl.TargetBase
pkg syncbase, type SyncgroupManagerClientMethods interface { CreateSyncgroup, DestroySyncgroup, EjectFromSyncgroup, GetSyncgroupMembers, GetSyncgroupSpec, JoinSyncgroup, LeaveSyncgroup, ListSyncgroups, SetSyncgroupSpec }
pkg syncbase, type SyncgroupManagerClientMethods interface, CreateSyncgroup(*context.T, Id, SyncgroupSpec, SyncgroupMemberInfo, ...rpc.CallOpt) error
pkg syncbase, type SyncgroupManagerClientMethods interface, DestroySyncgroup(*context.T, Id, ...rpc.CallOpt) error
pkg syncbase, type SyncgroupManagerClientMethods interface, EjectFromSyncgroup(*context.T, Id, string, ...rpc.CallOpt) error
pkg syncbase, type SyncgroupManagerClientMethods interface, GetSyncgroupMembers(*context.T, Id, ...rpc.CallOpt) (map[string]SyncgroupMemberInfo, error)
pkg syncbase, type SyncgroupManagerClientMethods interface, GetSyncgroupSpec(*context.T, Id, ...rpc.CallOpt) (SyncgroupSpec, string, error)
pkg syncbase, type SyncgroupManagerClientMethods interface, JoinSyncgroup(*context.T, string, []string, Id, SyncgroupMemberInfo, ...rpc.CallOpt) (SyncgroupSpec, error)
pkg syncbase, type SyncgroupManagerClientMethods interface, LeaveSyncgroup(*context.T, Id, ...rpc.CallOpt) error
pkg syncbase, type SyncgroupManagerClientMethods interface, ListSyncgroups(*context.T, ...rpc.CallOpt) ([]Id, error)
pkg syncbase, type SyncgroupManagerClientMethods interface, SetSyncgroupSpec(*context.T, Id, SyncgroupSpec, string, ...rpc.CallOpt) error
pkg syncbase, type SyncgroupManagerClientStub interface, CreateSyncgroup(*context.T, Id, SyncgroupSpec, SyncgroupMemberInfo, ...rpc.CallOpt) error
pkg syncbase, type SyncgroupManagerClientStub interface, DestroySyncgroup(*context.T, Id, ...rpc.CallOpt) error
pkg syncbase, type SyncgroupManagerClientStub interface, EjectFromSyncgroup(*context.T, Id, string, ...rpc.CallOpt) error
pkg syncbase, type SyncgroupManagerClientStub interface, GetSyncgroupMembers(*context.T, Id, ...rpc.CallOpt) (map[string]SyncgroupMemberInfo, error)
pkg syncbase, type SyncgroupManagerClientStub interface, GetSyncgroupSpec(*context.T, Id, ...rpc.CallOpt) (SyncgroupSpec, string, error)
pkg syncbase, type SyncgroupManagerClientStub interface, JoinSyncgroup(*context.T, string, []string, Id, SyncgroupMemberInfo, ...rpc.CallOpt) (SyncgroupSpec, error)
pkg syncbase, type SyncgroupManagerClientStub interface, LeaveSyncgroup(*context.T, Id, ...rpc.CallOpt) error
pkg syncbase, type SyncgroupManagerClientStub interface, ListSyncgroups(*context.T, ...rpc.CallOpt) ([]Id, error)
pkg syncbase, type SyncgroupManagerClientStub interface, SetSyncgroupSpec(*context.T, Id, SyncgroupSpec, string, ...rpc.CallOpt) error
pkg syncbase, type SyncgroupManagerClientStub interface, unexported methods
pkg syncbase, type SyncgroupManagerServerMethods interface { CreateSyncgroup, DestroySyncgroup, EjectFromSyncgroup, GetSyncgroupMembers, GetSyncgroupSpec, JoinSyncgroup, LeaveSyncgroup, ListSyncgroups, SetSyncgroupSpec }
pkg syncbase, type SyncgroupManagerServerMethods interface, CreateSyncgroup(*context.T, rpc.ServerCall, Id, SyncgroupSpec, SyncgroupMemberInfo) error
pkg syncbase, type SyncgroupManagerServerMethods interface, DestroySyncgroup(*context.T, rpc.ServerCall, Id) error
pkg syncbase, type SyncgroupManagerServerMethods interface, EjectFromSyncgroup(*context.T, rpc.ServerCall, Id, string) error
pkg syncbase, type SyncgroupManagerServerMethods interface, GetSyncgroupMembers(*context.T, rpc.ServerCall, Id) (map[string]SyncgroupMemberInfo, error)
pkg syncbase, type SyncgroupManagerServerMethods interface, GetSyncgroupSpec(*context.T, rpc.ServerCall, Id) (SyncgroupSpec, string, error)
pkg syncbase, type SyncgroupManagerServerMethods interface, JoinSyncgroup(*context.T, rpc.ServerCall, string, []string, Id, SyncgroupMemberInfo) (SyncgroupSpec, error)
pkg syncbase, type SyncgroupManagerServerMethods interface, LeaveSyncgroup(*context.T, rpc.ServerCall, Id) error
pkg syncbase, type SyncgroupManagerServerMethods interface, ListSyncgroups(*context.T, rpc.ServerCall) ([]Id, error)
pkg syncbase, type SyncgroupManagerServerMethods interface, SetSyncgroupSpec(*context.T, rpc.ServerCall, Id, SyncgroupSpec, string) error
pkg syncbase, type SyncgroupManagerServerStub interface, Describe__() []rpc.InterfaceDesc
pkg syncbase, type SyncgroupManagerServerStub interface, unexported methods
pkg syncbase, type SyncgroupManagerServerStubMethods SyncgroupManagerServerMethods
pkg syncbase, type SyncgroupMemberInfo struct
pkg syncbase, type SyncgroupMemberInfo struct, BlobDevType byte
pkg syncbase, type SyncgroupMemberInfo struct, SyncPriority byte
pkg syncbase, type SyncgroupMemberInfoTarget struct
pkg syncbase, type SyncgroupMemberInfoTarget struct, Value *SyncgroupMemberInfo
pkg syncbase, type SyncgroupMemberInfoTarget struct, embedded vdl.FieldsTargetBase
pkg syncbase, type SyncgroupMemberInfoTarget struct, embedded vdl.TargetBase
pkg syncbase, type SyncgroupSpec struct
pkg syncbase, type SyncgroupSpec struct, Description string
pkg syncbase, type SyncgroupSpec struct, IsPrivate bool
pkg syncbase, type SyncgroupSpec struct, MountTables []string
pkg syncbase, type SyncgroupSpec struct, Perms access.Permissions
pkg syncbase, type SyncgroupSpec struct, Prefixes []CollectionRow
pkg syncbase, type SyncgroupSpec struct, PublishSyncbaseName string
pkg syncbase, type SyncgroupSpecTarget struct
pkg syncbase, type SyncgroupSpecTarget struct, Value *SyncgroupSpec
pkg syncbase, type SyncgroupSpecTarget struct, embedded vdl.FieldsTargetBase
pkg syncbase, type SyncgroupSpecTarget struct, embedded vdl.TargetBase
pkg syncbase, type Value struct
pkg syncbase, type Value struct, Bytes *vom.RawBytes
pkg syncbase, type Value struct, State ValueState
pkg syncbase, type Value struct, WriteTs time.Time
pkg syncbase, type ValueSelection int
pkg syncbase, type ValueSelectionTarget struct
pkg syncbase, type ValueSelectionTarget struct, Value *ValueSelection
pkg syncbase, type ValueSelectionTarget struct, embedded vdl.TargetBase
pkg syncbase, type ValueState int
pkg syncbase, type ValueStateTarget struct
pkg syncbase, type ValueStateTarget struct, Value *ValueState
pkg syncbase, type ValueStateTarget struct, embedded vdl.TargetBase
pkg syncbase, type ValueTarget struct
pkg syncbase, type ValueTarget struct, Value *Value
pkg syncbase, type ValueTarget struct, embedded vdl.FieldsTargetBase
pkg syncbase, type ValueTarget struct, embedded vdl.TargetBase
pkg syncbase, var BatchSourceAll [...]BatchSource
pkg syncbase, var BlobFetchStateAll [...]BlobFetchState
pkg syncbase, var BlobManagerDesc rpc.InterfaceDesc
pkg syncbase, var CollectionDesc rpc.InterfaceDesc
pkg syncbase, var ConflictManagerDesc rpc.InterfaceDesc
pkg syncbase, var DatabaseDesc rpc.InterfaceDesc
pkg syncbase, var DatabaseWatcherDesc rpc.InterfaceDesc
pkg syncbase, var ErrBadExecStreamHeader unknown-type
pkg syncbase, var ErrBlobNotCommitted unknown-type
pkg syncbase, var ErrConcurrentBatch unknown-type
pkg syncbase, var ErrCorruptDatabase unknown-type
pkg syncbase, var ErrInvalidName unknown-type
pkg syncbase, var ErrNotBoundToBatch unknown-type
pkg syncbase, var ErrNotInDevMode unknown-type
pkg syncbase, var ErrReadOnlyBatch unknown-type
pkg syncbase, var ErrSyncgroupJoinFailed unknown-type
pkg syncbase, var ErrUnknownBatch unknown-type
pkg syncbase, var ResolverTypeAll [...]ResolverType
pkg syncbase, var RowDesc rpc.InterfaceDesc
pkg syncbase, var SchemaManagerDesc rpc.InterfaceDesc
pkg syncbase, var ServiceDesc rpc.InterfaceDesc
pkg syncbase, var SyncgroupManagerDesc rpc.InterfaceDesc
pkg syncbase, var ValueSelectionAll [...]ValueSelection
pkg syncbase, var ValueStateAll [...]ValueState
