func NewTimeoutTicker() TimeoutTicker {
	tt := &timeoutTicker{
		timer:    time.NewTimer(0),
		tickChan: make(chan timeoutInfo, tickTockBufferSize),
		tockChan: make(chan timeoutInfo, tickTockBufferSize),
	}
	tt.BaseService = *service.NewBaseService(nil, "TimeoutTicker", tt)
	tt.stopTimer()  
	return tt
}
NewTimeoutTicker returns a new TimeoutTicker.
package consensus
import (
	"time"
	"github.com/tendermint/tendermint/libs/log"
	"github.com/tendermint/tendermint/libs/service"
)
var (
	tickTockBufferSize = 10
)
type TimeoutTicker interface {
	Start() error
	Stop() error
	Chan() <-chan timeoutInfo        
	ScheduleTimeout(ti timeoutInfo)  
	SetLogger(log.Logger)
}
type timeoutTicker struct {
	service.BaseService
	timer    *time.Timer
	tickChan chan timeoutInfo  
	tockChan chan timeoutInfo  
}