1 Ekim 2008 Çarşamba

Tcl dosyalarına komut yollama..

    sprintf(out, "%s recv %d %3.1f", name(),
hdrip->src_.addr_ >> Address::instance().NodeShift_[1],
(Scheduler::instance().clock()-hdr->send_time) * 1000);
Tcl& tcl = Tcl::instance();
tcl.eval(out);

Yukarıdaki kodun bir agent' ın C kodlarında yazıldığını varsayarsak bu durum da bu satıra gelindiğinde, nsin çalışmasına neden olan Tcl dosyası içerisinde yani simülasyonun yapıldığı tcl dosyası içerisinde, recv isimli bir prosedür aranacaktır.
Yani bu yolla C içerisinden Tcl içerisindeki bir fonksiyon çağrılabilir. Eğer Tcl içerisine yazılmış olan fonksiyondan bir değer geridöndürmemiz gerekse idi bunu da tcl.result(void) fonksiyonunu bir değişkene atayarak yapabilirdik.

Bu arada Packet* pkt = allocpkt(); komut verildiğinde yeni bir paket oluşturulur. Ancak bu komutu içinden çağırdığımız agent, muhtemelen başka agentlardan türemiştir ve her agent kendi sınıfına ait olan header kısmını doldurup yollar. Örneğin TCP agent kendi başlığını doldurmadan önce zaten başlığın common header ve IP header kısımları doldurulmuştur.

Hiç yorum yok:

Yorum Gönder