status-im/status-go

View on GitHub
services/ens/service.go

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
package ens

import (
    "database/sql"
    "time"

    "github.com/ethereum/go-ethereum/p2p"
    ethRpc "github.com/ethereum/go-ethereum/rpc"
    "github.com/status-im/status-go/account"
    "github.com/status-im/status-go/params"
    "github.com/status-im/status-go/rpc"
    "github.com/status-im/status-go/transactions"
)

// NewService initializes service instance.
func NewService(rpcClient *rpc.Client, accountsManager *account.GethManager, pendingTracker *transactions.PendingTxTracker, config *params.NodeConfig, appDb *sql.DB, timeSource func() time.Time) *Service {
    service := &Service{
        rpcClient,
        accountsManager,
        pendingTracker,
        config,
        nil,
        nil,
    }
    service.api = NewAPI(rpcClient, accountsManager, pendingTracker, config, appDb, timeSource, &service.syncUserDetailFunc)
    return service
}

// Service is a browsers service.
type Service struct {
    rpcClient          *rpc.Client
    accountsManager    *account.GethManager
    pendingTracker     *transactions.PendingTxTracker
    config             *params.NodeConfig
    api                *API
    syncUserDetailFunc syncUsernameDetail
}

func (s *Service) Init(syncUserDetailFunc syncUsernameDetail) {
    s.syncUserDetailFunc = syncUserDetailFunc
}

// Start a service.
func (s *Service) Start() error {
    return nil
}

// Stop a service.
func (s *Service) Stop() error {
    s.api.Stop()
    return nil
}

func (s *Service) API() *API {
    return s.api
}

// APIs returns list of available RPC APIs.
func (s *Service) APIs() []ethRpc.API {
    return []ethRpc.API{
        {
            Namespace: "ens",
            Version:   "0.1.0",
            Service:   s.api,
        },
    }
}

// Protocols returns list of p2p protocols.
func (s *Service) Protocols() []p2p.Protocol {
    return nil
}