// 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 logreader defines interfaces for reading log files remotely.
package logreader

import "v.io/v23/security/access"

// LogFile can be used to access log files remotely.
type LogFile interface {
	// Size returns the number of bytes in the receiving object.
	Size() (int64 | error) {access.Debug}
	// ReadLog receives up to numEntries log entries starting at the
	// startPos offset (in bytes) in the receiving object. Each stream chunk
	// contains one log entry.
	//
	// If follow is true, ReadLog will block and wait for more entries to
	// arrive when it reaches the end of the file.
	//
	// ReadLog returns the position where it stopped reading, i.e. the
	// position where the next entry starts. This value can be used as
	// startPos for successive calls to ReadLog.
	//
	// The returned error will be EndOfFile if and only if ReadLog reached the
	// end of the file and no log entries were returned.
	ReadLog(startPos int64, numEntries int32, follow bool) stream<_, LogEntry> (int64 | error) {access.Debug}
}

// LogEntry is a log entry from a log file.
type LogEntry struct {
	// The offset (in bytes) where this entry starts.
	Position int64
	// The content of the log entry.
	Line string
}

// A special NumEntries value that indicates that all entries should be
// returned by ReadLog.
const AllEntries = int32(-1)
