IP Utils Summary

IP-Utils is a collection of C++ Classes that enable data communication via a simple API for various IP-based networking protocols. Designed as a layered architecture (mimicking the ISO layers), it uses file descriptor reference counting to provide safe copying of networking objects. An application requests either a half-tuple (e.g., TCPConn tcp_connection;) or an entire flow (e.g., TCPSession tcp_session(FRAMING_TYPE);) and communicates data over those objects using a specific message framing (e.g., HTTPFraming). Different message framing is achieved within flows by encapsulating the different framing headers within a single Class (i.e., MsgHdr), which the flow Classes (e.g., TCPSession) interface with. The IP-Util Classes can be used individually, or the collection can be built into a library archive.

Additional utility Classes for error handling, logging, URL handling and file management are also included and used by the networking Classes. Since C++ exception handling is *not* looked on favorably, error handling is done through the ErrorHandling Class, which provides a global structure that Classes can use to initiate and append to *events* for processing by the application. Likewise, logging is done through the Logger Class, which similarly uses a mechanism based on a global object. The Logger object allows Classes to report events by both priority (syslog(3)) and mechanism (e.g., stderr, syslog, file, script), however, logging will *not* be enabled unless the code that links with IP-Utils is complied using the flag "-DUSE_LOGGER". A minimal Class to parse and generate URLs is used by the HTTPFraming class, referred to as URL. And finally, the File Class handles all disk I/O used by the networking Classes, both low-level I/O and streaming FILE* I/O. All four non-networking utility Classes can be used outside of IP-Utils, if so desired. Features of IP-Utils Classes, include:

- DOxygen comments included in header files.
- Handles IPv4 or IPv6 communications.
- Provides TCP or UDP objects.
- Currently supports *struct-based* and HTTP framing (including MIME-type handling).
- Code written to Google C++ Style Guide <https://code.google.com/p/google-styleguide/>

The layered design of IP-Utils allows easy expansion. For example, with little work a UDP flow Class could be generated (technically, UDP is connection-less, however, flows can exist nonetheless). Moreover, multiple message framing could be supported by IP-Utils simply by adding the appropriate Class (e.g., SNMP) and adding the hooks within the MsgHdr Class.

Source: IP-utils-1.0.1.tar.gz

Upcoming Events

Events Calendar

<<  June 2018  >>
 Su  Mo  Tu  We  Th  Fr  Sa 
       1  2
  3  4  5  6  7  8  9
10111213141516
17181920212223
24252630

System Status

  • Bridges is up

     

     Scheduled downtime June 26-28

    Read more

Pylon2 Discontinued June 19

The pylon2 filesystem will be discontinued on June 19. If you have not already done so, move your files to pylon5.

See how to move your files.

Featured Projects

Data Exacell (DXC)

DXC

The Data Exacell (DXC) is a research pilot project to create, deploy, and test software and hardware building blocks to enable data analytics in scientific research.

XSEDE Service Provider

image gallery

PSC is a service provider of the Extreme Science and Engineering Discovery Environment (XSEDE).