Fix: pause/start (again)

This commit is contained in:
kayos@tcp.direct 2021-10-25 02:57:38 -07:00
parent 2943ef2961
commit 6ca46334be
Signed by: kayos
GPG Key ID: 4B841471B4BEE979
3 changed files with 27 additions and 44 deletions

View File

@ -40,25 +40,9 @@ func (s *Swamp) Pause() error {
}
s.dbgPrint("pausing...")
var svcbuf = make(chan bool, 2)
for {
select {
case svcbuf <- true:
//
default:
break
}
select {
case <-svcbuf:
go s.svcDown()
default:
break
}
if !s.IsRunning() {
break
}
}
s.svcDown()
s.svcDown()
s.Status.Store(Paused)
return nil

View File

@ -9,12 +9,14 @@ import (
)
func (s *Swamp) svcUp() {
s.runningdaemons.Store(s.runningdaemons.Load().(int) + 1)
running := s.runningdaemons.Load().(int)
s.runningdaemons.Store(running + 1)
}
func (s *Swamp) svcDown() {
running := s.runningdaemons.Load().(int)
s.quit <- true
s.runningdaemons.Store(s.runningdaemons.Load().(int) - 1)
s.runningdaemons.Store(running - 1)
}
type swampMap struct {
@ -76,16 +78,14 @@ func (s *Swamp) mapBuilder() {
var filtered string
var ok bool
defer s.dbgPrint("map builder paused")
s.dbgPrint("map builder started")
defer s.dbgPrint("map builder paused")
go func() {
for {
select {
case in := <-inChan:
if filtered, ok = filter(in); !ok {
if filtered, ok = s.filter(in); !ok {
continue
}
if p, ok := s.swampmap.add(filtered); !ok {
@ -126,13 +126,20 @@ func (s *Swamp) recycling() int {
}
func (s *Swamp) jobSpawner() {
if s.pool.IsClosed() {
s.pool.Reboot()
}
s.dbgPrint("job spawner started")
defer s.dbgPrint("map builder paused")
defer s.dbgPrint("job spawner paused")
q := make(chan bool)
go func() {
for {
select {
case <-s.quit:
q <- true
return
case sock := <-s.Pending:
if err := s.pool.Submit(sock.validate); err != nil {
s.dbgPrint(ylw + err.Error() + rst)
@ -146,5 +153,6 @@ func (s *Swamp) jobSpawner() {
}()
s.svcUp()
<-s.quit
<-q
s.pool.Release()
}

View File

@ -3,6 +3,7 @@ package Prox5
import (
"bufio"
"fmt"
"io"
"os"
"strconv"
"strings"
@ -94,7 +95,6 @@ func (s *Swamp) filter(in string) (filtered string, ok bool) {
func (s *Swamp) LoadProxyTXT(seedFile string) int {
var count = &atomic.Value{}
count.Store(0)
var ok bool
s.dbgPrint("LoadProxyTXT start: " + seedFile)
defer func() {
@ -107,22 +107,14 @@ func (s *Swamp) LoadProxyTXT(seedFile string) int {
return 0
}
scan := bufio.NewScanner(f)
for scan.Scan() {
var filtered string
if filtered, ok = s.filter(scan.Text()); !ok {
continue
}
count.Store(count.Load().(int) + 1)
go s.loadSingleProxy(filtered)
}
bs, err := io.ReadAll(f)
sockstr := string(bs)
if err := f.Close(); err != nil {
s.dbgPrint(red + err.Error() + rst)
}
count.Store(s.LoadMultiLineString(sockstr))
return count.Load().(int)
}
@ -144,11 +136,10 @@ func (s *Swamp) LoadMultiLineString(socks string) int {
var count int
scan := bufio.NewScanner(strings.NewReader(socks))
for scan.Scan() {
go s.loadSingleProxy(scan.Text())
count++
}
if count < 1 {
return 0
if filtered, ok := s.filter(scan.Text()); ok {
go s.loadSingleProxy(filtered)
count++
}
}
return count
}