Trang trí cho quá trình chuyển đổi

Sự chuyển tiếp là phương pháp trang trí bằng kết quả của một trong ATMT.condition, ATMT.receive_condition, ATMT.timeout. Họ tất cả đi như là đối số phương pháp tiểu bang mà họ có liên quan đến. ATMT.timeout cũng có một tham số thời gian chờ bắt buộc để cung cấp các giá trị thời gian chờ trong giây. ATMT.condition và ATMT.receive_condition có một tham số PRIO tùy chọn để trật tự, trong đó điều kiện được đánh giá có thể được ép buộc. Mặc định ưu tiên là 0. Sự chuyển tiếp với mức độ ưu tiên tương tự được gọi là trong một trật tự xác định.
Khi các máy tự động chuyển sang một trạng thái nhất định, phương pháp của nhà nước được thực thi. Sau đó, quá trình chuyển đổi phương thức được gọi là ở những khoảnh khắc đặc biệt cho đến khi một gây nên một trạng thái mới (giống như tăng self.MY_NEW_STATE ()). Đầu tiên, ngay sau khi trở về phương pháp của nhà nước, các phương pháp ATMT.condition trang trí đang chạy bằng cách trồng PRIO. Sau đó, mỗi lần một gói tin được nhận và được chấp nhận bởi bộ lọc tổng thể tất cả hods ATMT.receive_condition trang trí được gọi bằng cách trồng PRIO. Khi một thời gian chờ là đạt được kể từ lúc chúng tôi bước vào không gian hiện nay, ATMT.timeout phương pháp trang trí tương ứng được gọi.

class Example(Automaton):
    @ATMT.state()
    def WAITING(self):
        pass

    @ATMT.condition(WAITING)
    def it_is_raining(self):
        if not self.have_umbrella:
            raise self.ERROR_WET()

    @ATMT.receive_condition(WAITING, prio=1)
    def it_is_ICMP(self, pkt):
        if ICMP in pkt:
            raise self.RECEIVED_ICMP(pkt)

    @ATMT.receive_condition(WAITING, prio=2)
    def it_is_IP(self, pkt):
        if IP in pkt:
            raise self.RECEIVED_IP(pkt)

    @ATMT.timeout(WAITING, 10.0)
    def waiting_timeout(self):
        raise self.ERROR_TIMEOUT()

Comments

Popular posts from this blog

Thiết lập card không dây trên Kali Linux

Monitor mode

Giới thiệu - Scapy