github.com/Cloud-Foundations/Dominator@v0.3.4/lib/srpc/serverutil/api.go (about)

     1  package serverutil
     2  
     3  import (
     4  	"sync"
     5  
     6  	"github.com/Cloud-Foundations/Dominator/lib/srpc"
     7  )
     8  
     9  type PerUserMethodLimiter struct {
    10  	mutex               sync.Mutex
    11  	perUserMethodCounts map[userMethodType]uint
    12  	perUserMethodLimits map[string]uint
    13  }
    14  
    15  type userMethodType struct {
    16  	method   string
    17  	username string
    18  }
    19  
    20  func NewPerUserMethodLimiter(
    21  	perUserMethodLimits map[string]uint) *PerUserMethodLimiter {
    22  	return newPerUserMethodLimiter(perUserMethodLimits)
    23  }
    24  
    25  func (limiter *PerUserMethodLimiter) BlockMethod(methodName string,
    26  	authInfo *srpc.AuthInformation) (func(), error) {
    27  	return limiter.blockMethod(methodName, authInfo)
    28  }