mirror of
https://source.quilibrium.com/quilibrium/ceremonyclient.git
synced 2024-12-27 17:15:18 +00:00
67 lines
1.9 KiB
Go
67 lines
1.9 KiB
Go
package relay
|
|
|
|
import (
|
|
"time"
|
|
)
|
|
|
|
// Resources are the resource limits associated with the relay service.
|
|
type Resources struct {
|
|
// Limit is the (optional) relayed connection limits.
|
|
Limit *RelayLimit
|
|
|
|
// ReservationTTL is the duration of a new (or refreshed reservation).
|
|
// Defaults to 1hr.
|
|
ReservationTTL time.Duration
|
|
|
|
// MaxReservations is the maximum number of active relay slots; defaults to 128.
|
|
MaxReservations int
|
|
// MaxCircuits is the maximum number of open relay connections for each peer; defaults to 16.
|
|
MaxCircuits int
|
|
// BufferSize is the size of the relayed connection buffers; defaults to 2048.
|
|
BufferSize int
|
|
|
|
// MaxReservationsPerPeer is the maximum number of reservations originating from the same
|
|
// peer; default is 4.
|
|
MaxReservationsPerPeer int
|
|
// MaxReservationsPerIP is the maximum number of reservations originating from the same
|
|
// IP address; default is 8.
|
|
MaxReservationsPerIP int
|
|
// MaxReservationsPerASN is the maximum number of reservations origination from the same
|
|
// ASN; default is 32
|
|
MaxReservationsPerASN int
|
|
}
|
|
|
|
// RelayLimit are the per relayed connection resource limits.
|
|
type RelayLimit struct {
|
|
// Duration is the time limit before resetting a relayed connection; defaults to 2min.
|
|
Duration time.Duration
|
|
// Data is the limit of data relayed (on each direction) before resetting the connection.
|
|
// Defaults to 128KB
|
|
Data int64
|
|
}
|
|
|
|
// DefaultResources returns a Resources object with the default filled in.
|
|
func DefaultResources() Resources {
|
|
return Resources{
|
|
Limit: DefaultLimit(),
|
|
|
|
ReservationTTL: time.Hour,
|
|
|
|
MaxReservations: 128,
|
|
MaxCircuits: 16,
|
|
BufferSize: 2048,
|
|
|
|
MaxReservationsPerPeer: 4,
|
|
MaxReservationsPerIP: 8,
|
|
MaxReservationsPerASN: 32,
|
|
}
|
|
}
|
|
|
|
// DefaultLimit returns a RelayLimit object with the defaults filled in.
|
|
func DefaultLimit() *RelayLimit {
|
|
return &RelayLimit{
|
|
Duration: 2 * time.Minute,
|
|
Data: 1 << 17, // 128K
|
|
}
|
|
}
|