Wayland
Kiến trúc phần mềm > Tổng quan giao thức

Giao thức Wayland được mô tả là "giao thức hướng đối tượng không đồng bộ". Hướng đối tượng có nghĩa là các dịch vụ được cung cấp bởi trình biên dịch được trình bày dưới dạng một loạt các đối tượng sống trên cùng một trình biên dịch. Mỗi đối tượng thực hiện một giao diện có tên, một số phương thức (được gọi là yêu cầu) cũng như một số sự kiện liên quan. Mỗi yêu cầu và sự kiện không có hoặc nhiều đối số, mỗi đối số có tên và kiểu dữ liệu. Giao thức không đồng bộ theo nghĩa là các yêu cầu không phải chờ trả lời đồng bộ hoặc ACK, tránh thời gian trễ chuyến đi khứ hồi và đạt được hiệu suất được cải thiện
Các máy khách Wayland có thể thực hiện một yêu cầu (một lời gọi phương thức) trên một số đối tượng nếu giao diện của đối tượng hỗ trợ yêu cầu đó. Client cũng phải cung cấp dữ liệu cần thiết cho các đối số của yêu cầu đó. Đây là cách client yêu cầu dịch vụ từ bộ tổng hợp. Bộ tổng hợp lần lượt gửi thông tin trở lại máy khách bằng cách làm cho đối tượng phát ra các sự kiện (có thể cũng có các đối số). Các sự kiện này có thể được bộ tổng hợp phát ra dưới dạng phản hồi cho một yêu cầu nhất định hoặc không đồng bộ, tùy thuộc vào sự xuất hiện của các sự kiện nội bộ (chẳng hạn như một sự kiện từ thiết bị đầu vào) hoặc thay đổi trạng thái. Các điều kiện lỗi cũng được báo hiệu là sự kiện của bộ tổng hợp.
Để một máy khách có thể đưa ra yêu cầu cho một đối tượng, trước tiên, nó cần cho máy chủ biết số ID mà nó sẽ sử dụng để xác định đối tượng đó. Có hai loại đối tượng trong bộ tổng hợp: đối tượng toàn cục và đối tượng không toàn cục. Các đối tượng toàn cục được bộ tổng hợp quảng cáo cho khách hàng khi chúng được tạo (và cả khi chúng bị phá hủy), trong khi các đối tượng không toàn cầu thường được tạo bởi các đối tượng khác đã tồn tại như một phần chức năng của chúng.
Các giao diện và các yêu cầu và sự kiện của chúng là các yếu tố cốt lõi xác định giao thức Wayland. Mỗi phiên bản của giao thức bao gồm một bộ giao diện, cùng với các yêu cầu và sự kiện của chúng, dự kiến ​​sẽ có trong bất kỳ bộ tổng hợp Wayland nào. Tùy chọn, bộ tổng hợp Wayland có thể xác định và triển khai các giao diện riêng hỗ trợ các yêu cầu và sự kiện mới, do đó mở rộng chức năng ngoài giao thức cốt lõi. Để tạo điều kiện thay đổi giao thức, mỗi giao diện có chứa thuộc tính "số phiên bản" ngoài tên của nó; thuộc tính này cho phép phân biệt các biến thể của cùng một giao diện. Mỗi bộ tổng hợp Wayland không chỉ trưng bày những giao diện nào có sẵn, mà cả các phiên bản được hỗ trợ của các giao diện đó.
Mô-đun evdev của nhân Linux nhận được một sự kiện và gửi nó đến bộ tổng hợp Wayland.
bộ tổng hợp Wayland nhìn xuyên qua khung cảnh của nó để xác định những gì cần thiết. Khung cảnh tương ứng với những gì trên màn hình và bộ tổng hợp Wayland hiểu các biến đổi mà nó có thể đã áp dụng cho các yếu tố trong khung cảnh. Do đó, bộ tổng hợp Wayland có thể chọn cửa sổ bên phải và chuyển đổi tọa độ màn hình thành tọa độ cục bộ của cửa sổ, bằng cách áp dụng các phép biến đổi nghịch đảo. Các loại chuyển đổi có thể được áp dụng cho cửa sổ chỉ bị giới hạn ở những gì nhà soạn nhạc có thể làm, miễn là nó có thể tính toán biến đổi nghịch đảo cho các sự kiện đầu vào.
Như trong trường hợp X, khi máy khách nhận được sự kiện, nó sẽ cập nhật giao diện người dùng. Nhưng trong trường hợp Wayland, kết xuất xảy ra bởi máy khách thông qua EGL và máy khách chỉ gửi yêu cầu đến bộ tổng hợp để chỉ ra khu vực đã được cập nhật.
Bộ tổng hợp Wayland thu thập các yêu cầu thiệt hại từ khách hàng của mình và sau đó kết hợp lại màn hình. Bộ tổng hợp có thể trực tiếp phát hành một ioctl để lên lịch cho một trang với KMS.