def testcase_readermonitorthread(self):

        # create thread that simulates reader insertion
        insertionthread = readerInsertionThread()

        # create thread that simulates reader removal
        removalthread = readerRemovalThread()

        readermonitor = ReaderMonitor(readerProc=getReaders, period=period)
        observers = []
        for i in range(0, OBS_COUNT):
            observer = countobserver(i)
            readermonitor.addObserver(observer)
            observers.append(observer)

        # signal threads to start
        insertionthread.start()
        removalthread.start()

        # let reader insertion/removal threads run for a while
        # then signal threads to end
        time.sleep(RUNNING_TIME)
        exitEvent.set()

        # wait until all threads ended
        removalthread.join()
        insertionthread.join()
        time.sleep(2 * period)

        for observer in observers:
            self.assertEquals(observer.insertedreaderstats,
                              insertedreaderstats)
            self.assertEquals(observer.removedreaderstats, removedreaderstats)
Beispiel #2
0
    def __init__(self, parent, appstyle, clientpanel):
        """Constructor. Create a smartcard and reader tree control on the
        left-hand side of the application main frame.
        @param parent: the tree panel parent
        @param appstyle: a combination of the following styles (bitwise or |)
          - TR_SMARTCARD: display a smartcard tree panel
          - TR_READER: display a reader tree panel
          - default is TR_DEFAULT = TR_SMARTCARD
        @param clientpanel: the client panel to notify of smartcard and reader events
        """
        wx.Panel.__init__(self, parent, -1, style=wx.WANTS_CHARS)

        sizer = wx.BoxSizer(wx.VERTICAL)

        # create the smartcard tree
        if appstyle & smartcard.wx.SimpleSCardApp.TR_SMARTCARD:
            self.cardtreectrl = CardTreeCtrl(self, clientpanel=clientpanel)

            # create the smartcard insertion observer
            self.cardtreecardobserver = self._CardObserver(self.cardtreectrl)

            # register as a CardObserver; we will ge
            # notified of added/removed cards
            self.cardmonitor = CardMonitor()
            self.cardmonitor.addObserver(self.cardtreecardobserver)

            sizer.Add(
                self.cardtreectrl, flag=wx.EXPAND | wx.ALL, proportion=1)

        # create the reader tree
        if appstyle & smartcard.wx.SimpleSCardApp.TR_READER:
            self.readertreectrl = ReaderTreeCtrl(
                                        self, clientpanel=clientpanel)

            # create the reader insertion observer
            self.readertreereaderobserver = self._ReaderObserver(
                                                    self.readertreectrl)

            # register as a ReaderObserver; we will ge
            # notified of added/removed readers
            self.readermonitor = ReaderMonitor()
            self.readermonitor.addObserver(self.readertreereaderobserver)

            # create the smartcard insertion observer
            self.readertreecardobserver = self._CardObserver(
                                                self.readertreectrl)

            # register as a CardObserver; we will get
            # notified of added/removed cards
            self.cardmonitor = CardMonitor()
            self.cardmonitor.addObserver(self.readertreecardobserver)

            sizer.Add(
                self.readertreectrl, flag=wx.EXPAND | wx.ALL, proportion=1)

        self.SetSizer(sizer)
        self.SetAutoLayout(True)
Beispiel #3
0
 def run(self):
     logger.info("Iniciando monitor")
     self.readermonitor = ReaderMonitor()
     self.cardmonitor = CardMonitor()
     self.cardobserver = DfvaCardObserver(eventmanager=self)
     self.readerobserver = DFVAReaderObserver(eventmanager=self)
     self.cardmonitor.addObserver(self.cardobserver)
     self.readermonitor.addObserver(self.readerobserver)
     self.run_mutex.lock()
     self.run_mutex.lock()
Beispiel #4
0
 def readerMonitor(self, reader_added_cb, reader_removed_cb):
     self.reader_added_cb = reader_added_cb
     self.reader_removed_cb = reader_removed_cb
     if THAI_ID_CARD_DEBUG:
         print("ThaiIDCard: Add SmartCard reader observer")
     self.smart_card_reader_monitor = ReaderMonitor()
     self.smart_card_reader_observer = SmartCardReaderObserver(
         reader_added_callback=self.reader_removed_cb,
         reader_removed_callback=self.reader_removed_cb)
     self.smart_card_reader_monitor.addObserver(
         self.smart_card_reader_observer)
