/*
NOTE : systemctl stop edge-orchestration.service
*/
- package discoverymgr
+package discoverymgr
import (
- "context"
+ // "context"
"log"
- "net"
+ // "net"
"time"
"grandcat/zeroconf"
)
-
//GetDeviceList return device list
func GetDeviceList() ([]DeviceReturnInfo, error) {
return ret, nil
}
-func discoveryBGR() {
- discoveryPeriod := maxPollingTime
- // discoveryPeriod := 3 * 1000
- for {
-
- data, err := discoverDevice(5000)
- if err != nil {
- log.Println(logPrefix, err)
- continue
- }
-
- zeroconf.MapMTX.Lock()
- //@Todo check the entity in map but not discovered
- for k, v := range data {
- log.Println(logPrefix, "[discoveryBGR]", k, v)
- zeroconf.DeviceMap[k] = v
- }
- zeroconf.MapMTX.Unlock()
- time.Sleep(time.Duration(discoveryPeriod) * time.Millisecond)
-
- // if discoveryPeriod > maxPollingTime {
- // time.Sleep(maxPollingTime * time.Millisecond)
- // } else {
- // discoveryPeriod *= 2
- // log.Println(logPrefix, "[discoveryBGR] will run after ", discoveryPeriod/1000, "sec")
- // }
-
- }
-}
-
func waitServer() {
//NOTE :
//it can be happend, pollingOutbound function is out,
}
}
-func discoverDevice(t int) (map[string][]string, error) {
- domain := "local"
-
- // Options for IPType.
- const (
- IPv4 = 0x01
- IPv6 = 0x02
- IPv4AndIPv6 = (IPv4 | IPv6) //< Default option.
- )
-
- // find Wifi Interface
- var netIface []net.Interface
- ifaces, err := net.Interfaces()
- for _, iface := range ifaces {
- if iface.Name[0:2] == "wl" {
- netIface = append(netIface, iface)
- }
- }
-
- resolver, err := zeroconf.NewResolver(zeroconf.SelectIPTraffic(IPv4), zeroconf.SelectIfaces(netIface))
- if err != nil {
- return nil, err
- }
-
- var data = make(map[string][]string) //data[deviceIP][]ServiceNames
- entries := make(chan *zeroconf.ServiceEntry)
- go func(results <-chan *zeroconf.ServiceEntry) {
- for entry := range results {
- deviceIP := entry.AddrIPv4[0].String()
- ServiceNames := make([]string, len(entry.Text))
- ServiceNames = entry.Text
- data[deviceIP] = ServiceNames
- log.Println(logPrefix, "Discoverd Device: "+deviceIP)
- }
- }(entries)
-
- ctx, cancel := context.WithTimeout(context.Background(), time.Millisecond*time.Duration(t))
- defer cancel()
- err = resolver.Browse(ctx, serviceType, domain, entries)
- if err != nil {
- return nil, err
- }
-
- <-ctx.Done()
-
- // ExitChan <- 1
- // InitDiscovery()
-
- return data, nil
-}
+// func discoveryBGR() {
+// discoveryPeriod := maxPollingTime
+// // discoveryPeriod := 3 * 1000
+// for {
+
+// data, err := discoverDevice(5000)
+// if err != nil {
+// log.Println(logPrefix, err)
+// continue
+// }
+
+// zeroconf.MapMTX.Lock()
+// //@Todo check the entity in map but not discovered
+// for k, v := range data {
+// log.Println(logPrefix, "[discoveryBGR]", k, v)
+// zeroconf.DeviceMap[k] = v
+// }
+// zeroconf.MapMTX.Unlock()
+// time.Sleep(time.Duration(discoveryPeriod) * time.Millisecond)
+
+// // if discoveryPeriod > maxPollingTime {
+// // time.Sleep(maxPollingTime * time.Millisecond)
+// // } else {
+// // discoveryPeriod *= 2
+// // log.Println(logPrefix, "[discoveryBGR] will run after ", discoveryPeriod/1000, "sec")
+// // }
+
+// }
+// }
+
+// func discoverDevice(t int) (map[string][]string, error) {
+
+// domain := "local"
+
+// // Options for IPType.
+// const (
+// IPv4 = 0x01
+// IPv6 = 0x02
+// IPv4AndIPv6 = (IPv4 | IPv6) //< Default option.
+// )
+
+// // find Wifi Interface
+// var netIface []net.Interface
+// ifaces, err := net.Interfaces()
+// for _, iface := range ifaces {
+// if iface.Name[0:2] == "wl" {
+// netIface = append(netIface, iface)
+// }
+// }
+
+// resolver, err := zeroconf.NewResolver(zeroconf.SelectIPTraffic(IPv4), zeroconf.SelectIfaces(netIface))
+// if err != nil {
+// return nil, err
+// }
+
+// var data = make(map[string][]string) //data[deviceIP][]ServiceNames
+// entries := make(chan *zeroconf.ServiceEntry)
+// go func(results <-chan *zeroconf.ServiceEntry) {
+// for entry := range results {
+// deviceIP := entry.AddrIPv4[0].String()
+// ServiceNames := make([]string, len(entry.Text))
+// ServiceNames = entry.Text
+// data[deviceIP] = ServiceNames
+// log.Println(logPrefix, "Discoverd Device: "+deviceIP)
+// }
+// }(entries)
+
+// ctx, cancel := context.WithTimeout(context.Background(), time.Millisecond*time.Duration(t))
+// defer cancel()
+// err = resolver.Browse(ctx, serviceType, domain, entries)
+// if err != nil {
+// return nil, err
+// }
+
+// <-ctx.Done()
+
+// // ExitChan <- 1
+// // InitDiscovery()
+
+// return data, nil
+// }