Self-Message Sử dụng self-message

Một phần của tài liệu Giới thiệu về omnet++ và các vấn đề liên quan (Trang 55 - 56)

5. MODULE ĐƠN GIẢN

6.1.2.Self-Message Sử dụng self-message

Sử dụng self-message

Các message thường được sử dụng để mô tả các sự kiện xẩy ra bên trong của một module. Trong một số trường hợp, message có thể coi như một bộ định thời dùng để xác định thời điểm diễn ra một sự kiện nào đó. Những message sử dụng trong những

trường hợp như vậy được gọi là self-message. Tuy nhiên self-message vẫn là message bình thường, là một đối tượng của lớp cMessage hoặc một lớp con kế thừa từ nó. Khi một message được phân đến một module bởi phần nhân mô phỏng, bạn có thể gọi hàm isSelfMessage() để kiểm tra xem nó có phải là một self-message hay không; nói một cách khác là để kiểm tra xem message nhận được có phải là một scheduled message (các message dùng để định thời điểm diễn ra một sự kiện trong module) hay là các message được gửi bởi một hàm send...() nào đó. Ngoài ra người sử dụng có thể sử dụng hàm isScheduled() để kiểm tra, hàm này sẽ trả về true nếu message nhận được là một scheduled message (những message được xác định bởi hàm scheduleAt()). Một scheduled message cũng có thể bị huỷ bỏ bởi hàm cancelEvent(). bool isSelfMessage();

bool isScheduled();

Các hàm sau trả về thời gian tạo, thiết lập và thời gian tới của một message. simtime_t creationTime()

simtime_t sendingTime(); simtime_t arrivalTime();

Khi một self-message được thiết lập, thời gian tới của message sẽ là thời gian nó sẽ được chuyển tới module cần thiết.

Con trỏ ngữ cảnh (Context Pointer)

Xét hai hàm setContextPointer() và contextPointer():

Hàm setContextPointer() nhận một con trỏ ngữ cảnh (kiểu void) làm đối số để thiết lập ngữ cảnh cho message.

Hàm contextPointer() trả về một con trỏ kiểu void, chứa ngữ cảnh của message tương ứng.

void *context =...;

msg->setContextPointer( context ); void *context2 = msg->contextPointer();

Người lập trình có thể sử dụng con trỏ ngữ cảnh cho nhiều mục đích và phần nhân mô phỏng không can thiệp đến con trỏ này. Tuy nhiên trên thực tế, con trỏ ngữ cảnh thường được sử dụng khi một module thiết lập một vài self-message (bộ định thời), module sẽ cần phải xác định được khi nào một self-message quay lại module, hay nói một cách khác nó cần phải xác định được khi nào bộ định thời hoạt động và phải làm gì sau đó. Khi đó con trỏ ngữ cảnh sẽ được tạo ra để trỏ tới một cấu trúc dữ liệu của module, mang đầy đủ thông tin “ngữ cảnh” về sự kiện sắp diễn ra.

Một phần của tài liệu Giới thiệu về omnet++ và các vấn đề liên quan (Trang 55 - 56)