github.com/tilt-dev/tilt@v0.33.15-0.20240515162809-0a22ed45d8a0/pkg/model/logstore/reader.go (about)

     1  package logstore
     2  
     3  import "sync"
     4  
     5  // Thread-safe reading a log store, outside of the Store state loop.
     6  type Reader struct {
     7  	mu    *sync.RWMutex
     8  	store *LogStore
     9  }
    10  
    11  func NewReader(mu *sync.RWMutex, store *LogStore) Reader {
    12  	return Reader{mu: mu, store: store}
    13  }
    14  
    15  func (r Reader) Checkpoint() Checkpoint {
    16  	if r.store == nil {
    17  		return 0
    18  	}
    19  
    20  	r.mu.RLock()
    21  	defer r.mu.RUnlock()
    22  	return r.store.Checkpoint()
    23  }
    24  
    25  func (r Reader) Empty() bool {
    26  	if r.store == nil {
    27  		return true
    28  	}
    29  
    30  	r.mu.RLock()
    31  	defer r.mu.RUnlock()
    32  	return r.store.Empty()
    33  }
    34  
    35  func (r Reader) String() string {
    36  	if r.store == nil {
    37  		return ""
    38  	}
    39  
    40  	r.mu.RLock()
    41  	defer r.mu.RUnlock()
    42  	return r.store.String()
    43  }
    44  
    45  func (r Reader) ContinuingString(c Checkpoint) string {
    46  	if r.store == nil {
    47  		return ""
    48  	}
    49  
    50  	r.mu.RLock()
    51  	defer r.mu.RUnlock()
    52  	return r.store.ContinuingString(c)
    53  }
    54  
    55  func (r Reader) ContinuingLines(c Checkpoint) []LogLine {
    56  	if r.store == nil {
    57  		return nil
    58  	}
    59  
    60  	r.mu.RLock()
    61  	defer r.mu.RUnlock()
    62  	return r.store.ContinuingLines(c)
    63  }
    64  
    65  func (r Reader) Tail(n int) string {
    66  	if r.store == nil {
    67  		return ""
    68  	}
    69  
    70  	r.mu.RLock()
    71  	defer r.mu.RUnlock()
    72  	return r.store.Tail(n)
    73  }
    74  
    75  func (r Reader) TailSpan(n int, spanID SpanID) string {
    76  	if r.store == nil {
    77  		return ""
    78  	}
    79  
    80  	r.mu.RLock()
    81  	defer r.mu.RUnlock()
    82  	return r.store.TailSpan(n, spanID)
    83  }
    84  
    85  func (r Reader) Warnings(spanID SpanID) []string {
    86  	if r.store == nil {
    87  		return nil
    88  	}
    89  
    90  	r.mu.RLock()
    91  	defer r.mu.RUnlock()
    92  	return r.store.Warnings(spanID)
    93  }