Fix: pause/start (again)
This commit is contained in:
parent
2943ef2961
commit
6ca46334be
20
conductor.go
20
conductor.go
|
@ -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
|
||||
|
|
26
daemons.go
26
daemons.go
|
@ -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()
|
||||
}
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue