Пакет pulse
/* Пульс - сердце Бота :)
запускает каждую секунду Аctivatin() в net.go, поддерживая возможность самостоятельных действий Бота
В общем, это обеспечивает возможность параллельной работы функций Бота, отводя им выполнение с каждым пульсом
*/
var PulsCount=0; // счетчик пульса
var noWorkung=false // не активировать очередной цикл если true - тишина для выполнения функции OwnFuncForRun
var startWait=0 // начало ожидания
var secWaiting=1 // время ожидания
var OwnFuncForRun func() // переменная, которой нужно присвоить функцию для выполнения в тишине
func init() {
PulsCount=0; // счетчик пульса
puls()
}
func puls(){
time.AfterFunc(1*time.Second, func() {
// сканирование состояния (пульс):
//now := time.Now()
//curTime := now.Second()//.Millisecond()
//log.Println("пульс",curTime)
if !noWorkung {
Аctivatin()
}
if startWait>0 {// ждем следующего цикла и выполняем OwnFuncForRun
if PulsCount > (startWait+1){
OwnFuncForRun()
noWorkung = false // конец ожидания
}
}
///////////////////////////
//ac := time.Date(0, time.January, 1, 0, 0, 0, 0, time.UTC)
//lastPulsTime=curTime
PulsCount++;
puls()
})
}
///////////////////////////////////////////////////
/* если нужно остановить все на время waitSec для выполнения какой-то функции, то
Пример для функции созранения всей памяти:
func WaitSaveAllPryMemory(){
OwnFuncForRun=SaveAllPryMemory
StopAll() // выполнить saveAllPryMemory() в тишине, когда ничто не работает
}
*/
func StopAll(){
noWorkung=true // останавливает puls()
startWait=PulsCount
}