diff --git a/clock/clock.go b/clock/clock.go index aed52cc..93c964e 100644 --- a/clock/clock.go +++ b/clock/clock.go @@ -73,6 +73,27 @@ func (vc *VectorClock[T]) Sync(v VectorClock[T]) ([]T, error) { return vc.GetClock(), nil } +// Increment increments the logical time at the specified index of the vector clock. +// +// This method updates the logical time for a given process (specified by the index) by +// incrementing the corresponding value in the vector clock. It ensures that the index +// is within the bounds of the vector clock. If the index is out of bounds or the vector +// clock is uninitialized, an error is returned. +// +// Parameters: +// +// index (int): The index of the process whose logical time is to be incremented. +// It must be within the range of the vector clock's length. +// +// Returns: +// +// []T: A copy of the updated vector clock after the logical time at the given index +// has been incremented. +// +// error: An error is returned if the index is out of bounds or the vector clock is uninitialized. +// +// Note: Handling of potential overflow for the underlying type T (uint32 or uint64) is currently +// not implemented and should be handled accordingly if required. func (vc *VectorClock[T]) Increment(index int) ([]T, error) { if index > len(vc.clock) || vc.clock == nil { return nil, errors.New(fmt.Sprintf("Cannot access index: %d, clock is of length %d", index, len(vc.clock)))