-
Notifications
You must be signed in to change notification settings - Fork 3.6k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
903d99e
commit 46c8ec8
Showing
1 changed file
with
40 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
// Package gas provides a basic API for app modules to track gas usage. | ||
package gas | ||
|
||
import "context" | ||
|
||
type Gas = uint64 | ||
|
||
// Service represents a gas service which can retrieve and set a gas meter in a context. | ||
// gas.Service is a core API type that should be provided by the runtime module being used to | ||
// build an app via depinject. | ||
type Service interface { | ||
// GetGasMeter returns the current transaction-level gas meter. A non-nil meter | ||
// is always returned. When one is unavailable in the context an infinite gas meter | ||
// will be returned. | ||
GetGasMeter(context.Context) Meter | ||
|
||
// GetBlockGasMeter returns the current block-level gas meter. A non-nil meter | ||
// is always returned. When one is unavailable in the context an infinite gas meter | ||
// will be returned. | ||
GetBlockGasMeter(context.Context) Meter | ||
|
||
// WithGasMeter returns a new context with the provided transaction-level gas meter. | ||
WithGasMeter(ctx context.Context, meter Meter) context.Context | ||
|
||
// WithBlockGasMeter returns a new context with the provided block-level gas meter. | ||
WithBlockGasMeter(ctx context.Context, meter Meter) context.Context | ||
} | ||
|
||
// Meter represents a gas meter. | ||
type Meter interface { | ||
GasConsumed() Gas | ||
GasConsumedToLimit() Gas | ||
GasRemaining() Gas | ||
Limit() Gas | ||
ConsumeGas(amount Gas, descriptor string) | ||
RefundGas(amount Gas, descriptor string) | ||
IsPastLimit() bool | ||
IsOutOfGas() bool | ||
String() string | ||
} |