llmongodb/producer.go

75 lines
1.6 KiB
Go
Raw Normal View History

// iterator
package main
import (
"fmt"
"log"
"strconv"
2015-11-19 17:12:53 +01:00
"time"
"github.com/garyburd/redigo/redis"
)
2015-11-20 15:23:12 +01:00
type produced struct {
user string
logins []string
}
func producer() {
conn := dbs.rdb.Get()
defer conn.Close()
for loop {
2015-11-20 15:23:12 +01:00
wg.Wait()
status = _Producer
2015-11-19 17:12:53 +01:00
start := time.Now()
// estrae un userid dalla lista degli utenti che hanno fatto login
user, err := redis.String(conn.Do("spop", "llindex"))
2015-11-23 17:39:17 +01:00
// if opts.Debug {
2015-11-24 16:18:39 +01:00
// log.Printf("SPOP: %+v - %+v\n", user, err)
// fmt.Printf("SPOP: %+v - %+v\n", user, err)
2015-11-23 17:39:17 +01:00
// }
// se non ci sono piu' userid esce
if err != nil {
if opts.Debug {
2015-11-24 16:18:39 +01:00
fmt.Printf("LLINDEX empty: %v\n", err)
}
2015-11-24 16:18:39 +01:00
log.Printf("LLINDEX empty: %v\n", err)
2015-11-23 17:39:17 +01:00
//loop[id] = false
//done[id] <- true
break
2015-11-20 15:23:12 +01:00
}
2016-10-05 11:55:50 +02:00
// estrae <MaxLogins> login dell'utente "user"
logs, err := redis.Strings(conn.Do("lrange", user, "1", strconv.Itoa(opts.MaxLogins)))
2015-11-20 15:23:12 +01:00
if err != nil {
2015-11-23 18:07:07 +01:00
if opts.Debug {
2015-11-24 16:18:39 +01:00
fmt.Printf("LRANGE: %+v - %+v\n", err, logs)
2015-11-23 18:07:07 +01:00
}
2015-11-24 16:18:39 +01:00
log.Printf("LRANGE: %+v - %+v\n", err, logs)
}
2015-11-23 17:39:17 +01:00
// if opts.Debug {
2015-11-24 16:18:39 +01:00
// fmt.Printf("LRANGE: %s - %d\n", user, len(logs))
// log.Printf("LRANGE: %s - %d\n", user, len(logs))
2015-11-23 17:39:17 +01:00
// }
2015-11-20 15:23:12 +01:00
if opts.Debug {
fmt.Printf("PROD: user=%s login=%d in %v - conn=%d\n", user, len(logs), time.Since(start), dbs.rdb.ActiveCount())
2015-11-24 16:18:39 +01:00
// log.Printf("PROD (%d): user=%s login=%d in %v - conn=%d\n", id, user, len(logs), time.Since(start), dbs.rdb.ActiveCount())
}
2015-11-20 15:23:12 +01:00
2015-11-23 17:39:17 +01:00
count.AddUser()
wg.Add(1)
count.AddWG()
2015-11-23 17:39:17 +01:00
consume <- produced{
2015-11-20 15:23:12 +01:00
user: user,
logins: logs,
}
}
done <- true
}