// Copyright 2015 The Vanadium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

package nosql

import (
	"v.io/v23/context"
	wire "v.io/v23/services/syncbase/nosql"
	"v.io/x/lib/vlog"
)

////////////////////////////////////////
// ConflictManager RPC methods

func (d *databaseReq) StartConflictResolver(ctx *context.T, call wire.ConflictManagerStartConflictResolverServerCall) error {
	// Store the conflict resolver connection in the per-app, per-database
	// singleton so that sync can access it.
	vlog.VI(2).Infof("cr: StartConflictResolver: resolution stream established")

	d.database.crMu.Lock()
	d.database.crStream = call
	d.database.crMu.Unlock()

	// To keep the CrStream alive we cant finish this rpc. Wait till the
	// context for this rpc is canceled/closed.
	<-ctx.Done()

	// When the above blocking call returns it means that the channel is no more
	// live. Remove the crStream instance from cache.
	// NOTE: any code that accesses crStream must make a copy of the pointer
	// before using it to make sure that the value does not suddenly become
	// nil midway through their processing.
	d.database.crMu.Lock()
	d.database.crStream = nil
	d.database.crMu.Unlock()
	return nil
}
