2. Nội dung
1. Dịch vụ QNX PPS
2. Đối tượng và các thuộc tính
3. Persistence
4. Publish
5. Subscribe
3. 1. QNX PPS Service
Là một dịch vụ đăng ký/xuất bản mở rộng, nhỏ .
Được cung cấp liên tục ngang qua quá trình khởi động lại.
Được thiết kế cho những hệ nhúng sử dụng cả hai giải pháp đăng
ký/xuất bản một cách đơn giản và dễ dàng.
Đáp ứng nhu cầu xây dựng hệ thống kết nối lỏng lẻo sử dụng các phương
thức thông báo và công bố bất đồng bộ.
Với PPS quá trình xuất bản bất đồng bộ
4. 1. QNX PPS Service
• Publishers không cần phải
chờ subscribers
• Publishers và Subscribes
thường không biết nhau
• Chỉ kết nối thông qua một
đối tượng chứa cả subscribe
và publish
5. 1. QNX PPS Service
Cú pháp lệnh: pps [options]
Trong đó option:
-b: không chạy dưới nền. Dùng cho debug
-1 đối số : thiết lập hành vi lấy về đối tượng
o 0-mặc định, lấy về các đối tượng và tên thư mục theo yêu cầu.
o 1-lấy về các đối tượng và tên thư mục khi khởi động nhưng không chứa nội dung.
Lấy về nội dung các đối tượng theo yêu cầu
o 2-lấy về tên thư mục, đối tượng kèm nội dung khi khởi động
-m mount: chỉ định gắng đường dẫn cho PPS. Mặc định /pps/
-p path: thiết lập đường dẫn cho việc sao lưu lưu trữ liên tục
-t period : chỉ định chu kỳ persistence bắt buộc. Mặc định là persistence không bắt buộc
-v: Kích hoạt chế độ verbose. Tăng giá trị của v để tăng tính verbosity
6. 2.Objects and their Attributes
Đối tượng
Được thực hiện như những file trong hệ thống file PPS đặc biệt
Xuất hiện mặc định sau “/pps”
Có chứa các thuộc tính
Kích thước thư mục và đối tượng
Mặc định là 16 kB
Lớn nhất là 64 kB
Đối tượng đặc biệt
.all
.notify
.server
Cú pháp lệnh với đối tượng
@ object_name
attrib 1 :: value 1
attrib 2 :: value 2
…
7. 2.Objects and their Attributes
Thuộc tính
Do người dùng định nghĩa
Có dạng: tên_đối_tượng : kiểu_mã_hóa : giá_trịn
Giá trị không phải null hoặc linefeed
Kiểu_mã_hóa gồm có
“::” – kết thúc dòng lệnh bằng dòng tiếp theo
“:c:” - n, t,
“:b64:” – mã hóa base 64
9. 4. Publish
Tạo mới, sửa đổi, xóa đối tượng và thuộc tính
Có thể tạo mới, sửa đổi và xóa đối tượng kèm thuộc tính
Tạo mới: tạo một file mới có tên của đối tượng.
Đối tượng mới tạo ra chưa có thuộc tính
Có thể thêm mới thuộc tính cho đối tượng.
Xóa: xóa file đối tượng.
Tạo mới thuộc tính: Ghi thuộc tính vào đối tượng.
Sửa thuộc tính: Ghi giá trị mới vào thuộc tính của đối tượng
Xóa các thuộc tính đang tồn tại: Mở đối tượng với O_ TRUNC.
Xóa 1 thuộc tính:thêm dấu trừ vào trước tên thuộc tính và gọi hàm write() .
For example:
sprintf( ppsobj, "-urln" ); // Delete the "url" attribute
write( ppsobj-fd, ppsobj, strlen( ppsobj ) );
Multiple Publishers (Đa xuất bản)
10. 5. Subcribe
Blocking and non-blocking reads
Hàm io_notify()
Cho phép subscribers yêu cầu thông báo qua cơ chế PULSE, SIGNAL , SEMAPHORE, etc.
Khi thay đổi thông báo, một subscriber phải gọi read() để lấy nội dung của đối tượng.
Subscribtion modes
Full mode
Delta mode
Subscripting to multuple objects
.all
.notify