# tanjeff/agentXcpp

### Subversion checkout URL

You can clone with
or
.

# Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also compare across forks.

# Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also compare across forks.
...
• 6 commits
• 16 files changed
• 1 contributor
Commits on Jan 15, 2012
 tanjeff Add revision to to generated documentations The revision is added to the SCons environment on each build, using "git describe". This is then used to put it into the doxygen documentation. 53296ea tanjeff Docs: Enable search engine, configure indexes - No index for API doc - Index with 2 columns for internals doc - Seach engine for both 95f1caf
Commits on Jan 20, 2012
 tanjeff Improve doxygen configurations. 210916a tanjeff Docs: remove todo's from documentation. The TODOs are now available as Issues on github.com. 6e85b20 tanjeff Docs: cleanup, spellcheck A preliminary version of the documentation is now ready to be published. a678e52 tanjeff Update README 82f079e
 @@ -24,7 +24,7 @@ This software is currently NOT USABLE. It is work in progress. Unfortunately, the author has little time to work on the software. Here is the release plan. Note that this plan may change. - Version 0.1 (by end of 2011) + Version 0.1 (end of 2011 was missed. New goal: March/2012) GET functionality working, source code and build system are cleaned up, complete documentation of implementation internals is available. @@ -90,7 +90,9 @@ src/ unit_tests/ - This directory contains the unit tests for the agentXcpp components. + This directory contains the unit tests for the agentXcpp components. + Note that this is currently rather a skeleton, and no tests are + available yet. Documentation @@ -104,24 +106,30 @@ such as the build system. You can build the documentation using SCons or without SCons. -1) With SCons - cd to the top level directory (the one containing this README) and type +1a) With SCons: + cd to the top level directory (the one containing this README) and type - scons + scons - This builds the library as well as both documentations. + This builds the library as well as both documentations. -2) Without SCons - cd into the doc/ direcory and type +1b) Without SCons: + cd into the doc/ directory and type - doxygen api.doxyfile + doxygen api.doxyfile - respectively + respectively - doxygen internals.doxyfile + doxygen internals.doxyfile -After buidling, the documentation can be displayed by pointing a web browser to -doc/api/html/index.html respectively doc/internals/html/index.html. +2) After building, the documentation can be displayed by pointing a web + browser to + + doc/api/html/index.html + + respectively + + doc/internals/html/index.html.
12 SConstruct
 @@ -17,6 +17,8 @@ # for more details. # +import subprocess + ################################################# ## Our Environment @@ -69,6 +71,16 @@ if env['includedir'][0] != '/' and env['includedir'][0] != '#': ################################################# +## Obtain description of current version + +# Get current revision +# We ask git for a description of the current revision and add it to the +# environment. +descr = subprocess.check_output(["git", "describe", "--always", "--dirty"]) +env['revision'] = descr.strip() + + +################################################# ## Include SCronscripts from subdirectories # (export env to them):
14 doc/SConscript
 @@ -39,6 +39,12 @@ Import('env') ################################################# ## API documentation +# build up the command string. +# Note: We feed the revision into the PROJECT_NUMBER variable to let it appear +# in the generated documentation. +cmd = "cd doc/ && (cat api.doxyfile ; echo \"PROJECT_NUMBER=Revision: " +cmd += env['revision'] +cmd += "\" ) | doxygen - > /dev/null" # Build it # Note: To find out whether a rebuild is neccessary, @@ -47,7 +53,7 @@ Import('env') # a HTML file as target api = Command('api/html/index.html', 'api.doxyfile', - "cd doc/ && doxygen api.doxyfile > /dev/null") + cmd) # API doc depends on src/ directory # Note: although not all files in there are actually @@ -72,9 +78,13 @@ Install(env['docdir'], "api") ################################################# ## The same for the internal documentation: +cmd = "cd doc/ && (cat internals.doxyfile ; echo \"PROJECT_NUMBER=Revision: " +cmd += env['revision'] +cmd += "\" ) | doxygen - > /dev/null" + internals = Command('internals/html/index.html', 'internals.doxyfile', - "cd doc/ && doxygen internals.doxyfile > /dev/null") + cmd) Depends(internals, Glob('../src/*.cpp') + Glob('../src/*.hpp')) Depends(internals, Glob('*.dox') + Glob('internals.mainpage')) Clean(internals, "internals")
