Hoàng Đăng Hải Học Viên: Lê Đăng Phong [1-22] Vũ Anh Tuấn



tải về 0.59 Mb.
trang5/19
Chuyển đổi dữ liệu13.08.2016
Kích0.59 Mb.
#17954
1   2   3   4   5   6   7   8   9   ...   19

2.5 Lớp TclClass


Lớp biên dịch TclClass là một lớp ảo thuần túy. Các lớp được dẫn xuất từ lớp cơ sở này có hai chức năng: xây dựng cây phân cấp theo lớp thông dịch để ánh xạ sang cây phân cấp theo lớp biên dịch, và đưa ra các hàm để khởi khảo các đối tượng TclObjects mới. Mỗi lớp dẫn xuất như vậy được gắn với một lớp biên dịch xác định trong cây phân cấp biên dịch, và có thể khởi tạo các đối tượng mới của lớp biên dịch tương ứng.

Ví dụ: chúng ta xem xét lớp RenoTcpClass, được dẫn xuất từ lớp TclClass, và được gắn với lớp biên dịch RenoTcpAgent. Lớp RenoTcpClass sẽ khởi tạo các đối tượng mới của lớp RenoTcpAgent. Lớp biên dịch RenoTcpAgent là lớp được dẫn xuất từ lớp TcpAgent, bản thân lớp TcpAgent được dẫn xuất từ lớp Agent, và cuối cùng lớp Agent lại được dẫn xuất từ lớp TclObject.

Lớp RenoTcpClass được định nghĩa như sau:

static class RenoTcpClass: public TclClass {

public:

RenoTcpClass() : TclClass("Agent/TCP/Reno") {}

TclObject* create(int argc, const char*const* argv) {

return (new RenoTcpAgent());

}

} class_reno;

2.5.1 Kết hợp các biến thành viên tĩnh của lớp C++


Ở phần trước, chúng ta đã đề cập đến cách thức để nhìn thấy các biến thành viên của các đối tượng trọng C++ trong môi trường OTcl, tuy nhiên cơ chế này lại không thể áp dụng cho các biến thành viên tĩnh của các lớp C++. Đương nhiên là, chúng ta vẫn có thể tạo ra một biến trong OTcl tương ứng với biến thành viên tĩnh của mỗi đối tượng C++, tuy nhiên điều này lại hoàn toàn phá hỏng đi ý nghĩa của biến thành viên tĩnh.

Chúng ta không thể giải quyết vấn đề kết hợp biến này theo các giải pháp tương tự như việc kết hợp biến trong TclObject, bởi vì cơ chế kết hợp biến trong TclObject dựa trên lớp InstVar mà lớp này trong TclCl lại đòi hỏi sự hiện diện của một đối tượng TclObject cụ thể. Tuy nhiên, chúng ta có thể tạo ra một hàm thuộc lớp TclClass tương ứng và thực hiện việc truy xuất tới biến thành viên tĩnh của lớp C++ thông qua hàm này. Các bước để thực hiện việc này như sau có thể tham khảo trong tài liệu hướng dẫn NS, trang 30.


2.6 Lớp TclCommand


Lớp TclCommand đưa ra cơ chế cho phép NS chuyển các câu lệnh đơn giản tới bộ thông dịch, và các câu lênh này có thể được thực hiện bởi bộ thông dịch trong môi trường chung.

Có hai hàm: ns-random và ns-version thường được sử dụng trong môi trường chung, cả hai hàm này được khởi tạo bởi hàm init_misc(void), và hàm init_misc được gọi bởi hàm Tcl_AppInit(void) trong quá trình NS được nạp vào bộ nhớ.

Lớp VersionCommand, định nghĩa hàm ns-version, hàm này không có tham số đầu vào, và trả về phiên bản NS hiện thời dạng chuỗi.

Lớp RandomCommand, định nghĩa hàm ns-random, không tham số đầu vào, trả về một giá trị nguyên ngẫu nhiên nằm trong khoảng [0, 231-1].

Ví dụ:

% ns-version

2.0a12

% ns-random

12334556

2.7 Lớp EmbeddedTcl


