Thêm đối tượng và tham số

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 59 - 60)

5. MODULE ĐƠN GIẢN

6.1.5.Thêm đối tượng và tham số

Thêm đối tượng

Lớp cMessage có đối tượng cArray có thể chứa các đối tượng khác. Tuy nhiên chỉ các đối tượng kế thừa từ lớp cObject (hầu hết các lớp trong OMNeT++ đều kế thừa từ lớp này) mới có thể được thêm vào các message. Các hàm addObject(), hasObject(), removeObject() nhận tên của các đối tượng như các khoá để truy nhập mảng. Ví dụ: cLongHistogram *pklenDistr = new cLongHistogram("pklenDistr");

msg->addObject( pklenDistr ); ... if (msg->hasObject("pklenDistr")) { cLongHistogram *pklenDistr = (cLongHistogram *) msg->getObject("pklenDistr"); ... }

Bạn phải cẩn thận khi thêm một đối tượng vào message, tránh để xẩy ra tình trạng xung đột giữa các đối tượng bị trùng tên. Nếu bạn không gắn kèm một đối tượng nào vào message anh không gọi hàm parList(), đối tượng cArray sẽ không được tạo. Bạn cũng có thể thêm vào message các đối tượng không kế thừa từ cObject (non- cObject object) bằng cách sử dụng con trỏ của lớp cPar. Ví dụ:

msg->addPar("conn") = (void *) conn;

msg->par("conn").configPointer(NULL,NULL,sizeof(struct conn_t));

Thêm tham số

Phương pháp tốt nhất để mở rộng các message với những trường dữ liệu mới là định nghĩa các message (xem phần 5.2).

Tuy nhiên ta có thể sử dụng một phương pháp khác (không được khuyến khích) để thêm các trường dữ liệu mới cho message thông qua các đối tượng cPar. Nhược điểm của phương pháp này là tốn bộ nhớ và thời gian thực hiện chậm. Các đối tượng của cPar thường có kích thước lớn và khá phức tạp. Mặt khác khi sử dụng các đối tượng cPar cũng rất dễ sinh ra lỗi bởi các đối tượng này phải được thêm vào động và độc lập đối với mỗi đối tượng message.

Tuy nhiên nếu bạn vẫn cần sử dụng cPar, nó sẽ cung cấp cho bạn một số hàm cơ bản. Hàm addPar() được dùng để thêm một tham số mới cho message. Hàm hasPar() kiểm tra xem một message có các tham số hay không. Các tham số của message có thể được truy nhập thông qua chỉ số của mảng tham số. Hàm findPar() trả về chỉ số của một tham số và trả về -1 nếu tham số đó không tồn tại. Các tham số cũng có thể được truy nhập bằng cách viết chồng hàm par(). Ví dụ:

msg->addPar("destAddr"); msg->par("destAddr") = 168; ...

long destAddr = msg->par("destAddr");

6.2. Định nghĩa 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 59 - 60)