44 doc/api.doxyfile
 @@ -45,7 +45,7 @@ DOXYFILE_ENCODING = UTF-8 # The PROJECT_NAME tag is a single word (or a sequence of words surrounded # by quotes) that should identify the project. -PROJECT_NAME = "AgentXcpp API documentation" +PROJECT_NAME = AgentXcpp # The PROJECT_NUMBER tag can be used to enter a project or revision number. # This could be handy for archiving the generated documentation or @@ -57,7 +57,7 @@ PROJECT_NUMBER = # for a project that appears at the top of each page and should give viewer # a quick idea about the purpose of the project. Keep the description short. -PROJECT_BRIEF = +PROJECT_BRIEF = "API Documentation" # With the PROJECT_LOGO tag one can specify an logo or icon that is # included in the documentation. The maximum height of the logo should not @@ -135,7 +135,7 @@ ABBREVIATE_BRIEF = "The name class" \ # Doxygen will generate a detailed section even if there is only a brief # description. -ALWAYS_DETAILED_SEC = NO +ALWAYS_DETAILED_SEC = YES # If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all # inherited members of a class in the documentation of that class as if those @@ -202,7 +202,7 @@ MULTILINE_CPP_IS_BRIEF = NO # member inherits the documentation from any documented member that it # re-implements. -INHERIT_DOCS = YES +INHERIT_DOCS = NO # If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce # a new page for each member. If set to NO, the documentation of a member will @@ -269,7 +269,7 @@ EXTENSION_MAPPING = # func(std::string) {}). This also makes the inheritance and collaboration # diagrams that involve STL classes more complete and accurate. -BUILTIN_STL_SUPPORT = NO +BUILTIN_STL_SUPPORT = YES # If you use Microsoft's C++/CLI language, you should set this option to YES to # enable parsing support. @@ -551,7 +551,7 @@ SHOW_FILES = YES # Namespaces page. This will remove the Namespaces entry from the Quick Index # and from the Folder Tree View (if specified). The default is YES. -SHOW_NAMESPACES = YES +SHOW_NAMESPACES = NO # The FILE_VERSION_FILTER tag can be used to specify a program or script that # doxygen should invoke to get the current version for each file (typically from @@ -786,7 +786,7 @@ FILTER_SOURCE_PATTERNS = # Note: To get rid of all source code in the generated output, make sure also # VERBATIM_HEADERS is set to NO. -SOURCE_BROWSER = YES +SOURCE_BROWSER = NO # Setting the INLINE_SOURCES tag to YES will include the body # of functions and classes directly in the documentation. @@ -797,7 +797,7 @@ INLINE_SOURCES = NO # doxygen to hide any special comment blocks from generated source code # fragments. Normal C and C++ comments will always remain visible. -STRIP_CODE_COMMENTS = YES +STRIP_CODE_COMMENTS = NO # If the REFERENCED_BY_RELATION tag is set to YES # then for each documented function all documented @@ -816,7 +816,7 @@ REFERENCES_RELATION = NO # functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will # link to the source code. Otherwise they will link to the documentation. -REFERENCES_LINK_SOURCE = YES +REFERENCES_LINK_SOURCE = NO # If the USE_HTAGS tag is set to YES then the references to source code # will point to the HTML generated by the htags(1) tool instead of doxygen @@ -830,7 +830,7 @@ USE_HTAGS = NO # will generate a verbatim copy of the header file for each class for # which an include is specified. Set to NO to disable this. -VERBATIM_HEADERS = YES +VERBATIM_HEADERS = NO #--------------------------------------------------------------------------- # configuration options related to the alphabetical class index @@ -840,13 +840,13 @@ VERBATIM_HEADERS = YES # of all compounds will be generated. Enable this if the project # contains a lot of classes, structs, unions or interfaces. -ALPHABETICAL_INDEX = YES +ALPHABETICAL_INDEX = NO # If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then # the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns # in which this list will be split (can be a number in the range [1..20]) -COLS_IN_ALPHA_INDEX = 5 +COLS_IN_ALPHA_INDEX = 2 # In case all classes in a project start with a common prefix, all # classes will be put under the same header in the alphabetical index. @@ -926,7 +926,7 @@ HTML_COLORSTYLE_GAMMA = 80 # page will contain the date and time when the page was generated. Setting # this to NO can help when comparing the output of multiple runs. -HTML_TIMESTAMP = YES +HTML_TIMESTAMP = NO # If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, # files or namespaces will be aligned in HTML using tables. If set to @@ -1097,7 +1097,7 @@ ECLIPSE_DOC_ID = org.doxygen.Project # top of each HTML page. The value NO (the default) enables the index and # the value YES disables it. -DISABLE_INDEX = NO +DISABLE_INDEX = YES # This tag can be used to set the number of enum values (range [0,1..20]) # that doxygen will group on one line in the generated HTML documentation. @@ -1114,7 +1114,7 @@ ENUM_VALUES_PER_LINE = 4 # JavaScript, DHTML, CSS and frames is required (i.e. any modern browser). # Windows users are probably better off using the HTML help feature. -GENERATE_TREEVIEW = NO +GENERATE_TREEVIEW = YES # By enabling USE_INLINE_TREES, doxygen will generate the Groups, Directories, # and Class Hierarchy pages using a tree view instead of an ordered list. @@ -1176,7 +1176,7 @@ MATHJAX_RELPATH = http://www.mathjax.org/mathjax # typically be disabled. For large projects the javascript based search engine # can be slow, then enabling SERVER_BASED_SEARCH may provide a better solution. -SEARCHENGINE = NO +SEARCHENGINE = YES # When the SERVER_BASED_SEARCH tag is enabled the search engine will be # implemented using a PHP enabled web server instead of at the web client @@ -1543,7 +1543,7 @@ PERL_PATH = /usr/bin/perl # this option also works with HAVE_DOT disabled, but it is recommended to # install and use dot, since it yields more powerful graphs. -CLASS_DIAGRAMS = NO +CLASS_DIAGRAMS = YES # You can define message sequence charts within doxygen comments using the \msc # command. Doxygen will then run the mscgen tool (see @@ -1632,14 +1632,14 @@ TEMPLATE_RELATIONS = NO # file showing the direct and indirect include dependencies of the file with # other documented files. -INCLUDE_GRAPH = YES +INCLUDE_GRAPH = NO # If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and # HAVE_DOT tags are set to YES then doxygen will generate a graph for each # documented header file showing the documented files that directly or # indirectly include this file. -INCLUDED_BY_GRAPH = YES +INCLUDED_BY_GRAPH = NO # If the CALL_GRAPH and HAVE_DOT options are set to YES then # doxygen will generate a call dependency graph for every global function @@ -1667,13 +1667,13 @@ GRAPHICAL_HIERARCHY = YES # in a graphical way. The dependency relations are determined by the #include # relations between the files in the directories. -DIRECTORY_GRAPH = YES +DIRECTORY_GRAPH = NO # The DOT_IMAGE_FORMAT tag can be used to set the image format of the images # generated by dot. Possible values are png, svg, gif or svg. # If left blank png will be used. -DOT_IMAGE_FORMAT = png +DOT_IMAGE_FORMAT = svg # The tag DOT_PATH can be used to specify the path where the dot tool can be # found. If left blank, it is assumed the dot tool can be found in the path. @@ -1731,7 +1731,7 @@ DOT_MULTI_TARGETS = NO # generate a legend page explaining the meaning of the various boxes and # arrows in the dot generated graphs. -GENERATE_LEGEND = NO +GENERATE_LEGEND = YES # If the DOT_CLEANUP tag is set to YES (the default) Doxygen will # remove the intermediate dot files that are used to generate 7 doc/api.mainpage  @@ -21,9 +21,9 @@ \mainpage AgentXcpp API documentation -The AgentXcpp library is intendet to implement SNMP MIB implementation. This is -achieved by implementing the AgentX protocol as defined in RFC 2741. The main -goals of the library are: +The AgentXcpp library is intended to implement SNMP MIB's. This is achieved by +implementing the AgentX protocol as defined in RFC 2741. The main goals of the +library are: - Compliance to RFC 2741 - Provide a clean, easy to use API @@ -32,6 +32,5 @@ goals of the library are: Table of Contents - \subpage license -- \subpage todo */ 13 doc/buildsystem.dox  @@ -41,7 +41,7 @@ is also possible to install agentXcpp right into a system. This section explains how AgentXcpp is built and how SCons is used by agentXccp internally. -\section hotobuild How to build AgentXcpp +\section howtobuild How to build AgentXcpp \subsection prerequisites Prerequisites @@ -113,9 +113,9 @@ This doesn't clean any files installed with scons install. \section howitworks How Scons works in agentXcpp -Scons is controlled via the \c SConstruct and \c SConscript files (the +SCons is controlled via the \c SConstruct and \c SConscript files (the "Makefiles" of SCons). These files are in fact python scripts which call -certain Scons functions. These Scons functions then build agentXcpp. The root +certain SCons functions. These SCons functions then build agentXcpp. The root directory contains an \c SConstruct file, and each subdirectory has a \c SConscript file to control the build process inside that directory. @@ -141,6 +141,9 @@ provided: - --includedir=INCLUDEDIR - --docdir=DOCDIR +Next, the git command describe is used to determine the revision from +which agentXcpp is built. The revision is added to the build environment. + Finally, the subsidiary SConscript's are invoked, exporting the environment. \subsection src_sconscript src/SConscript @@ -165,7 +168,9 @@ alongside), and 'api.doxyfile', the doxygen configuration file for the API docs, is defined as primary source for the build. The command for building begins with 'cd doc/', because the build is always started from the top-level directory, but Doxygen must be invoked in the doc directory in order -to find its files. +to find its files. Also, this command includes shell code to feed the revision +from the environment into doxygen's PROJECT_NUMBER variable to make it +visible in the generated documentation. Second, the dependencies are defined. If any dependency changes, the documentation must be rebuild. To keep things easy, all *.cpp and 44 doc/internals.doxyfile  @@ -45,7 +45,7 @@ DOXYFILE_ENCODING = UTF-8 # The PROJECT_NAME tag is a single word (or a sequence of words surrounded # by quotes) that should identify the project. -PROJECT_NAME = "AgentXcpp internals documentation" +PROJECT_NAME = AgentXcpp # The PROJECT_NUMBER tag can be used to enter a project or revision number. # This could be handy for archiving the generated documentation or @@ -57,7 +57,7 @@ PROJECT_NUMBER = # for a project that appears at the top of each page and should give viewer # a quick idea about the purpose of the project. Keep the description short. -PROJECT_BRIEF = +PROJECT_BRIEF = "Internals Documentation" # With the PROJECT_LOGO tag one can specify an logo or icon that is # included in the documentation. The maximum height of the logo should not @@ -135,7 +135,7 @@ ABBREVIATE_BRIEF = "Thename class" \ # Doxygen will generate a detailed section even if there is only a brief # description. -ALWAYS_DETAILED_SEC = NO +ALWAYS_DETAILED_SEC = YES # If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all # inherited members of a class in the documentation of that class as if those @@ -202,7 +202,7 @@ MULTILINE_CPP_IS_BRIEF = NO # member inherits the documentation from any documented member that it # re-implements. -INHERIT_DOCS = YES +INHERIT_DOCS = NO # If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce # a new page for each member. If set to NO, the documentation of a member will @@ -269,7 +269,7 @@ EXTENSION_MAPPING = # func(std::string) {}). This also makes the inheritance and collaboration # diagrams that involve STL classes more complete and accurate. -BUILTIN_STL_SUPPORT = NO +BUILTIN_STL_SUPPORT = YES # If you use Microsoft's C++/CLI language, you should set this option to YES to # enable parsing support. @@ -341,7 +341,7 @@ SYMBOL_CACHE_SIZE = 0 # Private class members and static file members will be hidden unless # the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES -EXTRACT_ALL = NO +EXTRACT_ALL = YES # If the EXTRACT_PRIVATE tag is set to YES all private members of a class # will be included in the documentation. @@ -551,7 +551,7 @@ SHOW_FILES = YES # Namespaces page. This will remove the Namespaces entry from the Quick Index # and from the Folder Tree View (if specified). The default is YES. -SHOW_NAMESPACES = YES +SHOW_NAMESPACES = NO # The FILE_VERSION_FILTER tag can be used to specify a program or script that # doxygen should invoke to get the current version for each file (typically from @@ -797,26 +797,26 @@ INLINE_SOURCES = NO # doxygen to hide any special comment blocks from generated source code # fragments. Normal C and C++ comments will always remain visible. -STRIP_CODE_COMMENTS = YES +STRIP_CODE_COMMENTS = NO # If the REFERENCED_BY_RELATION tag is set to YES # then for each documented function all documented # functions referencing it will be listed. -REFERENCED_BY_RELATION = NO +REFERENCED_BY_RELATION = YES # If the REFERENCES_RELATION tag is set to YES # then for each documented function all documented entities # called/used by that function will be listed. -REFERENCES_RELATION = NO +REFERENCES_RELATION = YES # If the REFERENCES_LINK_SOURCE tag is set to YES (the default) # and SOURCE_BROWSER tag is set to YES, then the hyperlinks from # functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will # link to the source code. Otherwise they will link to the documentation. -REFERENCES_LINK_SOURCE = YES +REFERENCES_LINK_SOURCE = NO # If the USE_HTAGS tag is set to YES then the references to source code # will point to the HTML generated by the htags(1) tool instead of doxygen @@ -846,7 +846,7 @@ ALPHABETICAL_INDEX = YES # the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns # in which this list will be split (can be a number in the range [1..20]) -COLS_IN_ALPHA_INDEX = 5 +COLS_IN_ALPHA_INDEX = 2 # In case all classes in a project start with a common prefix, all # classes will be put under the same header in the alphabetical index. @@ -926,7 +926,7 @@ HTML_COLORSTYLE_GAMMA = 80 # page will contain the date and time when the page was generated. Setting # this to NO can help when comparing the output of multiple runs. -HTML_TIMESTAMP = YES +HTML_TIMESTAMP = NO # If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, # files or namespaces will be aligned in HTML using tables. If set to @@ -1097,7 +1097,7 @@ ECLIPSE_DOC_ID = org.doxygen.Project # top of each HTML page. The value NO (the default) enables the index and # the value YES disables it. -DISABLE_INDEX = NO +DISABLE_INDEX = YES # This tag can be used to set the number of enum values (range [0,1..20]) # that doxygen will group on one line in the generated HTML documentation. @@ -1114,7 +1114,7 @@ ENUM_VALUES_PER_LINE = 4 # JavaScript, DHTML, CSS and frames is required (i.e. any modern browser). # Windows users are probably better off using the HTML help feature. -GENERATE_TREEVIEW = NO +GENERATE_TREEVIEW = YES # By enabling USE_INLINE_TREES, doxygen will generate the Groups, Directories, # and Class Hierarchy pages using a tree view instead of an ordered list. @@ -1176,7 +1176,7 @@ MATHJAX_RELPATH = http://www.mathjax.org/mathjax # typically be disabled. For large projects the javascript based search engine # can be slow, then enabling SERVER_BASED_SEARCH may provide a better solution. -SEARCHENGINE = NO +SEARCHENGINE = YES # When the SERVER_BASED_SEARCH tag is enabled the search engine will be # implemented using a PHP enabled web server instead of at the web client @@ -1543,7 +1543,7 @@ PERL_PATH = /usr/bin/perl # this option also works with HAVE_DOT disabled, but it is recommended to # install and use dot, since it yields more powerful graphs. -CLASS_DIAGRAMS = NO +CLASS_DIAGRAMS = YES # You can define message sequence charts within doxygen comments using the \msc # command. Doxygen will then run the mscgen tool (see @@ -1609,7 +1609,7 @@ CLASS_GRAPH = YES # indirect implementation dependencies (inheritance, containment, and # class references variables) of the class with other documented classes. -COLLABORATION_GRAPH = NO +COLLABORATION_GRAPH = YES # If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen # will generate a graph for groups, showing the direct groups dependencies @@ -1620,7 +1620,7 @@ GROUP_GRAPHS = YES # collaboration diagrams in a style similar to the OMG's Unified Modeling # Language. -UML_LOOK = NO +UML_LOOK = YES # If set to YES, the inheritance and collaboration graphs will show the # relations between templates and their instances. @@ -1673,7 +1673,7 @@ DIRECTORY_GRAPH = YES # generated by dot. Possible values are png, svg, gif or svg. # If left blank png will be used. -DOT_IMAGE_FORMAT = png +DOT_IMAGE_FORMAT = svg # The tag DOT_PATH can be used to specify the path where the dot tool can be # found. If left blank, it is assumed the dot tool can be found in the path. @@ -1710,7 +1710,7 @@ DOT_GRAPH_MAX_NODES = 50 # code bases. Also note that the size of a graph can be further restricted by # DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction. -MAX_DOT_GRAPH_DEPTH = 0 +MAX_DOT_GRAPH_DEPTH = 2 # Set the DOT_TRANSPARENT tag to YES to generate images with a transparent # background. This is disabled by default, because dot on Windows does not @@ -1731,7 +1731,7 @@ DOT_MULTI_TARGETS = NO # generate a legend page explaining the meaning of the various boxes and # arrows in the dot generated graphs. -GENERATE_LEGEND = NO +GENERATE_LEGEND = YES # If the DOT_CLEANUP tag is set to YES (the default) Doxygen will # remove the intermediate dot files that are used to generate