NS cho phép phát triển các chức năng hoặc bằng mã biên dịch hoặc bằng mã thông dịch, các mã này sẽ được kiểm tra khi khởi động NS. Chẳng hạn như các thư viện mã ~tclcl/tcl-object.tcl, ~ns/tcl/lib/*.tcl. Việc nạp và kiểm tra các mã kịch bản này sẽ được thực hiện thông qua các đối tượng trong lớp EmbeddedTcl.

Cách đơn giản nhất để mở rộng NS là thêm các mã OTcl hoặc là vào file tcl-object.tcl hoặc vào các kịch bản trong thư mục ~ns/tcl/lib/. Cần lưu ý rằng, đối với trường hợp thứ hai, NS nạp file ~ns/tcl/lib/ns-lib.tcl một cách tự động, vì vậy người lập trình phải thêm vào file này hai dòng để đảm bảo kịch bản của mình được tự động nạp vào lúc NS khởi động. Ví dụ để thêm vào kịch bản tcl/mcast/srm.tcl định nghĩa các thủ tục cho phép chạy SRM, trong file ns-lib.tcl xuất hiện dòng lệnh



source tcl/mcast/srm.tcl

Có ba điểm cần lưu ý đối với mã EmbeddedTcl là: thứ nhất nếu trong quá trình kiểm tra mã bị lỗi thì ns sẽ không chạy, thứ hai người sử dụng có thể ghi đè lên bất kỳ đoạn mã nào trong thư viện mã, cụ thể là chúng có thể được thay đổi. Cuối dùng, sau khi thêm các kịch bản vào ns-lib.tcl, cũng như mỗi lần sửa đổi sau đó, người sử dụng phải biên dịch lại ns để những thay đổi đó có hiệu lực


2.8 Lớp InstVar


Lớp InstVar định nghĩa các hàm và đưa ra các cơ chế để kết hợp một biến C++ trong đối tượng biên dịch với một biến OTcl xác định trong đối tượng thông dịch tương ứng. Việc kết hợp này cho phép giá trị của biến có thể được thay đổi trong cả hai môi trường: thông dịch và biên dịch ở mọi thời điểm.

Có năm lớp biến: InstVarReal, InstVarTime, InstVarBandwidth, InstVarInt và InstVarBool, được sử dụng để kết hợp 5 kiểu biến: thực, nguyên, thời gian, logic và băng thông tương ứng.


3. Lớp Simlator


Tất cả bộ mô phỏng được mô tả bởi lớp Tcl của bộ mô phỏng. Nó cung cấp một tập các giao diện cho việc đặt cấu hình mô phỏng và lựa chọn kiểu của bộ định trình sự kiện sử dụng để điều khiển việc mô phỏng. Một kịch bản mô phỏng nói chung bắt đầu bởi việc tạo ra một lớp cụ thể và gọi các phương thức khác nhau để tạo các nút, các cấu trúc liên kết mạng và cấu hình các khía cạnh khác của sự mô phỏng.

3.1 Khởi tạo bộ mô phỏng


Khi một đối tượng mô phỏng được tạo ra trong tcl, thủ tục khởi tạo được thực hiện theo các thao tác:

- Khởi tạo định dạng gói (gọi hàm create_packetformat)

- Tạo bộ định trình (mặc định là bộ định trình lịch)

- Tạo một "tác tử rỗng"(null agent - nơi để hủy gói trong ở các ví trí khác nhau)

Sự khởi tạo định dạng gói thiết lập các trường dư với các gói được sử dụng trong suốt quá trình mô phỏng. Bộ định trình thực hiện mô phỏng theo cách điều khiển sự kiện và có thể được thay thế bởi bộ định trình luân phiên mà ở đó cung cấp một vài ngữ nghĩa khác nhau (xem các phần dưới đây để có thêm chi tiết)

tác tử rỗng được tạo ra theo lời gọi:

set nullAgent_ [new Agent/Null]

Tác tử này nói chung là hữu ích như là một nơi để hủy gói hoặc như là một cái đích cho các gói không được đếm hoặc được ghi lại.



Каталог: Hoc%20Tap -> Cong%20Nghe%20Wan
Hoc%20Tap -> Point to Point Protocol (ppp) ppp được xây dựng dựa trên nền tảng giao thức điều khiển truyền dữ liệu lớp cao (High-Level Data link Control (hdlc)) nó định ra các chuẩn cho việc truyền dữ liệu các giao diện dte và dce của mạng wan như V
Hoc%20Tap -> Cấu hình Application Port-Mapping với cbac mục tiêu: Cấu hình để router nhận ra các ứng dụng không sử dụng port chuẩn. Mô hình
Hoc%20Tap -> ĐẢng cộng sản việt nam đẢng ủy phưỜng 04
Hoc%20Tap -> CiR = Bc / Tc
Hoc%20Tap -> Mean command : ip ospf mtu-ignore Diagram : Problems
Hoc%20Tap -> R1# ip route 0 0 0 0 FastEthernet0/0 R2# show run
Cong%20Nghe%20Wan -> Câu hỏi về kết nối chi nhánh về Head Office dùng wan
Cong%20Nghe%20Wan -> 1/ Cáp đồng gshdsl
Cong%20Nghe%20Wan -> 1. xu hưỚng chuẩn hoá VÀ CẤu trúc giao thứC

tải về 0.59 Mb.

Chia sẻ với bạn bè của bạn:
1   2   3   4   5   6   7   8   9   ...   19




Cơ sở dữ liệu được bảo vệ bởi bản quyền ©hocday.com 2024
được sử dụng cho việc quản lý

    Quê hương