author | Tom Henderson <tomh@tomh.org> |
Fri, 18 May 2012 13:53:24 -0700 | |
changeset 8772 | ce0699130fc4 |
parent 8771 | 6cdcf5eb2048 |
child 8906 | 11398e7abe77 |
permissions | -rw-r--r-- |
7751
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1 |
.. include:: replace.txt |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4 |
======================================================================================== |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
5 |
Translated for portuguese by the students of the inter-institutional doctorate program of IME-USP/UTFPR-CM. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
6 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
7 |
Traduzido para o português pelos alunos do programa de doutorado inter institucional do Instituto de Matemática e Estatística da Universidade de São Paulo --- IME-USP em parceria com a Universidade Tecnológica Federal do Paraná - Campus Campo Mourão --- UTFPR-CM: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
8 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
9 |
* Frank Helbert (frank@ime.usp.br); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
10 |
* Luiz Arthur Feitosa dos Santos (luizsan@ime.usp.br); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
11 |
* Rodrigo Campiolo (campiolo@ime.usp.br). |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
12 |
======================================================================================== |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
13 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
14 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
15 |
Tracing |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
16 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
17 |
Rastreamento |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
18 |
------------ |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
19 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
20 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
21 |
Background |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
22 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
23 |
Introdução |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
24 |
********** |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
25 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
26 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
27 |
As mentioned in the Using the Tracing System section, the whole point of running |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
28 |
an |ns3| simulation is to generate output for study. You have two basic |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
29 |
strategies to work with in |ns3|: using generic pre-defined bulk output |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
30 |
mechanisms and parsing their content to extract interesting information; or |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
31 |
somehow developing an output mechanism that conveys exactly (and perhaps only) |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
32 |
the information wanted. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
33 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
34 |
Como abordado na seção Usando o Sistema de Rastreamento, o objetivo principal de uma |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
35 |
simulação no |ns3| é a geração de saída para estudo. Há duas estratégias básicas: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
36 |
usar mecanismos predefinidos de saída e processar o conteúdo para extrair informações |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
37 |
relevantes; ou desenvolver mecanismos de saída que resultam somente ou exatamente na |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
38 |
informação pretendida. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
39 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
40 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
41 |
Using pre-defined bulk output mechanisms has the advantage of not requiring any |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
42 |
changes to |ns3|, but it does require programming. Often, pcap or NS_LOG |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
43 |
output messages are gathered during simulation runs and separately run through |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
44 |
scripts that use grep, sed or awk to parse the messages and reduce and transform |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
45 |
the data to a manageable form. Programs must be written to do the |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
46 |
transformation, so this does not come for free. Of course, if the information |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
47 |
of interest in does not exist in any of the pre-defined output mechanisms, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
48 |
this approach fails. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
49 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
50 |
Usar mecanismos predefinidos de saída possui a vantagem de não necessitar modificações |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
51 |
no |ns3|, mas requer programação. Geralmente, as mensagens de saída do pcap ou ``NS_LOG`` |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
52 |
são coletadas durante a execução da simulação e processadas separadamente por códigos (`scripts`) que usam `grep`, `sed` ou `awk` para reduzir e transformar os dados para uma forma mais simples de gerenciar. Há o custo do desenvolvimento de programas para realizar as transformações e em algumas situações a informação de interesse pode não estar contida em nenhuma das saídas, logo, a abordagem falha. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
53 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
54 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
55 |
If you need to add some tidbit of information to the pre-defined bulk mechanisms, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
56 |
this can certainly be done; and if you use one of the |ns3| mechanisms, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
57 |
you may get your code added as a contribution. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
58 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
59 |
Se precisarmos adicionar o mínimo de informação para os mecanismos predefinidos de saída, isto certamente pode ser feito e se usarmos os mecanismos do |ns3|, podemos |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
60 |
ter nosso código adicionado como uma contribuição. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
61 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
62 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
63 |
|ns3| provides another mechanism, called Tracing, that avoids some of the |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
64 |
problems inherent in the bulk output mechanisms. It has several important |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
65 |
advantages. First, you can reduce the amount of data you have to manage by only |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
66 |
tracing the events of interest to you (for large simulations, dumping everything |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
67 |
to disk for post-processing can create I/O bottlenecks). Second, if you use this |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
68 |
method, you can control the format of the output directly so you avoid the |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
69 |
postprocessing step with sed or awk script. If you desire, your output can be |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
70 |
formatted directly into a form acceptable by gnuplot, for example. You can add |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
71 |
hooks in the core which can then be accessed by other users, but which will |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
72 |
produce no information unless explicitly asked to do so. For these reasons, we |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
73 |
believe that the |ns3| tracing system is the best way to get information |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
74 |
out of a simulation and is also therefore one of the most important mechanisms |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
75 |
to understand in |ns3|. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
76 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
77 |
O |ns3| fornece outro mecanismo, chamado Rastreamento (*Tracing*), que evita alguns dos |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
78 |
problemas associados com os mecanismos de saída predefinidos. Há várias vantagens. Primeiro, redução da quantidade de dados para gerenciar (em simulações grandes, armazenar toda saída no disco pode gerar gargalos de Entrada/Saída). Segundo, o formato da saída pode ser controlado diretamente evitando o pós-processamento com códigos `sed` ou `awk`. Se desejar, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
79 |
a saída pode ser processada diretamente para um formato reconhecido pelo `gnuplot`, por exemplo. Podemos adicionar ganchos ("`hooks`") no núcleo, os quais podem ser acessados por outros usuários, mas que não produzirão nenhuma informação exceto que sejam explicitamente solicitados a produzir. Por essas razões, acreditamos que o sistema de rastreamento do |ns3| é a melhor forma de obter informações fora da simulação, portanto é um dos mais importantes mecanismos para ser compreendido no |ns3|. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
80 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
81 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
82 |
Blunt Instruments |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
83 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
84 |
Métodos Simples |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
85 |
+++++++++++++++ |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
86 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
87 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
88 |
There are many ways to get information out of a program. The most |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
89 |
straightforward way is to just directly print the information to the standard |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
90 |
output, as in, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
91 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
92 |
Há várias formas de obter informação após a finalização de um programa. A mais direta |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
93 |
é imprimir a informação na saída padrão, como no exemplo, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
94 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
95 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
96 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
97 |
#include <iostream> |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
98 |
... |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
99 |
void |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
100 |
SomeFunction (void) |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
101 |
{ |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
102 |
uint32_t x = SOME_INTERESTING_VALUE; |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
103 |
... |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
104 |
std::cout << "The value of x is " << x << std::endl; |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
105 |
... |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
106 |
} |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
107 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
108 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
109 |
Nobody is going to prevent you from going deep into the core of |ns3| and |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
110 |
adding print statements. This is insanely easy to do and, after all, you have |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
111 |
complete control of your own |ns3| branch. This will probably not turn |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
112 |
out to be very satisfactory in the long term, though. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
113 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
114 |
Ninguém impedirá que editemos o núcleo do |ns3| e adicionemos códigos de impressão. Isto é simples de fazer, além disso temos controle e acesso total ao código fonte do |ns3|. Entretanto, pensando no futuro, isto não é muito interessante. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
115 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
116 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
117 |
As the number of print statements increases in your programs, the task of |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
118 |
dealing with the large number of outputs will become more and more complicated. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
119 |
Eventually, you may feel the need to control what information is being printed |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
120 |
in some way; perhaps by turning on and off certain categories of prints, or |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
121 |
increasing or decreasing the amount of information you want. If you continue |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
122 |
down this path you may discover that you have re-implemented the ``NS_LOG`` |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
123 |
mechanism. In order to avoid that, one of the first things you might consider |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
124 |
is using ``NS_LOG`` itself. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
125 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
126 |
Conforme aumentarmos o número de comandos de impressão em nossos programas, ficará mais difícil tratar a grande quantidade de saídas. Eventualmente, precisaremos controlar de alguma maneira qual a informação será impressa; talvez habilitando ou não determinadas categorias de saídas, ou aumentando ou diminuindo a quantidade de informação desejada. Se continuarmos com esse processo, descobriremos depois de um tempo que, reimplementamos o mecanismo ``NS_LOG``. Para evitar isso, utilize o próprio ``NS_LOG``. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
127 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
128 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
129 |
We mentioned above that one way to get information out of |ns3| is to |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
130 |
parse existing NS_LOG output for interesting information. If you discover that |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
131 |
some tidbit of information you need is not present in existing log output, you |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
132 |
could edit the core of |ns3| and simply add your interesting information |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
133 |
to the output stream. Now, this is certainly better than adding your own |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
134 |
print statements since it follows |ns3| coding conventions and could |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
135 |
potentially be useful to other people as a patch to the existing core. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
136 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
137 |
Como abordado anteriormente, uma maneira de obter informação de saída do |ns3| é |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
138 |
processar a saída do ``NS_LOG``, filtrando as informações relevantes. Se a informação |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
139 |
não está presente nos registros existentes, pode-se editar o núcleo do |ns3| e |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
140 |
adicionar ao fluxo de saída a informação desejada. Claro, isto é muito melhor |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
141 |
que adicionar comandos de impressão, desde que seguindo as convenções de codificação |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
142 |
do |ns3|, além do que isto poderia ser potencialmente útil a outras pessoas. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
143 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
144 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
145 |
Let's pick a random example. If you wanted to add more logging to the |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
146 |
|ns3| TCP socket (``tcp-socket-base.cc``) you could just add a new |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
147 |
message down in the implementation. Notice that in TcpSocketBase::ReceivedAck() |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
148 |
there is no log message for the no ack case. You could simply add one, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
149 |
changing the code from: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
150 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
151 |
Vamos analisar um exemplo, adicionando mais informações de registro ao `socket` TCP do arquivo ``tcp-socket-base.cc``, para isto vamos acrescentando uma nova mensagem de registro na implementação. Observe que em ``TcpSocketBase::ReceivedAck()`` não existem mensagem de registro para casos sem o *ACK*, então vamos adicionar uma da seguinte forma: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
152 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
153 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
154 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
155 |
/** Processa o mais recente ACK recebido */ |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
156 |
void |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
157 |
TcpSocketBase::ReceivedAck (Ptr<Packet> packet, const TcpHeader& tcpHeader) |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
158 |
{ |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
159 |
NS_LOG_FUNCTION (this << tcpHeader); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
160 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
161 |
// ACK Recebido. Compara o número ACK com o mais alto seqno não confirmado |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
162 |
if (0 == (tcpHeader.GetFlags () & TcpHeader::ACK)) |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
163 |
{ // Ignora se não há flag ACK |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
164 |
} |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
165 |
... |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
166 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
167 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
168 |
to add a new ``NS_LOG_LOGIC`` in the appropriate statement: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
169 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
170 |
para adicionar um novo ``NS_LOG_LOGIC`` na sentença apropriada: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
171 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
172 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
173 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
174 |
/** Processa o mais recente ACK recebido */ |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
175 |
void |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
176 |
TcpSocketBase::ReceivedAck (Ptr<Packet> packet, const TcpHeader& tcpHeader) |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
177 |
{ |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
178 |
NS_LOG_FUNCTION (this << tcpHeader); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
179 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
180 |
// ACK Recebido. Compara o número ACK com o mais alto seqno não confirmado |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
181 |
if (0 == (tcpHeader.GetFlags () & TcpHeader::ACK)) |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
182 |
{ // Ignora se não há flag ACK |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
183 |
NS_LOG_LOGIC ("TcpSocketBase " << this << " sem flag ACK"); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
184 |
} |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
185 |
... |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
186 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
187 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
188 |
This may seem fairly simple and satisfying at first glance, but something to |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
189 |
consider is that you will be writing code to add the ``NS_LOG`` statement |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
190 |
and you will also have to write code (as in grep, sed or awk scripts) to parse |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
191 |
the log output in order to isolate your information. This is because even |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
192 |
though you have some control over what is output by the logging system, you |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
193 |
only have control down to the log component level. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
194 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
195 |
Isto pode parecer simples e satisfatório a primeira vista, mas lembre-se que nós escreveremos |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
196 |
código para adicionar ao ``NS_LOG`` e para processar a saída com a finalidade de isolar |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
197 |
a informação de interesse. Isto porque o controle é limitado ao nível do componente de registro. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
198 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
199 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
200 |
If you are adding code to an existing module, you will also have to live with the |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
201 |
output that every other developer has found interesting. You may find that in |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
202 |
order to get the small amount of information you need, you may have to wade |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
203 |
through huge amounts of extraneous messages that are of no interest to you. You |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
204 |
may be forced to save huge log files to disk and process them down to a few lines |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
205 |
whenever you want to do anything. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
206 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
207 |
Se cada desenvolvedor adicionar códigos de saída para um módulo existente, logo conviveremos com a saída que outro desenvolvedor achou interessante. É descobriremos que para obter uma pequena quantidade de informação, precisaremos produzir uma volumosa quantidade de mensagens sem nenhuma relevância (devido aos comandos de saída de vários desenvolvedores). Assim seremos forçados a gerar arquivos de registros gigantescos no disco e processá-los para obter poucas linhas de nosso interesse. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
208 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
209 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
210 |
Since there are no guarantees in |ns3| about the stability of ``NS_LOG`` |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
211 |
output, you may also discover that pieces of log output on which you depend |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
212 |
disappear or change between releases. If you depend on the structure of the |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
213 |
output, you may find other messages being added or deleted which may affect your |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
214 |
parsing code. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
215 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
216 |
Como não há nenhuma garantia no |ns3| sobre a estabilidade da saída do ``NS_LOG``, podemos descobrir que partes do registro de saída, que dependíamos, desapareceram ou mudaram entre versões. Se dependermos da estrutura da saída, podemos encontrar outras mensagens sendo adicionadas ou removidas que podem afetar seu código de processamento. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
217 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
218 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
219 |
For these reasons, we consider prints to ``std::cout`` and NS_LOG messages |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
220 |
to be quick and dirty ways to get more information out of |ns3|. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
221 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
222 |
Por estas razões, devemos considerar o uso do ``std::cout`` e as mensagens ``NS_LOG`` como formas rápidas e porém sujas de obter informação da saída no |ns3|. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
223 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
224 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
225 |
It is desirable to have a stable facility using stable APIs that allow one to |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
226 |
reach into the core system and only get the information required. It is |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
227 |
desirable to be able to do this without having to change and recompile the |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
228 |
core system. Even better would be a system that notified the user when an item |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
229 |
of interest changed or an interesting event happened so the user doesn't have |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
230 |
to actively poke around in the system looking for things. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
231 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
232 |
Na grande maioria dos casos desejamos ter um mecanismo estável, usando APIs que permitam acessar o núcleo do sistema e obter somente informações interessantes. Isto deve ser possível sem que exista a necessidade de alterar e recompilar o núcleo do sistema. Melhor ainda seria se um sistema notificasse o usuário quando um item de interesse fora modificado ou um evento de interesse aconteceu, pois o usuário não teria que constantemente vasculhar o sistema procurando por coisas. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
233 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
234 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
235 |
The |ns3| tracing system is designed to work along those lines and is |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
236 |
well-integrated with the Attribute and Config subsystems allowing for relatively |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
237 |
simple use scenarios. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
238 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
239 |
O sistema de rastreamento do |ns3| é projetado para trabalhar seguindo essas premissas e é |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
240 |
integrado com os subsistemas de Atributos (*Attribute*) e Configuração (*Config*) permitindo cenários de uso simples. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
241 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
242 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
243 |
Overview |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
244 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
245 |
Visão Geral |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
246 |
*********** |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
247 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
248 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
249 |
The ns-3 tracing system is built on the concepts of independent tracing sources |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
250 |
and tracing sinks; along with a uniform mechanism for connecting sources to sinks. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
251 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
252 |
O sistema de rastreamento do |ns3| é baseado no conceito independente origem do rastreamento e destino do rastreamento. O |ns3| utiliza um mecanismo uniforme para conectar origens a destinos. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
253 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
254 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
255 |
Trace sources are entities that can signal events that happen in a simulation and |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
256 |
provide access to interesting underlying data. For example, a trace source could |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
257 |
indicate when a packet is received by a net device and provide access to the |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
258 |
packet contents for interested trace sinks. A trace source might also indicate |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
259 |
when an interesting state change happens in a model. For example, the congestion |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
260 |
window of a TCP model is a prime candidate for a trace source. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
261 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
262 |
As origens do rastreamento (*trace source*) são entidades que podem assinalar eventos que ocorrem na simulação e fornecem acesso a dados de baixo nível. Por exemplo, uma origem do rastreamento poderia indicar quando um pacote é recebido por um dispositivo de rede e prove acesso ao conteúdo do pacote aos interessados no destino do rastreamento. Uma origem do rastreamento pode também indicar quando uma mudança de estado ocorre em um modelo. Por exemplo, a janela de congestionamento do modelo TCP é um forte candidato para uma origem do rastreamento. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
263 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
264 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
265 |
Trace sources are not useful by themselves; they must be connected to other pieces |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
266 |
of code that actually do something useful with the information provided by the source. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
267 |
The entities that consume trace information are called trace sinks. Trace sources |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
268 |
are generators of events and trace sinks are consumers. This explicit division |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
269 |
allows for large numbers of trace sources to be scattered around the system in |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
270 |
places which model authors believe might be useful. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
271 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
272 |
A origem do rastreamento não são úteis sozinhas; elas devem ser conectadas a outras partes de código que fazem algo útil com a informação provida pela origem. As entidades que consomem a informação de rastreamento são chamadas de destino do rastreamento (*trace sinks*). As origens de rastreamento são geradores de eventos e destinos de rastreamento são consumidores. Esta divisão explícita permite que inúmeras origens de rastreamento estejam dispersas no sistema em locais que os autores do modelo acreditam ser úteis. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
273 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
274 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
275 |
There can be zero or more consumers of trace events generated by a trace source. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
276 |
One can think of a trace source as a kind of point-to-multipoint information link. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
277 |
Your code looking for trace events from a particular piece of core code could |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
278 |
happily coexist with other code doing something entirely different from the same |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
279 |
information. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
280 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
281 |
Pode haver zero ou mais consumidores de eventos de rastreamento gerados por uma origem do rastreamento. Podemos pensar em uma origem do rastreamento como um tipo de ligação de informação ponto-para-multiponto. Seu código buscaria por eventos de rastreamento de uma parte específica do código do núcleo e poderia coexistir com outro código que faz algo inteiramente diferente com a mesma informação. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
282 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
283 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
284 |
Unless a user connects a trace sink to one of these sources, nothing is output. By |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
285 |
using the tracing system, both you and other people at the same trace source are |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
286 |
getting exactly what they want and only what they want out of the system. Neither |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
287 |
of you are impacting any other user by changing what information is output by the |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
288 |
system. If you happen to add a trace source, your work as a good open-source |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
289 |
citizen may allow other users to provide new utilities that are perhaps very useful |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
290 |
overall, without making any changes to the |ns3| core. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
291 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
292 |
Ao menos que um usuário conecte um destino do rastreamento a uma destas origens, nenhuma saída é produzida. Usando o sistema de rastreamento, todos conectados em uma mesma origem do rastreamento estão obtendo a informação que desejam do sistema. Um usuário não afeta os outros alterando a informação provida pela origem. Se acontecer de adicionarmos uma origem do rastreamento, seu trabalho como um bom cidadão utilizador de código livre pode permitir que outros usuários forneçam novas utilidades para todos, sem fazer qualquer modificação no núcleo do |ns3|. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
293 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
294 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
295 |
A Simple Low-Level Example |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
296 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
297 |
Um Exemplo Simples de Baixo Nível |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
298 |
+++++++++++++++++++++++++++++++++ |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
299 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
300 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
301 |
Let's take a few minutes and walk through a simple tracing example. We are going |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
302 |
to need a little background on Callbacks to understand what is happening in the |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
303 |
example, so we have to take a small detour right away. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
304 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
305 |
Vamos gastar alguns minutos para entender um exemplo de rastreamento simples. Primeiramente |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
306 |
precisamos compreender o conceito de *callbacks* para entender o que está acontecendo |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
307 |
no exemplo. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
308 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
309 |
*Callbacks* |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
310 |
~~~~~~~~~~~ |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
311 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
312 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
313 |
The goal of the Callback system in |ns3| is to allow one piece of code to |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
314 |
call a function (or method in C++) without any specific inter-module dependency. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
315 |
This ultimately means you need some kind of indirection -- you treat the address |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
316 |
of the called function as a variable. This variable is called a pointer-to-function |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
317 |
variable. The relationship between function and pointer-to-function pointer is |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
318 |
really no different that that of object and pointer-to-object. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
319 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
320 |
O objetivo do sistema de *Callback*, no |ns3|, é permitir a uma parte do código invocar |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
321 |
uma função (ou método em C++) sem qualquer dependência entre módulos. Isto é utilizado para prover algum tipo de indireção -- desta forma tratamos o endereço da chamada de função como uma variável. Esta variável é denominada variável de ponteiro-para-função. O relacionamento entre função e ponteiro-para-função não é tão diferente que de um objeto e ponteiro-para-objeto. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
322 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
323 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
324 |
In C the canonical example of a pointer-to-function is a |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
325 |
pointer-to-function-returning-integer (PFI). For a PFI taking one int parameter, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
326 |
this could be declared like, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
327 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
328 |
Em C, o exemplo clássico de um ponteiro-para-função é um ponteiro-para-função-retornando-inteiro (PFI). Para um PFI ter um parâmetro inteiro, poderia ser declarado como, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
329 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
330 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
331 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
332 |
int (*pfi)(int arg) = 0; |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
333 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
334 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
335 |
What you get from this is a variable named simply "pfi" that is initialized |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
336 |
to the value 0. If you want to initialize this pointer to something meaningful, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
337 |
you have to have a function with a matching signature. In this case, you could |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
338 |
provide a function that looks like, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
339 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
340 |
O código descreve uma variável nomeada como "pfi" que é inicializada com o valor 0. Se quisermos inicializar este ponteiro com um valor significante, temos que ter uma função com uma assinatura idêntica. Neste caso, poderíamos prover uma função como, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
341 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
342 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
343 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
344 |
int MyFunction (int arg) {} |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
345 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
346 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
347 |
If you have this target, you can initialize the variable to point to your |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
348 |
function: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
349 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
350 |
Dessa forma, podemos inicializar a variável apontando para uma função: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
351 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
352 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
353 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
354 |
pfi = MyFunction; |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
355 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
356 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
357 |
You can then call MyFunction indirectly using the more suggestive form of |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
358 |
the call, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
359 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
360 |
Podemos então chamar ``MyFunction`` indiretamente, usando uma forma mais clara da chamada, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
361 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
362 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
363 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
364 |
int result = (*pfi) (1234); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
365 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
366 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
367 |
This is suggestive since it looks like you are dereferencing the function |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
368 |
pointer just like you would dereference any pointer. Typically, however, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
369 |
people take advantage of the fact that the compiler knows what is going on |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
370 |
and will just use a shorter form, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
371 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
372 |
É uma forma mais clara, pois é como se estivéssemos dereferenciando o ponteiro da função como dereferenciamos qualquer outro ponteiro. Tipicamente, todavia, usa-se uma forma mais curta pois o compilador sabe o que está fazendo, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
373 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
374 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
375 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
376 |
int result = pfi (1234); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
377 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
378 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
379 |
This looks like you are calling a function named "pfi," but the compiler is |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
380 |
smart enough to know to call through the variable ``pfi`` indirectly to |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
381 |
the function ``MyFunction``. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
382 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
383 |
Esta forma é como se estivessemos chamando uma função nomeada "pfi", mas o compilador reconhece que é uma chamada indireta da função ``MyFunction`` por meio da variável ``pfi``. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
384 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
385 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
386 |
Conceptually, this is almost exactly how the tracing system will work. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
387 |
Basically, a trace source *is* a callback. When a trace sink expresses |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
388 |
interest in receiving trace events, it adds a Callback to a list of Callbacks |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
389 |
internally held by the trace source. When an interesting event happens, the |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
390 |
trace source invokes its ``operator()`` providing zero or more parameters. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
391 |
The ``operator()`` eventually wanders down into the system and does something |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
392 |
remarkably like the indirect call you just saw. It provides zero or more |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
393 |
parameters (the call to "pfi" above passed one parameter to the target function |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
394 |
``MyFunction``. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
395 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
396 |
Conceitualmente, é quase exatamente como o sistema de rastreamento funciona. Basicamente, uma origem do rastreamento *é* um *callback*. Quando um destino do rastreamento expressa interesse em receber eventos de rastreamento, ela adiciona a *callback* para a lista de *callbacks* mantida internamente pela origem do rastreamento. Quando um evento de interesse ocorre, a origem do rastreamento invoca seu ``operator()`` provendo zero ou mais parâmetros. O ``operator()`` eventualmente percorre o sistema e faz uma chamada indireta com zero ou mais parâmetros. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
397 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
398 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
399 |
The important difference that the tracing system adds is that for each trace |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
400 |
source there is an internal list of Callbacks. Instead of just making one |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
401 |
indirect call, a trace source may invoke any number of Callbacks. When a trace |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
402 |
sink expresses interest in notifications from a trace source, it basically just |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
403 |
arranges to add its own function to the callback list. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
404 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
405 |
Uma diferença importante é que o sistema de rastreamento adiciona para cada origem do rastreamento uma lista interna de *callbacks*. Ao invés de apenas fazer uma chamada indireta, uma origem do rastreamento pode invocar qualquer número de *callbacks*. Quando um destino do rastreamento expressa interesse em notificações de uma origem, ela adiciona sua própria função para a lista de *callback*. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
406 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
407 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
408 |
If you are interested in more details about how this is actually arranged in |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
409 |
|ns3|, feel free to peruse the Callback section of the manual. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
410 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
411 |
Estando interessado em mais detalhes sobre como é organizado o sistema de *callback* no |ns3|, leia a seção *Callback* do manual. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
412 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
413 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
414 |
Example Code |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
415 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
416 |
Código de Exemplo |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
417 |
~~~~~~~~~~~~~~~~~ |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
418 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
419 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
420 |
We have provided some code to implement what is really the simplest example |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
421 |
of tracing that can be assembled. You can find this code in the tutorial |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
422 |
directory as ``fourth.cc``. Let's walk through it. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
423 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
424 |
Analisaremos uma implementação simples de um exemplo de rastreamento. Este código está no diretório do tutorial, no arquivo ``fourth.cc``. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
425 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
426 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
427 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
428 |
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */ |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
429 |
/* |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
430 |
* This program is free software; you can redistribute it and/or modify |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
431 |
* it under the terms of the GNU General Public License version 2 as |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
432 |
* published by the Free Software Foundation; |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
433 |
* |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
434 |
* This program is distributed in the hope that it will be useful, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
435 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
436 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
437 |
* GNU General Public License for more details. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
438 |
* |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
439 |
* You should have received a copy of the GNU General Public License |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
440 |
* along with this program; if not, write to the Free Software |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
441 |
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
442 |
*/ |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
443 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
444 |
#include "ns3/object.h" |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
445 |
#include "ns3/uinteger.h" |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
446 |
#include "ns3/traced-value.h" |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
447 |
#include "ns3/trace-source-accessor.h" |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
448 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
449 |
#include <iostream> |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
450 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
451 |
using namespace ns3; |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
452 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
453 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
454 |
Most of this code should be quite familiar to you. As mentioned above, the |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
455 |
trace system makes heavy use of the Object and Attribute systems, so you will |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
456 |
need to include them. The first two includes above bring in the declarations |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
457 |
for those systems explicitly. You could use the core module header, but this |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
458 |
illustrates how simple this all really is. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
459 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
460 |
A maior parte deste código deve ser familiar, pois como já abordado, o sistema de rastreamento faz uso constante dos sistemas Objeto (*Object*) e Atributos (*Attribute*), logo é necessário incluí-los. As duas primeiras inclusões (*include*) declaram explicitamente estes dois sistemas. Poderíamos usar o cabeçalho (*header*) do módulo núcleo, este exemplo é simples. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
461 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
462 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
463 |
The file, ``traced-value.h`` brings in the required declarations for tracing |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
464 |
of data that obeys value semantics. In general, value semantics just means that |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
465 |
you can pass the object around, not an address. In order to use value semantics |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
466 |
at all you have to have an object with an associated copy constructor and |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
467 |
assignment operator available. We extend the requirements to talk about the set |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
468 |
of operators that are pre-defined for plain-old-data (POD) types. Operator=, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
469 |
operator++, operator---, operator+, operator==, etc. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
470 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
471 |
O arquivo ``traced-value.h`` é uma declaração obrigatória para rastreamento de dados que usam passagem por valor. Na passagem por valor é passada uma cópia do objeto e não um endereço. Com a finalidade de usar passagem por valor, precisa-se de um objeto com um construtor de cópia associado e um operador de atribuição. O conjunto de operadores predefinidos para tipos de dados primitivos (*plain-old-data*) são ++, ---, +, ==, etc. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
472 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
473 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
474 |
What this all really means is that you will be able to trace changes to a C++ |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
475 |
object made using those operators. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
476 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
477 |
Isto significa que somos capazes de rastrear alterações em um objeto C++ usando estes operadores. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
478 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
479 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
480 |
Since the tracing system is integrated with Attributes, and Attributes work |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
481 |
with Objects, there must be an |ns3| ``Object`` for the trace source |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
482 |
to live in. The next code snippet declares and defines a simple Object we can |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
483 |
work with. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
484 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
485 |
Como o sistema de rastreamento é integrado com Atributos e este trabalham com Objetos, deve obrigatoriamente existir um ``Object`` |ns3| para cada origem do rastreamento. O próximo código define e declara um Objeto. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
486 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
487 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
488 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
489 |
class MyObject : public Object |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
490 |
{ |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
491 |
public: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
492 |
static TypeId GetTypeId (void) |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
493 |
{ |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
494 |
static TypeId tid = TypeId ("MyObject") |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
495 |
.SetParent (Object::GetTypeId ()) |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
496 |
.AddConstructor<MyObject> () |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
497 |
.AddTraceSource ("MyInteger", |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
498 |
"An integer value to trace.", |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
499 |
MakeTraceSourceAccessor (&MyObject::m_myInt)) |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
500 |
; |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
501 |
return tid; |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
502 |
} |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
503 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
504 |
MyObject () {} |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
505 |
TracedValue<int32_t> m_myInt; |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
506 |
}; |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
507 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
508 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
509 |
The two important lines of code, above, with respect to tracing are the |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
510 |
``.AddTraceSource`` and the ``TracedValue`` declaration of ``m_myInt``. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
511 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
512 |
As duas linhas mais importantes com relação ao rastreamento são ``.AddTraceSource`` e a declaração ``TracedValue`` do ``m_myInt``. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
513 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
514 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
515 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
516 |
The ``.AddTraceSource`` provides the "hooks" used for connecting the trace |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
517 |
source to the outside world through the config system. The ``TracedValue`` |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
518 |
declaration provides the infrastructure that overloads the operators mentioned |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
519 |
above and drives the callback process. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
520 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
521 |
O método ``.AddTraceSource`` provê a "ligação" usada para conectar a origem do rastreamento com o mundo externo, por meio do sistema de configuração. A declaração ``TracedValue`` provê a infraestrutura que sobrecarrega os operadores abordados anteriormente e gerencia o processo de *callback*. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
522 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
523 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
524 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
525 |
void |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
526 |
IntTrace (int32_t oldValue, int32_t newValue) |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
527 |
{ |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
528 |
std::cout << "Traced " << oldValue << " to " << newValue << std::endl; |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
529 |
} |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
530 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
531 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
532 |
This is the definition of the trace sink. It corresponds directly to a callback |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
533 |
function. Once it is connected, this function will be called whenever one of the |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
534 |
overloaded operators of the ``TracedValue`` is executed. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
535 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
536 |
Esta é a definição do destino do rastreamento. Isto corresponde diretamente a função de *callback*. Uma vez que está conectada, esta função será chamada sempre que um dos operadores sobrecarregados de ``TracedValue`` é executado. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
537 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
538 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
539 |
We have now seen the trace source and the trace sink. What remains is code to |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
540 |
connect the source to the sink. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
541 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
542 |
Nós temos a origem e o destino do rastreamento. O restante é o código para conectar a origem ao destino. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
543 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
544 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
545 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
546 |
int |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
547 |
main (int argc, char *argv[]) |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
548 |
{ |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
549 |
Ptr<MyObject> myObject = CreateObject<MyObject> (); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
550 |
myObject->TraceConnectWithoutContext ("MyInteger", MakeCallback(&IntTrace)); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
551 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
552 |
myObject->m_myInt = 1234; |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
553 |
} |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
554 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
555 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
556 |
Here we first create the Object in which the trace source lives. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
557 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
558 |
Criamos primeiro o Objeto no qual está a origem do rastreamento. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
559 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
560 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
561 |
The next step, the ``TraceConnectWithoutContext``, forms the connection |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
562 |
between the trace source and the trace sink. Notice the ``MakeCallback`` |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
563 |
template function. This function does the magic required to create the |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
564 |
underlying |ns3| Callback object and associate it with the function |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
565 |
``IntTrace``. TraceConnect makes the association between your provided |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
566 |
function and the overloaded ``operator()`` in the traced variable referred |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
567 |
to by the "MyInteger" Attribute. After this association is made, the trace |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
568 |
source will "fire" your provided callback function. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
569 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
570 |
No próximo passo, o ``TraceConnectWithoutContext`` conecta a origem ao destino do rastreamento. Observe que a função ``MakeCallback`` cria o objeto *callback* e associa com a função ``IntTrace``. ``TraceConnectWithoutContext`` faz a associação entre a sua função e o ``operator()``, sobrecarregado a variável rastreada referenciada pelo Atributo ``"MyInteger"``. Depois disso, a origem do rastreamento "disparará" sua função de callback. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
571 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
572 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
573 |
The code to make all of this happen is, of course, non-trivial, but the essence |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
574 |
is that you are arranging for something that looks just like the ``pfi()`` |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
575 |
example above to be called by the trace source. The declaration of the |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
576 |
``TracedValue<int32_t> m_myInt;`` in the Object itself performs the magic |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
577 |
needed to provide the overloaded operators (++, ---, etc.) that will use the |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
578 |
``operator()`` to actually invoke the Callback with the desired parameters. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
579 |
The ``.AddTraceSource`` performs the magic to connect the Callback to the |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
580 |
Config system, and ``TraceConnectWithoutContext`` performs the magic to |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
581 |
connect your function to the trace source, which is specified by Attribute |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
582 |
name. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
583 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
584 |
O código para fazer isto acontecer não é trivial, mas a essência é a mesma que se a origem do rastreamento chamasse a função ``pfi()`` do exemplo anterior. A declaração ``TracedValue<int32_t> m_myInt;`` no Objeto é responsável pela mágica dos operadores sobrecarregados que usarão o ``operator()`` para invocar o *callback* com os parâmetros desejados. O método ``.AddTraceSource`` conecta o *callback* ao sistema de configuração, e ``TraceConnectWithoutContext`` conecta sua função a fonte de rastreamento, a qual é especificada por um nome |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
585 |
Atributo. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
586 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
587 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
588 |
Let's ignore the bit about context for now. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
589 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
590 |
Vamos ignorar um pouco o contexto. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
591 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
592 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
593 |
Finally, the line, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
594 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
595 |
Finalmente a linha, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
596 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
597 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
598 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
599 |
myObject->m_myInt = 1234; |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
600 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
601 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
602 |
should be interpreted as an invocation of ``operator=`` on the member |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
603 |
variable ``m_myInt`` with the integer ``1234`` passed as a parameter. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
604 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
605 |
deveria ser interpretada como uma invocação do operador ``=`` na variável membro ``m_myInt`` com o inteiro ``1234`` passado como parâmetro. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
606 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
607 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
608 |
It turns out that this operator is defined (by ``TracedValue``) to execute |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
609 |
a callback that returns void and takes two integer values as parameters --- |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
610 |
an old value and a new value for the integer in question. That is exactly |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
611 |
the function signature for the callback function we provided --- ``IntTrace``. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
612 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
613 |
Por sua vez este operador é definido (por ``TracedValue``) para executar um *callback* que retorna ``void`` e possui dois inteiros como parâmetros --- um valor antigo e um novo valor para o inteiro em questão. Isto é exatamente a assinatura da função para a função de *callback* que nós fornecemos --- ``IntTrace``. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
614 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
615 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
616 |
To summarize, a trace source is, in essence, a variable that holds a list of |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
617 |
callbacks. A trace sink is a function used as the target of a callback. The |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
618 |
Attribute and object type information systems are used to provide a way to |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
619 |
connect trace sources to trace sinks. The act of "hitting" a trace source |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
620 |
is executing an operator on the trace source which fires callbacks. This |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
621 |
results in the trace sink callbacks registering interest in the source being |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
622 |
called with the parameters provided by the source. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
623 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
624 |
Para resumir, uma origem do rastreamento é, em essência, uma variável que mantém uma lista de *callbacks*. Um destino do rastreamento é uma função usada como alvo da *callback*. O Atributo e os sistemas de informação de tipo de objeto são usados para fornecer uma maneira de conectar origens e destinos do rastreamento. O ação de "acionar" uma origem do rastreamento é executar um operador na origem, que dispara os *callbacks*. Isto resulta na execução das *callbacks* dos destinos do rastreamento registrados na origem com os parâmetros providos pela origem. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
625 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
626 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
627 |
If you now build and run this example, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
628 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
629 |
Se compilarmos e executarmos este exemplo, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
630 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
631 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
632 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
633 |
./waf --run fourth |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
634 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
635 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
636 |
you will see the output from the ``IntTrace`` function execute as soon as the |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
637 |
trace source is hit: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
638 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
639 |
observaremos que a saída da função ``IntTrace`` é processada logo após a execução da |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
640 |
origem do rastreamento: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
641 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
642 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
643 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
644 |
Traced 0 to 1234 |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
645 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
646 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
647 |
When we executed the code, ``myObject->m_myInt = 1234;``, the trace source |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
648 |
fired and automatically provided the before and after values to the trace sink. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
649 |
The function ``IntTrace`` then printed this to the standard output. No |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
650 |
problem. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
651 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
652 |
Quando executamos o código, ``myObject->m_myInt = 1234;`` a origem do rastreamento disparou e automaticamente forneceu os valores anteriores e posteriores para o destino do rastreamento. A função ``IntTrace`` então imprimiu na saída padrão, sem maiores problemas. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
653 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
654 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
655 |
Using the Config Subsystem to Connect to Trace Sources |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
656 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
657 |
Usando o Subsistema de Configuração para Conectar as Origens de Rastreamento |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
658 |
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
659 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
660 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
661 |
The ``TraceConnectWithoutContext`` call shown above in the simple example is |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
662 |
actually very rarely used in the system. More typically, the ``Config`` |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
663 |
subsystem is used to allow selecting a trace source in the system using what is |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
664 |
called a *config path*. We saw an example of this in the previous section |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
665 |
where we hooked the "CourseChange" event when we were playing with |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
666 |
``third.cc``. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
667 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
668 |
A chamada ``TraceConnectWithoutContext`` apresentada anteriormente é raramente usada no sistema. Geralmente, o subsistema ``Config`` é usado para selecionar uma origem do rastreamento no sistema usando um caminho de configuração (*config path*). Nós estudamos um exemplo onde ligamos o evento "CourseChange", quando estávamos brincando com ``third.cc``. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
669 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
670 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
671 |
Recall that we defined a trace sink to print course change information from the |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
672 |
mobility models of our simulation. It should now be a lot more clear to you |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
673 |
what this function is doing. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
674 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
675 |
Nós definimos um destino do rastreamento para imprimir a informação de mudança de rota dos modelos de mobilidade de nossa simulação. Agora está mais claro o que está função realizava. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
676 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
677 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
678 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
679 |
void |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
680 |
CourseChange (std::string context, Ptr<const MobilityModel> model) |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
681 |
{ |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
682 |
Vector position = model->GetPosition (); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
683 |
NS_LOG_UNCOND (context << |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
684 |
" x = " << position.x << ", y = " << position.y); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
685 |
} |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
686 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
687 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
688 |
When we connected the "CourseChange" trace source to the above trace sink, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
689 |
we used what is called a "Config Path" to specify the source when we |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
690 |
arranged a connection between the pre-defined trace source and the new trace |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
691 |
sink: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
692 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
693 |
Quando conectamos a origem do rastreamento "CourseChange" para o destino do rastreamento anteriormente, usamos o que é chamado de caminho de configuração ("`Config Path`") para especificar a origem e o novo destino do rastreamento. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
694 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
695 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
696 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
697 |
std::ostringstream oss; |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
698 |
oss << |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
699 |
"/NodeList/" << wifiStaNodes.Get (nWifi - 1)->GetId () << |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
700 |
"/$ns3::MobilityModel/CourseChange"; |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
701 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
702 |
Config::Connect (oss.str (), MakeCallback (&CourseChange)); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
703 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
704 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
705 |
Let's try and make some sense of what is sometimes considered relatively |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
706 |
mysterious code. For the purposes of discussion, assume that the node |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
707 |
number returned by the ``GetId()`` is "7". In this case, the path |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
708 |
above turns out to be, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
709 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
710 |
Para entendermos melhor o código, suponha que o número do nó retornado por ``GetId()`` é "7". Neste caso, o caminho seria, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
711 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
712 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
713 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
714 |
"/NodeList/7/$ns3::MobilityModel/CourseChange" |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
715 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
716 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
717 |
The last segment of a config path must be an ``Attribute`` of an |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
718 |
``Object``. In fact, if you had a pointer to the ``Object`` that has the |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
719 |
"CourseChange" ``Attribute`` handy, you could write this just like we did |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
720 |
in the previous example. You know by now that we typically store pointers to |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
721 |
our nodes in a NodeContainer. In the ``third.cc`` example, the Nodes of |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
722 |
interest are stored in the ``wifiStaNodes`` NodeContainer. In fact, while |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
723 |
putting the path together, we used this container to get a Ptr<Node> which we |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
724 |
used to call GetId() on. We could have used this Ptr<Node> directly to call |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
725 |
a connect method directly: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
726 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
727 |
O último segmento de um caminho de configuração deve ser um Atributo de um |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
728 |
Objeto. Na verdade, se tínhamos um ponteiro para o Objeto que tem o Atributo |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
729 |
"CourseChange" ``, poderíamos escrever como no exemplo anterior. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
730 |
Nós já sabemos que guardamos tipicamente ponteiros para outros nós em um ``NodeContainer``. No exemplo ``third.cc``, os nós de rede de interesse estão armazenados no ``wifiStaNodes`` ``NodeContainer``. De fato enquanto colocamos o caminho junto usamos este contêiner para obter um ``Ptr<Node>``, usado na chamada ``GetId()``. Poderíamos usar diretamente o ``Ptr<Node>`` para chamar um método de conexão. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
731 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
732 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
733 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
734 |
Ptr<Object> theObject = wifiStaNodes.Get (nWifi - 1); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
735 |
theObject->TraceConnectWithoutContext ("CourseChange", MakeCallback (&CourseChange)); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
736 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
737 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
738 |
In the ``third.cc`` example, we actually want an additional "context" to |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
739 |
be delivered along with the Callback parameters (which will be explained below) so we |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
740 |
could actually use the following equivalent code, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
741 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
742 |
No exemplo ``third.cc``, queremos um "contexto" adicional para ser encaminhado com os parâmetros do *callback* (os quais são explicados a seguir) então podemos usar o código equivalente, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
743 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
744 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
745 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
746 |
Ptr<Object> theObject = wifiStaNodes.Get (nWifi - 1); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
747 |
theObject->TraceConnect ("CourseChange", MakeCallback (&CourseChange)); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
748 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
749 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
750 |
It turns out that the internal code for ``Config::ConnectWithoutContext`` and |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
751 |
``Config::Connect`` actually do find a Ptr<Object> and call the appropriate |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
752 |
TraceConnect method at the lowest level. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
753 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
754 |
Acontece que o código interno para ``Config::ConnectWithoutContext`` e ``Config::Connect`` permite localizar um Ptr<Object> e chama o método ``TraceConnect``, no nível mais baixo. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
755 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
756 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
757 |
The ``Config`` functions take a path that represents a chain of ``Object`` |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
758 |
pointers. Each segment of a path corresponds to an Object Attribute. The last |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
759 |
segment is the Attribute of interest, and prior segments must be typed to contain |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
760 |
or find Objects. The ``Config`` code parses and "walks" this path until it |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
761 |
gets to the final segment of the path. It then interprets the last segment as |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
762 |
an ``Attribute`` on the last Object it found while walking the path. The |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
763 |
``Config`` functions then call the appropriate ``TraceConnect`` or |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
764 |
``TraceConnectWithoutContext`` method on the final Object. Let's see what |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
765 |
happens in a bit more detail when the above path is walked. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
766 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
767 |
As funções ``Config`` aceitam um caminho que representa uma cadeia de ponteiros de Objetos. Cada segmento do caminho corresponde a um Atributo Objeto. O último segmento é o Atributo de interesse e os seguimentos anteriores devem ser definidos para conter ou encontrar Objetos. O código ``Config`` processa o caminho até obter o segmento final. Então, interpreta o último segmento como um Atributo no último Objeto ele encontrou no caminho. Então as funções ``Config`` chamam o método ``TraceConnect`` ou ``TraceConnectWithoutContext`` adequado no Objeto final. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
768 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
769 |
Vamos analisar com mais detalhes o processo descrito. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
770 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
771 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
772 |
The leading "/" character in the path refers to a so-called namespace. One |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
773 |
of the predefined namespaces in the config system is "NodeList" which is a |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
774 |
list of all of the nodes in the simulation. Items in the list are referred to |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
775 |
by indices into the list, so "/NodeList/7" refers to the eighth node in the |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
776 |
list of nodes created during the simulation. This reference is actually a |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
777 |
``Ptr<Node>`` and so is a subclass of an ``ns3::Object``. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
778 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
779 |
O primeiro caractere "/" no caminho faz referência a um *namespace*. Um dos *namespaces* predefinidos no sistema de configuração é "NodeList" que é uma lista de todos os nós na simulação. Itens na lista são referenciados por índices , logo "/NodeList/7" refere-se ao oitavo nó na lista de nós criados durante a simulação. Esta referência é um ``Ptr<Node>``, por consequência é uma subclasse de um ``ns3::Object``. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
780 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
781 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
782 |
As described in the Object Model section of the |ns3| manual, we support |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
783 |
Object Aggregation. This allows us to form an association between different |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
784 |
Objects without any programming. Each Object in an Aggregation can be reached |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
785 |
from the other Objects. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
786 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
787 |
Como descrito na seção Modelo de Objeto do manual |ns3|, há suporte para Agregação de Objeto. Isto permite realizar associação entre diferentes Objetos sem qualquer programação. Cada Objeto em uma Agregação pode ser acessado a partir de outros Objetos. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
788 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
789 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
790 |
The next path segment being walked begins with the "$" character. This |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
791 |
indicates to the config system that a ``GetObject`` call should be made |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
792 |
looking for the type that follows. It turns out that the MobilityHelper used in |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
793 |
``third.cc`` arranges to Aggregate, or associate, a mobility model to each of |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
794 |
the wireless Nodes. When you add the "$" you are asking for another Object that |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
795 |
has presumably been previously aggregated. You can think of this as switching |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
796 |
pointers from the original Ptr<Node> as specified by "/NodeList/7" to its |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
797 |
associated mobility model --- which is of type "$ns3::MobilityModel". If you |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
798 |
are familiar with ``GetObject``, we have asked the system to do the following: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
799 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
800 |
O próximo segmento no caminho inicia com o carácter "$". O cifrão indica ao sistema de configuração que uma chamada ``GetObject`` deveria ser realizada procurando o tipo especificado em seguida. É diferente do que o ``MobilityHelper`` usou em ``third.cc`` gerenciar a Agregação, ou associar, um modelo de mobilidade para cada dos nós de rede sem fio. Quando adicionamos o "$", significa que estamos pedindo por outro Objeto que tinha sido presumidamente agregado anteriormente. Podemos pensar nisso como ponteiro de comutação do ``Ptr<Node>`` original como especificado por "/NodeList/7" para os modelos de mobilidade associados --- quais são do tipo "$ns3::MobilityModel". Se estivermos familiarizados com ``GetObject``, solicitamos ao sistema para fazer o |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
801 |
seguinte: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
802 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
803 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
804 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
805 |
Ptr<MobilityModel> mobilityModel = node->GetObject<MobilityModel> () |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
806 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
807 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
808 |
We are now at the last Object in the path, so we turn our attention to the |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
809 |
Attributes of that Object. The ``MobilityModel`` class defines an Attribute |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
810 |
called "CourseChange". You can see this by looking at the source code in |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
811 |
``src/mobility/model/mobility-model.cc`` and searching for "CourseChange" in your |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
812 |
favorite editor. You should find, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
813 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
814 |
Estamos no último Objeto do caminho e neste verificamos os Atributos daquele Objeto. A classe ``MobilityModel`` define um Atributo chamado "CourseChange". Observando o código fonte em ``src/mobility/model/mobility-model.cc`` e procurando por "CourseChange", encontramos, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
815 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
816 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
817 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
818 |
.AddTraceSource ("CourseChange", |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
819 |
"The value of the position and/or velocity vector changed", |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
820 |
MakeTraceSourceAccessor (&MobilityModel::m_courseChangeTrace)) |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
821 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
822 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
823 |
which should look very familiar at this point. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
824 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
825 |
o qual parece muito familiar neste momento. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
826 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
827 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
828 |
If you look for the corresponding declaration of the underlying traced variable |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
829 |
in ``mobility-model.h`` you will find |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
830 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
831 |
Se procurarmos por declarações semelhantes das variáveis rastreadas em ``mobility-model.h`` |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
832 |
encontraremos, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
833 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
834 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
835 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
836 |
TracedCallback<Ptr<const MobilityModel> > m_courseChangeTrace; |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
837 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
838 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
839 |
The type declaration ``TracedCallback`` identifies ``m_courseChangeTrace`` |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
840 |
as a special list of Callbacks that can be hooked using the Config functions |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
841 |
described above. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
842 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
843 |
A declaração de tipo ``TracedCallback`` identifica ``m_courseChangeTrace`` como um lista especial de *callbacks* que pode ser ligada usando as funções de Configuração descritas anteriormente. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
844 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
845 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
846 |
The ``MobilityModel`` class is designed to be a base class providing a common |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
847 |
interface for all of the specific subclasses. If you search down to the end of |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
848 |
the file, you will see a method defined called ``NotifyCourseChange()``: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
849 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
850 |
A classe ``MobilityModel`` é projetada para ser a classe base provendo uma interface comum para todas as subclasses. No final do arquivo, encontramos um método chamado ``NotifyCourseChange()``: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
851 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
852 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
853 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
854 |
void |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
855 |
MobilityModel::NotifyCourseChange (void) const |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
856 |
{ |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
857 |
m_courseChangeTrace(this); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
858 |
} |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
859 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
860 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
861 |
Derived classes will call into this method whenever they do a course change to |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
862 |
support tracing. This method invokes ``operator()`` on the underlying |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
863 |
``m_courseChangeTrace``, which will, in turn, invoke all of the registered |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
864 |
Callbacks, calling all of the trace sinks that have registered interest in the |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
865 |
trace source by calling a Config function. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
866 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
867 |
Classes derivadas chamarão este método toda vez que fizerem uma alteração na rota para |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
868 |
suportar rastreamento. Este método invoca ``operator()`` em ``m_courseChangeTrace``, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
869 |
que invocará todos os *callbacks* registrados, chamando todos os *trace sinks* que tem |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
870 |
interesse registrado na origem do rastreamento usando a função de Configuração. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
871 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
872 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
873 |
So, in the ``third.cc`` example we looked at, whenever a course change is |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
874 |
made in one of the ``RandomWalk2dMobilityModel`` instances installed, there |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
875 |
will be a ``NotifyCourseChange()`` call which calls up into the |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
876 |
``MobilityModel`` base class. As seen above, this invokes ``operator()`` |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
877 |
on ``m_courseChangeTrace``, which in turn, calls any registered trace sinks. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
878 |
In the example, the only code registering an interest was the code that provided |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
879 |
the config path. Therefore, the ``CourseChange`` function that was hooked |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
880 |
from Node number seven will be the only Callback called. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
881 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
882 |
No exemplo ``third.cc`` nós vimos que sempre que uma mudança de rota é realizada em uma das instâncias ``RandomWalk2dMobilityModel`` instaladas, haverá uma chamada ``NotifyCourseChange()`` da classe base ``MobilityModel``. Como observado, isto invoca ``operator()`` em ``m_courseChangeTrace``, que por sua vez, chama qualquer destino do rastreamento registrados. No exemplo, o único código que registrou interesse foi aquele que forneceu o caminho de configuração. Consequentemente, a função ``CourseChange`` que foi ligado no Node de número sete será a única *callback* chamada. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
883 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
884 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
885 |
The final piece of the puzzle is the "context". Recall that we saw an output |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
886 |
looking something like the following from ``third.cc``: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
887 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
888 |
A peça final do quebra-cabeça é o "contexto". Lembre-se da saída de ``third.cc``: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
889 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
890 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
891 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
892 |
/NodeList/7/$ns3::MobilityModel/CourseChange x = 7.27897, y = 2.22677 |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
893 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
894 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
895 |
The first part of the output is the context. It is simply the path through |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
896 |
which the config code located the trace source. In the case we have been looking at |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
897 |
there can be any number of trace sources in the system corresponding to any number |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
898 |
of nodes with mobility models. There needs to be some way to identify which trace |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
899 |
source is actually the one that fired the Callback. An easy way is to request a |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
900 |
trace context when you ``Config::Connect``. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
901 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
902 |
A primeira parte da saída é o contexto. É simplesmente o caminho pelo qual o código de configuração localizou a origem do rastreamento. No caso, poderíamos ter qualquer número de origens de rastreamento no sistema correspondendo a qualquer número de nós com modelos de mobilidade. É necessário uma maneira de identificar qual origem do rastreamento disparou o *callback*. Uma forma simples é solicitar um contexto de rastreamento quando é usado o ``Config::Connect``. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
903 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
904 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
905 |
How to Find and Connect Trace Sources, and Discover Callback Signatures |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
906 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
907 |
Como Localizar e Conectar Origens de Rastreamento, e Descobrir Assinaturas de *Callback* |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
908 |
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
909 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
910 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
911 |
The first question that inevitably comes up for new users of the Tracing system is, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
912 |
"okay, I know that there must be trace sources in the simulation core, but how do |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
913 |
I find out what trace sources are available to me"? |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
914 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
915 |
The second question is, "okay, I found a trace source, how do I figure out the |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
916 |
config path to use when I connect to it"? |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
917 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
918 |
The third question is, "okay, I found a trace source, how do I figure out what |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
919 |
the return type and formal arguments of my callback function need to be"? |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
920 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
921 |
The fourth question is, "okay, I typed that all in and got this incredibly bizarre |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
922 |
error message, what in the world does it mean"? |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
923 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
924 |
As questões que inevitavelmente os novos usuários do sistema de Rastreamento fazem, são: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
925 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
926 |
1. "Eu sei que existem origens do rastreamento no núcleo da simulação, mas como |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
927 |
eu descubro quais estão disponíveis para mim?" |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
928 |
2. "Eu encontrei uma origem do rastreamento, como eu defino o caminho de configuração para |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
929 |
usar quando eu conectar a origem?" |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
930 |
3. "Eu encontrei uma origem do rastreamento, como eu defino o tipo de retorno e os |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
931 |
argumentos formais da minha função de *callback*?" |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
932 |
4. "Eu fiz tudo corretamente e obtive uma mensagem de erro bizarra, o que isso significa?" |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
933 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
934 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
935 |
What Trace Sources are Available? |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
936 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
937 |
Quais Origens de Rastreamento são Disponibilizadas |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
938 |
++++++++++++++++++++++++++++++++++++++++++++++++++ |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
939 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
940 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
941 |
The answer to this question is found in the |ns3| Doxygen. If you go to |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
942 |
the project web site, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
943 |
`ns-3 project |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
944 |
<http://www.nsnam.org>`_, you will find a link to "Documentation" in the navigation bar. If you select this link, you will be |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
945 |
taken to our documentation page. There |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
946 |
is a link to "Latest Release" that will take you to the documentation |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
947 |
for the latest stable release of |ns3|. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
948 |
If you select the "API Documentation" link, you will be |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
949 |
taken to the |ns3| API documentation page. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
950 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
951 |
A resposta é encontrada no Doxygen do |ns3|. Acesse o sítio Web do projeto, `ns-3 project <http://www.nsnam.org>`_, em seguida, "Documentation" na barra de navegação. Logo após, "Latest Release" e "API Documentation". |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
952 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
953 |
Acesse o item "Modules" na documentação do NS-3. Agora, selecione o item "C++ Constructs Used by All Modules". Serão exibidos quatro tópicos extremamente úteis: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
954 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
955 |
* The list of all trace sources |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
956 |
* The list of all attributes |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
957 |
* The list of all global values |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
958 |
* Debugging |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
959 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
960 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
961 |
The list of interest to us here is "the list of all trace sources". Go |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
962 |
ahead and select that link. You will see, perhaps not too surprisingly, a |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
963 |
list of all of the trace sources available in the |ns3| core. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
964 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
965 |
Estamos interessados em "*the list of all trace sources*" - a lista de todas origens do rastreamento. Selecionando este item, é exibido uma lista com todas origens disponíveis no núcleo do |ns3|. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
966 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
967 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
968 |
As an example, scroll down to ``ns3::MobilityModel``. You will find |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
969 |
an entry for |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
970 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
971 |
Como exemplo, ``ns3::MobilityModel``, terá uma entrada para |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
972 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
973 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
974 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
975 |
CourseChange: The value of the position and/or velocity vector changed |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
976 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
977 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
978 |
You should recognize this as the trace source we used in the ``third.cc`` |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
979 |
example. Perusing this list will be helpful. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
980 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
981 |
No caso, esta foi a origem do rastreamento usada no exemplo ``third.cc``, esta lista será muito útil. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
982 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
983 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
984 |
What String do I use to Connect? |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
985 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
986 |
Qual String eu uso para Conectar? |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
987 |
+++++++++++++++++++++++++++++++++ |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
988 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
989 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
990 |
The easiest way to do this is to grep around in the |ns3| codebase for someone |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
991 |
who has already figured it out, You should always try to copy someone else's |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
992 |
working code before you start to write your own. Try something like: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
993 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
994 |
A forma mais simples é procurar na base de código do |ns3| por alguém que já fez uso do caminho de configuração que precisamos para ligar a fonte de rastreamento. Sempre deveríamos primeiro copiar um código que funciona antes de escrever nosso próprio código. Tente usar os comandos: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
995 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
996 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
997 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
998 |
find . -name '*.cc' | xargs grep CourseChange | grep Connect |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
999 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1000 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1001 |
and you may find your answer along with working code. For example, in this |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1002 |
case, ``./ns-3-dev/examples/wireless/mixed-wireless.cc`` has something |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1003 |
just waiting for you to use: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1004 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1005 |
e poderemos encontrar um código operacional que atenda nossas necessidades. Por exemplo, neste caso, ``./ns-3-dev/examples/wireless/mixed-wireless.cc`` tem algo que podemos usar: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1006 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1007 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1008 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1009 |
Config::Connect ("/NodeList/*/$ns3::MobilityModel/CourseChange", |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1010 |
MakeCallback (&CourseChangeCallback)); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1011 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1012 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1013 |
If you cannot find any examples in the distribution, you can find this out |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1014 |
from the |ns3| Doxygen. It will probably be simplest just to walk |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1015 |
through the "CourseChanged" example. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1016 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1017 |
Se não localizamos nenhum exemplo na distribuição, podemos tentar o Doxygen do |ns3|. É provavelmente mais simples que percorrer o exemplo "CourseChanged". |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1018 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1019 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1020 |
Let's assume that you have just found the "CourseChanged" trace source in |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1021 |
"The list of all trace sources" and you want to figure out how to connect to |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1022 |
it. You know that you are using (again, from the ``third.cc`` example) an |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1023 |
``ns3::RandomWalk2dMobilityModel``. So open the "Class List" book in |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1024 |
the NS-3 documentation tree by clicking its "+" box. You will now see a |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1025 |
list of all of the classes in |ns3|. Scroll down until you see the |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1026 |
entry for ``ns3::RandomWalk2dMobilityModel`` and follow that link. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1027 |
You should now be looking at the "ns3::RandomWalk2dMobilityModel Class |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1028 |
Reference". |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1029 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1030 |
Suponha que encontramos a origem do rastreamento "CourseChanged" na "The list of all trace sources" e queremos resolver como nos conectar a ela. Você sabe que está usando um ``ns3::RandomWalk2dMobilityModel``. Logo, acesse o item "Class List" na documentação do |ns3|. Será exibida a lista de todas as classes. Selecione a entrada para ``ns3::RandomWalk2dMobilityModel`` para exibir a documentação da classe. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1031 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1032 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1033 |
If you now scroll down to the "Member Function Documentation" section, you |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1034 |
will see documentation for the ``GetTypeId`` function. You constructed one |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1035 |
of these in the simple tracing example above: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1036 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1037 |
Acesse a seção "Member Function Documentation" e obterá a documentação para a função ``GetTypeId``. Você construiu uma dessas em um exemplo anterior: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1038 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1039 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1040 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1041 |
static TypeId GetTypeId (void) |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1042 |
{ |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1043 |
static TypeId tid = TypeId ("MyObject") |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1044 |
.SetParent (Object::GetTypeId ()) |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1045 |
.AddConstructor<MyObject> () |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1046 |
.AddTraceSource ("MyInteger", |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1047 |
"An integer value to trace.", |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1048 |
MakeTraceSourceAccessor (&MyObject::m_myInt)) |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1049 |
; |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1050 |
return tid; |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1051 |
} |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1052 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1053 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1054 |
As mentioned above, this is the bit of code that connected the Config |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1055 |
and Attribute systems to the underlying trace source. This is also the |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1056 |
place where you should start looking for information about the way to |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1057 |
connect. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1058 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1059 |
Como abordado, este código conecta os sistemas *Config* e Atributos à origem do rastreamento. É também o local onde devemos iniciar a busca por informação sobre como conectar. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1060 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1061 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1062 |
You are looking at the same information for the RandomWalk2dMobilityModel; and |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1063 |
the information you want is now right there in front of you in the Doxygen: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1064 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1065 |
Você está observando a mesma informação para ``RandomWalk2dMobilityModel``; e a informação que você precisa está explícita no Doxygen: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1066 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1067 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1068 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1069 |
This object is accessible through the following paths with Config::Set |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1070 |
and Config::Connect: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1071 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1072 |
/NodeList/[i]/$ns3::MobilityModel/$ns3::RandomWalk2dMobilityModel |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1073 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1074 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1075 |
The documentation tells you how to get to the ``RandomWalk2dMobilityModel`` |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1076 |
Object. Compare the string above with the string we actually used in the |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1077 |
example code: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1078 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1079 |
A documentação apresenta como obter o Objeto ``RandomWalk2dMobilityModel``. Compare o texto anterior com o texto que nós usamos no código do exemplo: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1080 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1081 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1082 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1083 |
"/NodeList/7/$ns3::MobilityModel" |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1084 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1085 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1086 |
The difference is due to the fact that two ``GetObject`` calls are implied |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1087 |
in the string found in the documentation. The first, for ``$ns3::MobilityModel`` |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1088 |
will query the aggregation for the base class. The second implied |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1089 |
``GetObject`` call, for ``$ns3::RandomWalk2dMobilityModel``, is used to "cast" |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1090 |
the base class to the concrete implementation class. The documentation shows |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1091 |
both of these operations for you. It turns out that the actual Attribute you are |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1092 |
going to be looking for is found in the base class as we have seen. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1093 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1094 |
A diferença é que há duas chamadas ``GetObject`` inclusas no texto da documentação. A primeira, para ``$ns3::MobilityModel`` solicita a agregação para a classe base. A segunda, para ``$ns3::RandomWalk2dMobilityModel`` é usada como *cast* da classe base para a |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1095 |
implementação concreta da classe. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1096 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1097 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1098 |
Look further down in the ``GetTypeId`` doxygen. You will find, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1099 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1100 |
Analisando ainda mais o ``GetTypeId`` no Doxygen, temos |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1101 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1102 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1103 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1104 |
No TraceSources defined for this type. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1105 |
TraceSources defined in parent class ns3::MobilityModel: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1106 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1107 |
CourseChange: The value of the position and/or velocity vector changed |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1108 |
Reimplemented from ns3::MobilityModel |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1109 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1110 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1111 |
This is exactly what you need to know. The trace source of interest is found in |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1112 |
``ns3::MobilityModel`` (which you knew anyway). The interesting thing this |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1113 |
bit of Doxygen tells you is that you don't need that extra cast in the config |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1114 |
path above to get to the concrete class, since the trace source is actually in |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1115 |
the base class. Therefore the additional ``GetObject`` is not required and |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1116 |
you simply use the path: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1117 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1118 |
Isto é exatamente o que precisamos saber. A origem do rastreamento de interesse é encontrada em ``ns3::MobilityModel``. O interessante é que pela documentação não é necessário o *cast* extra para obter a classe concreta, pois a origem do rastreamento está na classe base. Por consequência, o ``GetObject`` adicional não é necessário e podemos usar o caminho: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1119 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1120 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1121 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1122 |
/NodeList/[i]/$ns3::MobilityModel |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1123 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1124 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1125 |
which perfectly matches the example path: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1126 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1127 |
que é idêntico ao caminho do exemplo: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1128 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1129 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1130 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1131 |
/NodeList/7/$ns3::MobilityModel |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1132 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1133 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1134 |
What Return Value and Formal Arguments? |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1135 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1136 |
Quais são os Argumentos Formais e o Valor de Retorno? |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1137 |
+++++++++++++++++++++++++++++++++++++++++++++++++++++ |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1138 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1139 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1140 |
The easiest way to do this is to grep around in the |ns3| codebase for someone |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1141 |
who has already figured it out, You should always try to copy someone else's |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1142 |
working code. Try something like: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1143 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1144 |
A forma mais simples é procurar na base de código do |ns3| por um código existente. Você sempre deveria primeiro copiar um código que funciona antes de escrever seu próprio. Tente usar os comandos: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1145 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1146 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1147 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1148 |
find . -name '*.cc' | xargs grep CourseChange | grep Connect |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1149 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1150 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1151 |
and you may find your answer along with working code. For example, in this |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1152 |
case, ``./ns-3-dev/examples/wireless/mixed-wireless.cc`` has something |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1153 |
just waiting for you to use. You will find |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1154 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1155 |
e você poderá encontrar código operacional. Por exemplo, neste caso, ``./ns-3-dev/examples/wireless/mixed-wireless.cc`` tem código para ser reaproveitado. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1156 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1157 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1158 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1159 |
Config::Connect ("/NodeList/*/$ns3::MobilityModel/CourseChange", |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1160 |
MakeCallback (&CourseChangeCallback)); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1161 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1162 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1163 |
as a result of your grep. The ``MakeCallback`` should indicate to you that |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1164 |
there is a callback function there which you can use. Sure enough, there is: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1165 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1166 |
como resultado, ``MakeCallback`` indicaria que há uma função *callback* que pode ser usada. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1167 |
Para reforçar: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1168 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1169 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1170 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1171 |
static void |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1172 |
CourseChangeCallback (std::string path, Ptr<const MobilityModel> model) |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1173 |
{ |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1174 |
... |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1175 |
} |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1176 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1177 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1178 |
Take my Word for It |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1179 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1180 |
Acredite em Minha Palavra |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1181 |
~~~~~~~~~~~~~~~~~~~~~~~~~ |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1182 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1183 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1184 |
If there are no examples to work from, this can be, well, challenging to |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1185 |
actually figure out from the source code. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1186 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1187 |
Se não há exemplos, pode ser desafiador descobrir por meio da análise do código fonte. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1188 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1189 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1190 |
Before embarking on a walkthrough of the code, I'll be kind and just tell you |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1191 |
a simple way to figure this out: The return value of your callback will always |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1192 |
be void. The formal parameter list for a ``TracedCallback`` can be found |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1193 |
from the template parameter list in the declaration. Recall that for our |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1194 |
current example, this is in ``mobility-model.h``, where we have previously |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1195 |
found: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1196 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1197 |
Antes de aventurar-se no código, diremos algo importante: O valor de retorno de sua *callback* sempre será *void*. A lista de parâmetros formais para uma ``TracedCallback`` pode ser encontrada no lista de parâmetro padrão na declaração. Recorde do exemplo atual, isto está em ``mobility-model.h``, onde encontramos: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1198 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1199 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1200 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1201 |
TracedCallback<Ptr<const MobilityModel> > m_courseChangeTrace; |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1202 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1203 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1204 |
There is a one-to-one correspondence between the template parameter list in |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1205 |
the declaration and the formal arguments of the callback function. Here, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1206 |
there is one template parameter, which is a ``Ptr<const MobilityModel>``. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1207 |
This tells you that you need a function that returns void and takes a |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1208 |
a ``Ptr<const MobilityModel>``. For example, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1209 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1210 |
Não há uma correspondência de um-para-um entre a lista de parâmetro padrão na declaração e os argumentos formais da função *callback*. Aqui, há um parâmetro padrão, que é um ``Ptr<const MobilityModel>``. Isto significa que precisamos de uma função que retorna *void* e possui um parâmetro ``Ptr<const MobilityModel>``. Por exemplo, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1211 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1212 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1213 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1214 |
void |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1215 |
CourseChangeCallback (Ptr<const MobilityModel> model) |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1216 |
{ |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1217 |
... |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1218 |
} |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1219 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1220 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1221 |
That's all you need if you want to ``Config::ConnectWithoutContext``. If |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1222 |
you want a context, you need to ``Config::Connect`` and use a Callback |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1223 |
function that takes a string context, then the required argument. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1224 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1225 |
Isto é tudo que precisamos para ``Config::ConnectWithoutContext``. Se você quer um contexto, use ``Config::Connect`` e uma função *callback* que possui como um parâmetro uma `string` de contexto, seguido pelo argumento. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1226 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1227 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1228 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1229 |
void |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1230 |
CourseChangeCallback (std::string path, Ptr<const MobilityModel> model) |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1231 |
{ |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1232 |
... |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1233 |
} |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1234 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1235 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1236 |
If you want to ensure that your ``CourseChangeCallback`` is only visible |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1237 |
in your local file, you can add the keyword ``static`` and come up with: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1238 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1239 |
Para garantir que ``CourseChangeCallback`` seja somente visível em seu arquivo, você pode adicionar a palavra chave ``static``, como no exemplo: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1240 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1241 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1242 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1243 |
static void |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1244 |
CourseChangeCallback (std::string path, Ptr<const MobilityModel> model) |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1245 |
{ |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1246 |
... |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1247 |
} |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1248 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1249 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1250 |
which is exactly what we used in the ``third.cc`` example. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1251 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1252 |
exatamente o que é usado no exemplo ``third.cc``. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1253 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1254 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1255 |
The Hard Way |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1256 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1257 |
A Forma Complicada |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1258 |
~~~~~~~~~~~~~~~~~~ |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1259 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1260 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1261 |
This section is entirely optional. It is going to be a bumpy ride, especially |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1262 |
for those unfamiliar with the details of templates. However, if you get through |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1263 |
this, you will have a very good handle on a lot of the |ns3| low level |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1264 |
idioms. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1265 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1266 |
Esta seção é opcional. Pode ser bem penosa para aqueles que conhecem poucos detalhes de tipos parametrizados de dados (*templates*). Entretanto, se continuarmos nessa seção, mergulharemos em detalhes de baixo nível do |ns3|. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1267 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1268 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1269 |
So, again, let's figure out what signature of callback function is required for |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1270 |
the "CourseChange" Attribute. This is going to be painful, but you only need |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1271 |
to do this once. After you get through this, you will be able to just look at |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1272 |
a ``TracedCallback`` and understand it. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1273 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1274 |
Vamos novamente descobrir qual assinatura da função de *callback* é necessária para o Atributo "CourseChange". Isto pode ser doloroso, mas precisamos fazê-lo apenas uma vez. Depois de tudo, você será capaz de entender um ``TracedCallback``. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1275 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1276 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1277 |
The first thing we need to look at is the declaration of the trace source. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1278 |
Recall that this is in ``mobility-model.h``, where we have previously |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1279 |
found: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1280 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1281 |
Primeiro, verificamos a declaração da origem do rastreamento. Recorde que isto está em ``mobility-model.h``: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1282 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1283 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1284 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1285 |
TracedCallback<Ptr<const MobilityModel> > m_courseChangeTrace; |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1286 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1287 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1288 |
This declaration is for a template. The template parameter is inside the |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1289 |
angle-brackets, so we are really interested in finding out what that |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1290 |
``TracedCallback<>`` is. If you have absolutely no idea where this might |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1291 |
be found, grep is your friend. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1292 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1293 |
Esta declaração é para um *template*. O parâmetro do *template* está entre ``<>``, logo estamos interessados em descobrir o que é ``TracedCallback<>``. Se não tem nenhuma ideia de onde pode ser encontrado, use o utilitário *grep*. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1294 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1295 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1296 |
We are probably going to be interested in some kind of declaration in the |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1297 |
|ns3| source, so first change into the ``src`` directory. Then, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1298 |
we know this declaration is going to have to be in some kind of header file, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1299 |
so just grep for it using: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1300 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1301 |
Estamos interessados em uma declaração similar no código fonte do |ns3|, logo buscamos no diretório ``src``. Então, sabemos que esta declaração tem um arquivo de cabeçalho, e procuramos por ele usando: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1302 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1303 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1304 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1305 |
find . -name '*.h' | xargs grep TracedCallback |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1306 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1307 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1308 |
You'll see 124 lines fly by (I piped this through wc to see how bad it was). |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1309 |
Although that may seem like it, that's not really a lot. Just pipe the output |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1310 |
through more and start scanning through it. On the first page, you will see |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1311 |
some very suspiciously template-looking stuff. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1312 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1313 |
Obteremos 124 linhas, com este comando. Analisando a saída, encontramos alguns *templates* que podem ser úteis. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1314 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1315 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1316 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1317 |
TracedCallback<T1,T2,T3,T4,T5,T6,T7,T8>::TracedCallback () |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1318 |
TracedCallback<T1,T2,T3,T4,T5,T6,T7,T8>::ConnectWithoutContext (c ... |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1319 |
TracedCallback<T1,T2,T3,T4,T5,T6,T7,T8>::Connect (const CallbackB ... |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1320 |
TracedCallback<T1,T2,T3,T4,T5,T6,T7,T8>::DisconnectWithoutContext ... |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1321 |
TracedCallback<T1,T2,T3,T4,T5,T6,T7,T8>::Disconnect (const Callba ... |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1322 |
TracedCallback<T1,T2,T3,T4,T5,T6,T7,T8>::operator() (void) const ... |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1323 |
TracedCallback<T1,T2,T3,T4,T5,T6,T7,T8>::operator() (T1 a1) const ... |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1324 |
TracedCallback<T1,T2,T3,T4,T5,T6,T7,T8>::operator() (T1 a1, T2 a2 ... |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1325 |
TracedCallback<T1,T2,T3,T4,T5,T6,T7,T8>::operator() (T1 a1, T2 a2 ... |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1326 |
TracedCallback<T1,T2,T3,T4,T5,T6,T7,T8>::operator() (T1 a1, T2 a2 ... |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1327 |
TracedCallback<T1,T2,T3,T4,T5,T6,T7,T8>::operator() (T1 a1, T2 a2 ... |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1328 |
TracedCallback<T1,T2,T3,T4,T5,T6,T7,T8>::operator() (T1 a1, T2 a2 ... |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1329 |
TracedCallback<T1,T2,T3,T4,T5,T6,T7,T8>::operator() (T1 a1, T2 a2 ... |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1330 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1331 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1332 |
It turns out that all of this comes from the header file |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1333 |
``traced-callback.h`` which sounds very promising. You can then take a |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1334 |
look at ``mobility-model.h`` and see that there is a line which confirms |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1335 |
this hunch: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1336 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1337 |
Observamos que todas linhas são do arquivo de cabeçalho ``traced-callback.h``, logo ele parece muito promissor. Para confirmar, verifique o arquivo ``mobility-model.h`` e procure uma linha que corrobore esta suspeita. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1338 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1339 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1340 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1341 |
#include "ns3/traced-callback.h" |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1342 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1343 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1344 |
Of course, you could have gone at this from the other direction and started |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1345 |
by looking at the includes in ``mobility-model.h`` and noticing the |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1346 |
include of ``traced-callback.h`` and inferring that this must be the file |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1347 |
you want. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1348 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1349 |
Observando as inclusões em ``mobility-model.h``, verifica-se a inclusão do ``traced-callback.h`` e conclui-se que este deve ser o arquivo. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1350 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1351 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1352 |
In either case, the next step is to take a look at ``src/core/model/traced-callback.h`` |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1353 |
in your favorite editor to see what is happening. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1354 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1355 |
O próximo passo é analisar o arquivo ``src/core/model/traced-callback.h`` e entender sua funcionalidade. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1356 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1357 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1358 |
You will see a comment at the top of the file that should be comforting: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1359 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1360 |
Há um comentário no topo do arquivo que deveria ser animador: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1361 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1362 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1363 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1364 |
An ns3::TracedCallback has almost exactly the same API as a normal ns3::Callback but |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1365 |
instead of forwarding calls to a single function (as an ns3::Callback normally does), |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1366 |
it forwards calls to a chain of ns3::Callback. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1367 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1368 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1369 |
This should sound very familiar and let you know you are on the right track. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1370 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1371 |
Isto deveria ser familiar e confirma que estamos no caminho correto. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1372 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1373 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1374 |
Just after this comment, you will find, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1375 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1376 |
Depois deste comentário, encontraremos |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1377 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1378 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1379 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1380 |
template<typename T1 = empty, typename T2 = empty, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1381 |
typename T3 = empty, typename T4 = empty, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1382 |
typename T5 = empty, typename T6 = empty, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1383 |
typename T7 = empty, typename T8 = empty> |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1384 |
class TracedCallback |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1385 |
{ |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1386 |
... |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1387 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1388 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1389 |
This tells you that TracedCallback is a templated class. It has eight possible |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1390 |
type parameters with default values. Go back and compare this with the |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1391 |
declaration you are trying to understand: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1392 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1393 |
Isto significa que TracedCallback é uma classe genérica (*templated class*). Possui oito possíveis tipos de parâmetros com valores padrões. Retorne e compare com a declaração que você está tentando entender: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1394 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1395 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1396 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1397 |
TracedCallback<Ptr<const MobilityModel> > m_courseChangeTrace; |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1398 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1399 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1400 |
The ``typename T1`` in the templated class declaration corresponds to the |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1401 |
``Ptr<const MobilityModel>`` in the declaration above. All of the other |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1402 |
type parameters are left as defaults. Looking at the constructor really |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1403 |
doesn't tell you much. The one place where you have seen a connection made |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1404 |
between your Callback function and the tracing system is in the ``Connect`` |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1405 |
and ``ConnectWithoutContext`` functions. If you scroll down, you will see |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1406 |
a ``ConnectWithoutContext`` method here: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1407 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1408 |
O ``typename T1`` na declaração da classe corresponde a ``Ptr<const MobilityModel>`` da declaração anterior. Todos os outros parâmetros são padrões. Observe que o construtor não contribui com muita informação. O único lugar onde há uma conexão entre a função *callback* e o sistema de rastreamento é nas funções ``Connect`` e ``ConnectWithoutContext``. Como mostrado a seguir: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1409 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1410 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1411 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1412 |
template<typename T1, typename T2, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1413 |
typename T3, typename T4, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1414 |
typename T5, typename T6, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1415 |
typename T7, typename T8> |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1416 |
void |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1417 |
TracedCallback<T1,T2,T3,T4,T5,T6,T7,T8>::ConnectWithoutContext ... |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1418 |
{ |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1419 |
Callback<void,T1,T2,T3,T4,T5,T6,T7,T8> cb; |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1420 |
cb.Assign (callback); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1421 |
m_callbackList.push_back (cb); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1422 |
} |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1423 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1424 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1425 |
You are now in the belly of the beast. When the template is instantiated for |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1426 |
the declaration above, the compiler will replace ``T1`` with |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1427 |
``Ptr<const MobilityModel>``. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1428 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1429 |
Você está no olho do furação. Quando o *template* é instanciado pela declaração anterior, o compilador substitui ``T1`` por ``Ptr<const MobilityModel>``. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1430 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1431 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1432 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1433 |
void |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1434 |
TracedCallback<Ptr<const MobilityModel>::ConnectWithoutContext ... cb |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1435 |
{ |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1436 |
Callback<void, Ptr<const MobilityModel> > cb; |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1437 |
cb.Assign (callback); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1438 |
m_callbackList.push_back (cb); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1439 |
} |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1440 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1441 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1442 |
You can now see the implementation of everything we've been talking about. The |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1443 |
code creates a Callback of the right type and assigns your function to it. This |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1444 |
is the equivalent of the ``pfi = MyFunction`` we discussed at the start of |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1445 |
this section. The code then adds the Callback to the list of Callbacks for |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1446 |
this source. The only thing left is to look at the definition of Callback. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1447 |
Using the same grep trick as we used to find ``TracedCallback``, you will be |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1448 |
able to find that the file ``./core/callback.h`` is the one we need to look at. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1449 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1450 |
Podemos observar a implementação de tudo que foi explicado até este ponto. O código cria uma *callback* do tipo adequado e atribui sua função para ela. Isto é equivalente a ``pfi = MyFunction`` discutida anteriormente. O código então adiciona a *callback* para a lista de *callbacks* para esta origem. O que não observamos ainda é a definição da *callback*. Usando o utilitário *grep* podemos encontrar o arquivo ``./core/callback.h`` e verificar a definição. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1451 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1452 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1453 |
If you look down through the file, you will see a lot of probably almost |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1454 |
incomprehensible template code. You will eventually come to some Doxygen for |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1455 |
the Callback template class, though. Fortunately, there is some English: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1456 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1457 |
No arquivo há muito código incompreensível. Felizmente há algum em Inglês. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1458 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1459 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1460 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1461 |
This class template implements the Functor Design Pattern. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1462 |
It is used to declare the type of a Callback: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1463 |
- the first non-optional template argument represents |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1464 |
the return type of the callback. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1465 |
- the second optional template argument represents |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1466 |
the type of the first argument to the callback. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1467 |
- the third optional template argument represents |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1468 |
the type of the second argument to the callback. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1469 |
- the fourth optional template argument represents |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1470 |
the type of the third argument to the callback. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1471 |
- the fifth optional template argument represents |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1472 |
the type of the fourth argument to the callback. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1473 |
- the sixth optional template argument represents |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1474 |
the type of the fifth argument to the callback. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1475 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1476 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1477 |
We are trying to figure out what the |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1478 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1479 |
Nós estamos tentando descobrir o que significa a declaração |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1480 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1481 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1482 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1483 |
Callback<void, Ptr<const MobilityModel> > cb; |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1484 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1485 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1486 |
declaration means. Now we are in a position to understand that the first |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1487 |
(non-optional) parameter, ``void``, represents the return type of the |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1488 |
Callback. The second (non-optional) parameter, ``Ptr<const MobilityModel>`` |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1489 |
represents the first argument to the callback. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1490 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1491 |
Agora entendemos que o primeiro parâmetro, ``void``, indica o tipo de retorno da *callback*. O segundo parâmetro, ``Ptr<const MobilityModel>`` representa o primeiro argumento da *callback*. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1492 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1493 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1494 |
The Callback in question is your function to receive the trace events. From |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1495 |
this you can infer that you need a function that returns ``void`` and takes |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1496 |
a ``Ptr<const MobilityModel>``. For example, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1497 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1498 |
A *callback* em questão é a sua função que recebe os eventos de rastreamento. Logo, podemos deduzir que precisamos de uma função que retorna ``void`` e possui um parâmetro ``Ptr<const MobilityModel>``. Por exemplo, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1499 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1500 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1501 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1502 |
void |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1503 |
CourseChangeCallback (Ptr<const MobilityModel> model) |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1504 |
{ |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1505 |
... |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1506 |
} |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1507 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1508 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1509 |
That's all you need if you want to ``Config::ConnectWithoutContext``. If |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1510 |
you want a context, you need to ``Config::Connect`` and use a Callback |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1511 |
function that takes a string context. This is because the ``Connect`` |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1512 |
function will provide the context for you. You'll need: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1513 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1514 |
Isto é tudo que precisamos no ``Config::ConnectWithoutContext``. Se você quer um contexto, use ``Config::Connect`` e uma função *callback* que possui como um parâmetro uma `string` de contexto, seguido pelo argumento. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1515 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1516 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1517 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1518 |
void |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1519 |
CourseChangeCallback (std::string path, Ptr<const MobilityModel> model) |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1520 |
{ |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1521 |
... |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1522 |
} |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1523 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1524 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1525 |
If you want to ensure that your ``CourseChangeCallback`` is only visible |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1526 |
in your local file, you can add the keyword ``static`` and come up with: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1527 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1528 |
Se queremos garantir que ``CourseChangeCallback`` é visível somente |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1529 |
em seu arquivo, você pode adicionar a palavra chave ``static``, como no exemplo: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1530 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1531 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1532 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1533 |
static void |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1534 |
CourseChangeCallback (std::string path, Ptr<const MobilityModel> model) |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1535 |
{ |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1536 |
... |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1537 |
} |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1538 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1539 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1540 |
which is exactly what we used in the ``third.cc`` example. Perhaps you |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1541 |
should now go back and reread the previous section (Take My Word for It). |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1542 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1543 |
o que é exatamente usado no exemplo ``third.cc``. Talvez seja interessante reler a seção (Acredite em Minha Palavra). |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1544 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1545 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1546 |
If you are interested in more details regarding the implementation of |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1547 |
Callbacks, feel free to take a look at the |ns3| manual. They are one |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1548 |
of the most frequently used constructs in the low-level parts of |ns3|. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1549 |
It is, in my opinion, a quite elegant thing. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1550 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1551 |
Há mais detalhes sobre a implementação de *callbacks* no manual do |ns3|. Elas estão entre os mais usados construtores das partes de baixo-nível do |ns3|. Em minha opinião, algo bastante elegante. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1552 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1553 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1554 |
What About TracedValue? |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1555 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1556 |
E quanto a TracedValue? |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1557 |
+++++++++++++++++++++++ |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1558 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1559 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1560 |
Earlier in this section, we presented a simple piece of code that used a |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1561 |
``TracedValue<int32_t>`` to demonstrate the basics of the tracing code. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1562 |
We just glossed over the way to find the return type and formal arguments |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1563 |
for the ``TracedValue``. Rather than go through the whole exercise, we |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1564 |
will just point you at the correct file, ``src/core/model/traced-value.h`` and |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1565 |
to the important piece of code: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1566 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1567 |
No início desta seção, nós apresentamos uma parte de código simples que usou um ``TracedValue<int32_t>`` para demonstrar o básico sobre código de rastreamento. Nós desprezamos os métodos para encontrar o tipo de retorno e os argumentos formais para o ``TracedValue``. Acelerando o processo, indicamos o arquivo ``src/core/model/traced-value.h`` e a parte relevante do código: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1568 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1569 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1570 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1571 |
template <typename T> |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1572 |
class TracedValue |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1573 |
{ |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1574 |
public: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1575 |
... |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1576 |
void Set (const T &v) { |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1577 |
if (m_v != v) |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1578 |
{ |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1579 |
m_cb (m_v, v); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1580 |
m_v = v; |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1581 |
} |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1582 |
} |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1583 |
... |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1584 |
private: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1585 |
T m_v; |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1586 |
TracedCallback<T,T> m_cb; |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1587 |
}; |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1588 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1589 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1590 |
Here you see that the ``TracedValue`` is templated, of course. In the simple |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1591 |
example case at the start of the section, the typename is int32_t. This means |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1592 |
that the member variable being traced (``m_v`` in the private section of the |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1593 |
class) will be an ``int32_t m_v``. The ``Set`` method will take a |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1594 |
``const int32_t &v`` as a parameter. You should now be able to understand |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1595 |
that the ``Set`` code will fire the ``m_cb`` callback with two parameters: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1596 |
the first being the current value of the ``TracedValue``; and the second |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1597 |
being the new value being set. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1598 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1599 |
Verificamos que ``TracedValue`` é uma classe parametrizada. No caso simples do início da seção, o nome do tipo é int32_t. Isto significa que a variável membro sendo rastreada (``m_v`` na seção privada da classe) será ``int32_t m_v``. O método ``Set`` possui um argumento ``const int32_t &v``. Você deveria ser capaz de entender que o código ``Set`` dispará o *callback* ``m_cb`` com dois parâmetros: o primeiro sendo o valor atual do ``TracedValue``; e o segundo sendo o novo valor. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1600 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1601 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1602 |
The callback, ``m_cb`` is declared as a ``TracedCallback<T, T>`` which |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1603 |
will correspond to a ``TracedCallback<int32_t, int32_t>`` when the class is |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1604 |
instantiated. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1605 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1606 |
A *callback* ``m_cb`` é declarada como um ``TracedCallback<T, T>`` que corresponderá a um ``TracedCallback<int32_t, int32_t>`` quando a classe é instanciada. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1607 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1608 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1609 |
Recall that the callback target of a TracedCallback always returns ``void``. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1610 |
Further recall that there is a one-to-one correspondence between the template |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1611 |
parameter list in the declaration and the formal arguments of the callback |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1612 |
function. Therefore the callback will need to have a function signature that |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1613 |
looks like: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1614 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1615 |
Lembre-se que o destino da *callback* de um TracedCallback sempre retorna ``void``. Lembre também que há uma correspondência de um-para-um entre a lista de parâmetros polimórfica e os argumentos formais da função *callback*. Logo, a *callback* precisa ter uma assinatura de função similar a: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1616 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1617 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1618 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1619 |
void |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1620 |
MyCallback (int32_t oldValue, int32_t newValue) |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1621 |
{ |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1622 |
... |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1623 |
} |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1624 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1625 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1626 |
It probably won't surprise you that this is exactly what we provided in that |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1627 |
simple example we covered so long ago: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1628 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1629 |
Isto é exatamente o que nós apresentamos no exemplo simples abordado anteriormente. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1630 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1631 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1632 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1633 |
void |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1634 |
IntTrace (int32_t oldValue, int32_t newValue) |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1635 |
{ |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1636 |
std::cout << "Traced " << oldValue << " to " << newValue << std::endl; |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1637 |
} |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1638 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1639 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1640 |
A Real Example |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1641 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1642 |
Um Exemplo Real |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1643 |
*************** |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1644 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1645 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1646 |
Let's do an example taken from one of the best-known books on TCP around. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1647 |
"TCP/IP Illustrated, Volume 1: The Protocols," by W. Richard Stevens is a |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1648 |
classic. I just flipped the book open and ran across a nice plot of both the |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1649 |
congestion window and sequence numbers versus time on page 366. Stevens calls |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1650 |
this, "Figure 21.10. Value of cwnd and send sequence number while data is being |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1651 |
transmitted." Let's just recreate the cwnd part of that plot in |ns3| |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1652 |
using the tracing system and ``gnuplot``. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1653 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1654 |
Vamos fazer um exemplo retirado do livro "TCP/IP Illustrated, Volume 1: The Protocols" escrito por W. Richard Stevens. Localizei na página 366 do livro um gráfico da janela de congestionamento e números de sequência versus tempo. Stevens denomina de "Figure 21.10. Value of cwnd and send sequence number while data is being transmitted." Vamos recriar a parte *cwnd* daquele gráfico em |ns3| usando o sistema de rastreamento e ``gnuplot``. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1655 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1656 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1657 |
Are There Trace Sources Available? |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1658 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1659 |
Há Fontes de Rastreamento Disponibilizadas? |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1660 |
+++++++++++++++++++++++++++++++++++++++++++ |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1661 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1662 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1663 |
The first thing to think about is how we want to get the data out. What is it |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1664 |
that we need to trace? The first thing to do is to consult "The list of all |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1665 |
trace sources" to see what we have to work with. Recall that this is found |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1666 |
in the |ns3| Doxygen in the "C++ Constructs Used by All Modules" Module section. If you scroll |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1667 |
through the list, you will eventually find: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1668 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1669 |
Primeiro devemos pensar sobre como queremos obter os dados de saída. O que é que nós precisamos rastrear? Consultamos então *"The list of all trace sources"* para sabermos o que temos para trabalhar. Essa seção encontra-se na documentação na seção *"Module"*, no item *"C++ Constructs Used by All Modules"*. Procurando na lista, encontraremos: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1670 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1671 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1672 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1673 |
ns3::TcpNewReno |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1674 |
CongestionWindow: The TCP connection's congestion window |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1675 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1676 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1677 |
It turns out that the |ns3| TCP implementation lives (mostly) in the |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1678 |
file ``src/internet/model/tcp-socket-base.cc`` while congestion control |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1679 |
variants are in files such as ``src/internet/model/tcp-newreno.cc``. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1680 |
If you don't know this a priori, you can use the recursive grep trick: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1681 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1682 |
A maior parte da implementação do TCP no |ns3| está no arquivo ``src/internet/model/tcp-socket-base.cc`` enquanto variantes do controle de congestionamento estão em arquivos como ``src/internet/model/tcp-newreno.cc``. Se não sabe a priori dessa informação, use: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1683 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1684 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1685 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1686 |
find . -name '*.cc' | xargs grep -i tcp |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1687 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1688 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1689 |
You will find page after page of instances of tcp pointing you to that file. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1690 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1691 |
Haverá páginas de respostas apontando para aquele arquivo. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1692 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1693 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1694 |
If you open ``src/internet/model/tcp-newreno.cc`` in your favorite |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1695 |
editor, you will see right up at the top of the file, the following declarations: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1696 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1697 |
No início do arquivo ``src/internet/model/tcp-newreno.cc`` há as seguintes declarações: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1698 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1699 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1700 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1701 |
TypeId |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1702 |
TcpNewReno::GetTypeId () |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1703 |
{ |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1704 |
static TypeId tid = TypeId("ns3::TcpNewReno") |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1705 |
.SetParent<TcpSocketBase> () |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1706 |
.AddConstructor<TcpNewReno> () |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1707 |
.AddTraceSource ("CongestionWindow", |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1708 |
"The TCP connection's congestion window", |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1709 |
MakeTraceSourceAccessor (&TcpNewReno::m_cWnd)) |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1710 |
; |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1711 |
return tid; |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1712 |
} |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1713 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1714 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1715 |
This should tell you to look for the declaration of ``m_cWnd`` in the header |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1716 |
file ``src/internet/model/tcp-newreno.h``. If you open this file in your |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1717 |
favorite editor, you will find: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1718 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1719 |
Isto deveria guiá-lo para localizar a declaração de ``m_cWnd`` no arquivo de cabeçalho ``src/internet/model/tcp-newreno.h``. Temos nesse arquivo: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1720 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1721 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1722 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1723 |
TracedValue<uint32_t> m_cWnd; //Congestion window |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1724 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1725 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1726 |
You should now understand this code completely. If we have a pointer to the |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1727 |
``TcpNewReno``, we can ``TraceConnect`` to the "CongestionWindow" trace |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1728 |
source if we provide an appropriate callback target. This is the same kind of |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1729 |
trace source that we saw in the simple example at the start of this section, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1730 |
except that we are talking about ``uint32_t`` instead of ``int32_t``. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1731 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1732 |
Você deveria entender este código. Se nós temos um ponteiro para ``TcpNewReno``, podemos fazer ``TraceConnect`` para a origem do rastreamento "CongestionWindow" se fornecermos uma *callback* adequada. É o mesmo tipo de origem do rastreamento que nós abordamos no exemplo simples no início da seção, exceto que estamos usando ``uint32_t`` ao invés de ``int32_t``. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1733 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1734 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1735 |
We now know that we need to provide a callback that returns void and takes |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1736 |
two ``uint32_t`` parameters, the first being the old value and the second |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1737 |
being the new value: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1738 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1739 |
Precisamos prover uma *callback* que retorne ``void`` e receba dois parâmetros ``uint32_t``, o primeiro representando o valor antigo e o segundo o novo valor: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1740 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1741 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1742 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1743 |
void |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1744 |
CwndTrace (uint32_t oldValue, uint32_t newValue) |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1745 |
{ |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1746 |
... |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1747 |
} |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1748 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1749 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1750 |
What Script to Use? |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1751 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1752 |
Qual código Usar? |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1753 |
+++++++++++++++++ |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1754 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1755 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1756 |
It's always best to try and find working code laying around that you can |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1757 |
modify, rather than starting from scratch. So the first order of business now |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1758 |
is to find some code that already hooks the "CongestionWindow" trace source |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1759 |
and see if we can modify it. As usual, grep is your friend: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1760 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1761 |
É sempre melhor localizar e modificar um código operacional que iniciar do zero. Portanto, vamos procurar uma origem do rastreamento da "CongestionWindow" e verificar se é possível modificar. Para tal, usamos novamente o *grep*: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1762 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1763 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1764 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1765 |
find . -name '*.cc' | xargs grep CongestionWindow |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1766 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1767 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1768 |
This will point out a couple of promising candidates: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1769 |
``examples/tcp/tcp-large-transfer.cc`` and |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1770 |
``src/test/ns3tcp/ns3tcp-cwnd-test-suite.cc``. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1771 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1772 |
Encontramos alguns candidatos: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1773 |
``examples/tcp/tcp-large-transfer.cc`` e |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1774 |
``src/test/ns3tcp/ns3tcp-cwnd-test-suite.cc``. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1775 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1776 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1777 |
We haven't visited any of the test code yet, so let's take a look there. You |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1778 |
will typically find that test code is fairly minimal, so this is probably a |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1779 |
very good bet. Open ``src/test/ns3tcp/ns3tcp-cwnd-test-suite.cc`` in your |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1780 |
favorite editor and search for "CongestionWindow". You will find, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1781 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1782 |
Nós não visitamos nenhum código de teste ainda, então vamos fazer isto agora. Código de teste é pequeno, logo é uma ótima escolha. Acesse o arquivo ``src/test/ns3tcp/ns3tcp-cwnd-test-suite.cc`` e localize "CongestionWindow". Como resultado, temos |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1783 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1784 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1785 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1786 |
ns3TcpSocket->TraceConnectWithoutContext ("CongestionWindow", |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1787 |
MakeCallback (&Ns3TcpCwndTestCase1::CwndChange, this)); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1788 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1789 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1790 |
This should look very familiar to you. We mentioned above that if we had a |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1791 |
"CongestionWindow" trace source. That's exactly what we have here; so it |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1792 |
pointer to the ``TcpNewReno``, we could ``TraceConnect`` to the |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1793 |
turns out that this line of code does exactly what we want. Let's go ahead |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1794 |
and extract the code we need from this function |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1795 |
(``Ns3TcpCwndTestCase1::DoRun (void)``). If you look at this function, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1796 |
you will find that it looks just like an |ns3| script. It turns out that |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1797 |
is exactly what it is. It is a script run by the test framework, so we can just |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1798 |
pull it out and wrap it in ``main`` instead of in ``DoRun``. Rather than |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1799 |
walk through this, step, by step, we have provided the file that results from |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1800 |
porting this test back to a native |ns3| script -- |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1801 |
``examples/tutorial/fifth.cc``. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1802 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1803 |
Como abordado, temos uma origem do rastreamento "CongestionWindow"; então ela aponta para ``TcpNewReno``, poderíamos alterar o ``TraceConnect`` para o que nós desejamos. Vamos extrair o código que precisamos desta função (``Ns3TcpCwndTestCase1::DoRun (void)``). Se você observar, perceberá que parece como um código |ns3|. E descobre-se exatamente que realmente é um código. É um código executado pelo `framework` de teste, logo podemos apenas colocá-lo no ``main`` ao invés de ``DoRun``. A tradução deste teste para um código nativo do |ns3| é apresentada no arquivo ``examples/tutorial/fifth.cc``. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1804 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1805 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1806 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1807 |
A Common Problem and Solution |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1808 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1809 |
Um Problema Comum e a Solução |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1810 |
+++++++++++++++++++++++++++++ |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1811 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1812 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1813 |
The ``fifth.cc`` example demonstrates an extremely important rule that you |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1814 |
must understand before using any kind of ``Attribute``: you must ensure |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1815 |
that the target of a ``Config`` command exists before trying to use it. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1816 |
This is no different than saying an object must be instantiated before trying |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1817 |
to call it. Although this may seem obvious when stated this way, it does |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1818 |
trip up many people trying to use the system for the first time. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1819 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1820 |
O exemplo ``fifth.cc`` demonstra um importante regra que devemos entender antes de usar qualquer tipo de Atributo: devemos garantir que o alvo de um comando ``Config`` existe antes de tentar usá-lo. É a mesma ideia que um objeto não pode ser usado sem ser primeiro instanciado. Embora pareça óbvio, muitas pessoas erram ao usar o sistema pela primeira vez. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1821 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1822 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1823 |
Let's return to basics for a moment. There are three basic time periods that |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1824 |
exist in any |ns3| script. The first time period is sometimes called |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1825 |
"Configuration Time" or "Setup Time," and is in force during the period |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1826 |
when the ``main`` function of your script is running, but before |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1827 |
``Simulator::Run`` is called. The second time period is sometimes called |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1828 |
"Simulation Time" and is in force during the time period when |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1829 |
``Simulator::Run`` is actively executing its events. After it completes |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1830 |
executing the simulation, ``Simulator::Run`` will return control back to |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1831 |
the ``main`` function. When this happens, the script enters what can be |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1832 |
called "Teardown Time," which is when the structures and objects created |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1833 |
during setup and taken apart and released. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1834 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1835 |
Há três fases básicas em qualquer código |ns3|. A primeira é a chamada de "Configuration Time" ou "Setup Time" e ocorre durante a execução da função ``main``, mas antes da chamada ``Simulator::Run``. O segunda fase é chamada de "Simulation Time" e é quando o ``Simulator::Run`` está executando seus eventos. Após completar a execução da simulação, ``Simulator::Run`` devolve o controle a função ``main``. Quando isto acontece, o código entra na terceira fase, o "Teardown Time", que é quando estruturas e objetos criados durante a configuração são analisados e liberados. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1836 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1837 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1838 |
Perhaps the most common mistake made in trying to use the tracing system is |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1839 |
assuming that entities constructed dynamically during simulation time are |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1840 |
available during configuration time. In particular, an |ns3| |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1841 |
``Socket`` is a dynamic object often created by ``Applications`` to |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1842 |
communicate between ``Nodes``. An |ns3| ``Application`` |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1843 |
always has a "Start Time" and a "Stop Time" associated with it. In the |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1844 |
vast majority of cases, an ``Application`` will not attempt to create |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1845 |
a dynamic object until its ``StartApplication`` method is called at some |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1846 |
"Start Time". This is to ensure that the simulation is completely |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1847 |
configured before the app tries to do anything (what would happen if it tried |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1848 |
to connect to a node that didn't exist yet during configuration time). |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1849 |
The answer to this issue is to 1) create a simulator event that is run after the |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1850 |
dynamic object is created and hook the trace when that event is executed; or |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1851 |
2) create the dynamic object at configuration time, hook it then, and give |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1852 |
the object to the system to use during simulation time. We took the second |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1853 |
approach in the ``fifth.cc`` example. This decision required us to create |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1854 |
the ``MyApp`` ``Application``, the entire purpose of which is to take |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1855 |
a ``Socket`` as a parameter. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1856 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1857 |
Talvez o erro mais comum em tentar usar o sistema de rastreamento é supor que entidades construídas dinamicamente durante a fase de simulação estão acessíveis durante a fase de configuração. Em particular, um ``Socket`` |ns3| é um objeto dinâmico frequentemente criado por Aplicações (``Applications``) para comunicação entre nós de redes. Uma Aplicação |ns3| tem um "Start Time" e "Stop Time" associado a ela. Na maioria dos casos, uma Aplicação não tentar criar um objeto dinâmico até que seu método ``StartApplication`` é chamado |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1858 |
em algum "Start Time". Isto é para garantir que a simulação está completamente configurada antes que a aplicação tente fazer alguma coisa (o que aconteceria se tentasse conectar a um nó que não existisse durante a fase de configuração). A resposta para esta questão é: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1859 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1860 |
1. criar um evento no simulador que é executado depois que o objeto dinâmico |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1861 |
é criado e ativar o rastreador quando aquele evento é executado; ou |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1862 |
2. criar o objeto dinâmico na fase de configuração, ativá-lo, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1863 |
e passar o objeto para o sistema usar durante a fase de simulação. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1864 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1865 |
Nós consideramos a segunda abordagem no exemplo ``fifth.cc``. A decisão implicou na criação da Aplicação ``MyApp``, com o propósito de passar um ``Socket`` como parâmetro. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1866 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1867 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1868 |
A fifth.cc Walkthrough |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1869 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1870 |
Analisando o exemplo fifth.cc |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1871 |
+++++++++++++++++++++++++++++ |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1872 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1873 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1874 |
Now, let's take a look at the example program we constructed by dissecting |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1875 |
the congestion window test. Open ``examples/tutorial/fifth.cc`` in your |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1876 |
favorite editor. You should see some familiar looking code: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1877 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1878 |
Agora, vamos analisar o programa exemplo detalhando o teste da janela de congestionamento. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1879 |
Segue o código do arquivo localizado em ``examples/tutorial/fifth.cc``: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1880 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1881 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1882 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1883 |
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */ |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1884 |
/* |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1885 |
* This program is free software; you can redistribute it and/or modify |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1886 |
* it under the terms of the GNU General Public License version 2 as |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1887 |
* published by the Free Software Foundation; |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1888 |
* |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1889 |
* This program is distributed in the hope that it will be useful, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1890 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1891 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1892 |
* GNU General Public License for more details. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1893 |
* |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1894 |
* You should have received a copy of the GNU General Public License |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1895 |
* along with this program; if not, write to the Free Software |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1896 |
* Foundation, Include., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1897 |
*/ |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1898 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1899 |
#include <fstream> |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1900 |
#include "ns3/core-module.h" |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1901 |
#include "ns3/network-module.h" |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1902 |
#include "ns3/internet-module.h" |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1903 |
#include "ns3/point-to-point-module.h" |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1904 |
#include "ns3/applications-module.h" |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1905 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1906 |
using namespace ns3; |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1907 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1908 |
NS_LOG_COMPONENT_DEFINE ("FifthScriptExample"); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1909 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1910 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1911 |
This has all been covered, so we won't rehash it. The next lines of source are |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1912 |
the network illustration and a comment addressing the problem described above |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1913 |
with ``Socket``. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1914 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1915 |
Todo o código apresentado já foi discutido. As próximas linhas são comentários apresentando |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1916 |
a estrutura da rede e comentários abordando o problema descrito com o ``Socket``. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1917 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1918 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1919 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1920 |
// =========================================================================== |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1921 |
// |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1922 |
// node 0 node 1 |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1923 |
// +----------------+ +----------------+ |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1924 |
// | ns-3 TCP | | ns-3 TCP | |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1925 |
// +----------------+ +----------------+ |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1926 |
// | 10.1.1.1 | | 10.1.1.2 | |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1927 |
// +----------------+ +----------------+ |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1928 |
// | point-to-point | | point-to-point | |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1929 |
// +----------------+ +----------------+ |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1930 |
// | | |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1931 |
// +---------------------+ |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1932 |
// 5 Mbps, 2 ms |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1933 |
// |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1934 |
// |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1935 |
// We want to look at changes in the ns-3 TCP congestion window. We need |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1936 |
// to crank up a flow and hook the CongestionWindow attribute on the socket |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1937 |
// of the sender. Normally one would use an on-off application to generate a |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1938 |
// flow, but this has a couple of problems. First, the socket of the on-off |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1939 |
// application is not created until Application Start time, so we wouldn't be |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1940 |
// able to hook the socket (now) at configuration time. Second, even if we |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1941 |
// could arrange a call after start time, the socket is not public so we |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1942 |
// couldn't get at it. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1943 |
// |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1944 |
// So, we can cook up a simple version of the on-off application that does what |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1945 |
// we want. On the plus side we don't need all of the complexity of the on-off |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1946 |
// application. On the minus side, we don't have a helper, so we have to get |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1947 |
// a little more involved in the details, but this is trivial. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1948 |
// |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1949 |
// So first, we create a socket and do the trace connect on it; then we pass |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1950 |
// this socket into the constructor of our simple application which we then |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1951 |
// install in the source node. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1952 |
// =========================================================================== |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1953 |
// |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1954 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1955 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1956 |
This should also be self-explanatory. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1957 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1958 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1959 |
The next part is the declaration of the ``MyApp`` ``Application`` that |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1960 |
we put together to allow the ``Socket`` to be created at configuration time. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1961 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1962 |
A próxima parte é a declaração da Aplicação ``MyApp`` que permite que o ``Socket`` seja criado na fase de configuração. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1963 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1964 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1965 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1966 |
class MyApp : public Application |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1967 |
{ |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1968 |
public: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1969 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1970 |
MyApp (); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1971 |
virtual ~MyApp(); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1972 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1973 |
void Setup (Ptr<Socket> socket, Address address, uint32_t packetSize, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1974 |
uint32_t nPackets, DataRate dataRate); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1975 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1976 |
private: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1977 |
virtual void StartApplication (void); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1978 |
virtual void StopApplication (void); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1979 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1980 |
void ScheduleTx (void); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1981 |
void SendPacket (void); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1982 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1983 |
Ptr<Socket> m_socket; |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1984 |
Address m_peer; |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1985 |
uint32_t m_packetSize; |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1986 |
uint32_t m_nPackets; |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1987 |
DataRate m_dataRate; |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1988 |
EventId m_sendEvent; |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1989 |
bool m_running; |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1990 |
uint32_t m_packetsSent; |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1991 |
}; |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1992 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1993 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1994 |
You can see that this class inherits from the |ns3| ``Application`` |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1995 |
class. Take a look at ``src/network/model/application.h`` if you are interested in |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1996 |
what is inherited. The ``MyApp`` class is obligated to override the |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1997 |
``StartApplication`` and ``StopApplication`` methods. These methods are |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1998 |
automatically called when ``MyApp`` is required to start and stop sending |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
1999 |
data during the simulation. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2000 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2001 |
A classe ``MyApp`` herda a classe ``Application`` do |ns3|. Acesse o arquivo ``src/network/model/application.h`` se estiver interessado sobre detalhes dessa herança. A classe ``MyApp`` é obrigada sobrescrever os métodos ``StartApplication`` e ``StopApplication``. Estes métodos são automaticamente chamado quando ``MyApp`` é solicitada iniciar e parar de enviar dados durante a simulação. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2002 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2003 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2004 |
How Applications are Started and Stopped (optional) |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2005 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2006 |
Como Aplicações são Iniciadas e Paradas (Opcional) |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2007 |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2008 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2009 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2010 |
It is worthwhile to spend a bit of time explaining how events actually get |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2011 |
started in the system. This is another fairly deep explanation, and can be |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2012 |
ignored if you aren't planning on venturing down into the guts of the system. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2013 |
It is useful, however, in that the discussion touches on how some very important |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2014 |
parts of |ns3| work and exposes some important idioms. If you are |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2015 |
planning on implementing new models, you probably want to understand this |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2016 |
section. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2017 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2018 |
Nesta seção é explicado como eventos tem início no sistema. É uma explicação mais detalhada e não é necessária se não planeja entender detalhes do sistema. É interessante, por outro lado, pois aborda como partes do |ns3| trabalham e mostra alguns detalhes de implementação importantes. Se você planeja implementar novos modelos, então deve entender essa seção. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2019 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2020 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2021 |
The most common way to start pumping events is to start an ``Application``. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2022 |
This is done as the result of the following (hopefully) familar lines of an |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2023 |
|ns3| script: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2024 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2025 |
A maneira mais comum de iniciar eventos é iniciar uma Aplicação. Segue as linhas de um código |ns3| que faz exatamente isso: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2026 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2027 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2028 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2029 |
ApplicationContainer apps = ... |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2030 |
apps.Start (Seconds (1.0)); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2031 |
apps.Stop (Seconds (10.0)); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2032 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2033 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2034 |
The application container code (see ``src/network/helper/application-container.h`` if |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2035 |
you are interested) loops through its contained applications and calls, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2036 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2037 |
O código do contêiner aplicação (``src/network/helper/application-container.h``) itera pelas aplicações no contêiner e chama, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2038 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2039 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2040 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2041 |
app->SetStartTime (startTime); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2042 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2043 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2044 |
as a result of the ``apps.Start`` call and |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2045 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2046 |
como um resultado da chamada ``apps.Start`` e |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2047 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2048 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2049 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2050 |
app->SetStopTime (stopTime); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2051 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2052 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2053 |
as a result of the ``apps.Stop`` call. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2054 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2055 |
como um resultado da chamada ``apps.Stop``. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2056 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2057 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2058 |
The ultimate result of these calls is that we want to have the simulator |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2059 |
automatically make calls into our ``Applications`` to tell them when to |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2060 |
start and stop. In the case of ``MyApp``, it inherits from class |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2061 |
``Application`` and overrides ``StartApplication``, and |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2062 |
``StopApplication``. These are the functions that will be called by |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2063 |
the simulator at the appropriate time. In the case of ``MyApp`` you |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2064 |
will find that ``MyApp::StartApplication`` does the initial ``Bind``, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2065 |
and ``Connect`` on the socket, and then starts data flowing by calling |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2066 |
``MyApp::SendPacket``. ``MyApp::StopApplication`` stops generating |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2067 |
packets by cancelling any pending send events and closing the socket. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2068 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2069 |
O último resultado destas chamadas queremos ter o simulador executando chamadas em nossa ``Applications`` para controlar o inicio e a parada. No caso ``MyApp``, herda da classe ``Application`` e sobrescreve ``StartApplication`` e ``StopApplication``. Estas são as funções invocadas pelo simulador no momento certo. No caso de ``MyApp``, o ``MyApp::StartApplication`` faz o ``Bind`` e ``Connect`` no `socket`, em seguida, inicia o fluxo de dados chamando ``MyApp::SendPacket``. ``MyApp::StopApplication`` interrompe a geração de pacotes cancelando qualquer evento pendente de envio e também fechando o socket. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2070 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2071 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2072 |
One of the nice things about |ns3| is that you can completely |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2073 |
ignore the implementation details of how your ``Application`` is |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2074 |
"automagically" called by the simulator at the correct time. But since |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2075 |
we have already ventured deep into |ns3| already, let's go for it. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2076 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2077 |
Uma das coisas legais sobre o |ns3| é que podemos ignorar completamente os detalhes de implementação de como sua Aplicação é "automaticamente" chamada pelo simulador no momento correto. De qualquer forma, detalhamos como isso acontece a seguir. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2078 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2079 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2080 |
If you look at ``src/network/model/application.cc`` you will find that the |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2081 |
``SetStartTime`` method of an ``Application`` just sets the member |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2082 |
variable ``m_startTime`` and the ``SetStopTime`` method just sets |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2083 |
``m_stopTime``. From there, without some hints, the trail will probably |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2084 |
end. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2085 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2086 |
Se observarmos em ``src/network/model/application.cc``, descobriremos que o |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2087 |
método ``SetStartTime`` de uma ``Application`` apenas altera a variável ``m_startTime`` e o método ``SetStopTime`` apenas altera a variável ``m_stopTime``. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2088 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2089 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2090 |
The key to picking up the trail again is to know that there is a global |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2091 |
list of all of the nodes in the system. Whenever you create a node in |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2092 |
a simulation, a pointer to that node is added to the global ``NodeList``. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2093 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2094 |
Para continuar e entender o processo, precisamos saber que há uma lista global de todos os nós no sistema. Sempre que você cria um nó em uma simulação, um ponteiro para aquele nó é adicionado para a lista global ``NodeList``. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2095 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2096 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2097 |
Take a look at ``src/network/model/node-list.cc`` and search for |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2098 |
``NodeList::Add``. The public static implementation calls into a private |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2099 |
implementation called ``NodeListPriv::Add``. This is a relatively common |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2100 |
idom in |ns3|. So, take a look at ``NodeListPriv::Add``. There |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2101 |
you will find, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2102 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2103 |
Observe em ``src/network/model/node-list.cc`` e procure por ``NodeList::Add``. A implementação ``public static`` chama uma implementação privada denominada ``NodeListPriv::Add``. Isto é comum no |ns3|. Então, observe ``NodeListPriv::Add`` e encontrará, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2104 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2105 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2106 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2107 |
Simulator::ScheduleWithContext (index, TimeStep (0), &Node::Start, node); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2108 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2109 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2110 |
This tells you that whenever a ``Node`` is created in a simulation, as |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2111 |
a side-effect, a call to that node's ``Start`` method is scheduled for |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2112 |
you that happens at time zero. Don't read too much into that name, yet. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2113 |
It doesn't mean that the node is going to start doing anything, it can be |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2114 |
interpreted as an informational call into the ``Node`` telling it that |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2115 |
the simulation has started, not a call for action telling the ``Node`` |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2116 |
to start doing something. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2117 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2118 |
Isto significa que sempre que um ``Node`` é criado em uma simulação, como uma implicação, uma chamada para o método ``Start`` do nó é agendada para que ocorra no tempo zero. Isto não significa que o nó vai iniciar fazendo alguma coisa, pode ser interpretado como uma chamada informacional no ``Node`` dizendo a ele que a simulação teve início, não uma chamada para ação dizendo ao ``Node`` iniciar alguma coisa. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2119 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2120 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2121 |
So, ``NodeList::Add`` indirectly schedules a call to ``Node::Start`` |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2122 |
at time zero to advise a new node that the simulation has started. If you |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2123 |
look in ``src/network/model/node.h`` you will, however, not find a method called |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2124 |
``Node::Start``. It turns out that the ``Start`` method is inherited |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2125 |
from class ``Object``. All objects in the system can be notified when |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2126 |
the simulation starts, and objects of class ``Node`` are just one kind |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2127 |
of those objects. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2128 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2129 |
Então, o ``NodeList::Add`` indiretamente agenda uma chamada para ``Node::Start`` no tempo zero, para informar ao novo nó que a simulação foi iniciada. Se olharmos em ``src/network/model/node.h`` não acharemos um método chamado ``Node::Start``. Acontece que o método ``Start`` é herdado da classe ``Object``. Todos objetos no sistema podem ser avisados que a simulação iniciou e objetos da classe ``Node`` são exemplos. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2130 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2131 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2132 |
Take a look at ``src/core/model/object.cc`` next and search for ``Object::Start``. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2133 |
This code is not as straightforward as you might have expected since |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2134 |
|ns3| ``Objects`` support aggregation. The code in |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2135 |
``Object::Start`` then loops through all of the objects that have been |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2136 |
aggregated together and calls their ``DoStart`` method. This is another |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2137 |
idiom that is very common in |ns3|. There is a public API method, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2138 |
that stays constant across implementations, that calls a private implementation |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2139 |
method that is inherited and implemented by subclasses. The names are typically |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2140 |
something like ``MethodName`` for the public API and ``DoMethodName`` for |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2141 |
the private API. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2142 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2143 |
Observe em seguida ``src/core/model/object.cc``. Localize por ``Object::Start``. Este código não é tão simples como você esperava desde que ``Objects`` |ns3| suportam agregação. O código em ``Object::Start`` então percorre todos os objetos que estão agregados e chama o método ``DoStart`` de cada um. Este é uma outra prática muito comum em |ns3|. Há um método pública na API, que permanece constante entre implementações, que chama um método de implementação privada que é herdado e implementado por subclasses. Os nomes são tipicamente |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2144 |
algo como ``MethodName`` para os da API pública e ``DoMethodName`` para os da API privada. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2145 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2146 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2147 |
This tells us that we should look for a ``Node::DoStart`` method in |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2148 |
``src/network/model/node.cc`` for the method that will continue our trail. If you |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2149 |
locate the code, you will find a method that loops through all of the devices |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2150 |
in the node and then all of the applications in the node calling |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2151 |
``device->Start`` and ``application->Start`` respectively. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2152 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2153 |
Logo, deveríamos procurar por um método ``Node::DoStart`` em ``src/network/model/node.cc``. Ao localizar o método, descobrirá um método que percorre todos os dispositivos e aplicações no nó chamando respectivamente ``device->Start`` e ``application->Start``. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2154 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2155 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2156 |
You may already know that classes ``Device`` and ``Application`` both |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2157 |
inherit from class ``Object`` and so the next step will be to look at |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2158 |
what happens when ``Application::DoStart`` is called. Take a look at |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2159 |
``src/network/model/application.cc`` and you will find: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2160 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2161 |
As classes ``Device`` e ``Application`` herdam da classe ``Object``, então o próximo passo é entender o que acontece quando ``Application::DoStart`` é executado. Observe o código em ``src/network/model/application.cc``: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2162 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2163 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2164 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2165 |
void |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2166 |
Application::DoStart (void) |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2167 |
{ |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2168 |
m_startEvent = Simulator::Schedule (m_startTime, &Application::StartApplication, this); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2169 |
if (m_stopTime != TimeStep (0)) |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2170 |
{ |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2171 |
m_stopEvent = Simulator::Schedule (m_stopTime, &Application::StopApplication, this); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2172 |
} |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2173 |
Object::DoStart (); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2174 |
} |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2175 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2176 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2177 |
Here, we finally come to the end of the trail. If you have kept it all straight, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2178 |
when you implement an |ns3| ``Application``, your new application |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2179 |
inherits from class ``Application``. You override the ``StartApplication`` |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2180 |
and ``StopApplication`` methods and provide mechanisms for starting and |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2181 |
stopping the flow of data out of your new ``Application``. When a ``Node`` |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2182 |
is created in the simulation, it is added to a global ``NodeList``. The act |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2183 |
of adding a node to this ``NodeList`` causes a simulator event to be scheduled |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2184 |
for time zero which calls the ``Node::Start`` method of the newly added |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2185 |
``Node`` to be called when the simulation starts. Since a ``Node`` inherits |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2186 |
from ``Object``, this calls the ``Object::Start`` method on the ``Node`` |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2187 |
which, in turn, calls the ``DoStart`` methods on all of the ``Objects`` |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2188 |
aggregated to the ``Node`` (think mobility models). Since the ``Node`` |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2189 |
``Object`` has overridden ``DoStart``, that method is called when the |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2190 |
simulation starts. The ``Node::DoStart`` method calls the ``Start`` methods |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2191 |
of all of the ``Applications`` on the node. Since ``Applications`` are |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2192 |
also ``Objects``, this causes ``Application::DoStart`` to be called. When |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2193 |
``Application::DoStart`` is called, it schedules events for the |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2194 |
``StartApplication`` and ``StopApplication`` calls on the ``Application``. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2195 |
These calls are designed to start and stop the flow of data from the |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2196 |
``Application`` |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2197 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2198 |
Aqui finalizamos nosso detalhamento. Ao implementar uma Aplicação do |ns3|, sua nova aplicação herda da classe ``Application``. Você sobrescreve os métodos ``StartApplication`` e ``StopApplication`` e provê mecanismos para iniciar e finalizar o fluxo de dados de sua nova ``Application``. Quando um ``Node`` é criado na simulação, ele é adicionado a uma lista global ``NodeList``. A ação de adicionar um nó na lista faz com que um evento do simulador seja agendado para o tempo zero e que chama o método ``Node::Start`` do ``Node`` recentemente adicionado para ser chamado quando a simulação inicia. Como um ``Node`` herda de ``Object``, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2199 |
a chamada invoca o método ``Object::Start`` no ``Node``, o qual, por sua vez, chama os métodos ``DoStart`` em todos os ``Objects`` agregados ao ``Node`` (pense em modelos móveis). Como o ``Node`` ``Object`` |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2200 |
tem sobrescritos ``DoStart``, o método é chamado quando a simulação inicia. O método ``Node::DoStart`` chama o método ``Start`` de todas as ``Applications`` no nó. Por sua vez, ``Applications`` são também ``Objects``, o que resulta na invocação do ``Application::DoStart``. Quando ``Application::DoStart`` é chamada, ela agenda eventos para as chamadas ``StartApplication`` e ``StopApplication`` na ``Application``. Estas chamadas são projetadas para iniciar e parar o fluxo de dados da ``Application``. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2201 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2202 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2203 |
This has been another fairly long journey, but it only has to be made once, and |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2204 |
you now understand another very deep piece of |ns3|. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2205 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2206 |
Após essa longa jornada, você pode entende melhor outra parte do |ns3|. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2207 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2208 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2209 |
The MyApp Application |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2210 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2211 |
A Aplicação MyApp |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2212 |
~~~~~~~~~~~~~~~~~ |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2213 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2214 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2215 |
The ``MyApp`` ``Application`` needs a constructor and a destructor, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2216 |
of course: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2217 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2218 |
A Aplicação ``MyApp`` precisa de um construtor e um destrutor, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2219 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2220 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2221 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2222 |
MyApp::MyApp () |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2223 |
: m_socket (0), |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2224 |
m_peer (), |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2225 |
m_packetSize (0), |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2226 |
m_nPackets (0), |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2227 |
m_dataRate (0), |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2228 |
m_sendEvent (), |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2229 |
m_running (false), |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2230 |
m_packetsSent (0) |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2231 |
{ |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2232 |
} |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2233 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2234 |
MyApp::~MyApp() |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2235 |
{ |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2236 |
m_socket = 0; |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2237 |
} |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2238 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2239 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2240 |
The existence of the next bit of code is the whole reason why we wrote this |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2241 |
``Application`` in the first place. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2242 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2243 |
O código seguinte é a principal razão da existência desta Aplicação. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2244 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2245 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2246 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2247 |
void |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2248 |
MyApp::Setup (Ptr<Socket> socket, Address address, uint32_t packetSize, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2249 |
uint32_t nPackets, DataRate dataRate) |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2250 |
{ |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2251 |
m_socket = socket; |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2252 |
m_peer = address; |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2253 |
m_packetSize = packetSize; |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2254 |
m_nPackets = nPackets; |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2255 |
m_dataRate = dataRate; |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2256 |
} |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2257 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2258 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2259 |
This code should be pretty self-explanatory. We are just initializing member |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2260 |
variables. The important one from the perspective of tracing is the |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2261 |
``Ptr<Socket> socket`` which we needed to provide to the application |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2262 |
during configuration time. Recall that we are going to create the ``Socket`` |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2263 |
as a ``TcpSocket`` (which is implemented by ``TcpNewReno``) and hook |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2264 |
its "CongestionWindow" trace source before passing it to the ``Setup`` |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2265 |
method. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2266 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2267 |
Neste código inicializamos os atributos da classe. Do ponto de vista do rastreamento, a mais importante é ``Ptr<Socket> socket`` que deve ser passado para a aplicação durante o fase de configuração. Lembre-se que vamos criar o ``Socket`` como um ``TcpSocket`` (que é implementado por ``TcpNewReno``) e associar sua origem do rastreamento de sua *"CongestionWindow"* antes de passá-lo no método ``Setup``. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2268 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2269 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2270 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2271 |
void |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2272 |
MyApp::StartApplication (void) |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2273 |
{ |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2274 |
m_running = true; |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2275 |
m_packetsSent = 0; |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2276 |
m_socket->Bind (); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2277 |
m_socket->Connect (m_peer); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2278 |
SendPacket (); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2279 |
} |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2280 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2281 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2282 |
The above code is the overridden implementation ``Application::StartApplication`` |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2283 |
that will be automatically called by the simulator to start our ``Application`` |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2284 |
running at the appropriate time. You can see that it does a ``Socket`` ``Bind`` |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2285 |
operation. If you are familiar with Berkeley Sockets this shouldn't be a surprise. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2286 |
It performs the required work on the local side of the connection just as you might |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2287 |
expect. The following ``Connect`` will do what is required to establish a connection |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2288 |
with the TCP at ``Address`` m_peer. It should now be clear why we need to defer |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2289 |
a lot of this to simulation time, since the ``Connect`` is going to need a fully |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2290 |
functioning network to complete. After the ``Connect``, the ``Application`` |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2291 |
then starts creating simulation events by calling ``SendPacket``. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2292 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2293 |
Este código sobrescreve ``Application::StartApplication`` que será chamado automaticamente pelo simulador para iniciar a ``Application`` no momento certo. Observamos que é realizada uma operação ``Socket`` ``Bind``. Se você conhece Sockets de Berkeley isto não é uma novidade. É responsável pelo conexão no lado do cliente, ou seja, o ``Connect`` estabelece uma conexão usando TCP no endereço ``m_peer``. Por isso, precisamos de uma infraestrutura funcional de rede antes de executar a fase de simulação. Depois do ``Connect``, a ``Application`` inicia a criação dos eventos de simulação chamando ``SendPacket``. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2294 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2295 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2296 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2297 |
void |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2298 |
MyApp::StopApplication (void) |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2299 |
{ |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2300 |
m_running = false; |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2301 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2302 |
if (m_sendEvent.IsRunning ()) |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2303 |
{ |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2304 |
Simulator::Cancel (m_sendEvent); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2305 |
} |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2306 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2307 |
if (m_socket) |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2308 |
{ |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2309 |
m_socket->Close (); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2310 |
} |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2311 |
} |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2312 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2313 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2314 |
Every time a simulation event is scheduled, an ``Event`` is created. If the |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2315 |
``Event`` is pending execution or executing, its method ``IsRunning`` will |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2316 |
return ``true``. In this code, if ``IsRunning()`` returns true, we |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2317 |
``Cancel`` the event which removes it from the simulator event queue. By |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2318 |
doing this, we break the chain of events that the ``Application`` is using to |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2319 |
keep sending its ``Packets`` and the ``Application`` goes quiet. After we |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2320 |
quiet the ``Application`` we ``Close`` the socket which tears down the TCP |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2321 |
connection. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2322 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2323 |
A todo instante um evento da simulação é agendado, isto é, um ``Event`` é criado. Se o ``Event`` é uma execução pendente ou está executando, seu método ``IsRunning`` retornará ``true``. Neste código, se ``IsRunning()`` retorna verdadeiro (`true`), nós cancelamos (``Cancel``) o evento, e por consequência, é removido da fila de eventos do simulador. Dessa forma, interrompemos a cadeia de eventos que a |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2324 |
``Application`` está usando para enviar seus ``Packets``. A Aplicação não enviará mais pacotes e em seguida fechamos (``Close``) o `socket` encerrando a conexão TCP. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2325 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2326 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2327 |
The socket is actually deleted in the destructor when the ``m_socket = 0`` is |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2328 |
executed. This removes the last reference to the underlying Ptr<Socket> which |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2329 |
causes the destructor of that Object to be called. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2330 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2331 |
O socket é deletado no destrutor quando ``m_socket = 0`` é executado. Isto remove a última referência para Ptr<Socket> que ocasiona o destrutor daquele Objeto ser chamado. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2332 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2333 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2334 |
Recall that ``StartApplication`` called ``SendPacket`` to start the |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2335 |
chain of events that describes the ``Application`` behavior. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2336 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2337 |
Lembre-se que ``StartApplication`` chamou ``SendPacket`` para iniciar a cadeia de eventos que descreve o comportamento da ``Application``. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2338 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2339 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2340 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2341 |
void |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2342 |
MyApp::SendPacket (void) |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2343 |
{ |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2344 |
Ptr<Packet> packet = Create<Packet> (m_packetSize); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2345 |
m_socket->Send (packet); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2346 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2347 |
if (++m_packetsSent < m_nPackets) |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2348 |
{ |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2349 |
ScheduleTx (); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2350 |
} |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2351 |
} |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2352 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2353 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2354 |
Here, you see that ``SendPacket`` does just that. It creates a ``Packet`` |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2355 |
and then does a ``Send`` which, if you know Berkeley Sockets, is probably |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2356 |
just what you expected to see. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2357 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2358 |
Este código apenas cria um pacote (``Packet``) e então envia (``Send``). |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2359 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2360 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2361 |
It is the responsibility of the ``Application`` to keep scheduling the |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2362 |
chain of events, so the next lines call ``ScheduleTx`` to schedule another |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2363 |
transmit event (a ``SendPacket``) until the ``Application`` decides it |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2364 |
has sent enough. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2365 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2366 |
É responsabilidade da ``Application`` gerenciar o agendamento da cadeia de eventos, então, a chamada ``ScheduleTx`` agenda outro evento de transmissão (um ``SendPacket``) até que a ``Application`` decida que enviou o suficiente. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2367 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2368 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2369 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2370 |
void |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2371 |
MyApp::ScheduleTx (void) |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2372 |
{ |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2373 |
if (m_running) |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2374 |
{ |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2375 |
Time tNext (Seconds (m_packetSize * 8 / static_cast<double> (m_dataRate.GetBitRate ()))); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2376 |
m_sendEvent = Simulator::Schedule (tNext, &MyApp::SendPacket, this); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2377 |
} |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2378 |
} |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2379 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2380 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2381 |
Here, you see that ``ScheduleTx`` does exactly that. If the ``Application`` |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2382 |
is running (if ``StopApplication`` has not been called) it will schedule a |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2383 |
new event, which calls ``SendPacket`` again. The alert reader will spot |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2384 |
something that also trips up new users. The data rate of an ``Application`` is |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2385 |
just that. It has nothing to do with the data rate of an underlying ``Channel``. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2386 |
This is the rate at which the ``Application`` produces bits. It does not take |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2387 |
into account any overhead for the various protocols or channels that it uses to |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2388 |
transport the data. If you set the data rate of an ``Application`` to the same |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2389 |
data rate as your underlying ``Channel`` you will eventually get a buffer overflow. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2390 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2391 |
Enquanto a ``Application`` está executando, ``ScheduleTx`` agendará um novo evento, que chama ``SendPacket`` novamente. Verifica-se que a taxa de transmissão é sempre a mesma, ou seja, é a taxa que a ``Application`` produz os bits. Não considera nenhuma sobrecarga de protocolos ou canais físicos no transporte dos dados. Se alterarmos a taxa de transmissão da ``Application`` para a mesma taxa dos canais físicos, poderemos |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2392 |
ter um estouro de *buffer*. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2393 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2394 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2395 |
The Trace Sinks |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2396 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2397 |
Destino do Rastreamento |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2398 |
~~~~~~~~~~~~~~~~~~~~~~~ |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2399 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2400 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2401 |
The whole point of this exercise is to get trace callbacks from TCP indicating the |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2402 |
congestion window has been updated. The next piece of code implements the |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2403 |
corresponding trace sink: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2404 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2405 |
O foco deste exercício é obter notificações (*callbacks*) do TCP indicando a modificação da janela de congestionamento. O código a seguir implementa o destino do rastreamento. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2406 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2407 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2408 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2409 |
static void |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2410 |
CwndChange (uint32_t oldCwnd, uint32_t newCwnd) |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2411 |
{ |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2412 |
NS_LOG_UNCOND (Simulator::Now ().GetSeconds () << "\t" << newCwnd); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2413 |
} |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2414 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2415 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2416 |
This should be very familiar to you now, so we won't dwell on the details. This |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2417 |
function just logs the current simulation time and the new value of the |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2418 |
congestion window every time it is changed. You can probably imagine that you |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2419 |
could load the resulting output into a graphics program (gnuplot or Excel) and |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2420 |
immediately see a nice graph of the congestion window behavior over time. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2421 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2422 |
Esta função registra o tempo de simulação atual e o novo valor da janela de congestionamento toda vez que é modificada. Poderíamos usar essa saída para construir um gráfico do comportamento da janela de congestionamento com relação ao tempo. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2423 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2424 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2425 |
We added a new trace sink to show where packets are dropped. We are going to |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2426 |
add an error model to this code also, so we wanted to demonstrate this working. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2427 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2428 |
Nós adicionamos um novo destino do rastreamento para mostrar onde pacotes são perdidos. Vamos adicionar um modelo de erro. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2429 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2430 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2431 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2432 |
static void |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2433 |
RxDrop (Ptr<const Packet> p) |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2434 |
{ |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2435 |
NS_LOG_UNCOND ("RxDrop at " << Simulator::Now ().GetSeconds ()); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2436 |
} |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2437 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2438 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2439 |
This trace sink will be connected to the "PhyRxDrop" trace source of the |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2440 |
point-to-point NetDevice. This trace source fires when a packet is dropped |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2441 |
by the physical layer of a ``NetDevice``. If you take a small detour to the |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2442 |
source (``src/point-to-point/model/point-to-point-net-device.cc``) you will |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2443 |
see that this trace source refers to ``PointToPointNetDevice::m_phyRxDropTrace``. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2444 |
If you then look in ``src/point-to-point/model/point-to-point-net-device.h`` |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2445 |
for this member variable, you will find that it is declared as a |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2446 |
``TracedCallback<Ptr<const Packet> >``. This should tell you that the |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2447 |
callback target should be a function that returns void and takes a single |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2448 |
parameter which is a ``Ptr<const Packet>`` -- just what we have above. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2449 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2450 |
Este destino do rastreamento será conectado a origem do rastreamento "PhyRxDrop" do ``NetDevice`` ponto-a-ponto. Esta origem do rastreamento dispara quando um pacote é removido da camada física de um ``NetDevice``. Se olharmos rapidamente ``src/point-to-point/model/point-to-point-net-device.cc`` verificamos que a origem do rastreamento refere-se a ``PointToPointNetDevice::m_phyRxDropTrace``. E se procurarmos em ``src/point-to-point/model/point-to-point-net-device.h`` por essa variável, encontraremos que ela está declarada como uma ``TracedCallback<Ptr<const Packet> >``. Isto significa que nosso *callback* deve ser uma função que retorna ``void`` e tem um único parâmetro ``Ptr<const Packet>``. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2451 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2452 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2453 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2454 |
The Main Program |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2455 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2456 |
O Programa Principal |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2457 |
~~~~~~~~~~~~~~~~~~~~ |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2458 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2459 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2460 |
The following code should be very familiar to you by now: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2461 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2462 |
O código a seguir corresponde ao início da função principal: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2463 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2464 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2465 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2466 |
int |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2467 |
main (int argc, char *argv[]) |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2468 |
{ |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2469 |
NodeContainer nodes; |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2470 |
nodes.Create (2); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2471 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2472 |
PointToPointHelper pointToPoint; |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2473 |
pointToPoint.SetDeviceAttribute ("DataRate", StringValue ("5Mbps")); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2474 |
pointToPoint.SetChannelAttribute ("Delay", StringValue ("2ms")); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2475 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2476 |
NetDeviceContainer devices; |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2477 |
devices = pointToPoint.Install (nodes); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2478 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2479 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2480 |
This creates two nodes with a point-to-point channel between them, just as |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2481 |
shown in the illustration at the start of the file. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2482 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2483 |
São criados dois nós ligados por um canal ponto-a-ponto, como mostrado na ilustração |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2484 |
no início do arquivo. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2485 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2486 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2487 |
The next few lines of code show something new. If we trace a connection that |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2488 |
behaves perfectly, we will end up with a monotonically increasing congestion |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2489 |
window. To see any interesting behavior, we really want to introduce link |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2490 |
errors which will drop packets, cause duplicate ACKs and trigger the more |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2491 |
interesting behaviors of the congestion window. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2492 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2493 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2494 |
Nas próximas linhas, temos um código com algumas informações novas. Se nós rastrearmos uma conexão que comporta-se perfeitamente, terminamos com um janela de congestionamento que aumenta monoliticamente. Para observarmos um comportamento interessante, introduzimos erros que causarão perda de pacotes, duplicação de `ACK`s e assim, introduz comportamentos mais interessantes a janela de congestionamento. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2495 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2496 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2497 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2498 |
|ns3| provides ``ErrorModel`` objects which can be attached to |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2499 |
``Channels``. We are using the ``RateErrorModel`` which allows us |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2500 |
to introduce errors into a ``Channel`` at a given *rate*. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2501 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2502 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2503 |
O |ns3| provê objetos de um modelo de erros (``ErrorModel``) que pode ser adicionado aos canais (``Channels``). Nós usamos o ``RateErrorModel`` que permite introduzir erros no canal dada uma *taxa*. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2504 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2505 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2506 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2507 |
Ptr<RateErrorModel> em = CreateObjectWithAttributes<RateErrorModel> ( |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2508 |
"RanVar", RandomVariableValue (UniformVariable (0., 1.)), |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2509 |
"ErrorRate", DoubleValue (0.00001)); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2510 |
devices.Get (1)->SetAttribute ("ReceiveErrorModel", PointerValue (em)); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2511 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2512 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2513 |
The above code instantiates a ``RateErrorModel`` Object. Rather than |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2514 |
using the two-step process of instantiating it and then setting Attributes, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2515 |
we use the convenience function ``CreateObjectWithAttributes`` which |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2516 |
allows us to do both at the same time. We set the "RanVar" |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2517 |
``Attribute`` to a random variable that generates a uniform distribution |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2518 |
from 0 to 1. We also set the "ErrorRate" ``Attribute``. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2519 |
We then set the resulting instantiated ``RateErrorModel`` as the error |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2520 |
model used by the point-to-point ``NetDevice``. This will give us some |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2521 |
retransmissions and make our plot a little more interesting. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2522 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2523 |
O código instancia um objeto ``RateErrorModel``. Para simplificar usamos a função ``CreateObjectWithAttributes`` que instancia e configura os Atributos. O Atributo "RanVar" foi configurado para uma variável randômica que gera uma distribuição uniforme entre 0 e 1. O Atributo "ErrorRate" também foi alterado. Por fim, configuramos o modelo erro no ``NetDevice`` ponto-a-ponto modificando o atributo "ReceiveErrorModel". Isto causará retransmissões e o gráfico ficará mais interessante. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2524 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2525 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2526 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2527 |
InternetStackHelper stack; |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2528 |
stack.Install (nodes); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2529 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2530 |
Ipv4AddressHelper address; |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2531 |
address.SetBase ("10.1.1.0", "255.255.255.252"); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2532 |
Ipv4InterfaceContainer interfaces = address.Assign (devices); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2533 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2534 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2535 |
The above code should be familiar. It installs internet stacks on our two |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2536 |
nodes and creates interfaces and assigns IP addresses for the point-to-point |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2537 |
devices. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2538 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2539 |
Neste código configura a pilha de protocolos da internet nos dois nós de rede, cria interfaces e associa endereços IP para os dispositivos ponto-a-ponto. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2540 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2541 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2542 |
Since we are using TCP, we need something on the destination node to receive |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2543 |
TCP connections and data. The ``PacketSink`` ``Application`` is commonly |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2544 |
used in |ns3| for that purpose. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2545 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2546 |
Como estamos usando TCP, precisamos de um nó de destino para receber as conexões e os dados. O ``PacketSink`` ``Application`` é comumente usado no |ns3| para este propósito. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2547 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2548 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2549 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2550 |
uint16_t sinkPort = 8080; |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2551 |
Address sinkAddress (InetSocketAddress(interfaces.GetAddress (1), sinkPort)); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2552 |
PacketSinkHelper packetSinkHelper ("ns3::TcpSocketFactory", |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2553 |
InetSocketAddress (Ipv4Address::GetAny (), sinkPort)); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2554 |
ApplicationContainer sinkApps = packetSinkHelper.Install (nodes.Get (1)); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2555 |
sinkApps.Start (Seconds (0.)); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2556 |
sinkApps.Stop (Seconds (20.)); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2557 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2558 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2559 |
This should all be familiar, with the exception of, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2560 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2561 |
Este código deveria ser familiar, com exceção de, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2562 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2563 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2564 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2565 |
PacketSinkHelper packetSinkHelper ("ns3::TcpSocketFactory", |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2566 |
InetSocketAddress (Ipv4Address::GetAny (), sinkPort)); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2567 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2568 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2569 |
This code instantiates a ``PacketSinkHelper`` and tells it to create sockets |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2570 |
using the class ``ns3::TcpSocketFactory``. This class implements a design |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2571 |
pattern called "object factory" which is a commonly used mechanism for |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2572 |
specifying a class used to create objects in an abstract way. Here, instead of |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2573 |
having to create the objects themselves, you provide the ``PacketSinkHelper`` |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2574 |
a string that specifies a ``TypeId`` string used to create an object which |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2575 |
can then be used, in turn, to create instances of the Objects created by the |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2576 |
factory. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2577 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2578 |
Este código instancia um ``PacketSinkHelper`` e cria sockets usando a classe ``ns3::TcpSocketFactory``. Esta classe implementa o padrão de projeto "fábrica de objetos". Dessa forma, em vez de criar os objetos diretamente, fornecemos ao ``PacketSinkHelper`` um texto que especifica um ``TypeId`` usado para criar |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2579 |
um objeto que, por sua vez, pode ser usado para criar instâncias de Objetos criados pela implementação da fábrica de objetos. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2580 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2581 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2582 |
The remaining parameter tells the ``Application`` which address and port it |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2583 |
should ``Bind`` to. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2584 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2585 |
O parâmetro seguinte especifica o endereço e a porta para o mapeamento. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2586 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2587 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2588 |
The next two lines of code will create the socket and connect the trace source. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2589 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2590 |
As próximas duas linhas do código criam o `socket` e conectam a origem do rastreamento. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2591 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2592 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2593 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2594 |
Ptr<Socket> ns3TcpSocket = Socket::CreateSocket (nodes.Get (0), |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2595 |
TcpSocketFactory::GetTypeId ()); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2596 |
ns3TcpSocket->TraceConnectWithoutContext ("CongestionWindow", |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2597 |
MakeCallback (&CwndChange)); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2598 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2599 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2600 |
The first statement calls the static member function ``Socket::CreateSocket`` |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2601 |
and provides a ``Node`` and an explicit ``TypeId`` for the object factory |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2602 |
used to create the socket. This is a slightly lower level call than the |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2603 |
``PacketSinkHelper`` call above, and uses an explicit C++ type instead of |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2604 |
one referred to by a string. Otherwise, it is conceptually the same thing. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2605 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2606 |
A primeira declaração chama a função estática ``Socket::CreateSocket`` e passa um ``Node`` e um ``TypeId`` para o objeto fábrica usado para criar o `socket`. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2607 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2608 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2609 |
Once the ``TcpSocket`` is created and attached to the ``Node``, we can |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2610 |
use ``TraceConnectWithoutContext`` to connect the CongestionWindow trace |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2611 |
source to our trace sink. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2612 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2613 |
Uma vez que o ``TcpSocket`` é criado e adicionado ao ``Node``, nós usamos ``TraceConnectWithoutContext`` para conectar a origem do rastreamento "CongestionWindow" para o nosso destino do rastreamento. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2614 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2615 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2616 |
Recall that we coded an ``Application`` so we could take that ``Socket`` |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2617 |
we just made (during configuration time) and use it in simulation time. We now |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2618 |
have to instantiate that ``Application``. We didn't go to any trouble to |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2619 |
create a helper to manage the ``Application`` so we are going to have to |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2620 |
create and install it "manually". This is actually quite easy: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2621 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2622 |
Codificamos uma ``Application`` então podemos obter um ``Socket`` (durante a fase de configuração) e usar na fase de simulação. Temos agora que instanciar a ``Application``. Para tal, segue os passos: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2623 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2624 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2625 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2626 |
Ptr<MyApp> app = CreateObject<MyApp> (); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2627 |
app->Setup (ns3TcpSocket, sinkAddress, 1040, 1000, DataRate ("1Mbps")); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2628 |
nodes.Get (0)->AddApplication (app); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2629 |
app->Start (Seconds (1.)); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2630 |
app->Stop (Seconds (20.)); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2631 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2632 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2633 |
The first line creates an ``Object`` of type ``MyApp`` -- our |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2634 |
``Application``. The second line tells the ``Application`` what |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2635 |
``Socket`` to use, what address to connect to, how much data to send |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2636 |
at each send event, how many send events to generate and the rate at which |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2637 |
to produce data from those events. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2638 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2639 |
A primeira linha cria um Objeto do tipo ``MyApp`` -- nossa ``Application``. A segunda linha especifica o `socket`, o endereço de conexão, a quantidade de dados a ser enviada em cada evento, a quantidade de eventos de transmissão a ser gerados e a taxa de produção de dados para estes eventos. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2640 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2641 |
Next, we manually add the ``MyApp Application`` to the source node |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2642 |
and explicitly call the ``Start`` and ``Stop`` methods on the |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2643 |
``Application`` to tell it when to start and stop doing its thing. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2644 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2645 |
Depois, adicionamos a ``MyApp Application`` para o nó origem e chamamos os métodos ``Start`` e ``Stop`` para dizer quando e iniciar e parar a simulação. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2646 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2647 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2648 |
We need to actually do the connect from the receiver point-to-point ``NetDevice`` |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2649 |
to our callback now. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2650 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2651 |
Precisamos agora fazer a conexão entre o receptor com nossa *callback*. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2652 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2653 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2654 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2655 |
devices.Get (1)->TraceConnectWithoutContext("PhyRxDrop", MakeCallback (&RxDrop)); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2656 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2657 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2658 |
It should now be obvious that we are getting a reference to the receiving |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2659 |
``Node NetDevice`` from its container and connecting the trace source defined |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2660 |
by the attribute "PhyRxDrop" on that device to the trace sink ``RxDrop``. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2661 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2662 |
Estamos obtendo uma referência para o ``Node NetDevice`` receptor e conectando a origem do rastreamento pelo Atributo "PhyRxDrop" do dispositivo no destino do rastreamento ``RxDrop``. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2663 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2664 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2665 |
Finally, we tell the simulator to override any ``Applications`` and just |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2666 |
stop processing events at 20 seconds into the simulation. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2667 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2668 |
Finalmente, dizemos ao simulador para sobrescrever qualquer ``Applications`` e parar o processamento de eventos em 20 segundos na simulação. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2669 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2670 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2671 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2672 |
Simulator::Stop (Seconds(20)); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2673 |
Simulator::Run (); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2674 |
Simulator::Destroy (); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2675 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2676 |
return 0; |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2677 |
} |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2678 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2679 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2680 |
Recall that as soon as ``Simulator::Run`` is called, configuration time |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2681 |
ends, and simulation time begins. All of the work we orchestrated by |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2682 |
creating the ``Application`` and teaching it how to connect and send |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2683 |
data actually happens during this function call. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2684 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2685 |
Lembre-se que quando ``Simulator::Run`` é chamado, a fase de configuração termina e a fase de simulação inicia. Todo o processo descrito anteriormente ocorre durante a chamada dessa função. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2686 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2687 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2688 |
As soon as ``Simulator::Run`` returns, the simulation is complete and |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2689 |
we enter the teardown phase. In this case, ``Simulator::Destroy`` takes |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2690 |
care of the gory details and we just return a success code after it completes. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2691 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2692 |
Após o retorno do ``Simulator::Run``, a simulação é terminada e entramos na fase de finalização. Neste caso, ``Simulator::Destroy`` executa a tarefa pesada e nós apenas retornamos o código de sucesso. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2693 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2694 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2695 |
Running fifth.cc |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2696 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2697 |
Executando fifth.cc |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2698 |
+++++++++++++++++++ |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2699 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2700 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2701 |
Since we have provided the file ``fifth.cc`` for you, if you have built |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2702 |
your distribution (in debug mode since it uses NS_LOG -- recall that optimized |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2703 |
builds optimize out NS_LOGs) it will be waiting for you to run. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2704 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2705 |
O arquivo ``fifth.cc`` é distribuído no código fonte, no diretório ``examples/tutorial``. Para executar: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2706 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2707 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2708 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2709 |
./waf --run fifth |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2710 |
Waf: Entering directory `/home/craigdo/repos/ns-3-allinone-dev/ns-3-dev/build |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2711 |
Waf: Leaving directory `/home/craigdo/repos/ns-3-allinone-dev/ns-3-dev/build' |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2712 |
'build' finished successfully (0.684s) |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2713 |
1.20919 1072 |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2714 |
1.21511 1608 |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2715 |
1.22103 2144 |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2716 |
... |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2717 |
1.2471 8040 |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2718 |
1.24895 8576 |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2719 |
1.2508 9112 |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2720 |
RxDrop at 1.25151 |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2721 |
... |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2722 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2723 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2724 |
You can probably see immediately a downside of using prints of any kind in your |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2725 |
traces. We get those extraneous waf messages printed all over our interesting |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2726 |
information along with those RxDrop messages. We will remedy that soon, but I'm |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2727 |
sure you can't wait to see the results of all of this work. Let's redirect that |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2728 |
output to a file called ``cwnd.dat``: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2729 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2730 |
Podemos observar o lado negativo de usar "prints" de qualquer tipo no rastreamento. Temos mensagens ``waf`` sendo impressas sobre a informação relevante. Vamos resolver esse problema, mas primeiro vamos verificar o resultado redirecionando a saída para um arquivo ``cwnd.dat``: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2731 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2732 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2733 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2734 |
./waf --run fifth > cwnd.dat 2>&1 |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2735 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2736 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2737 |
Now edit up "cwnd.dat" in your favorite editor and remove the waf build status |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2738 |
and drop lines, leaving only the traced data (you could also comment out the |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2739 |
``TraceConnectWithoutContext("PhyRxDrop", MakeCallback (&RxDrop));`` in the |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2740 |
script to get rid of the drop prints just as easily. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2741 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2742 |
Removemos as mensagens do ``waf`` e deixamos somente os dados rastreados. Pode-se também comentar as mensagens de "RxDrop...". |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2743 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2744 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2745 |
You can now run gnuplot (if you have it installed) and tell it to generate some |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2746 |
pretty pictures: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2747 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2748 |
Agora podemos executar o gnuplot (se instalado) e gerar um gráfico: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2749 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2750 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2751 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2752 |
gnuplot> set terminal png size 640,480 |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2753 |
gnuplot> set output "cwnd.png" |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2754 |
gnuplot> plot "cwnd.dat" using 1:2 title 'Congestion Window' with linespoints |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2755 |
gnuplot> exit |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2756 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2757 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2758 |
You should now have a graph of the congestion window versus time sitting in the |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2759 |
file "cwnd.png" that looks like: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2760 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2761 |
Devemos obter um gráfico da janela de congestionamento pelo tempo no arquivo "cwnd.png", similar ao gráfico 7.1: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2762 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2763 |
figure:: figures/cwnd.png |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2764 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2765 |
Gráfico da janela de congestionamento versus tempo. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2766 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2767 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2768 |
Using Mid-Level Helpers |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2769 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2770 |
Usando Auxiliares Intermediários |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2771 |
++++++++++++++++++++++++++++++++ |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2772 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2773 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2774 |
In the previous section, we showed how to hook a trace source and get hopefully |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2775 |
interesting information out of a simulation. Perhaps you will recall that we |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2776 |
called logging to the standard output using ``std::cout`` a "Blunt Instrument" |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2777 |
much earlier in this chapter. We also wrote about how it was a problem having |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2778 |
to parse the log output in order to isolate interesting information. It may |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2779 |
have occurred to you that we just spent a lot of time implementing an example |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2780 |
that exhibits all of the problems we purport to fix with the |ns3| tracing |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2781 |
system! You would be correct. But, bear with us. We're not done yet. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2782 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2783 |
Na seção anterior, mostramos como adicionar uma origem do rastreamento e obter informações de interesse fora da simulação. Entretanto, no início do capítulo foi comentado que imprimir informações na saída padrão não é uma boa prática. Além disso, comentamos que não é interessante realizar processamento sobre a saída para isolar a informação de interesse. Podemos pensar que perdemos muito tempo em um exemplo que apresenta todos os problemas que propomos resolver usando o sistema de rastreamento do |ns3|. Você estaria correto, mas nós ainda não terminamos. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2784 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2785 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2786 |
One of the most important things we want to do is to is to have the ability to |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2787 |
easily control the amount of output coming out of the simulation; and we also |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2788 |
want to save those data to a file so we can refer back to it later. We can use |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2789 |
the mid-level trace helpers provided in |ns3| to do just that and complete |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2790 |
the picture. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2791 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2792 |
Uma da coisas mais importantes que queremos fazer é controlar a quantidade de saída da simulação. Nós podemos usar assistentes de rastreamento intermediários fornecido pelo |ns3| para alcançar com sucesso esse objetivo. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2793 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2794 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2795 |
We provide a script that writes the cwnd change and drop events developed in |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2796 |
the example ``fifth.cc`` to disk in separate files. The cwnd changes are |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2797 |
stored as a tab-separated ASCII file and the drop events are stored in a pcap |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2798 |
file. The changes to make this happen are quite small. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2799 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2800 |
Fornecemos um código que separa em arquivos distintos no disco os eventos de modificação da janela e os eventos de remoção. As alterações em cwnd são armazenadas em um arquivo ASCII separadas por TAB e os eventos de remoção são armazenados em um arquivo *pcap*. As alterações para obter esse resultado são pequenas. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2801 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2802 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2803 |
A sixth.cc Walkthrough |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2804 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2805 |
Analisando sixth.cc |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2806 |
~~~~~~~~~~~~~~~~~~~ |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2807 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2808 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2809 |
Let's take a look at the changes required to go from ``fifth.cc`` to |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2810 |
``sixth.cc``. Open ``examples/tutorial/fifth.cc`` in your favorite |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2811 |
editor. You can see the first change by searching for CwndChange. You will |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2812 |
find that we have changed the signatures for the trace sinks and have added |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2813 |
a single line to each sink that writes the traced information to a stream |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2814 |
representing a file. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2815 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2816 |
Vamos verificar as mudanças do arquivo ``fifth.cc`` para o ``sixth.cc``. Verificamos a primeira mudança em ``CwndChange``. Notamos que as assinaturas para o destino do rastreamento foram alteradas e que foi adicionada uma linha para cada um que escreve a informação rastreada para um fluxo (*stream*) representando um arquivo |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2817 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2818 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2819 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2820 |
static void |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2821 |
CwndChange (Ptr<OutputStreamWrapper> stream, uint32_t oldCwnd, uint32_t newCwnd) |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2822 |
{ |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2823 |
NS_LOG_UNCOND (Simulator::Now ().GetSeconds () << "\t" << newCwnd); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2824 |
*stream->GetStream () << Simulator::Now ().GetSeconds () << "\t" |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2825 |
<< oldCwnd << "\t" << newCwnd << std::endl; |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2826 |
} |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2827 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2828 |
static void |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2829 |
RxDrop (Ptr<PcapFileWrapper> file, Ptr<const Packet> p) |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2830 |
{ |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2831 |
NS_LOG_UNCOND ("RxDrop at " << Simulator::Now ().GetSeconds ()); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2832 |
file->Write(Simulator::Now(), p); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2833 |
} |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2834 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2835 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2836 |
We have added a "stream" parameter to the ``CwndChange`` trace sink. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2837 |
This is an object that holds (keeps safely alive) a C++ output stream. It |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2838 |
turns out that this is a very simple object, but one that manages lifetime |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2839 |
issues for the stream and solves a problem that even experienced C++ users |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2840 |
run into. It turns out that the copy constructor for ostream is marked |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2841 |
private. This means that ostreams do not obey value semantics and cannot |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2842 |
be used in any mechanism that requires the stream to be copied. This includes |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2843 |
the |ns3| callback system, which as you may recall, requires objects |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2844 |
that obey value semantics. Further notice that we have added the following |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2845 |
line in the ``CwndChange`` trace sink implementation: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2846 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2847 |
Um parâmetro "stream" foi adicionado para o destino do rastreamento ``CwndChange``. Este é um objeto que armazena (mantém seguramente vivo) um fluxo de saída em C++. Isto resulta em um objeto muito simples, mas que gerência problemas no ciclo de vida para fluxos e resolve um problema que mesmo programadores experientes de C++ tem dificuldades. Resulta que o construtor de cópia para o fluxo de saída (*ostream*) é marcado como privado. Isto significa que fluxos de saída não seguem a semântica de passagem por valor e não podem ser usados em mecanismos que necessitam que o fluxo seja copiado. Isto inclui o sistema de *callback* do |ns3|. Além disso, adicionamos a seguinte linha: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2848 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2849 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2850 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2851 |
*stream->GetStream () << Simulator::Now ().GetSeconds () << "\t" << oldCwnd |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2852 |
<< "\t" << newCwnd << std::endl; |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2853 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2854 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2855 |
This would be very familiar code if you replaced ``*stream->GetStream ()`` |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2856 |
with ``std::cout``, as in: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2857 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2858 |
que substitui ``std::cout`` por ``*stream->GetStream ()`` |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2859 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2860 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2861 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2862 |
std::cout << Simulator::Now ().GetSeconds () << "\t" << oldCwnd << "\t" << |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2863 |
newCwnd << std::endl; |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2864 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2865 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2866 |
This illustrates that the ``Ptr<OutputStreamWrapper>`` is really just |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2867 |
carrying around a ``std::ofstream`` for you, and you can use it here like |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2868 |
any other output stream. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2869 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2870 |
Isto demostra que o ``Ptr<OutputStreamWrapper>`` está apenas encapsulando um ``std::ofstream``, logo pode ser usado como qualquer outro fluxo de saída. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2871 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2872 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2873 |
A similar situation happens in ``RxDrop`` except that the object being |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2874 |
passed around (a ``Ptr<PcapFileWrapper>``) represents a pcap file. There |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2875 |
is a one-liner in the trace sink to write a timestamp and the contents of the |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2876 |
packet being dropped to the pcap file: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2877 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2878 |
Uma situação similar ocorre em ``RxDrop``, exceto que o objeto passado (``Ptr<PcapFileWrapper>``) representa um arquivo pcap. Há uma linha no *trace sink* para escrever um marcador de tempo (*timestamp*) eo conteúdo do pacote perdido para o arquivo pcap. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2879 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2880 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2881 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2882 |
file->Write(Simulator::Now(), p); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2883 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2884 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2885 |
Of course, if we have objects representing the two files, we need to create |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2886 |
them somewhere and also cause them to be passed to the trace sinks. If you |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2887 |
look in the ``main`` function, you will find new code to do just that: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2888 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2889 |
É claro, se nós temos objetos representando os dois arquivos, precisamos criá-los em algum lugar e também passá-los aos *trace sinks*. Se observarmos a função ``main``, temos o código: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2890 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2891 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2892 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2893 |
AsciiTraceHelper asciiTraceHelper; |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2894 |
Ptr<OutputStreamWrapper> stream = asciiTraceHelper.CreateFileStream ("sixth.cwnd"); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2895 |
ns3TcpSocket->TraceConnectWithoutContext ("CongestionWindow", |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2896 |
MakeBoundCallback (&CwndChange, stream)); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2897 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2898 |
... |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2899 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2900 |
PcapHelper pcapHelper; |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2901 |
Ptr<PcapFileWrapper> file = pcapHelper.CreateFile ("sixth.pcap", |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2902 |
std::ios::out, PcapHelper::DLT_PPP); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2903 |
devices.Get (1)->TraceConnectWithoutContext("PhyRxDrop", |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2904 |
MakeBoundCallback (&RxDrop, file)); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2905 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2906 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2907 |
In the first section of the code snippet above, we are creating the ASCII |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2908 |
trace file, creating an object responsible for managing it and using a |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2909 |
variant of the callback creation function to arrange for the object to be |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2910 |
passed to the sink. Our ASCII trace helpers provide a rich set of |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2911 |
functions to make using text (ASCII) files easy. We are just going to |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2912 |
illustrate the use of the file stream creation function here. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2913 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2914 |
Na primeira seção do código, criamos o arquivo de rastreamento ASCII e o objeto responsável para gerenciá-lo. Em seguida, usando uma das formas da função para criação da *callback* permitimos o objeto ser passado para o destino do rastreamento. As classes assistentes para rastreamento ASCII fornecem um vasto conjunto de funções para facilitar a manipulação de arquivos texto. Neste exemplo, focamos apenas na criação do arquivo para o fluxo de saída. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2915 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2916 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2917 |
The ``CreateFileStream{}`` function is basically going to instantiate |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2918 |
a std::ofstream object and create a new file (or truncate an existing file). |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2919 |
This ofstream is packaged up in an |ns3| object for lifetime management |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2920 |
and copy constructor issue resolution. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2921 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2922 |
A função ``CreateFileStream()`` instancia um objeto ``std::ofstream`` e cria um novo arquivo. O fluxo de saída ``ofstream`` é encapsulado em um objeto do |ns3| para gerenciamento do ciclo de vida e para resolver o |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2923 |
problema do construtor de cópia. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2924 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2925 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2926 |
We then take this |ns3| object representing the file and pass it to |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2927 |
``MakeBoundCallback()``. This function creates a callback just like |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2928 |
``MakeCallback()``, but it "binds" a new value to the callback. This |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2929 |
value is added to the callback before it is called. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2930 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2931 |
Então pegamos o objeto que representa o arquivo e passamos para ``MakeBoundCallback()``. Esta função cria um *callback* como ``MakeCallback()``, mas "associa" um novo valor para o *callback*. Este valor é adicionado ao *callback* antes de sua invocação. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2932 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2933 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2934 |
Essentially, ``MakeBoundCallback(&CwndChange, stream)`` causes the trace |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2935 |
source to add the additional "stream" parameter to the front of the formal |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2936 |
parameter list before invoking the callback. This changes the required |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2937 |
signature of the ``CwndChange`` sink to match the one shown above, which |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2938 |
includes the "extra" parameter ``Ptr<OutputStreamWrapper> stream``. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2939 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2940 |
Essencialmente, ``MakeBoundCallback(&CwndChange, stream)`` faz com que a origem do rastreamento adicione um parâmetro extra "fluxo" após a lista formal de parâmetros antes de invocar o *callback*. Esta mudança está de acordo com o apresentado anteriormente, a qual inclui o parâmetro ``Ptr<OutputStreamWrapper> stream``. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2941 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2942 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2943 |
In the second section of code in the snippet above, we instantiate a |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2944 |
``PcapHelper`` to do the same thing for our pcap trace file that we did |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2945 |
with the ``AsciiTraceHelper``. The line of code, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2946 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2947 |
Na segunda seção de código, instanciamos um ``PcapHelper`` para fazer a mesma coisa para o arquivo de rastreamento pcap. A linha de código, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2948 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2949 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2950 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2951 |
Ptr<PcapFileWrapper> file = pcapHelper.CreateFile ("sixth.pcap", "w", |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2952 |
PcapHelper::DLT_PPP); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2953 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2954 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2955 |
creates a pcap file named "sixth.pcap" with file mode "w". This means that |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2956 |
the new file is to truncated if an existing file with that name is found. The |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2957 |
final parameter is the "data link type" of the new pcap file. These are |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2958 |
the same as the pcap library data link types defined in ``bpf.h`` if you are |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2959 |
familar with pcap. In this case, ``DLT_PPP`` indicates that the pcap file |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2960 |
is going to contain packets prefixed with point to point headers. This is true |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2961 |
since the packets are coming from our point-to-point device driver. Other |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2962 |
common data link types are DLT_EN10MB (10 MB Ethernet) appropriate for csma |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2963 |
devices and DLT_IEEE802_11 (IEEE 802.11) appropriate for wifi devices. These |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2964 |
are defined in ``src/network/helper/trace-helper.h"`` if you are interested in seeing |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2965 |
the list. The entries in the list match those in ``bpf.h`` but we duplicate |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2966 |
them to avoid a pcap source dependence. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2967 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2968 |
cria um arquivo pcap chamado "sixth.pcap" no modo "w" (escrita). O parâmetro final é o "tipo da ligação de dados" do arquivo pcap. As opções estão definidas em ``bpf.h``. Neste caso, ``DLT_PPP`` indica que o arquivo pcap deverá conter pacotes prefixado com cabeçalhos ponto-a-ponto. Isto é verdade pois os pacotes estão chegando de nosso `driver` de dispositivo ponto-a-ponto. Outros tipos de ligação de dados comuns são DLT_EN10MB (10 MB Ethernet) apropriado para dispositivos CSMA e DLT_IEEE802_11 (IEEE 802.11) apropriado para dispositivos sem fio. O arquivo ``src/network/helper/trace-helper.h"`` define uma lista com os tipos. As entradas na lista são idênticas as definidas em ``bpf.h``, pois foram duplicadas para evitar um dependência com o pcap. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2969 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2970 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2971 |
A |ns3| object representing the pcap file is returned from ``CreateFile`` |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2972 |
and used in a bound callback exactly as it was in the ascii case. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2973 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2974 |
Um objeto |ns3| representando o arquivo pcap é retornado de ``CreateFile`` e usado em uma *callback* exatamente como no caso ASCII. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2975 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2976 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2977 |
An important detour: It is important to notice that even though both of these |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2978 |
objects are declared in very similar ways, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2979 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2980 |
É importante observar que ambos objetos são declarados de maneiras muito similares, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2981 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2982 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2983 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2984 |
Ptr<PcapFileWrapper> file ... |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2985 |
Ptr<OutputStreamWrapper> stream ... |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2986 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2987 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2988 |
The underlying objects are entirely different. For example, the |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2989 |
Ptr<PcapFileWrapper> is a smart pointer to an |ns3| Object that is a |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2990 |
fairly heaviweight thing that supports ``Attributes`` and is integrated into |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2991 |
the config system. The Ptr<OutputStreamWrapper>, on the other hand, is a smart |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2992 |
pointer to a reference counted object that is a very lightweight thing. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2993 |
Remember to always look at the object you are referencing before making any |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2994 |
assumptions about the "powers" that object may have. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2995 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2996 |
Mas os objetos internos são inteiramente diferentes. Por exemplo, o Ptr<PcapFileWrapper> é um ponteiro para um objeto |ns3| que suporta ``Attributes`` e é integrado dentro do sistema de configuração. O Ptr<OutputStreamWrapper>, por outro lado, é um ponteiro para uma referência para um simples objeto contado. Lembre-se sempre de analisar o objeto que você está referenciando antes de fazer suposições sobre os "poderes" que o objeto pode ter. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2997 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
2998 |
.. |
8771 | 2999 |
For example, take a look at ``src/network/utils/pcap-file-wrapper.h`` in the |
7751
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3000 |
distribution and notice, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3001 |
|
8771 | 3002 |
Por exemplo, acesse o arquivo ``src/network/utils/pcap-file-wrapper.h`` e observe, |
7751
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3003 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3004 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3005 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3006 |
class PcapFileWrapper : public Object |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3007 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3008 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3009 |
that class ``PcapFileWrapper`` is an |ns3| Object by virtue of |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3010 |
its inheritance. Then look at ``src/network/model/output-stream-wrapper.h`` and |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3011 |
notice, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3012 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3013 |
que a classe ``PcapFileWrapper`` é um ``Object`` |ns3| por herança. Já no arquivo ``src/network/model/output-stream-wrapper.h``, observe, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3014 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3015 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3016 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3017 |
class OutputStreamWrapper : public SimpleRefCount<OutputStreamWrapper> |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3018 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3019 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3020 |
that this object is not an |ns3| Object at all, it is "merely" a |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3021 |
C++ object that happens to support intrusive reference counting. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3022 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3023 |
que não é um ``Object`` |ns3|, mas um objeto C++ que suporta contagem de referência. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3024 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3025 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3026 |
The point here is that just because you read Ptr<something> it does not necessarily |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3027 |
mean that "something" is an |ns3| Object on which you can hang |ns3| |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3028 |
``Attributes``, for example. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3029 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3030 |
A questão é que se você tem um Ptr<alguma_coisa>, não necessariamente significa que "alguma_coisa" é um ``Object`` |ns3|, no qual você pode modificar ``Attributes``, por exemplo. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3031 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3032 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3033 |
Now, back to the example. If you now build and run this example, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3034 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3035 |
Voltando ao exemplo. Se compilarmos e executarmos o exemplo, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3036 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3037 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3038 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3039 |
./waf --run sixth |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3040 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3041 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3042 |
you will see the same messages appear as when you ran "fifth", but two new |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3043 |
files will appear in the top-level directory of your |ns3| distribution. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3044 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3045 |
Veremos as mesmas mensagens do "fifth", mas dois novos arquivos aparecerão no diretório base de sua distribuição do |ns3|. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3046 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3047 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3048 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3049 |
sixth.cwnd sixth.pcap |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3050 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3051 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3052 |
Since "sixth.cwnd" is an ASCII text file, you can view it with ``cat`` |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3053 |
or your favorite file viewer. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3054 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3055 |
Como "sixth.cwnd" é um arquivo texto ASCII, você pode visualizar usando *cat* ou um editor de texto. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3056 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3057 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3058 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3059 |
1.20919 536 1072 |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3060 |
1.21511 1072 1608 |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3061 |
... |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3062 |
9.30922 8893 8925 |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3063 |
9.31754 8925 8957 |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3064 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3065 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3066 |
You have a tab separated file with a timestamp, an old congestion window and a |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3067 |
new congestion window suitable for directly importing into your plot program. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3068 |
There are no extraneous prints in the file, no parsing or editing is required. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3069 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3070 |
Cada linha tem um marcador de tempo, o valor da janela de congestionamento e o valor da nova janela de congestionamento separados por tabulação, para importar diretamente para seu programa de plotagem de gráficos. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3071 |
Não há nenhuma outra informação além da rastreada, logo não é necessário processamento ou edição do arquivo. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3072 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3073 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3074 |
Since "sixth.pcap" is a pcap file, you can view it with ``tcpdump``. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3075 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3076 |
Como "sixth.pcap" é um arquivo pcap, você pode visualizar usando o ``tcpdump`` ou ``wireshark``. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3077 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3078 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3079 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3080 |
reading from file ../../sixth.pcap, link-type PPP (PPP) |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3081 |
1.251507 IP 10.1.1.1.49153 > 10.1.1.2.8080: . 17689:18225(536) ack 1 win 65535 |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3082 |
1.411478 IP 10.1.1.1.49153 > 10.1.1.2.8080: . 33808:34312(504) ack 1 win 65535 |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3083 |
... |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3084 |
7.393557 IP 10.1.1.1.49153 > 10.1.1.2.8080: . 781568:782072(504) ack 1 win 65535 |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3085 |
8.141483 IP 10.1.1.1.49153 > 10.1.1.2.8080: . 874632:875168(536) ack 1 win 65535 |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3086 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3087 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3088 |
You have a pcap file with the packets that were dropped in the simulation. There |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3089 |
are no other packets present in the file and there is nothing else present to |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3090 |
make life difficult. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3091 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3092 |
Você tem um arquivo pcap com os pacotes que foram descartados na simulação. Não há nenhum outro pacote presente no arquivo e nada mais para dificultar sua análise. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3093 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3094 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3095 |
It's been a long journey, but we are now at a point where we can appreciate the |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3096 |
|ns3| tracing system. We have pulled important events out of the middle |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3097 |
of a TCP implementation and a device driver. We stored those events directly in |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3098 |
files usable with commonly known tools. We did this without modifying any of the |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3099 |
core code involved, and we did this in only 18 lines of code: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3100 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3101 |
Foi uma longa jornada, mas agora entendemos porque o sistema de rastreamento é interessante. Nós obtemos e armazenamos importantes eventos da implementação do TCP e do `driver` de dispositivo. E não modificamos nenhuma linha do código do núcleo do |ns3|, e ainda fizemos isso com apenas 18 linhas de código: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3102 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3103 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3104 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3105 |
static void |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3106 |
CwndChange (Ptr<OutputStreamWrapper> stream, uint32_t oldCwnd, uint32_t newCwnd) |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3107 |
{ |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3108 |
NS_LOG_UNCOND (Simulator::Now ().GetSeconds () << "\t" << newCwnd); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3109 |
*stream->GetStream () << Simulator::Now ().GetSeconds () << "\t" << |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3110 |
oldCwnd << "\t" << newCwnd << std::endl; |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3111 |
} |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3112 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3113 |
... |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3114 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3115 |
AsciiTraceHelper asciiTraceHelper; |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3116 |
Ptr<OutputStreamWrapper> stream = asciiTraceHelper.CreateFileStream ("sixth.cwnd"); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3117 |
ns3TcpSocket->TraceConnectWithoutContext ("CongestionWindow", |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3118 |
MakeBoundCallback (&CwndChange, stream)); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3119 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3120 |
... |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3121 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3122 |
static void |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3123 |
RxDrop (Ptr<PcapFileWrapper> file, Ptr<const Packet> p) |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3124 |
{ |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3125 |
NS_LOG_UNCOND ("RxDrop at " << Simulator::Now ().GetSeconds ()); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3126 |
file->Write(Simulator::Now(), p); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3127 |
} |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3128 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3129 |
... |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3130 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3131 |
PcapHelper pcapHelper; |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3132 |
Ptr<PcapFileWrapper> file = pcapHelper.CreateFile ("sixth.pcap", "w", |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3133 |
PcapHelper::DLT_PPP); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3134 |
devices.Get (1)->TraceConnectWithoutContext("PhyRxDrop", |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3135 |
MakeBoundCallback (&RxDrop, file)); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3136 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3137 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3138 |
Using Trace Helpers |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3139 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3140 |
Usando Classes Assistentes para Rastreamento |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3141 |
******************************************** |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3142 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3143 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3144 |
The |ns3| trace helpers provide a rich environment for configuring and |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3145 |
selecting different trace events and writing them to files. In previous |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3146 |
sections, primarily "Building Topologies," we have seen several varieties |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3147 |
of the trace helper methods designed for use inside other (device) helpers. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3148 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3149 |
As classes assistentes (*trace helpers*) de rastreamento do |ns3| proveem um ambiente rico para configurar, selecionar e escrever diferentes eventos de rastreamento para arquivos. Nas seções anteriores, primeiramente em "Construindo Topologias", nós vimos diversas formas de métodos assistentes para rastreamento projetados para uso dentro de outras classes assistentes. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3150 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3151 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3152 |
Perhaps you will recall seeing some of these variations: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3153 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3154 |
Segue alguns desses métodos já estudados: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3155 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3156 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3157 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3158 |
pointToPoint.EnablePcapAll ("second"); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3159 |
pointToPoint.EnablePcap ("second", p2pNodes.Get (0)->GetId (), 0); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3160 |
csma.EnablePcap ("third", csmaDevices.Get (0), true); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3161 |
pointToPoint.EnableAsciiAll (ascii.CreateFileStream ("myfirst.tr")); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3162 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3163 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3164 |
What may not be obvious, though, is that there is a consistent model for all of |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3165 |
the trace-related methods found in the system. We will now take a little time |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3166 |
and take a look at the "big picture". |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3167 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3168 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3169 |
O que não parece claro é que há um modelo consistente para todos os métodos relacionados à rastreamento encontrados no sistema. Apresentaremos uma visão geral desse modelo. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3170 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3171 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3172 |
There are currently two primary use cases of the tracing helpers in |ns3|: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3173 |
Device helpers and protocol helpers. Device helpers look at the problem |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3174 |
of specifying which traces should be enabled through a node, device pair. For |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3175 |
example, you may want to specify that pcap tracing should be enabled on a |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3176 |
particular device on a specific node. This follows from the |ns3| device |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3177 |
conceptual model, and also the conceptual models of the various device helpers. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3178 |
Following naturally from this, the files created follow a |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3179 |
<prefix>-<node>-<device> naming convention. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3180 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3181 |
Há dois casos de uso primários de classes assistentes em |ns3|: Classes assistentes de dispositivo e classes assistentes de protocolo. Classes assistentes de dispositivo tratam o problema de especificar quais rastreamentos deveriam ser habilitados no domínio do nó de rede. Por exemplo, poderíamos querer especificar que o rastreamento pcap deveria ser ativado em um dispositivo particular de um nó específico. Isto é o que define o modelo conceitual de dispositivo no |ns3| e também os modelos conceituais de várias classes assistentes de dispositivos. Baseado nisso, os arquivos criados seguem a convenção de nome `<prefixo>-<nó>-<dispositivo>`. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3182 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3183 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3184 |
Protocol helpers look at the problem of specifying which traces should be |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3185 |
enabled through a protocol and interface pair. This follows from the |ns3| |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3186 |
protocol stack conceptual model, and also the conceptual models of internet |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3187 |
stack helpers. Naturally, the trace files should follow a |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3188 |
<prefix>-<protocol>-<interface> naming convention. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3189 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3190 |
As classes assistentes de protocolos tratam o problema de especificar quais rastreamentos deveriam ser ativados no protocolo e interface. Isto é definido pelo modelo conceitual de pilha de protocolo do |ns3| e também pelos modelos conceituais de classes assistentes de pilha de rede. Baseado nisso, os arquivos criados seguem a convenção de nome `<prefixo>-<protocolo>-<interface>`. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3191 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3192 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3193 |
The trace helpers therefore fall naturally into a two-dimensional taxonomy. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3194 |
There are subtleties that prevent all four classes from behaving identically, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3195 |
but we do strive to make them all work as similarly as possible; and whenever |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3196 |
possible there are analogs for all methods in all classes. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3197 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3198 |
As classes assistentes consequentemente encaixam-se em uma taxinomia bi-dimensional. Há pequenos detalhes que evitam todas as classes comportarem-se da mesma forma, mas fizemos parecer que trabalham tão similarmente quanto possível e quase sempre há similares para todos métodos em todas as classes. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3199 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3200 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3201 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3202 |
| pcap | ascii | |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3203 |
---------------------------------------------------+------+-------| |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3204 |
Classe Assistente de Dispositivo (*Device Helper*) | | | |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3205 |
---------------------------------------------------+------+-------| |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3206 |
Classe Assistente de Protocolo (*Protocol Helper*) | | | |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3207 |
---------------------------------------------------+------+-------| |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3208 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3209 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3210 |
We use an approach called a ``mixin`` to add tracing functionality to our |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3211 |
helper classes. A ``mixin`` is a class that provides functionality to that |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3212 |
is inherited by a subclass. Inheriting from a mixin is not considered a form |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3213 |
of specialization but is really a way to collect functionality. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3214 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3215 |
Usamos uma abordagem chamada ``mixin`` para adicionar funcionalidade de rastreamento para nossas classes assistentes. Uma ``mixin`` é uma classe que provê funcionalidade para aquela que é herdada por uma subclasse. Herdar de um ``mixin`` não é considerado uma forma de especialização mas é realmente uma maneira de colecionar funcionalidade. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3216 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3217 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3218 |
Let's take a quick look at all four of these cases and their respective |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3219 |
``mixins``. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3220 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3221 |
Vamos verificar rapidamente os quatro casos e seus respectivos ``mixins``. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3222 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3223 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3224 |
Pcap Tracing Device Helpers |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3225 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3226 |
Classes Assistentes de Dispositivo para Rastreamento Pcap |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3227 |
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3228 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3229 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3230 |
The goal of these helpers is to make it easy to add a consistent pcap trace |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3231 |
facility to an |ns3| device. We want all of the various flavors of |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3232 |
pcap tracing to work the same across all devices, so the methods of these |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3233 |
helpers are inherited by device helpers. Take a look at |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3234 |
``src/network/helper/trace-helper.h`` if you want to follow the discussion while |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3235 |
looking at real code. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3236 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3237 |
O objetivo destes assistentes é simplificar a adição de um utilitário de rastreamento pcap consistente para um dispositivo |ns3|. Queremos que opere da mesma forma entre todos os dispositivos, logo os métodos destes assistentes são herdados por classes assistentes de dispositivo. Observe o arquivo ``src/network/helper/trace-helper.h`` para entender a discussão do código a seguir. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3238 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3239 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3240 |
The class ``PcapHelperForDevice`` is a ``mixin`` provides the high level |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3241 |
functionality for using pcap tracing in an |ns3| device. Every device |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3242 |
must implement a single virtual method inherited from this class. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3243 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3244 |
A classe ``PcapHelperForDevice`` é um ``mixin`` que provê a funcionalidade de alto nível para usar rastreamento pcap em um dispositivo |ns3|. Todo dispositivo deve implementar um único método virtual herdado dessa classe. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3245 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3246 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3247 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3248 |
virtual void EnablePcapInternal (std::string prefix, Ptr<NetDevice> nd, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3249 |
bool promiscuous, bool explicitFilename) = 0; |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3250 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3251 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3252 |
The signature of this method reflects the device-centric view of the situation |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3253 |
at this level. All of the public methods inherited from class |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3254 |
``PcapUserHelperForDevice`` reduce to calling this single device-dependent |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3255 |
implementation method. For example, the lowest level pcap method, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3256 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3257 |
A assinatura deste método reflete a visão do dispositivo da situação neste nível. Todos os métodos públicos herdados da classe ``PcapUserHelperForDevice`` são reduzidos a chamada da implementação deste simples método dependente de dispositivo. Por exemplo, o nível mais baixo do método pcap, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3258 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3259 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3260 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3261 |
void EnablePcap (std::string prefix, Ptr<NetDevice> nd, bool promiscuous = false, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3262 |
bool explicitFilename = false); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3263 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3264 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3265 |
will call the device implementation of ``EnablePcapInternal`` directly. All |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3266 |
other public pcap tracing methods build on this implementation to provide |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3267 |
additional user-level functionality. What this means to the user is that all |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3268 |
device helpers in the system will have all of the pcap trace methods available; |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3269 |
and these methods will all work in the same way across devices if the device |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3270 |
implements ``EnablePcapInternal`` correctly. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3271 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3272 |
chamaremos diretamente a implementação do dispositivo de ``EnablePcapInternal``. Todos os outros métodos de rastreamento pcap públicos desta implementação são para prover funcionalidade adicional em nível de usuário. Para o usuário, isto significa que todas as classes assistentes de dispositivo no sistema terão todos os métodos de rastreamento pcap disponíveis; e estes métodos trabalharão da mesma forma entre dispositivos se o dispositivo implementar corretamente ``EnablePcapInternal``. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3273 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3274 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3275 |
Pcap Tracing Device Helper Methods |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3276 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3277 |
Métodos da Classe Assistente de Dispositivo para Rastreamento Pcap |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3278 |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3279 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3280 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3281 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3282 |
void EnablePcap (std::string prefix, Ptr<NetDevice> nd, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3283 |
bool promiscuous = false, bool explicitFilename = false); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3284 |
void EnablePcap (std::string prefix, std::string ndName, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3285 |
bool promiscuous = false, bool explicitFilename = false); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3286 |
void EnablePcap (std::string prefix, NetDeviceContainer d, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3287 |
bool promiscuous = false); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3288 |
void EnablePcap (std::string prefix, NodeContainer n, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3289 |
bool promiscuous = false); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3290 |
void EnablePcap (std::string prefix, uint32_t nodeid, uint32_t deviceid, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3291 |
bool promiscuous = false); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3292 |
void EnablePcapAll (std::string prefix, bool promiscuous = false); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3293 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3294 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3295 |
In each of the methods shown above, there is a default parameter called |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3296 |
``promiscuous`` that defaults to false. This parameter indicates that the |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3297 |
trace should not be gathered in promiscuous mode. If you do want your traces |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3298 |
to include all traffic seen by the device (and if the device supports a |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3299 |
promiscuous mode) simply add a true parameter to any of the calls above. For example, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3300 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3301 |
Em cada método apresentado existe um parâmetro padrão chamado ``promiscuous`` que é definido para o valor "false". Este parâmetro indica que o rastreamento não deveria coletar dados em modo promíscuo. Se quisermos incluir todo tráfego visto pelo dispositivo devemos modificar o valor para "true". Por exemplo, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3302 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3303 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3304 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3305 |
Ptr<NetDevice> nd; |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3306 |
... |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3307 |
helper.EnablePcap ("prefix", nd, true); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3308 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3309 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3310 |
will enable promiscuous mode captures on the ``NetDevice`` specified by ``nd``. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3311 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3312 |
ativará o modo de captura promíscuo no ``NetDevice`` especificado por ``nd``. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3313 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3314 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3315 |
The first two methods also include a default parameter called ``explicitFilename`` |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3316 |
that will be discussed below. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3317 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3318 |
Os dois primeiros métodos também incluem um parâmetro padrão chamado ``explicitFilename`` que será abordado a seguir. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3319 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3320 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3321 |
You are encouraged to peruse the Doxygen for class ``PcapHelperForDevice`` |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3322 |
to find the details of these methods; but to summarize ... |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3323 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3324 |
É interessante procurar maiores detalhes dos métodos da classe ``PcapHelperForDevice`` no Doxygen; mas para resumir ... |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3325 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3326 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3327 |
You can enable pcap tracing on a particular node/net-device pair by providing a |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3328 |
``Ptr<NetDevice>`` to an ``EnablePcap`` method. The ``Ptr<Node>`` is |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3329 |
implicit since the net device must belong to exactly one ``Node``. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3330 |
For example, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3331 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3332 |
Podemos ativar o rastreamento pcap em um par nó/dispositivo-rede específico provendo um ``Ptr<NetDevice>`` para um método ``EnablePcap``. O ``Ptr<Node>`` é implícito, pois o dispositivo de rede deve estar em um ``Node``. Por exemplo, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3333 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3334 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3335 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3336 |
Ptr<NetDevice> nd; |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3337 |
... |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3338 |
helper.EnablePcap ("prefix", nd); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3339 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3340 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3341 |
You can enable pcap tracing on a particular node/net-device pair by providing a |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3342 |
``std::string`` representing an object name service string to an |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3343 |
``EnablePcap`` method. The ``Ptr<NetDevice>`` is looked up from the name |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3344 |
string. Again, the ``<Node>`` is implicit since the named net device must |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3345 |
belong to exactly one ``Node``. For example, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3346 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3347 |
Podemos ativar o rastreamento pcap em um par nó/dispositivo-rede passando uma ``std::string`` que representa um nome de serviço para um método ``EnablePcap``. O ``Ptr<NetDevice>`` é buscado a partir do nome da `string`. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3348 |
Novamente, o ``Ptr<Node>`` é implícito pois o dispositivo de rede deve estar em um ``Node``. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3349 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3350 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3351 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3352 |
Names::Add ("server" ...); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3353 |
Names::Add ("server/eth0" ...); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3354 |
... |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3355 |
helper.EnablePcap ("prefix", "server/eth0"); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3356 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3357 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3358 |
You can enable pcap tracing on a collection of node/net-device pairs by |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3359 |
providing a ``NetDeviceContainer``. For each ``NetDevice`` in the container |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3360 |
the type is checked. For each device of the proper type (the same type as is |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3361 |
managed by the device helper), tracing is enabled. Again, the ``<Node>`` is |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3362 |
implicit since the found net device must belong to exactly one ``Node``. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3363 |
For example, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3364 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3365 |
Podemos ativar o rastreamento pcap em uma coleção de pares nós/dispositivos usando um ``NetDeviceContainer``. Para cada ``NetDevice`` no contêiner o tipo é verificado. Para cada dispositivo com o tipo adequado, o rastreamento será ativado. Por exemplo, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3366 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3367 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3368 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3369 |
NetDeviceContainer d = ...; |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3370 |
... |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3371 |
helper.EnablePcap ("prefix", d); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3372 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3373 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3374 |
You can enable pcap tracing on a collection of node/net-device pairs by |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3375 |
providing a ``NodeContainer``. For each ``Node`` in the ``NodeContainer`` |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3376 |
its attached ``NetDevices`` are iterated. For each ``NetDevice`` attached |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3377 |
to each node in the container, the type of that device is checked. For each |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3378 |
device of the proper type (the same type as is managed by the device helper), |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3379 |
tracing is enabled. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3380 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3381 |
Podemos ativar o rastreamento em uma coleção de pares nó/dispositivo-rede usando um ``NodeContainer``. Para cada ``Node`` no ``NodeContainer`` seus ``NetDevices`` são percorridos e verificados segundo o tipo. Para cada dispositivo com o tipo adequado, o rastreamento é ativado. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3382 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3383 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3384 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3385 |
NodeContainer n; |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3386 |
... |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3387 |
helper.EnablePcap ("prefix", n); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3388 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3389 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3390 |
You can enable pcap tracing on the basis of node ID and device ID as well as |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3391 |
with explicit ``Ptr``. Each ``Node`` in the system has an integer node ID |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3392 |
and each device connected to a node has an integer device ID. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3393 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3394 |
Podemos ativar o rastreamento pcap usando o número identificador (`ID`) do nó e do dispositivo. Todo ``Node`` no sistema tem um valor inteiro indicando o `ID` do nó e todo dispositivo conectado ao nó tem um valor inteiro indicando o `ID` do dispositivo. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3395 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3396 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3397 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3398 |
helper.EnablePcap ("prefix", 21, 1); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3399 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3400 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3401 |
Finally, you can enable pcap tracing for all devices in the system, with the |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3402 |
same type as that managed by the device helper. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3403 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3404 |
Por fim, podemos ativar rastreamento pcap para todos os dispositivos no sistema, desde que o tipo seja o mesmo gerenciado pela classe assistentes de dispositivo. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3405 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3406 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3407 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3408 |
helper.EnablePcapAll ("prefix"); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3409 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3410 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3411 |
Pcap Tracing Device Helper Filename Selection |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3412 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3413 |
Seleção de um Nome de Arquivo para o Rastreamento Pcap da Classe Assistente de Dispositivo |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3414 |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3415 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3416 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3417 |
Implicit in the method descriptions above is the construction of a complete |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3418 |
filename by the implementation method. By convention, pcap traces in the |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3419 |
|ns3| system are of the form "<prefix>-<node id>-<device id>.pcap" |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3420 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3421 |
Implícito nas descrições de métodos anteriores é a construção do nome de arquivo por meio do método da implementação. Por convenção, rastreamento pcap no |ns3| usa a forma "<prefixo>-<id do nó>-<id do dispositivo>.pcap" |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3422 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3423 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3424 |
As previously mentioned, every node in the system will have a system-assigned |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3425 |
node id; and every device will have an interface index (also called a device id) |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3426 |
relative to its node. By default, then, a pcap trace file created as a result |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3427 |
of enabling tracing on the first device of node 21 using the prefix "prefix" |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3428 |
would be "prefix-21-1.pcap". |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3429 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3430 |
Como mencionado, todo nó no sistema terá um `id` de nó associado; e todo dispositivo terá um índice de interface (também chamado de id do dispositivo) relativo ao seu nó. Por padrão, então, um arquivo pcap criado como um resultado de ativar rastreamento no primeiro dispositivo do nó 21 usando o prefixo "prefix" seria "prefix-21-1.pcap". |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3431 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3432 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3433 |
You can always use the |ns3| object name service to make this more clear. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3434 |
For example, if you use the object name service to assign the name "server" |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3435 |
to node 21, the resulting pcap trace file name will automatically become, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3436 |
"prefix-server-1.pcap" and if you also assign the name "eth0" to the |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3437 |
device, your pcap file name will automatically pick this up and be called |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3438 |
"prefix-server-eth0.pcap". |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3439 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3440 |
Sempre podemos usar o serviço de nome de objeto do |ns3| para tornar isso mais claro. Por exemplo, se você usa o serviço para associar o nome "server" ao nó 21, o arquivo pcap resultante automaticamente será, "prefix-server-1.pcap" e se você também associar o nome "eth0" ao dispositivo, seu nome do arquivo pcap automaticamente será denominado "prefix-server-eth0.pcap". |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3441 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3442 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3443 |
Finally, two of the methods shown above, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3444 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3445 |
Finalmente, dois dos métodos mostrados, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3446 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3447 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3448 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3449 |
void EnablePcap (std::string prefix, Ptr<NetDevice> nd, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3450 |
bool promiscuous = false, bool explicitFilename = false); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3451 |
void EnablePcap (std::string prefix, std::string ndName, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3452 |
bool promiscuous = false, bool explicitFilename = false); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3453 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3454 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3455 |
have a default parameter called ``explicitFilename``. When set to true, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3456 |
this parameter disables the automatic filename completion mechanism and allows |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3457 |
you to create an explicit filename. This option is only available in the |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3458 |
methods which enable pcap tracing on a single device. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3459 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3460 |
tem um parâmetro padrão ``explicitFilename``. Quando modificado para verdadeiro, este parâmetro desabilita o mecanismo automático de completar o nome do arquivo e permite criarmos um nome de arquivo abertamente. Esta opção está disponível nos métodos que ativam o rastreamento pcap em um único dispositivo. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3461 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3462 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3463 |
For example, in order to arrange for a device helper to create a single |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3464 |
promiscuous pcap capture file of a specific name ("my-pcap-file.pcap") on a |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3465 |
given device, one could: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3466 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3467 |
Por exemplo, com a finalidade providenciar uma classe assistente de dispositivo para criar um único arquivo de captura pcap no modo promíscuo com um nome específico ("my-pcap-file.pcap") em um determinado dispositivo: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3468 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3469 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3470 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3471 |
Ptr<NetDevice> nd; |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3472 |
... |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3473 |
helper.EnablePcap ("my-pcap-file.pcap", nd, true, true); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3474 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3475 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3476 |
The first ``true`` parameter enables promiscuous mode traces and the second |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3477 |
tells the helper to interpret the ``prefix`` parameter as a complete filename. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3478 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3479 |
O primeiro parâmetro ``true`` habilita o modo de rastreamento promíscuo e o segundo faz com que o parâmetro ``prefix`` seja interpretado como um nome de arquivo completo. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3480 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3481 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3482 |
Ascii Tracing Device Helpers |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3483 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3484 |
Classes Assistentes de Dispositivo para Rastreamento ASCII |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3485 |
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3486 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3487 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3488 |
The behavior of the ascii trace helper ``mixin`` is substantially similar to |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3489 |
the pcap version. Take a look at ``src/network/helper/trace-helper.h`` if you want to |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3490 |
follow the discussion while looking at real code. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3491 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3492 |
O comportamento do assistente de rastreamento ASCII ``mixin`` é similar a versão do pcap. Acesse o arquivo ``src/network/helper/trace-helper.h`` para compreender melhor o funcionamento dessa classe assistente. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3493 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3494 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3495 |
The class ``AsciiTraceHelperForDevice`` adds the high level functionality for |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3496 |
using ascii tracing to a device helper class. As in the pcap case, every device |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3497 |
must implement a single virtual method inherited from the ascii trace ``mixin``. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3498 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3499 |
A classe ``AsciiTraceHelperForDevice`` adiciona funcionalidade em alto nível para usar o rastreamento ASCII para uma classe assistente de dispositivo. Como no caso do pcap, todo dispositivo deve implementar um método herdado do rastreador ASCII ``mixin``. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3500 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3501 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3502 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3503 |
virtual void EnableAsciiInternal (Ptr<OutputStreamWrapper> stream, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3504 |
std::string prefix, Ptr<NetDevice> nd, bool explicitFilename) = 0; |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3505 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3506 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3507 |
The signature of this method reflects the device-centric view of the situation |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3508 |
at this level; and also the fact that the helper may be writing to a shared |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3509 |
output stream. All of the public ascii-trace-related methods inherited from |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3510 |
class ``AsciiTraceHelperForDevice`` reduce to calling this single device- |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3511 |
dependent implementation method. For example, the lowest level ascii trace |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3512 |
methods, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3513 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3514 |
A assinatura deste método reflete a visão do dispositivo da situação neste nível; e também o fato que o assistente pode ser escrito para um fluxo de saída compartilhado. Todos os métodos públicos associados ao rastreamento ASCII herdam da classe ``AsciiTraceHelperForDevice`` resumem-se a chamada deste único método dependente de implementação. Por exemplo, os métodos de rastreamento ASCII de mais baixo nível, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3515 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3516 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3517 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3518 |
void EnableAscii (std::string prefix, Ptr<NetDevice> nd, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3519 |
bool explicitFilename = false); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3520 |
void EnableAscii (Ptr<OutputStreamWrapper> stream, Ptr<NetDevice> nd); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3521 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3522 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3523 |
will call the device implementation of ``EnableAsciiInternal`` directly, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3524 |
providing either a valid prefix or stream. All other public ascii tracing |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3525 |
methods will build on these low-level functions to provide additional user-level |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3526 |
functionality. What this means to the user is that all device helpers in the |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3527 |
system will have all of the ascii trace methods available; and these methods |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3528 |
will all work in the same way across devices if the devices implement |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3529 |
``EnablAsciiInternal`` correctly. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3530 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3531 |
chamarão uma implementação de ``EnableAsciiInternal`` diretamente, passando um prefixo ou fluxo válido. Todos os outros métodos públicos serão construídos a partir destas funções de baixo nível para fornecer funcionalidades adicionais em nível de usuário. Para o usuário, isso significa que todos os assistentes de |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3532 |
dispositivo no sistema terão todos os métodos de rastreamento ASCII disponíveis e estes métodos trabalharão do mesmo modo em todos os dispositivos se estes implementarem ``EnableAsciiInternal``. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3533 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3534 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3535 |
Ascii Tracing Device Helper Methods |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3536 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3537 |
Métodos da Classe Assistente de Dispositivo para Rastreamento ASCII |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3538 |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3539 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3540 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3541 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3542 |
void EnableAscii (std::string prefix, Ptr<NetDevice> nd, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3543 |
bool explicitFilename = false); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3544 |
void EnableAscii (Ptr<OutputStreamWrapper> stream, Ptr<NetDevice> nd); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3545 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3546 |
void EnableAscii (std::string prefix, std::string ndName, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3547 |
bool explicitFilename = false); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3548 |
void EnableAscii (Ptr<OutputStreamWrapper> stream, std::string ndName); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3549 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3550 |
void EnableAscii (std::string prefix, NetDeviceContainer d); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3551 |
void EnableAscii (Ptr<OutputStreamWrapper> stream, NetDeviceContainer d); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3552 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3553 |
void EnableAscii (std::string prefix, NodeContainer n); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3554 |
void EnableAscii (Ptr<OutputStreamWrapper> stream, NodeContainer n); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3555 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3556 |
void EnableAsciiAll (std::string prefix); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3557 |
void EnableAsciiAll (Ptr<OutputStreamWrapper> stream); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3558 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3559 |
void EnableAscii (std::string prefix, uint32_t nodeid, uint32_t deviceid, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3560 |
bool explicitFilename); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3561 |
void EnableAscii (Ptr<OutputStreamWrapper> stream, uint32_t nodeid, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3562 |
uint32_t deviceid); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3563 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3564 |
.. |
8772 | 3565 |
You are encouraged to peruse the Doxygen for class ``AsciiTraceHelperForDevice`` |
7751
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3566 |
to find the details of these methods; but to summarize ... |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3567 |
|
8772 | 3568 |
Para maiores detalhes sobre os métodos é interessante consultar a documentação para a classe ``AsciiTraceHelperForDevice``; mas para resumir ... |
7751
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3569 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3570 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3571 |
There are twice as many methods available for ascii tracing as there were for |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3572 |
pcap tracing. This is because, in addition to the pcap-style model where traces |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3573 |
from each unique node/device pair are written to a unique file, we support a model |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3574 |
in which trace information for many node/device pairs is written to a common file. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3575 |
This means that the <prefix>-<node>-<device> file name generation mechanism is |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3576 |
replaced by a mechanism to refer to a common file; and the number of API methods |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3577 |
is doubled to allow all combinations. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3578 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3579 |
Há duas vezes mais métodos disponíveis para rastreamento ASCII que para rastreamento pcap. Isto ocorre pois para o modelo pcap os rastreamentos de cada par nó/dispositivo-rede são escritos para um único arquivo, enquanto que no ASCII todo as as informações são escritas para um arquivo comum. Isto significa que o mecanismo de geração de nomes de arquivos `<prefixo>-<nó>-<dispositivo>` é substituído por um mecanismo para referenciar um arquivo comum; e o número de métodos da API é duplicado para permitir todas as combinações. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3580 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3581 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3582 |
Just as in pcap tracing, you can enable ascii tracing on a particular |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3583 |
node/net-device pair by providing a ``Ptr<NetDevice>`` to an ``EnableAscii`` |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3584 |
method. The ``Ptr<Node>`` is implicit since the net device must belong to |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3585 |
exactly one ``Node``. For example, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3586 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3587 |
Assim como no rastreamento pcap, podemos ativar o rastreamento ASCII em um par nó/dispositivo-rede passando um ``Ptr<NetDevice>`` para um método ``EnableAscii``. O ``Ptr<Node>`` é implícito pois o dispositivo de rede deve pertencer a exatamente um ``Node``. Por exemplo, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3588 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3589 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3590 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3591 |
Ptr<NetDevice> nd; |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3592 |
... |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3593 |
helper.EnableAscii ("prefix", nd); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3594 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3595 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3596 |
The first four methods also include a default parameter called ``explicitFilename`` |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3597 |
that operate similar to equivalent parameters in the pcap case. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3598 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3599 |
Os primeiros quatro métodos também incluem um parâmetro padrão ``explicitFilename`` que opera similar aos parâmetros no caso do pcap. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3600 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3601 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3602 |
In this case, no trace contexts are written to the ascii trace file since they |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3603 |
would be redundant. The system will pick the file name to be created using |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3604 |
the same rules as described in the pcap section, except that the file will |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3605 |
have the suffix ".tr" instead of ".pcap". |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3606 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3607 |
Neste caso, nenhum contexto de rastreamento é escrito para o arquivo ASCII pois seriam redundantes. O sistema pegará o nome do arquivo para ser criado usando as mesmas regras como descritas na seção pcap, exceto que o arquivo terá o extensão ".tr" ao invés de ".pcap". |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3608 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3609 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3610 |
If you want to enable ascii tracing on more than one net device and have all |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3611 |
traces sent to a single file, you can do that as well by using an object to |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3612 |
refer to a single file. We have already seen this in the "cwnd" example |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3613 |
above: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3614 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3615 |
Para habilitar o rastreamento ASCII em mais de um dispositivo de rede e ter todos os dados de rastreamento enviados para um único arquivo, pode-se usar um objeto para referenciar um único arquivo. Nós já verificamos isso no exemplo "cwnd": |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3616 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3617 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3618 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3619 |
Ptr<NetDevice> nd1; |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3620 |
Ptr<NetDevice> nd2; |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3621 |
... |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3622 |
Ptr<OutputStreamWrapper> stream = asciiTraceHelper.CreateFileStream |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3623 |
("trace-file-name.tr"); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3624 |
... |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3625 |
helper.EnableAscii (stream, nd1); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3626 |
helper.EnableAscii (stream, nd2); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3627 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3628 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3629 |
In this case, trace contexts are written to the ascii trace file since they |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3630 |
are required to disambiguate traces from the two devices. Note that since the |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3631 |
user is completely specifying the file name, the string should include the ",tr" |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3632 |
for consistency. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3633 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3634 |
Neste caso, os contextos são escritos para o arquivo ASCII quando é necessário distinguir os dados de rastreamento de dois dispositivos. É interessante usar no nome do arquivo a extensão ".tr" por motivos de consistência. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3635 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3636 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3637 |
You can enable ascii tracing on a particular node/net-device pair by providing a |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3638 |
``std::string`` representing an object name service string to an |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3639 |
``EnablePcap`` method. The ``Ptr<NetDevice>`` is looked up from the name |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3640 |
string. Again, the ``<Node>`` is implicit since the named net device must |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3641 |
belong to exactly one ``Node``. For example, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3642 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3643 |
Podemos habilitar o rastreamento ASCII em um par nó/dispositivo-rede específico passando ao método ``EnableAscii`` uma ``std::string`` representando um nome no serviço de nomes de objetos. O ``Ptr<NetDevice>`` é obtido a partir do nome. Novamente, o ``<Node>`` é implícito pois o dispositivo de rede deve pertencer a exatamente um ``Node``. Por exemplo, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3644 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3645 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3646 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3647 |
Names::Add ("client" ...); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3648 |
Names::Add ("client/eth0" ...); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3649 |
Names::Add ("server" ...); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3650 |
Names::Add ("server/eth0" ...); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3651 |
... |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3652 |
helper.EnableAscii ("prefix", "client/eth0"); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3653 |
helper.EnableAscii ("prefix", "server/eth0"); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3654 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3655 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3656 |
This would result in two files named "prefix-client-eth0.tr" and |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3657 |
"prefix-server-eth0.tr" with traces for each device in the respective trace |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3658 |
file. Since all of the EnableAscii functions are overloaded to take a stream wrapper, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3659 |
you can use that form as well: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3660 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3661 |
Isto resultaria em dois nomes de arquivos - "prefix-client-eth0.tr" e "prefix-server-eth0.tr" - com os rastreamentos de cada dispositivo em seu arquivo respectivo. Como todas as funções do ``EnableAscii`` são sobrecarregadas para suportar um *stream wrapper*, podemos usar da seguinte forma também: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3662 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3663 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3664 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3665 |
Names::Add ("client" ...); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3666 |
Names::Add ("client/eth0" ...); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3667 |
Names::Add ("server" ...); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3668 |
Names::Add ("server/eth0" ...); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3669 |
... |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3670 |
Ptr<OutputStreamWrapper> stream = asciiTraceHelper.CreateFileStream |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3671 |
("trace-file-name.tr"); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3672 |
... |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3673 |
helper.EnableAscii (stream, "client/eth0"); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3674 |
helper.EnableAscii (stream, "server/eth0"); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3675 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3676 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3677 |
This would result in a single trace file called "trace-file-name.tr" that |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3678 |
contains all of the trace events for both devices. The events would be |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3679 |
disambiguated by trace context strings. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3680 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3681 |
Isto resultaria em um único arquivo chamado "trace-file-name.tr" que contém todosos eventos rastreados para ambos os dispositivos. Os eventos seriam diferenciados por `strings` de contexto. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3682 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3683 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3684 |
You can enable ascii tracing on a collection of node/net-device pairs by |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3685 |
providing a ``NetDeviceContainer``. For each ``NetDevice`` in the container |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3686 |
the type is checked. For each device of the proper type (the same type as is |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3687 |
managed by the device helper), tracing is enabled. Again, the ``<Node>`` is |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3688 |
implicit since the found net device must belong to exactly one ``Node``. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3689 |
For example, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3690 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3691 |
Podemos habilitar o rastreamento ASCII em um coleção de pares nó/dispositivo-rede fornecendo um ``NetDeviceContainer``. Para cada ``NetDevice`` no contêiner o tipo é verificado. Para cada dispositivo de um tipo adequado (o mesmo tipo que é gerenciado por uma classe assistente de dispositivo), o rastreamento é habilitado. Novamente, o ``<Node>`` é implícito pois o dispositivo de rede encontrado deve pertencer a exatamente um ``Node``. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3692 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3693 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3694 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3695 |
NetDeviceContainer d = ...; |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3696 |
... |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3697 |
helper.EnableAscii ("prefix", d); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3698 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3699 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3700 |
This would result in a number of ascii trace files being created, each of which |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3701 |
follows the <prefix>-<node id>-<device id>.tr convention. Combining all of the |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3702 |
traces into a single file is accomplished similarly to the examples above: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3703 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3704 |
Isto resultaria em vários arquivos de rastreamento ASCII sendo criados, cada um seguindo a convenção ``<prefixo>-<id do nó>-<id do dispositivo>.tr``. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3705 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3706 |
Para obtermos um único arquivo teríamos: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3707 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3708 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3709 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3710 |
NetDeviceContainer d = ...; |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3711 |
... |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3712 |
Ptr<OutputStreamWrapper> stream = asciiTraceHelper.CreateFileStream |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3713 |
("trace-file-name.tr"); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3714 |
... |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3715 |
helper.EnableAscii (stream, d); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3716 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3717 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3718 |
You can enable ascii tracing on a collection of node/net-device pairs by |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3719 |
providing a ``NodeContainer``. For each ``Node`` in the ``NodeContainer`` |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3720 |
its attached ``NetDevices`` are iterated. For each ``NetDevice`` attached |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3721 |
to each node in the container, the type of that device is checked. For each |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3722 |
device of the proper type (the same type as is managed by the device helper), |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3723 |
tracing is enabled. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3724 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3725 |
Podemos habilitar o rastreamento ASCII em um coleção de pares nó/dispositivo-rede fornecendo um ``NodeContainer``. Para cada ``Node`` no ``NodeContainer``, os seus ``NetDevices`` são percorridos. Para cada ``NetDevice`` associado a cada nó no contêiner, o tipo do dispositivo é verificado. Para cada dispositivo do tipo adequado (o mesmo tipo que é gerenciado pelo assistente de dispositivo), o rastreamento é habilitado. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3726 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3727 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3728 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3729 |
NodeContainer n; |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3730 |
... |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3731 |
helper.EnableAscii ("prefix", n); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3732 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3733 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3734 |
This would result in a number of ascii trace files being created, each of which |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3735 |
follows the <prefix>-<node id>-<device id>.tr convention. Combining all of the |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3736 |
traces into a single file is accomplished similarly to the examples above: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3737 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3738 |
Isto resultaria em vários arquivos ASCII sendo criados, cada um seguindo a convenção ``<prefixo>-<id do nó>-<id do dispositivo>.tr``. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3739 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3740 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3741 |
You can enable pcap tracing on the basis of node ID and device ID as well as |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3742 |
with explicit ``Ptr``. Each ``Node`` in the system has an integer node ID |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3743 |
and each device connected to a node has an integer device ID. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3744 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3745 |
Podemos habilitar o rastreamento pcap na base da `ID` do nó e `ID` do dispositivo tão bem como com um ``Ptr``. Cada ``Node`` no sistema possui um número identificador inteiro associado ao nó e cada dispositivo conectado possui um número identificador inteiro associado ao dispositivo. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3746 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3747 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3748 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3749 |
helper.EnableAscii ("prefix", 21, 1); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3750 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3751 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3752 |
Of course, the traces can be combined into a single file as shown above. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3753 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3754 |
Os rastreamentos podem ser combinados em um único arquivo como mostrado acima. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3755 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3756 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3757 |
Finally, you can enable pcap tracing for all devices in the system, with the |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3758 |
same type as that managed by the device helper. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3759 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3760 |
Finalmente, podemos habilitar o rastreamento ASCII para todos os dispositivos no sistema. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3761 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3762 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3763 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3764 |
helper.EnableAsciiAll ("prefix"); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3765 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3766 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3767 |
This would result in a number of ascii trace files being created, one for |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3768 |
every device in the system of the type managed by the helper. All of these |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3769 |
files will follow the <prefix>-<node id>-<device id>.tr convention. Combining |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3770 |
all of the traces into a single file is accomplished similarly to the examples |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3771 |
above. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3772 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3773 |
Isto resultaria em vários arquivos ASCII sendo criados, um para cada dispositivo no sistema do tipo gerenciado pelo assistente. Todos estes arquivos seguiriam a convenção ``<prefixo>-<id do nó>-<id do dispositivo>.tr``. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3774 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3775 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3776 |
Ascii Tracing Device Helper Filename Selection |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3777 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3778 |
Selecionando Nome de Arquivo para as Saídas ASCII |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3779 |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3780 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3781 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3782 |
Implicit in the prefix-style method descriptions above is the construction of the |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3783 |
complete filenames by the implementation method. By convention, ascii traces |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3784 |
in the |ns3| system are of the form "<prefix>-<node id>-<device id>.tr" |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3785 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3786 |
Implícito nas descrições de métodos anteriores é a construção do nome de arquivo por meio do método da implementação. Por convenção, rastreamento ASCII no |ns3| usa a forma "``<prefixo>-<id do nó>-<id do dispositivo>.tr``". |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3787 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3788 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3789 |
As previously mentioned, every node in the system will have a system-assigned |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3790 |
node id; and every device will have an interface index (also called a device id) |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3791 |
relative to its node. By default, then, an ascii trace file created as a result |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3792 |
of enabling tracing on the first device of node 21, using the prefix "prefix", |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3793 |
would be "prefix-21-1.tr". |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3794 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3795 |
Como mencionado, todo nó no sistema terá um `id` de nó associado; e todo dispositivo terá um índice de interface (também chamado de id do dispositivo) relativo ao seu nó. Por padrão, então, um arquivo ASCII criado como um resultado de ativar rastreamento no primeiro dispositivo do nó 21 usando o prefixo "prefix" seria "prefix-21-1.tr". |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3796 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3797 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3798 |
You can always use the |ns3| object name service to make this more clear. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3799 |
For example, if you use the object name service to assign the name "server" |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3800 |
to node 21, the resulting ascii trace file name will automatically become, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3801 |
"prefix-server-1.tr" and if you also assign the name "eth0" to the |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3802 |
device, your ascii trace file name will automatically pick this up and be called |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3803 |
"prefix-server-eth0.tr". |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3804 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3805 |
Sempre podemos usar o serviço de nome de objeto do |ns3| para tornar isso mais claro. Por exemplo, se usarmos o serviço para associar o nome ``server`` ao nó 21, o arquivo ASCII resultante automaticamente será, ``prefix-server-1.tr`` e se também associarmos o nome ``eth0`` ao dispositivo, o nome do arquivo ASCII automaticamente será denominado ``prefix-server-eth0.tr``. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3806 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3807 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3808 |
Several of the methods have a default parameter called ``explicitFilename``. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3809 |
When set to true, this parameter disables the automatic filename completion |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3810 |
mechanism and allows you to create an explicit filename. This option is only |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3811 |
available in the methods which take a prefix and enable tracing on a single device. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3812 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3813 |
Diversos métodos tem um parâmetro padrão ``explicitFilename``. Quando modificado para verdadeiro, este parâmetro desabilita o mecanismo automático de completar o nome do arquivo e permite criarmos um nome de arquivo abertamente. Esta opção está disponível nos métodos que possuam um prefixo e ativem o rastreamento em um único dispositivo. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3814 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3815 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3816 |
Pcap Tracing Protocol Helpers |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3817 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3818 |
Classes Assistentes de Protocolo para Rastreamento Pcap |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3819 |
++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3820 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3821 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3822 |
The goal of these ``mixins`` is to make it easy to add a consistent pcap trace |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3823 |
facility to protocols. We want all of the various flavors of pcap tracing to |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3824 |
work the same across all protocols, so the methods of these helpers are |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3825 |
inherited by stack helpers. Take a look at ``src/network/helper/trace-helper.h`` |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3826 |
if you want to follow the discussion while looking at real code. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3827 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3828 |
O objetivo destes ``mixins`` é facilitar a adição de um mecanismo consistente para da facilidade de rastreamento para protocolos. Queremos que todos os mecanismos de rastreamento para todos os protocolos operem de mesma forma, logo os métodos dessas classe assistentes são herdados por assistentes de pilha. Acesse ``src/network/helper/trace-helper.h`` para acompanhar o conteúdo discutido nesta seção. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3829 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3830 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3831 |
In this section we will be illustrating the methods as applied to the protocol |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3832 |
``Ipv4``. To specify traces in similar protocols, just substitute the |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3833 |
appropriate type. For example, use a ``Ptr<Ipv6>`` instead of a |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3834 |
``Ptr<Ipv4>`` and call ``EnablePcapIpv6`` instead of ``EnablePcapIpv4``. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3835 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3836 |
Nesta seção ilustraremos os métodos aplicados ao protocolo ``Ipv4``. Para especificar rastreamentos em protocolos similares, basta substituir pelo tipo apropriado. Por exemplo, use um ``Ptr<Ipv6>`` ao invés de um ``Ptr<Ipv4>`` e chame um ``EnablePcapIpv6`` ao invés de ``EnablePcapIpv4``. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3837 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3838 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3839 |
The class ``PcapHelperForIpv4`` provides the high level functionality for |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3840 |
using pcap tracing in the ``Ipv4`` protocol. Each protocol helper enabling these |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3841 |
methods must implement a single virtual method inherited from this class. There |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3842 |
will be a separate implementation for ``Ipv6``, for example, but the only |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3843 |
difference will be in the method names and signatures. Different method names |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3844 |
are required to disambiguate class ``Ipv4`` from ``Ipv6`` which are both |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3845 |
derived from class ``Object``, and methods that share the same signature. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3846 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3847 |
A classe ``PcapHelperForIpv4`` provê funcionalidade de alto nível para usar rastreamento no protocolo ``Ipv4``. Cada classe assistente de protocolo devem implementar um método herdado desta. Haverá uma implementação separada para ``Ipv6``, por exemplo, mas a diferença será apenas nos nomes dos métodos e assinaturas. Nomes de métodos diferentes são necessário para distinguir a classe ``Ipv4`` da ``Ipv6``, pois ambas são derivadas da classe ``Object``, logo os métodos compartilham a mesma assinatura. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3848 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3849 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3850 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3851 |
virtual void EnablePcapIpv4Internal (std::string prefix, Ptr<Ipv4> ipv4, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3852 |
uint32_t interface, bool explicitFilename) = 0; |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3853 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3854 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3855 |
The signature of this method reflects the protocol and interface-centric view |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3856 |
of the situation at this level. All of the public methods inherited from class |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3857 |
``PcapHelperForIpv4`` reduce to calling this single device-dependent |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3858 |
implementation method. For example, the lowest level pcap method, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3859 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3860 |
A assinatura desse método reflete a visão do protocolo e interface da situação neste nível. Todos os métodos herdados da classe ``PcapHelperForIpv4`` resumem-se a chamada deste único método dependente de dispositivo. Por exemplo, o método do pcap de mais baixo nível, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3861 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3862 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3863 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3864 |
void EnablePcapIpv4 (std::string prefix, Ptr<Ipv4> ipv4, uint32_t interface, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3865 |
bool explicitFilename = false); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3866 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3867 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3868 |
will call the device implementation of ``EnablePcapIpv4Internal`` directly. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3869 |
All other public pcap tracing methods build on this implementation to provide |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3870 |
additional user-level functionality. What this means to the user is that all |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3871 |
protocol helpers in the system will have all of the pcap trace methods |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3872 |
available; and these methods will all work in the same way across |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3873 |
protocols if the helper implements ``EnablePcapIpv4Internal`` correctly. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3874 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3875 |
chamará a implementação de dispositivo de ``EnablePcapIpv4Internal`` diretamente. Todos os outros métodos públicos de rastreamento pcap são construídos a partir desta implementação para prover funcionalidades adicionais em nível do usuário. Para o usuário, isto significa que todas as classes assistentes de dispositivo no sistema terão todos os métodos de rastreamento pcap disponíveis; e estes métodos trabalharão da mesma forma entre dispositivos se o dispositivo implementar corretamente ``EnablePcapIpv4Internal``. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3876 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3877 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3878 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3879 |
Pcap Tracing Protocol Helper Methods |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3880 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3881 |
Métodos da Classe Assistente de Protocolo para Rastreamento Pcap |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3882 |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3883 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3884 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3885 |
These methods are designed to be in one-to-one correspondence with the ``Node``- |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3886 |
and ``NetDevice``- centric versions of the device versions. Instead of |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3887 |
``Node`` and ``NetDevice`` pair constraints, we use protocol and interface |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3888 |
constraints. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3889 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3890 |
Estes métodos são projetados para terem correspondência de um-para-um com o ``Node`` e ``NetDevice``. Ao invés de restrições de pares ``Node`` e ``NetDevice``, usamos restrições de protocolo e interface. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3891 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3892 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3893 |
Note that just like in the device version, there are six methods: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3894 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3895 |
Note que como na versão de dispositivo, há seis métodos: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3896 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3897 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3898 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3899 |
void EnablePcapIpv4 (std::string prefix, Ptr<Ipv4> ipv4, uint32_t interface, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3900 |
bool explicitFilename = false); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3901 |
void EnablePcapIpv4 (std::string prefix, std::string ipv4Name, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3902 |
uint32_t interface, bool explicitFilename = false); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3903 |
void EnablePcapIpv4 (std::string prefix, Ipv4InterfaceContainer c); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3904 |
void EnablePcapIpv4 (std::string prefix, NodeContainer n); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3905 |
void EnablePcapIpv4 (std::string prefix, uint32_t nodeid, uint32_t interface, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3906 |
bool explicitFilename); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3907 |
void EnablePcapIpv4All (std::string prefix); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3908 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3909 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3910 |
You are encouraged to peruse the Doxygen for class ``PcapHelperForIpv4`` |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3911 |
to find the details of these methods; but to summarize ... |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3912 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3913 |
Para maiores detalhes sobre estes métodos é interessante consultar na documentação da classe ``PcapHelperForIpv4``, mas para resumir ... |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3914 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3915 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3916 |
You can enable pcap tracing on a particular protocol/interface pair by providing a |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3917 |
``Ptr<Ipv4>`` and ``interface`` to an ``EnablePcap`` method. For example, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3918 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3919 |
Podemos habilitar o rastreamento pcap em um par protocolo/interface passando um ``Ptr<Ipv4>`` e ``interface`` para um método ``EnablePcap``. Por exemplo, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3920 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3921 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3922 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3923 |
Ptr<Ipv4> ipv4 = node->GetObject<Ipv4> (); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3924 |
... |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3925 |
helper.EnablePcapIpv4 ("prefix", ipv4, 0); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3926 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3927 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3928 |
You can enable pcap tracing on a particular node/net-device pair by providing a |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3929 |
``std::string`` representing an object name service string to an |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3930 |
``EnablePcap`` method. The ``Ptr<Ipv4>`` is looked up from the name |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3931 |
string. For example, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3932 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3933 |
Podemos ativar o rastreamento pcap em um par protocolo/interface passando uma ``std::string`` que representa um nome de serviço para um método ``EnablePcapIpv4``. O ``Ptr<Ipv4>`` é buscado a partir do nome da `string`. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3934 |
Por exemplo, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3935 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3936 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3937 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3938 |
Names::Add ("serverIPv4" ...); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3939 |
... |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3940 |
helper.EnablePcapIpv4 ("prefix", "serverIpv4", 1); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3941 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3942 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3943 |
You can enable pcap tracing on a collection of protocol/interface pairs by |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3944 |
providing an ``Ipv4InterfaceContainer``. For each ``Ipv4`` / interface |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3945 |
pair in the container the protocol type is checked. For each protocol of the |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3946 |
proper type (the same type as is managed by the device helper), tracing is |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3947 |
enabled for the corresponding interface. For example, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3948 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3949 |
Podemos ativar o rastreamento pcap em uma coleção de pares protocolo/interface usando um ``Ipv4InterfaceContainer``. Para cada par``Ipv4``/interface no contêiner o tipo do protocolo é verificado. Para cada protocolo do tipo adequado, o rastreamento é ativado para a interface correspondente. Por exemplo, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3950 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3951 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3952 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3953 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3954 |
NodeContainer nodes; |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3955 |
... |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3956 |
NetDeviceContainer devices = deviceHelper.Install (nodes); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3957 |
... |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3958 |
Ipv4AddressHelper ipv4; |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3959 |
ipv4.SetBase ("10.1.1.0", "255.255.255.0"); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3960 |
Ipv4InterfaceContainer interfaces = ipv4.Assign (devices); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3961 |
... |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3962 |
helper.EnablePcapIpv4 ("prefix", interfaces); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3963 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3964 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3965 |
You can enable pcap tracing on a collection of protocol/interface pairs by |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3966 |
providing a ``NodeContainer``. For each ``Node`` in the ``NodeContainer`` |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3967 |
the appropriate protocol is found. For each protocol, its interfaces are |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3968 |
enumerated and tracing is enabled on the resulting pairs. For example, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3969 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3970 |
Podemos ativar o rastreamento em uma coleção de pares protocolo/interface usando um ``NodeContainer``. Para cada ``Node`` no ``NodeContainer`` o protocolo apropriado é encontrado. Para cada protocolo, suas interfaces são enumeradas e o rastreamento é ativado nos pares resultantes. Por exemplo, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3971 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3972 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3973 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3974 |
NodeContainer n; |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3975 |
... |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3976 |
helper.EnablePcapIpv4 ("prefix", n); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3977 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3978 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3979 |
You can enable pcap tracing on the basis of node ID and interface as well. In |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3980 |
this case, the node-id is translated to a ``Ptr<Node>`` and the appropriate |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3981 |
protocol is looked up in the node. The resulting protocol and interface are |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3982 |
used to specify the resulting trace source. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3983 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3984 |
Pode ativar o rastreamento pcap usando o número identificador do nó e da interface. Neste caso, o `ID` do nó é traduzido para um ``Ptr<Node>`` e o protocolo apropriado é buscado no nó. O protocolo e interface resultante são usados para especificar a origem do rastreamento resultante. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3985 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3986 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3987 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3988 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3989 |
helper.EnablePcapIpv4 ("prefix", 21, 1); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3990 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3991 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3992 |
Finally, you can enable pcap tracing for all interfaces in the system, with |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3993 |
associated protocol being the same type as that managed by the device helper. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3994 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3995 |
Por fim, podemos ativar rastreamento pcap para todas as interfaces no sistema, desde que o protocolo seja do mesmo tipo gerenciado pela classe assistente. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3996 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3997 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3998 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
3999 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4000 |
helper.EnablePcapIpv4All ("prefix"); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4001 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4002 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4003 |
Pcap Tracing Protocol Helper Filename Selection |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4004 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4005 |
Seleção de um Nome de Arquivo para o Rastreamento Pcap da Classe Assistente de Protocolo |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4006 |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4007 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4008 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4009 |
Implicit in all of the method descriptions above is the construction of the |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4010 |
complete filenames by the implementation method. By convention, pcap traces |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4011 |
taken for devices in the |ns3| system are of the form |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4012 |
"<prefix>-<node id>-<device id>.pcap". In the case of protocol traces, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4013 |
there is a one-to-one correspondence between protocols and ``Nodes``. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4014 |
This is because protocol ``Objects`` are aggregated to ``Node Objects``. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4015 |
Since there is no global protocol id in the system, we use the corresponding |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4016 |
node id in file naming. Therefore there is a possibility for file name |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4017 |
collisions in automatically chosen trace file names. For this reason, the |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4018 |
file name convention is changed for protocol traces. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4019 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4020 |
Implícito nas descrições de métodos anterior é a construção do nome de arquivo por meio do método da implementação. Por convenção, rastreamento pcap no |ns3| usa a forma ``<prefixo>-<id do nó>-<id do dispositivo>.pcap``. No caso de rastreamento de protocolos, há uma correspondência de um-para-um entre protocolos e ``Nodes``. Isto porque ``Objects`` de protocolo são agregados a `Node Objects``. Como não há um `id` global de protocolo no sistema, usamos o `ID` do nó na nomeação do arquivo. Consequentemente há possibilidade de colisão de nomes quando usamos o sistema automático de nomes. Por esta razão, a convenção de nome de arquivo é modificada para rastreamentos de protocolos. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4021 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4022 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4023 |
As previously mentioned, every node in the system will have a system-assigned |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4024 |
node id. Since there is a one-to-one correspondence between protocol instances |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4025 |
and node instances we use the node id. Each interface has an interface id |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4026 |
relative to its protocol. We use the convention |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4027 |
"<prefix>-n<node id>-i<interface id>.pcap" for trace file naming in protocol |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4028 |
helpers. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4029 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4030 |
Como mencionado, todo nó no sistema terá um `id` de nó associado. Como há uma correspondência de um-para-um entre instâncias de protocolo e instâncias de nó, usamos o `id` de nó. Cada interface tem um `id` de interface relativo ao seu protocolo. Usamos a convenção "<prefixo>-n<id do nó>-i<id da interface>.pcap" para especificar o nome do arquivo de rastreamento para as classes assistentes de protocolo. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4031 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4032 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4033 |
Therefore, by default, a pcap trace file created as a result of enabling tracing |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4034 |
on interface 1 of the Ipv4 protocol of node 21 using the prefix "prefix" |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4035 |
would be "prefix-n21-i1.pcap". |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4036 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4037 |
Consequentemente, por padrão, uma arquivo pcap criado como um resultado da ativação de rastreamento na interface 1 do protocolo ipv4 do nó 21 usando o prefixo ``prefix`` seria ``prefix-n21-i1.pcap``. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4038 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4039 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4040 |
You can always use the |ns3| object name service to make this more clear. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4041 |
For example, if you use the object name service to assign the name "serverIpv4" |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4042 |
to the Ptr<Ipv4> on node 21, the resulting pcap trace file name will |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4043 |
automatically become, "prefix-nserverIpv4-i1.pcap". |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4044 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4045 |
Sempre podemos usar o serviço de nomes de objetos do |ns3| para tornar isso mais claro. Por exemplo, se usamos o serviço de nomes para associar o nome "serverIpv4" ao Ptr<Ipv4> no nó 21, o nome de arquivo resultante seria ``prefix-nserverIpv4-i1.pcap``. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4046 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4047 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4048 |
Several of the methods have a default parameter called ``explicitFilename``. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4049 |
When set to true, this parameter disables the automatic filename completion |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4050 |
mechanism and allows you to create an explicit filename. This option is only |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4051 |
available in the methods which take a prefix and enable tracing on a single device. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4052 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4053 |
Diversos métodos tem um parâmetro padrão ``explicitFilename``. Quando modificado para verdadeiro, este parâmetro desabilita o mecanismo automático de completar o nome do arquivo e permite criarmos um nome de arquivo abertamente. Esta opção está disponível nos métodos que ativam o rastreamento pcap em um único dispositivo. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4054 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4055 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4056 |
Ascii Tracing Protocol Helpers |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4057 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4058 |
Classes Assistentes de Protocolo para Rastreamento ASCII |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4059 |
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4060 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4061 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4062 |
The behavior of the ascii trace helpers is substantially similar to the pcap |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4063 |
case. Take a look at ``src/network/helper/trace-helper.h`` if you want to |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4064 |
follow the discussion while looking at real code. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4065 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4066 |
O comportamento dos assistentes de rastreamento ASCII é similar ao do pcap. Acesse o arquivo ``src/network/helper/trace-helper.h`` para compreender melhor o funcionamento dessa classe assistente. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4067 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4068 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4069 |
In this section we will be illustrating the methods as applied to the protocol |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4070 |
``Ipv4``. To specify traces in similar protocols, just substitute the |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4071 |
appropriate type. For example, use a ``Ptr<Ipv6>`` instead of a |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4072 |
``Ptr<Ipv4>`` and call ``EnableAsciiIpv6`` instead of ``EnableAsciiIpv4``. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4073 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4074 |
Nesta seção apresentamos os métodos aplicados ao protocolo ``Ipv4``. Para protocolos similares apenas substitua para o tipo apropriado. Por exemplo, use um ``Ptr<Ipv6>`` ao invés de um ``Ptr<Ipv4>`` e chame ``EnableAsciiIpv6`` ao invés de ``EnableAsciiIpv4``. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4075 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4076 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4077 |
The class ``AsciiTraceHelperForIpv4`` adds the high level functionality |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4078 |
for using ascii tracing to a protocol helper. Each protocol that enables these |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4079 |
methods must implement a single virtual method inherited from this class. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4080 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4081 |
A classe ``AsciiTraceHelperForIpv4`` adiciona funcionalidade de alto nível para usar rastreamento ASCII para um assistente de protocolo. Todo protocolo que usa estes métodos deve implementar um método herdado desta classe. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4082 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4083 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4084 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4085 |
virtual void EnableAsciiIpv4Internal (Ptr<OutputStreamWrapper> stream, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4086 |
std::string prefix, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4087 |
Ptr<Ipv4> ipv4, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4088 |
uint32_t interface, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4089 |
bool explicitFilename) = 0; |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4090 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4091 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4092 |
The signature of this method reflects the protocol- and interface-centric view |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4093 |
of the situation at this level; and also the fact that the helper may be writing |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4094 |
to a shared output stream. All of the public methods inherited from class |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4095 |
``PcapAndAsciiTraceHelperForIpv4`` reduce to calling this single device- |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4096 |
dependent implementation method. For example, the lowest level ascii trace |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4097 |
methods, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4098 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4099 |
A assinatura deste método reflete a visão central do protocolo e interface da situação neste nível; e também o fato que o assistente pode ser escrito para um fluxo de saída compartilhado. Todos os métodos públicos herdados desta classe ``PcapAndAsciiTraceHelperForIpv4`` resumem-se a chamada deste único método dependente de implementação. Por exemplo, os métodos de rastreamento ASCII de mais baixo nível, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4100 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4101 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4102 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4103 |
void EnableAsciiIpv4 (std::string prefix, Ptr<Ipv4> ipv4, uint32_t interface, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4104 |
bool explicitFilename = false); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4105 |
void EnableAsciiIpv4 (Ptr<OutputStreamWrapper> stream, Ptr<Ipv4> ipv4, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4106 |
uint32_t interface); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4107 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4108 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4109 |
will call the device implementation of ``EnableAsciiIpv4Internal`` directly, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4110 |
providing either the prefix or the stream. All other public ascii tracing |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4111 |
methods will build on these low-level functions to provide additional user-level |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4112 |
functionality. What this means to the user is that all device helpers in the |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4113 |
system will have all of the ascii trace methods available; and these methods |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4114 |
will all work in the same way across protocols if the protocols implement |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4115 |
``EnablAsciiIpv4Internal`` correctly. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4116 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4117 |
chamarão uma implementação de ``EnableAsciiIpv4Internal`` diretamente, passando um prefixo ou fluxo válido. Todos os outros métodos públicos serão construídos a partir destas funções de baixo nível para fornecer funcionalidades adicionais em nível de usuário. Para o usuário, isso significa que todos os assistentes de protocolos no sistema terão todos os métodos de rastreamento ASCII disponíveis e estes métodos trabalharão do mesmo modo em todos os protocolos se estes implementarem ``EnableAsciiIpv4Internal``. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4118 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4119 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4120 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4121 |
Ascii Tracing Protocol Helper Methods |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4122 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4123 |
Métodos da Classe Assistente de Protocolo para Rastreamento ASCII |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4124 |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4125 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4126 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4127 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4128 |
void EnableAsciiIpv4 (std::string prefix, Ptr<Ipv4> ipv4, uint32_t interface, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4129 |
bool explicitFilename = false); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4130 |
void EnableAsciiIpv4 (Ptr<OutputStreamWrapper> stream, Ptr<Ipv4> ipv4, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4131 |
uint32_t interface); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4132 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4133 |
void EnableAsciiIpv4 (std::string prefix, std::string ipv4Name, uint32_t interface, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4134 |
bool explicitFilename = false); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4135 |
void EnableAsciiIpv4 (Ptr<OutputStreamWrapper> stream, std::string ipv4Name, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4136 |
uint32_t interface); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4137 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4138 |
void EnableAsciiIpv4 (std::string prefix, Ipv4InterfaceContainer c); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4139 |
void EnableAsciiIpv4 (Ptr<OutputStreamWrapper> stream, Ipv4InterfaceContainer c); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4140 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4141 |
void EnableAsciiIpv4 (std::string prefix, NodeContainer n); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4142 |
void EnableAsciiIpv4 (Ptr<OutputStreamWrapper> stream, NodeContainer n); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4143 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4144 |
void EnableAsciiIpv4All (std::string prefix); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4145 |
void EnableAsciiIpv4All (Ptr<OutputStreamWrapper> stream); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4146 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4147 |
void EnableAsciiIpv4 (std::string prefix, uint32_t nodeid, uint32_t deviceid, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4148 |
bool explicitFilename); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4149 |
void EnableAsciiIpv4 (Ptr<OutputStreamWrapper> stream, uint32_t nodeid, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4150 |
uint32_t interface); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4151 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4152 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4153 |
You are encouraged to peruse the Doxygen for class ``PcapAndAsciiHelperForIpv4`` |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4154 |
to find the details of these methods; but to summarize ... |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4155 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4156 |
Para maiores detalhes sobre os métodos consulte na documentação a classe ``PcapAndAsciiHelperForIpv4``; mas para resumir ... |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4157 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4158 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4159 |
There are twice as many methods available for ascii tracing as there were for |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4160 |
pcap tracing. This is because, in addition to the pcap-style model where traces |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4161 |
from each unique protocol/interface pair are written to a unique file, we |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4162 |
support a model in which trace information for many protocol/interface pairs is |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4163 |
written to a common file. This means that the <prefix>-n<node id>-<interface> |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4164 |
file name generation mechanism is replaced by a mechanism to refer to a common |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4165 |
file; and the number of API methods is doubled to allow all combinations. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4166 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4167 |
Há duas vezes mais métodos disponíveis para rastreamento ASCII que para rastreamento pcap. Isto ocorre pois para o modelo pcap os rastreamentos de cada par protocolo/interface são escritos para um único arquivo, enquanto que no ASCII todo as as informações são escritas para um arquivo comum. Isto significa que o mecanismo de geração de nomes de arquivos "<prefixo>-n<id do nó>-i<interface>" é substituído por um mecanismo para referenciar um arquivo comum; e o número de métodos da API é duplicado para permitir todas as combinações. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4168 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4169 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4170 |
Just as in pcap tracing, you can enable ascii tracing on a particular |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4171 |
protocol/interface pair by providing a ``Ptr<Ipv4>`` and an ``interface`` |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4172 |
to an ``EnableAscii`` method. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4173 |
For example, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4174 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4175 |
Assim, como no rastreamento pcap, podemos ativar o rastreamento ASCII em um par protocolo/interface passando um ``Ptr<Ipv4>`` e uma ``interface`` para um método ``EnableAsciiIpv4``. Por exemplo, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4176 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4177 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4178 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4179 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4180 |
Ptr<Ipv4> ipv4; |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4181 |
... |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4182 |
helper.EnableAsciiIpv4 ("prefix", ipv4, 1); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4183 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4184 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4185 |
In this case, no trace contexts are written to the ascii trace file since they |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4186 |
would be redundant. The system will pick the file name to be created using |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4187 |
the same rules as described in the pcap section, except that the file will |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4188 |
have the suffix ".tr" instead of ".pcap". |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4189 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4190 |
Neste caso, nenhum contexto de rastreamento é escrito para o arquivo ASCII pois seriam redundantes. O sistema pegará o nome do arquivo para ser criado usando as mesmas regras como descritas na seção pcap, exceto que o arquivo terá o extensão ``.tr`` ao invés de ``.pcap``. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4191 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4192 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4193 |
If you want to enable ascii tracing on more than one interface and have all |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4194 |
traces sent to a single file, you can do that as well by using an object to |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4195 |
refer to a single file. We have already something similar to this in the |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4196 |
"cwnd" example above: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4197 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4198 |
Para habilitar o rastreamento ASCII em mais de uma interface e ter todos os dados de rastreamento enviados para um único arquivo, pode-se usar um objeto para referenciar um único arquivo. Nós já verificamos isso no exemplo "cwnd": |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4199 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4200 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4201 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4202 |
Ptr<Ipv4> protocol1 = node1->GetObject<Ipv4> (); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4203 |
Ptr<Ipv4> protocol2 = node2->GetObject<Ipv4> (); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4204 |
... |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4205 |
Ptr<OutputStreamWrapper> stream = asciiTraceHelper.CreateFileStream |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4206 |
("trace-file-name.tr"); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4207 |
... |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4208 |
helper.EnableAsciiIpv4 (stream, protocol1, 1); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4209 |
helper.EnableAsciiIpv4 (stream, protocol2, 1); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4210 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4211 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4212 |
In this case, trace contexts are written to the ascii trace file since they |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4213 |
are required to disambiguate traces from the two interfaces. Note that since |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4214 |
the user is completely specifying the file name, the string should include the |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4215 |
",tr" for consistency. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4216 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4217 |
Neste caso, os contextos são escritos para o arquivo ASCII quando é necessário distinguir os dados de rastreamento de duas interfaces. É interessante usar no nome do arquivo a extensão ``.tr`` por motivos de consistência. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4218 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4219 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4220 |
You can enable ascii tracing on a particular protocol by providing a |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4221 |
``std::string`` representing an object name service string to an |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4222 |
``EnablePcap`` method. The ``Ptr<Ipv4>`` is looked up from the name |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4223 |
string. The ``<Node>`` in the resulting filenames is implicit since there |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4224 |
is a one-to-one correspondence between protocol instances and nodes, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4225 |
For example, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4226 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4227 |
Pode habilitar o rastreamento ASCII em protocolo específico passando ao método ``EnableAsciiIpv4`` uma ``std::string`` representando um nome no serviço de nomes de objetos. O ``Ptr<Ipv4>`` é obtido a partir do nome. O ``<Node>`` é implícito, pois há uma correspondência de um-para-um entre instancias de protocolos e nós. Por exemplo, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4228 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4229 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4230 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4231 |
Names::Add ("node1Ipv4" ...); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4232 |
Names::Add ("node2Ipv4" ...); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4233 |
... |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4234 |
helper.EnableAsciiIpv4 ("prefix", "node1Ipv4", 1); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4235 |
helper.EnableAsciiIpv4 ("prefix", "node2Ipv4", 1); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4236 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4237 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4238 |
This would result in two files named "prefix-nnode1Ipv4-i1.tr" and |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4239 |
"prefix-nnode2Ipv4-i1.tr" with traces for each interface in the respective |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4240 |
trace file. Since all of the EnableAscii functions are overloaded to take a |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4241 |
stream wrapper, you can use that form as well: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4242 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4243 |
Isto resultaria em dois nomes de arquivos ``prefix-nnode1Ipv4-i1.tr`` e ``prefix-nnode2Ipv4-i1.tr``, com os rastreamentos de cada interface em seu arquivo respectivo. Como todas as funções do ``EnableAsciiIpv4`` são sobrecarregadas para suportar um *stream wrapper*, podemos usar da seguinte forma também: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4244 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4245 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4246 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4247 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4248 |
Names::Add ("node1Ipv4" ...); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4249 |
Names::Add ("node2Ipv4" ...); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4250 |
... |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4251 |
Ptr<OutputStreamWrapper> stream = asciiTraceHelper.CreateFileStream |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4252 |
("trace-file-name.tr"); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4253 |
... |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4254 |
helper.EnableAsciiIpv4 (stream, "node1Ipv4", 1); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4255 |
helper.EnableAsciiIpv4 (stream, "node2Ipv4", 1); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4256 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4257 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4258 |
This would result in a single trace file called "trace-file-name.tr" that |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4259 |
contains all of the trace events for both interfaces. The events would be |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4260 |
disambiguated by trace context strings. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4261 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4262 |
Isto resultaria em um único arquivo chamado ``trace-file-name.tr`` que contém todos os eventos rastreados para ambas as interfaces. Os eventos seriam diferenciados por `strings` de contexto. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4263 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4264 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4265 |
You can enable ascii tracing on a collection of protocol/interface pairs by |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4266 |
providing an ``Ipv4InterfaceContainer``. For each protocol of the proper |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4267 |
type (the same type as is managed by the device helper), tracing is enabled |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4268 |
for the corresponding interface. Again, the ``<Node>`` is implicit since |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4269 |
there is a one-to-one correspondence between each protocol and its node. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4270 |
For example, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4271 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4272 |
Podemos habilitar o rastreamento ASCII em um coleção de pares protocolo/interface provendo um ``Ipv4InterfaceContainer``. Para cada protocolo no contêiner o tipo é verificado. Para cada protocolo do tipo adequado (o mesmo tipo que é gerenciado por uma classe assistente de protocolo), o rastreamento é habilitado para a interface correspondente. Novamente, o ``<Node>`` é implícito, pois há uma correspondência de um-para-um entre protocolo e seu nó. Por exemplo, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4273 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4274 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4275 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4276 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4277 |
NodeContainer nodes; |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4278 |
... |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4279 |
NetDeviceContainer devices = deviceHelper.Install (nodes); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4280 |
... |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4281 |
Ipv4AddressHelper ipv4; |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4282 |
ipv4.SetBase ("10.1.1.0", "255.255.255.0"); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4283 |
Ipv4InterfaceContainer interfaces = ipv4.Assign (devices); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4284 |
... |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4285 |
... |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4286 |
helper.EnableAsciiIpv4 ("prefix", interfaces); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4287 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4288 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4289 |
This would result in a number of ascii trace files being created, each of which |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4290 |
follows the <prefix>-n<node id>-i<interface>.tr convention. Combining all of the |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4291 |
traces into a single file is accomplished similarly to the examples above: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4292 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4293 |
Isto resultaria em vários arquivos de rastreamento ASCII sendo criados, cada um seguindo a convenção ``<prefixo>-n<id do nó>-i<interface>.tr``. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4294 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4295 |
Para obtermos um único arquivo teríamos: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4296 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4297 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4298 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4299 |
NodeContainer nodes; |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4300 |
... |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4301 |
NetDeviceContainer devices = deviceHelper.Install (nodes); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4302 |
... |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4303 |
Ipv4AddressHelper ipv4; |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4304 |
ipv4.SetBase ("10.1.1.0", "255.255.255.0"); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4305 |
Ipv4InterfaceContainer interfaces = ipv4.Assign (devices); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4306 |
... |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4307 |
Ptr<OutputStreamWrapper> stream = asciiTraceHelper.CreateFileStream |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4308 |
("trace-file-name.tr"); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4309 |
... |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4310 |
helper.EnableAsciiIpv4 (stream, interfaces); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4311 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4312 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4313 |
You can enable ascii tracing on a collection of protocol/interface pairs by |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4314 |
providing a ``NodeContainer``. For each ``Node`` in the ``NodeContainer`` |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4315 |
the appropriate protocol is found. For each protocol, its interfaces are |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4316 |
enumerated and tracing is enabled on the resulting pairs. For example, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4317 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4318 |
Podemos habilitar o rastreamento ASCII em uma coleção de pares protocolo/interface provendo um `NodeContainer``. Para cada ``Node`` no ``NodeContainer`` os protocolos apropriados são encontrados. Para cada protocolo, sua interface é enumerada e o rastreamento é habilitado nos pares. Por exemplo, |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4319 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4320 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4321 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4322 |
NodeContainer n; |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4323 |
... |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4324 |
helper.EnableAsciiIpv4 ("prefix", n); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4325 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4326 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4327 |
You can enable pcap tracing on the basis of node ID and device ID as well. In |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4328 |
this case, the node-id is translated to a ``Ptr<Node>`` and the appropriate |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4329 |
protocol is looked up in the node. The resulting protocol and interface are |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4330 |
used to specify the resulting trace source. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4331 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4332 |
Podemos habilitar o rastreamento pcap usando o número identificador do nó e número identificador do dispositivo. Neste caso, o `ID` do nó é traduzido para um ``Ptr<Node>`` e o protocolo apropriado é procurado no nó de rede. O protocolo e interface resultantes são usados para especificar a origem do rastreamento. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4333 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4334 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4335 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4336 |
helper.EnableAsciiIpv4 ("prefix", 21, 1); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4337 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4338 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4339 |
Of course, the traces can be combined into a single file as shown above. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4340 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4341 |
Os rastreamentos podem ser combinados em um único arquivo como mostrado anteriormente. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4342 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4343 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4344 |
Finally, you can enable ascii tracing for all interfaces in the system, with |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4345 |
associated protocol being the same type as that managed by the device helper. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4346 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4347 |
Finalmente, podemos habilitar o rastreamento ASCII para todas as interfaces no sistema. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4348 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4349 |
:: |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4350 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4351 |
helper.EnableAsciiIpv4All ("prefix"); |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4352 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4353 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4354 |
This would result in a number of ascii trace files being created, one for |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4355 |
every interface in the system related to a protocol of the type managed by the |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4356 |
helper. All of these files will follow the <prefix>-n<node id>-i<interface.tr |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4357 |
convention. Combining all of the traces into a single file is accomplished |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4358 |
similarly to the examples above. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4359 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4360 |
Isto resultaria em vários arquivos ASCII sendo criados, um para cada interface no sistema relacionada ao protocolo do tipo gerenciado pela classe assistente.Todos estes arquivos seguiriam a convenção |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4361 |
``<prefix>-n<id do node>-i<interface>.tr``. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4362 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4363 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4364 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4365 |
Ascii Tracing Protocol Helper Filename Selection |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4366 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4367 |
Seleção de Nome de Arquivo para Rastreamento ASCII da Classe Assistente de Protocolo |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4368 |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4369 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4370 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4371 |
Implicit in the prefix-style method descriptions above is the construction of the |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4372 |
complete filenames by the implementation method. By convention, ascii traces |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4373 |
in the |ns3| system are of the form "<prefix>-<node id>-<device id>.tr" |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4374 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4375 |
Implícito nas descrições de métodos anteriores é a construção do nome do arquivo por meio do método da implementação. Por convenção, rastreamento ASCII no sistema |ns3| são da forma ``<prefix>-<id node>-<id do dispositivo>.tr``. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4376 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4377 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4378 |
As previously mentioned, every node in the system will have a system-assigned |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4379 |
node id. Since there is a one-to-one correspondence between protocols and nodes |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4380 |
we use to node-id to identify the protocol identity. Every interface on a |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4381 |
given protocol will have an interface index (also called simply an interface) |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4382 |
relative to its protocol. By default, then, an ascii trace file created as a result |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4383 |
of enabling tracing on the first device of node 21, using the prefix "prefix", |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4384 |
would be "prefix-n21-i1.tr". Use the prefix to disambiguate multiple protocols |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4385 |
per node. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4386 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4387 |
Como mencionado, todo nó no sistema terá um número identificador de nó associado. Como há uma correspondência de um-para-um entre instâncias de protocolo e instâncias de nó, usamos o `ID` de nó. Cada interface em um protocolo terá um índice de interface (também chamando apenas de interface) relativo ao seu protocolo. Por padrão, então, um arquivo de rastreamento ASCII criado a partir do rastreamento no primeiro dispositivo do nó 21, usando o prefixo "prefix", seria ``prefix-n21-i1.tr``. O uso de prefixo distingue múltiplos protocolos por nó. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4388 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4389 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4390 |
You can always use the |ns3| object name service to make this more clear. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4391 |
For example, if you use the object name service to assign the name "serverIpv4" |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4392 |
to the protocol on node 21, and also specify interface one, the resulting ascii |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4393 |
trace file name will automatically become, "prefix-nserverIpv4-1.tr". |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4394 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4395 |
Sempre podemos usar o serviço de nomes de objetos do |ns3| para tornar isso mais claro. Por exemplo, se usarmos o serviço de nomes para associar o nome "serverIpv4" ao Ptr<Ipv4> no nó 21, o nome de arquivo resultante seria ``prefix-nserverIpv4-i1.tr``. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4396 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4397 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4398 |
Several of the methods have a default parameter called ``explicitFilename``. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4399 |
When set to true, this parameter disables the automatic filename completion |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4400 |
mechanism and allows you to create an explicit filename. This option is only |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4401 |
available in the methods which take a prefix and enable tracing on a single device. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4402 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4403 |
Diversos métodos tem um parâmetro padrão ``explicitFilename``. Quando modificado para verdadeiro, este parâmetro desabilita o mecanismo automático de completar o nome do arquivo e permite criarmos um nome de arquivo abertamente. Esta opção está disponível nos métodos que ativam o rastreamento em um único dispositivo. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4404 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4405 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4406 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4407 |
Summary |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4408 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4409 |
Considerações Finais |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4410 |
******************** |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4411 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4412 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4413 |
|ns3| includes an extremely rich environment allowing users at several |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4414 |
levels to customize the kinds of information that can be extracted from |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4415 |
simulations. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4416 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4417 |
O |ns3| inclui um ambiente completo para permitir usuários de diversos níveis personalizar os tipos de informação para serem extraídas de suas simulações. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4418 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4419 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4420 |
There are high-level helper functions that allow users to simply control the |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4421 |
collection of pre-defined outputs to a fine granularity. There are mid-level |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4422 |
helper functions to allow more sophisticated users to customize how information |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4423 |
is extracted and saved; and there are low-level core functions to allow expert |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4424 |
users to alter the system to present new and previously unexported information |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4425 |
in a way that will be immediately accessible to users at higher levels. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4426 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4427 |
Existem funções assistentes de alto nível que permitem ao usuário o controle de um coleção de saídas predefinidas para uma granularidade mais fina. Existem funções assistentes de nível intermediário que permitem usuários mais sofisticados personalizar como as informações são extraídas e armazenadas; e existem funções de baixo nível que permitem usuários avançados alterarem o sistema para apresentar novas ou informações que não eram exportadas. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4428 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4429 |
.. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4430 |
This is a very comprehensive system, and we realize that it is a lot to |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4431 |
digest, especially for new users or those not intimately familiar with C++ |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4432 |
and its idioms. We do consider the tracing system a very important part of |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4433 |
|ns3| and so recommend becoming as familiar as possible with it. It is |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4434 |
probably the case that understanding the rest of the |ns3| system will |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4435 |
be quite simple once you have mastered the tracing system |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4436 |
|
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4437 |
Este é um sistema muito abrangente e percebemos que é muita informação para digerir, especialmente para novos usuários ou aqueles que não estão intimamente familiarizados com C++ e suas expressões idiomáticas. Consideramos o sistema de rastreamento uma parte muito importante do |ns3|, assim recomendamos que familiarizem-se o máximo possível com ele. Compreender o restante do sistema |ns3| é bem simples, uma vez que dominamos o sistema de rastreamento. |
06b527a120fd
Add Brazilian Portuguese translation (pt-br) of tutorial
Frank Helbert <frank@ime.usp.br>
parents:
diff
changeset
|
4438 |