3  doc/internals.mainpage
 @@ -21,7 +21,7 @@ \mainpage AgentXcpp internals documentation -The AgentXcpp library is intendet to implement SNMP MIB implementation. This is +The AgentXcpp library is intended to implement SNMP MIB implementation. This is achieved by implementing the AgentX protocol as defined in RFC 2741. The main goals of the library are: @@ -36,6 +36,5 @@ Table of contents - \subpage buildsystem - \subpage pdus - \subpage exceptions -- \subpage todo */
 @@ -36,7 +36,7 @@ four essential freedoms: - The freedom to redistribute copies (freedom 2). - The freedom to distribute copies of modified versions to others (freedom 3). -In addition, the GPL garantuees that these freedoms remain intact when the +In addition, the GPL guarantees that these freedoms remain intact when the software is distributed, be it unmodified or modified. However, there is one freedom that the GPL denies to the user of a GPL'ed \em @@ -68,9 +68,9 @@ library may be \em used without any further restrictions, but changing it and copying its code is still covered by the GPL. Finally, a word on non-copyleft licenses (e.g. the well-known BSD-licenses). -The authour could have choosen one of them. This would have made agentXcpp a -free software, but these licenses do not ensure that the software remains free. -For the author, it was not an option that users (especially companies) could +The author could have chosen one of them. This would have made agentXcpp a free +software, but these licenses do not ensure that the software remains free. For +the author, it was not an option that users (especially companies) could benefit from their improvements to free software while not giving them back to the community. The agentXcpp library may still be modified, even by companies, and it is explicitly allowed to distribute the modified version, e.g. to