Beispiel #5
0
    def __init__(self, parent):
        """Constructor. Registers as ReaderObserver to get
        notifications of reader insertion/removal."""
        wx.ComboBox.__init__(self,
                             parent,
                             wx.NewId(),
                             size=(170, -1),
                             style=wx.CB_DROPDOWN | wx.CB_SORT,
                             choices=[])

        # register as a ReaderObserver; we will get
        #  notified of added/removed readers
        self.readermonitor = ReaderMonitor()
        self.readermonitor.addObserver(self)
Beispiel #6
0
 def __init__(self, ticket = None):
     "Create and show main window."
     self.main_window_xml = gtk.glade.XML(self.GLADE_FILE, "main")
     self.main_window = self.main_window_xml.get_widget("main")
     
     self.card_tabs = self.main_window_xml.get_widget("card_tabs")
     while self.card_tabs.get_n_pages() > 0:
         self.card_tabs.remove_page(0)
     for t in self.CARD_TYPES:
         a, b, l = gtk.Alignment(yscale=1,xscale=1,xalign=0.5,yalign=0.5), gtk.VBox(), gtk.Label(t[1])
         a.add(b)
         a.show()
         b.show()
         l.show()
         
         self.card_tabs.append_page(a, tab_label=l)
     
     self.ticket_button_group = gtk.RadioButton()
     self.ticket_button_group._ticket = None
     
     self.status_area = self.main_window_xml.get_widget("status_area")
     self.known_readers = []
     self.known_cards = {} # Note stupid: the keys to this dict are not objects from the known_readers list but rather reader name strings
     self.connected_cards = {} # Again: the keys are not cards but repr(card)
     self.tickets = {} # ditto
     self.ticket_displayed = None # This is either None or a tuple (card object, ticket object)
     
     self._update_status()
     
     self.logbuf = FileLikeTextBuffer()
     sys.stdout = self.logbuf.for_stream(sys.stdout)
     sys.stderr = self.logbuf.for_stream(sys.stderr)
     self.logview = self.main_window_xml.get_widget("logview")
     self.logview.set_buffer(self.logbuf.buffer)
     self.logbuf.add_view(self.logview)
     
     signals = {
         "on_exit_clicked": self.exit_clicked,
         "on_main_delete_event": self.exit_clicked,
         "on_main_destroy": gtk.main_quit,
     }
     self.main_window_xml.signal_autoconnect(signals)
     
     self._clear_display()
     
     self.rmon = ReaderMonitor()
     self.cmon = CardMonitor()
     
     self.rmon.addObserver(self)
     self.cmon.addObserver(self)
class printobserver(ReaderObserver):
    """A simple reader observer that is notified
    when readers are added/removed from the system and
    prints the list of readers
    """

    def update(self, observable, (addedreaders, removedreaders)):
        print "Added readers", addedreaders
        print "Removed readers", removedreaders

try:
    print "Add or remove a smartcard reader to the system."
    print "This program will exit in 10 seconds"
    print ""
    readermonitor = ReaderMonitor()
    readerobserver = printobserver()
    readermonitor.addObserver(readerobserver)

    sleep(10)

    # don't forget to remove observer, or the
    # monitor will poll forever...
    readermonitor.deleteObserver(readerobserver)

    import sys
    if 'win32' == sys.platform:
        print 'press Enter to continue'
        sys.stdin.read(1)

except:
 def __init__(self, obsindex, testcase):
     threading.Thread.__init__(self)
     self.obsindex = obsindex
     self.testcase = testcase
     self.readermonitor = ReaderMonitor()
     self.observer = None
 def __init__(self, obsindex):
     Thread.__init__(self)
     self.readermonitor = ReaderMonitor()
     self.obsindex = obsindex
     self.observer = None
Beispiel #10
0
 def __init__(self, controller):
     self._controller = weakref.ref(controller)
     self._monitor = ReaderMonitor()
     self._monitor.addObserver(self)
Beispiel #11
0
 def __init__(self):
     self.readermonitor = ReaderMonitor()
     self.enable = False
     self.readermonitor.addObserver(self)