Hide keyboard shortcuts

Hot-keys on this page

r m x p   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

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

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

# -*- coding: utf-8 -*- 

 

# Licensed under the MIT license 

# http://opensource.org/licenses/mit-license.php 

 

# Copyright 2010 Frank Scholz <dev@coherence-project.org> 

 

import coherence.extern.louie as louie 

from coherence import log 

from coherence.upnp.services.clients.wan_ip_connection_client import \ 

    WANIPConnectionClient 

from coherence.upnp.services.clients.wan_ppp_connection_client import \ 

    WANPPPConnectionClient 

 

 

class WANConnectionDeviceClient(log.LogAble): 

    logCategory = 'igd_client' 

 

    def __init__(self, device): 

        log.LogAble.__init__(self) 

        self.device = device 

        self.device_type = self.device.get_friendly_device_type() 

        self.version = int(self.device.get_device_type_version()) 

        self.icons = device.icons 

 

        self.wan_ip_connection = None 

        self.wan_ppp_connection = None 

 

        self.detection_completed = False 

 

        louie.connect(self.service_notified, 

                      signal='Coherence.UPnP.DeviceClient.Service.notified', 

                      sender=self.device) 

 

        for service in self.device.get_services(): 

            if service.get_type() in [ 

                    "urn:schemas-upnp-org:service:WANIPConnection:1"]: 

                self.wan_ip_connection = WANIPConnectionClient(service) 

            if service.get_type() in [ 

                    "urn:schemas-upnp-org:service:WANPPPConnection:1"]: 

                self.wan_ppp_connection = WANPPPConnectionClient(service) 

        self.info("WANConnectionDevice %s", self.device.get_friendly_name()) 

        if self.wan_ip_connection: 

            self.info("WANIPConnection service available") 

        if self.wan_ppp_connection: 

            self.info("WANPPPConnection service available") 

 

    def remove(self): 

        self.info("removal of WANConnectionDeviceClient started") 

        if self.wan_ip_connection is not None: 

            self.wan_ip_connection.remove() 

        if self.wan_ppp_connection is not None: 

            self.wan_ppp_connection.remove() 

 

    def service_notified(self, service): 

        self.info("Service %r sent notification", service) 

        if self.detection_completed: 

            return 

        if self.wan_ip_connection is not None: 

            if not hasattr(self.wan_ip_connection.service, 

                           'last_time_updated'): 

                return 

            if self.wan_ip_connection.service.last_time_updated is None: 

                return 

        if self.wan_ppp_connection is not None: 

            if not hasattr(self.wan_ppp_connection.service, 

                           'last_time_updated'): 

                return 

            if self.wan_ppp_connection.service.last_time_updated is None: 

                return 

        self.detection_completed = True 

        louie.send('Coherence.UPnP.EmbeddedDeviceClient.detection_completed', 

                   None, 

                   self)