18 doc/parsing.dox
 @@ -23,7 +23,7 @@ \page parsing Parsing incoming PDUs -This section explains how PDU parsing is done in agentxcpp. +This section explains how PDU parsing is done in agentXcpp. AgentX PDUs are read from a stream, constructing C++ objects which represent the PDUs and all their parts (such as varbinds, for example). In general, the @@ -39,13 +39,13 @@ data_t::const_iterator& end, bool big_endian). It takes an iterator ('pos') and begins parsing at where 'pos' points to. While reading, the varbind object is constructed. A varbind always contains (at least) an oid. The varbind constructor therefore creates an oid object by passing the 'pos' iterator to -the constructor of the oid class, which reads the serialized oid and -construncts the oid object. If needed, another variable is created the same way -(e.g. an Integer or an Octet_String). When the varbind object is fully -constructed, the 'pos' iterator points to the position behind the varbind and -the constructor returns. Note that the interator is modified by the -constructor. The caller may then use 'pos' to create the next object, until the -buffer is completely parsed. +the constructor of the oid class, which reads the serialized oid and constructs +the oid object. If needed, another variable is created the same way (e.g. an +Integer or an Octet_String). When the varbind object is fully constructed, the +'pos' iterator points to the position behind the varbind and the constructor +returns. Note that the iterator is modified by the constructor. The caller may +then use 'pos' to create the next object, until the buffer is completely +parsed. The 'end' iterator seen in the above constructor prototype is needed to know the end of the buffer. Parse constructors use it to detect missing data at the @@ -63,7 +63,7 @@ created object is returned, and the caller is responsible for deleting it when it is not longer needed. The agentxcpp::PDU class cannot be instantiated itself, as it does not -represent a PDU type defined in RFC2741. It serves as base class for the +represent a PDU type defined in RFC 2741. It serves as base class for the concrete PDU types. Each concrete PDU type (for example the OpenPDU class) inherits from PDU. The constructor of such a concrete class must call the constructor of the PDU class, which parses the header. Example:
