k8s.io/apiserver@v0.31.1/pkg/util/flowcontrol/fairqueuing/promise/interface.go (about)

     1  /*
     2  Copyright 2019 The Kubernetes Authors.
     3  
     4  Licensed under the Apache License, Version 2.0 (the "License");
     5  you may not use this file except in compliance with the License.
     6  You may obtain a copy of the License at
     7  
     8      http://www.apache.org/licenses/LICENSE-2.0
     9  
    10  Unless required by applicable law or agreed to in writing, software
    11  distributed under the License is distributed on an "AS IS" BASIS,
    12  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    13  See the License for the specific language governing permissions and
    14  limitations under the License.
    15  */
    16  
    17  package promise
    18  
    19  // WriteOnce represents a variable that is initially not set and can
    20  // be set once and is readable.  This is the common meaning for
    21  // "promise".
    22  type WriteOnce interface {
    23  	// Get reads the current value of this variable.  If this
    24  	// variable is not set yet then this call blocks until this
    25  	// variable gets a value.
    26  	Get() interface{}
    27  
    28  	// Set normally writes a value into this variable, unblocks every
    29  	// goroutine waiting for this variable to have a value, and
    30  	// returns true.  In the unhappy case that this variable is
    31  	// already set, this method returns false without modifying the
    32  	// variable's value.
    33  	Set(interface{}) bool
    34  }