// GetSyncSubs implements the datastore.Syncer interface func (d *Data) GetSyncSubs(synced dvid.Data) (datastore.SyncSubs, error) { if d.syncCh == nil { if err := d.InitDataHandlers(); err != nil { return nil, fmt.Errorf("unable to initialize handlers for data %q: %v\n", d.DataName(), err) } } var evts []string switch synced.TypeName() { case "labelblk": // For down-res support evts = []string{ DownsizeBlockEvent, DownsizeCommitEvent, labels.IngestBlockEvent, labels.MutateBlockEvent, labels.DeleteBlockEvent, } case "labelvol": evts = []string{labels.MergeBlockEvent, labels.SplitLabelEvent} default: return nil, fmt.Errorf("Unable to sync %s with %s since datatype %q is not supported.", d.DataName(), synced.DataName(), synced.TypeName()) } subs := make(datastore.SyncSubs, len(evts)) for i, evt := range evts { subs[i] = datastore.SyncSub{ Event: datastore.SyncEvent{synced.DataUUID(), evt}, Notify: d.DataUUID(), Ch: d.syncCh, } } return subs, nil }
// GetSyncSubs implements the datastore.Syncer interface. Returns a list of subscriptions // to the sync data instance that will notify the receiver. func (d *Data) GetSyncSubs(synced dvid.Data) (subs datastore.SyncSubs, err error) { if d.syncCh == nil { if err = d.InitDataHandlers(); err != nil { err = fmt.Errorf("unable to initialize handlers for data %q: %v\n", d.DataName(), err) return } } // Our syncing depends on the datatype we are syncing. switch synced.TypeName() { case "labelblk": subs = datastore.SyncSubs{ { Event: datastore.SyncEvent{synced.DataUUID(), labels.IngestBlockEvent}, Notify: d.DataUUID(), Ch: d.syncCh, }, { Event: datastore.SyncEvent{synced.DataUUID(), labels.MutateBlockEvent}, Notify: d.DataUUID(), Ch: d.syncCh, }, { Event: datastore.SyncEvent{synced.DataUUID(), labels.DeleteBlockEvent}, Notify: d.DataUUID(), Ch: d.syncCh, }, } case "labelvol": subs = datastore.SyncSubs{ datastore.SyncSub{ Event: datastore.SyncEvent{synced.DataUUID(), labels.MergeBlockEvent}, Notify: d.DataUUID(), Ch: d.syncCh, }, datastore.SyncSub{ Event: datastore.SyncEvent{synced.DataUUID(), labels.SplitLabelEvent}, Notify: d.DataUUID(), Ch: d.syncCh, }, } default: err = fmt.Errorf("Unable to sync %s with %s since datatype %q is not supported.", d.DataName(), synced.DataName(), synced.TypeName()) } return }
// GetSyncSubs implements the datastore.Syncer interface. Returns a list of subscriptions // to the sync data instance that will notify the receiver. func (d *Data) GetSyncSubs(synced dvid.Data) (datastore.SyncSubs, error) { if d.syncCh == nil { if err := d.InitDataHandlers(); err != nil { return nil, fmt.Errorf("unable to initialize handlers for data %q: %v\n", d.DataName(), err) } } subs := datastore.SyncSubs{ datastore.SyncSub{ Event: datastore.SyncEvent{synced.DataUUID(), annotation.ModifyElementsEvent}, Notify: d.DataUUID(), Ch: d.syncCh, }, // datastore.SyncSub{ // Event: datastore.SyncEvent{synced.DataUUID(), annotation.SetElementsEvent}, // Notify: d.DataUUID(), // Ch: d.SyncCh, // }, } return subs, nil }