2  doc/pdus.dox
 @@ -28,7 +28,7 @@ The %PDU objects, such as OpenPDU, RegisterPDU and so on represent the AgentX Protocol Data Units. Each of these classes inherits from the abstract PDU class which represents the header of a %PDU. The header is identical for each %PDU. Some classes inherit from the PDUwithContext class, which in turn derives -from PDU. PDU is used for classes whithout the context field while +from PDU. PDU is used for classes without the context field while PDUwithContext is used for classes with the context field. The latter only implements functionality to handle the context.
2  doc/serializing.dox
 @@ -30,7 +30,7 @@ AgentXcpp defines some data types and helper functions to deal with serialization. The type data_t can be used like an STL string, but is a series of byte_t values. The byte_t type in turn is defined to hold a single byte. The write32() and write16() functions are used to append a 32-bit value -respecively a 16-bit-value to a data_t object, using big endian. The agentXcpp +respectively a 16-bit-value to a data_t object, using big endian. The agentXcpp library always uses big endian (this may change in future). Each %PDU has a serialize() member function to get the serialized form of that
36 doc/todo.dox
 @@ -1,36 +0,0 @@ -/* - * Copyright 2011 Tanjeff-Nicolai Moos - * - * This file is part of the agentXcpp library. - * - * AgentXcpp is free software: you can redistribute it and/or modify - * it under the terms of the AgentXcpp library license, version 1, which - * consists of the GNU General Public License and some additional - * permissions. - * - * AgentXcpp is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * See the AgentXcpp library license in the LICENSE file of this package - * for more details. - */ - -/*! - -\page todo TODO - -- Add unit tests -- Clean up serializing/deserializing: Implementation works, but is somewhat - ugly. -- Introduce naming scheme for (private) member variables of classes, e.g. with - leading underscore. Apply it consistently. -- Check for each (!) function whether all exceptions are catched or documented - (e.g. exceptions coming from STL, even if they are unlikely) -- Better handling of documentation building (use scons Doxygen builder) -- Check code for memory leaks -- Consider providing the endianess choice for serializing (currently always big - endian is used for serializing) -- Cleanup helper.hpp and types.hpp -*/
2  src/connector.hpp
 @@ -97,8 +97,6 @@ namespace agentxcpp * operation on the io_service object (outside this class or even outside * the agentXcpp library) may be served. Here are the steps performed to * receive a ResponsePDU: - */ - /** * * - The wait_for_response() function puts an empty boost::shared_ptr<> * into the responses map, using the PacketID of the awaited ResponsePDU
2  src/types.hpp
 @@ -47,6 +47,8 @@ typedef unsigned char byte_t; // for machines where unsigned char has 8bits typedef std::basic_istream input_stream; /** + * \internal + * * \brief A type representing a contigous byte stream */ class data_t : public std::basic_string { };
2  src/varbind.hpp
 @@ -28,6 +28,8 @@ namespace agentxcpp { /** + * \internal + * * \brief Represents a VarBind according to RFC 2741, section 5.4. */ class varbind

### No commit comments for this range

Something went wrong with that request. Please try again.