diff --git a/src/go/storage/storage.go b/src/go/storage/storage.go index 264c40d..9771d68 100644 --- a/src/go/storage/storage.go +++ b/src/go/storage/storage.go @@ -9,8 +9,8 @@ import ( "go.mongodb.org/mongo-driver/mongo" "go.mongodb.org/mongo-driver/mongo/options" "io/ioutil" - "time" - "strings" + "strings" + "time" ) // Collection the MongoDB Account collection @@ -39,6 +39,7 @@ func HandleError(e error, serv int) { } func main() { + var status bool type Config struct { MongoDB string `json:"mongoURL"` } @@ -52,11 +53,11 @@ func main() { ctx, _ := context.WithTimeout(context.Background(), 10*time.Second) err = client.Connect(ctx) HandleError(err, 1) - err = client.Ping(context.TODO(), nil) - fmt.Printf("Connected to MongoDB [GO]\n") + err = client.Ping(context.TODO(), nil) + fmt.Printf("Connected to MongoDB [GO]\n") HandleError(err, 1) - Collection = client.Database("cloudservices").Collection("accounts") + Collection = client.Database("cloudservices").Collection("accounts") RedisClient = redis.NewClient(&redis.Options{ Addr: "localhost:6379", @@ -64,36 +65,41 @@ func main() { DB: 0, }) - _, err = RedisClient.Ping().Result() - fmt.Printf("Connected to Redis [GO]\n") + _, err = RedisClient.Ping().Result() + fmt.Printf("Connected to Redis [GO]\n") HandleError(err, 1) + status = false for { fmt.Printf("Calling handler func [GO]\n") - handler() - time.Sleep(1000000 * time.Millisecond) - } + if status == false { + handler(&status) + time.Sleep(1000000 * time.Millisecond) + } + } } -func handler() { +func handler(status* bool) { + *status = true cur, err := Collection.Find(context.TODO(), bson.D{}) HandleError(err, 0) for cur.Next(context.TODO()) { - go checkAccountSizeAndUpdate(cur.Current.Lookup("username").String(), cur.Current.Lookup("id").String()) - fmt.Printf("Checking account information for %s\n", cur.Current.Lookup("username").String()) + go checkAccountSizeAndUpdate(cur.Current.Lookup("username").String(), cur.Current.Lookup("id").String()) + fmt.Printf("Checking account information for %s\n", cur.Current.Lookup("username").String()) time.Sleep(600000 * time.Millisecond) } + *status = false } func checkAccountSizeAndUpdate(username string, id string) { - var size float64 = 0 - var userHomeDirectory string = strings.Replace(strings.Join([]string{"/home/", string(username)}, ""), "\"", "", -1) - fmt.Println(userHomeDirectory) - sizeHome := DirSize(&userHomeDirectory) - size += sizeHome - sizeMail := DirSize(&userHomeDirectory) - size += sizeMail - RedisClient.Set("storage"+"-"+string(id), size, 0) - fmt.Printf("Set Call | Username: %v, ID: %v | Bytes: %f\n", string(username), string(id), size) + var size float64 = 0 + var userHomeDirectory string = strings.Replace(strings.Join([]string{"/home/", string(username)}, ""), "\"", "", -1) + fmt.Println(userHomeDirectory) + sizeHome := DirSize(&userHomeDirectory) + size += sizeHome + sizeMail := DirSize(&userHomeDirectory) + size += sizeMail + RedisClient.Set("storage"+"-"+string(id), size, 0) + fmt.Printf("Set Call | Username: %v, ID: %v | Bytes: %f\n", string(username), string(id), size) }