summaryrefslogtreecommitdiff
path: root/src/helsinki.at/rhimportd/main.go
diff options
context:
space:
mode:
authorChristian Pointner <equinox@helsinki.at>2015-12-22 03:18:46 (GMT)
committerChristian Pointner <equinox@helsinki.at>2015-12-22 03:18:46 (GMT)
commite40235206363f09a43723fd7af10ef66bcfa08a3 (patch)
treee00bd8861c3e460eaf64f98ade15d03006189c61 /src/helsinki.at/rhimportd/main.go
parentc0463be82447f269d9947d16a40881dbbe600827 (diff)
session based callbacks work now
Diffstat (limited to 'src/helsinki.at/rhimportd/main.go')
-rw-r--r--src/helsinki.at/rhimportd/main.go57
1 files changed, 54 insertions, 3 deletions
diff --git a/src/helsinki.at/rhimportd/main.go b/src/helsinki.at/rhimportd/main.go
index b90df0a..aeb7194 100644
--- a/src/helsinki.at/rhimportd/main.go
+++ b/src/helsinki.at/rhimportd/main.go
@@ -26,6 +26,7 @@ package main
import (
"flag"
+ "fmt"
"log"
"os"
"os/signal"
@@ -42,6 +43,33 @@ var (
//rhdl = log.New(ioutil.Discard, "[rhimportd-dbg]\t", log.LstdFlags)
)
+func session_test_progress1(step int, step_name string, progress float64, userdata interface{}) bool {
+ out := userdata.(chan<- string)
+ select {
+ case out <- fmt.Sprintf("CB1 %d, %s: %3.2f%%", step, step_name, progress*100):
+ default:
+ }
+ if step > 1 {
+ return false
+ }
+ return true
+}
+
+func session_test_progress2(step int, step_name string, progress float64, userdata interface{}) bool {
+ out := userdata.(chan<- string)
+ select {
+ case out <- fmt.Sprintf("CB2 %d, %s: %3.2f%%", step, step_name, progress*100):
+ default:
+ }
+ return true
+}
+
+func session_test_done(res rhimport.ImportResult, userdata interface{}) bool {
+ done := userdata.(chan<- rhimport.ImportResult)
+ done <- res
+ return true
+}
+
func session_test(conf *rhimport.Config, rddb *rhimport.RdDbChan) {
sessions, err := rhimport.NewSessionStore(conf)
if err != nil {
@@ -55,7 +83,8 @@ func session_test(conf *rhimport.Config, rddb *rhimport.RdDbChan) {
ctx := rhimport.NewImportContext(conf, rddb, "heslinki")
ctx.Trusted = true
ctx.ShowId = 10002
- ctx.SourceUri = "fake://10"
+ ctx.ClearShowCarts = true
+ ctx.SourceUri = "http://www.tonycuffe.com/mp3/tail%20toddle.mp3"
id, session, err := store.New(ctx)
if err != nil {
@@ -63,11 +92,33 @@ func session_test(conf *rhimport.Config, rddb *rhimport.RdDbChan) {
return
}
+ pch := make(chan string, 1000)
+ if err = session.AddProgressHandler((chan<- string)(pch), session_test_progress1); err != nil {
+ rhl.Printf("MAIN: Error Session.AddProgressHandler(): %s", err)
+ }
+ dch := make(chan rhimport.ImportResult)
+ if err = session.AddDoneHandler((chan<- rhimport.ImportResult)(dch), session_test_done); err != nil {
+ rhl.Printf("MAIN: Error Session.AddDoneHandler(): %s", err)
+ }
+
rhl.Printf("MAIN: calling run for heslinki/%s", id)
session.Run()
- rhl.Printf("MAIN: waiting for 2 secondes")
- time.Sleep(5 * time.Second)
+ time.Sleep(500 * time.Millisecond)
+
+ if err = session.AddProgressHandler((chan<- string)(pch), session_test_progress2); err != nil {
+ rhl.Printf("MAIN: Error Session.AddProgressHandler(): %s", err)
+ }
+
+ for {
+ select {
+ case p := <-pch:
+ fmt.Println(p)
+ case r := <-dch:
+ fmt.Printf("Import finished: %+v\n", r)
+ break
+ }
+ }
rhl.Printf("MAIN: calling remove for heslinki/%s", id)
if err = store.Remove("heslinki", id); err != nil {