| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- package protocols
- import (
- "errors"
- )
- // Textual version number of accounting API
- const AccountingVersion = "1.0"
- var errNoAccountingMetrics = errors.New("accounting metrics not enabled")
- // AccountingApi provides an API to access account related information
- type AccountingApi struct {
- metrics *AccountingMetrics
- }
- // NewAccountingApi creates a new AccountingApi
- // m will be used to check if accounting metrics are enabled
- func NewAccountingApi(m *AccountingMetrics) *AccountingApi {
- return &AccountingApi{m}
- }
- // Balance returns local node balance (units credited - units debited)
- func (self *AccountingApi) Balance() (int64, error) {
- if self.metrics == nil {
- return 0, errNoAccountingMetrics
- }
- balance := mBalanceCredit.Count() - mBalanceDebit.Count()
- return balance, nil
- }
- // BalanceCredit returns total amount of units credited by local node
- func (self *AccountingApi) BalanceCredit() (int64, error) {
- if self.metrics == nil {
- return 0, errNoAccountingMetrics
- }
- return mBalanceCredit.Count(), nil
- }
- // BalanceCredit returns total amount of units debited by local node
- func (self *AccountingApi) BalanceDebit() (int64, error) {
- if self.metrics == nil {
- return 0, errNoAccountingMetrics
- }
- return mBalanceDebit.Count(), nil
- }
- // BytesCredit returns total amount of bytes credited by local node
- func (self *AccountingApi) BytesCredit() (int64, error) {
- if self.metrics == nil {
- return 0, errNoAccountingMetrics
- }
- return mBytesCredit.Count(), nil
- }
- // BalanceCredit returns total amount of bytes debited by local node
- func (self *AccountingApi) BytesDebit() (int64, error) {
- if self.metrics == nil {
- return 0, errNoAccountingMetrics
- }
- return mBytesDebit.Count(), nil
- }
- // MsgCredit returns total amount of messages credited by local node
- func (self *AccountingApi) MsgCredit() (int64, error) {
- if self.metrics == nil {
- return 0, errNoAccountingMetrics
- }
- return mMsgCredit.Count(), nil
- }
- // MsgDebit returns total amount of messages debited by local node
- func (self *AccountingApi) MsgDebit() (int64, error) {
- if self.metrics == nil {
- return 0, errNoAccountingMetrics
- }
- return mMsgDebit.Count(), nil
- }
- // PeerDrops returns number of times when local node had to drop remote peers
- func (self *AccountingApi) PeerDrops() (int64, error) {
- if self.metrics == nil {
- return 0, errNoAccountingMetrics
- }
- return mPeerDrops.Count(), nil
- }
- // SelfDrops returns number of times when local node was overdrafted and dropped
- func (self *AccountingApi) SelfDrops() (int64, error) {
- if self.metrics == nil {
- return 0, errNoAccountingMetrics
- }
- return mSelfDrops.Count(), nil
- }
|