-
Notifications
You must be signed in to change notification settings - Fork 1
/
wakeup_main.go
56 lines (47 loc) · 1.18 KB
/
wakeup_main.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
/*
JWakeup
Copyright (c) 2015
Mitescu George Dan <d.mitescu@jacobs-university.de>
Nicolae Andrei <an.nicolae@jacobs-university.de>
Frasineanu Catalin Vlad <v.frasineanu@jacobs-university.de>
Zamfir Andrei Vlad <v.zamfir@jacobs-university.de>
*/
package main
import (
"fmt"
"time"
"os"
"os/signal"
"syscall"
)
func main(){
fmt.Println("Starting JWakeup...")
var mainHTTP wakeupHTTP
var mainSIP wakeupSIP
var mainDBase dbCall
userC := make(chan wUser)
callC := make(chan wCall)
messC := make(chan string)
mainDBase.Init(nil, "test.db")
_ = mainDBase.cleanup("-1 day")
mainDBase.Close()
//Starting of the two main servers
go mainHTTP.Start(":8080", userC, callC, messC)
time.Sleep(time.Second * 2)
go mainSIP.Start(":5051", "127.0.0.1", userC, callC, messC)
//Handling SIGTERM and SIGINT signals to execute a proper exit
sigChannel := make(chan os.Signal, 1)
termChannel := make(chan bool, 1)
signal.Notify(sigChannel, syscall.SIGINT, syscall.SIGTERM)
go func(){
for sig := range sigChannel {
fmt.Println()
fmt.Println(sig)
mainSIP.Stop()
mainHTTP.Stop()
termChannel <- true
}
}()
<-termChannel
fmt.Println("Terminating server...")
}