diff --git a/assets/coverage/amber.png b/assets/coverage/amber.png new file mode 100644 index 0000000..2cab170 Binary files /dev/null and b/assets/coverage/amber.png differ diff --git a/assets/coverage/emerald.png b/assets/coverage/emerald.png new file mode 100644 index 0000000..38ad4f4 Binary files /dev/null and b/assets/coverage/emerald.png differ diff --git a/assets/coverage/gcov.css b/assets/coverage/gcov.css new file mode 100644 index 0000000..bfd0a83 --- /dev/null +++ b/assets/coverage/gcov.css @@ -0,0 +1,519 @@ +/* All views: initial background and text color */ +body +{ + color: #000000; + background-color: #FFFFFF; +} + +/* All views: standard link format*/ +a:link +{ + color: #284FA8; + text-decoration: underline; +} + +/* All views: standard link - visited format */ +a:visited +{ + color: #00CB40; + text-decoration: underline; +} + +/* All views: standard link - activated format */ +a:active +{ + color: #FF0040; + text-decoration: underline; +} + +/* All views: main title format */ +td.title +{ + text-align: center; + padding-bottom: 10px; + font-family: sans-serif; + font-size: 20pt; + font-style: italic; + font-weight: bold; +} + +/* All views: header item format */ +td.headerItem +{ + text-align: right; + padding-right: 6px; + font-family: sans-serif; + font-weight: bold; + vertical-align: top; + white-space: nowrap; +} + +/* All views: header item value format */ +td.headerValue +{ + text-align: left; + color: #284FA8; + font-family: sans-serif; + font-weight: bold; + white-space: nowrap; +} + +/* All views: header item coverage table heading */ +td.headerCovTableHead +{ + text-align: center; + padding-right: 6px; + padding-left: 6px; + padding-bottom: 0px; + font-family: sans-serif; + font-size: 80%; + white-space: nowrap; +} + +/* All views: header item coverage table entry */ +td.headerCovTableEntry +{ + text-align: right; + color: #284FA8; + font-family: sans-serif; + font-weight: bold; + white-space: nowrap; + padding-left: 12px; + padding-right: 4px; + background-color: #DAE7FE; +} + +/* All views: header item coverage table entry for high coverage rate */ +td.headerCovTableEntryHi +{ + text-align: right; + color: #000000; + font-family: sans-serif; + font-weight: bold; + white-space: nowrap; + padding-left: 12px; + padding-right: 4px; + background-color: #A7FC9D; +} + +/* All views: header item coverage table entry for medium coverage rate */ +td.headerCovTableEntryMed +{ + text-align: right; + color: #000000; + font-family: sans-serif; + font-weight: bold; + white-space: nowrap; + padding-left: 12px; + padding-right: 4px; + background-color: #FFEA20; +} + +/* All views: header item coverage table entry for ow coverage rate */ +td.headerCovTableEntryLo +{ + text-align: right; + color: #000000; + font-family: sans-serif; + font-weight: bold; + white-space: nowrap; + padding-left: 12px; + padding-right: 4px; + background-color: #FF0000; +} + +/* All views: header legend value for legend entry */ +td.headerValueLeg +{ + text-align: left; + color: #000000; + font-family: sans-serif; + font-size: 80%; + white-space: nowrap; + padding-top: 4px; +} + +/* All views: color of horizontal ruler */ +td.ruler +{ + background-color: #6688D4; +} + +/* All views: version string format */ +td.versionInfo +{ + text-align: center; + padding-top: 2px; + font-family: sans-serif; + font-style: italic; +} + +/* Directory view/File view (all)/Test case descriptions: + table headline format */ +td.tableHead +{ + text-align: center; + color: #FFFFFF; + background-color: #6688D4; + font-family: sans-serif; + font-size: 120%; + font-weight: bold; + white-space: nowrap; + padding-left: 4px; + padding-right: 4px; +} + +span.tableHeadSort +{ + padding-right: 4px; +} + +/* Directory view/File view (all): filename entry format */ +td.coverFile +{ + text-align: left; + padding-left: 10px; + padding-right: 20px; + color: #284FA8; + background-color: #DAE7FE; + font-family: monospace; +} + +/* Directory view/File view (all): bar-graph entry format*/ +td.coverBar +{ + padding-left: 10px; + padding-right: 10px; + background-color: #DAE7FE; +} + +/* Directory view/File view (all): bar-graph outline color */ +td.coverBarOutline +{ + background-color: #000000; +} + +/* Directory view/File view (all): percentage entry for files with + high coverage rate */ +td.coverPerHi +{ + text-align: right; + padding-left: 10px; + padding-right: 10px; + background-color: #A7FC9D; + font-weight: bold; + font-family: sans-serif; +} + +/* Directory view/File view (all): line count entry for files with + high coverage rate */ +td.coverNumHi +{ + text-align: right; + padding-left: 10px; + padding-right: 10px; + background-color: #A7FC9D; + white-space: nowrap; + font-family: sans-serif; +} + +/* Directory view/File view (all): percentage entry for files with + medium coverage rate */ +td.coverPerMed +{ + text-align: right; + padding-left: 10px; + padding-right: 10px; + background-color: #FFEA20; + font-weight: bold; + font-family: sans-serif; +} + +/* Directory view/File view (all): line count entry for files with + medium coverage rate */ +td.coverNumMed +{ + text-align: right; + padding-left: 10px; + padding-right: 10px; + background-color: #FFEA20; + white-space: nowrap; + font-family: sans-serif; +} + +/* Directory view/File view (all): percentage entry for files with + low coverage rate */ +td.coverPerLo +{ + text-align: right; + padding-left: 10px; + padding-right: 10px; + background-color: #FF0000; + font-weight: bold; + font-family: sans-serif; +} + +/* Directory view/File view (all): line count entry for files with + low coverage rate */ +td.coverNumLo +{ + text-align: right; + padding-left: 10px; + padding-right: 10px; + background-color: #FF0000; + white-space: nowrap; + font-family: sans-serif; +} + +/* File view (all): "show/hide details" link format */ +a.detail:link +{ + color: #B8D0FF; + font-size:80%; +} + +/* File view (all): "show/hide details" link - visited format */ +a.detail:visited +{ + color: #B8D0FF; + font-size:80%; +} + +/* File view (all): "show/hide details" link - activated format */ +a.detail:active +{ + color: #FFFFFF; + font-size:80%; +} + +/* File view (detail): test name entry */ +td.testName +{ + text-align: right; + padding-right: 10px; + background-color: #DAE7FE; + font-family: sans-serif; +} + +/* File view (detail): test percentage entry */ +td.testPer +{ + text-align: right; + padding-left: 10px; + padding-right: 10px; + background-color: #DAE7FE; + font-family: sans-serif; +} + +/* File view (detail): test lines count entry */ +td.testNum +{ + text-align: right; + padding-left: 10px; + padding-right: 10px; + background-color: #DAE7FE; + font-family: sans-serif; +} + +/* Test case descriptions: test name format*/ +dt +{ + font-family: sans-serif; + font-weight: bold; +} + +/* Test case descriptions: description table body */ +td.testDescription +{ + padding-top: 10px; + padding-left: 30px; + padding-bottom: 10px; + padding-right: 30px; + background-color: #DAE7FE; +} + +/* Source code view: function entry */ +td.coverFn +{ + text-align: left; + padding-left: 10px; + padding-right: 20px; + color: #284FA8; + background-color: #DAE7FE; + font-family: monospace; +} + +/* Source code view: function entry zero count*/ +td.coverFnLo +{ + text-align: right; + padding-left: 10px; + padding-right: 10px; + background-color: #FF0000; + font-weight: bold; + font-family: sans-serif; +} + +/* Source code view: function entry nonzero count*/ +td.coverFnHi +{ + text-align: right; + padding-left: 10px; + padding-right: 10px; + background-color: #DAE7FE; + font-weight: bold; + font-family: sans-serif; +} + +/* Source code view: source code format */ +pre.source +{ + font-family: monospace; + white-space: pre; + margin-top: 2px; +} + +/* Source code view: line number format */ +span.lineNum +{ + background-color: #EFE383; +} + +/* Source code view: format for lines which were executed */ +td.lineCov, +span.lineCov +{ + background-color: #CAD7FE; +} + +/* Source code view: format for Cov legend */ +span.coverLegendCov +{ + padding-left: 10px; + padding-right: 10px; + padding-bottom: 2px; + background-color: #CAD7FE; +} + +/* Source code view: format for lines which were not executed */ +td.lineNoCov, +span.lineNoCov +{ + background-color: #FF6230; +} + +/* Source code view: format for NoCov legend */ +span.coverLegendNoCov +{ + padding-left: 10px; + padding-right: 10px; + padding-bottom: 2px; + background-color: #FF6230; +} + +/* Source code view (function table): standard link - visited format */ +td.lineNoCov > a:visited, +td.lineCov > a:visited +{ + color: black; + text-decoration: underline; +} + +/* Source code view: format for lines which were executed only in a + previous version */ +span.lineDiffCov +{ + background-color: #B5F7AF; +} + +/* Source code view: format for branches which were executed + * and taken */ +span.branchCov +{ + background-color: #CAD7FE; +} + +/* Source code view: format for branches which were executed + * but not taken */ +span.branchNoCov +{ + background-color: #FF6230; +} + +/* Source code view: format for branches which were not executed */ +span.branchNoExec +{ + background-color: #FF6230; +} + +/* Source code view: format for the source code heading line */ +pre.sourceHeading +{ + white-space: pre; + font-family: monospace; + font-weight: bold; + margin: 0px; +} + +/* All views: header legend value for low rate */ +td.headerValueLegL +{ + font-family: sans-serif; + text-align: center; + white-space: nowrap; + padding-left: 4px; + padding-right: 2px; + background-color: #FF0000; + font-size: 80%; +} + +/* All views: header legend value for med rate */ +td.headerValueLegM +{ + font-family: sans-serif; + text-align: center; + white-space: nowrap; + padding-left: 2px; + padding-right: 2px; + background-color: #FFEA20; + font-size: 80%; +} + +/* All views: header legend value for hi rate */ +td.headerValueLegH +{ + font-family: sans-serif; + text-align: center; + white-space: nowrap; + padding-left: 2px; + padding-right: 4px; + background-color: #A7FC9D; + font-size: 80%; +} + +/* All views except source code view: legend format for low coverage */ +span.coverLegendCovLo +{ + padding-left: 10px; + padding-right: 10px; + padding-top: 2px; + background-color: #FF0000; +} + +/* All views except source code view: legend format for med coverage */ +span.coverLegendCovMed +{ + padding-left: 10px; + padding-right: 10px; + padding-top: 2px; + background-color: #FFEA20; +} + +/* All views except source code view: legend format for hi coverage */ +span.coverLegendCovHi +{ + padding-left: 10px; + padding-right: 10px; + padding-top: 2px; + background-color: #A7FC9D; +} diff --git a/assets/coverage/glass.png b/assets/coverage/glass.png new file mode 100644 index 0000000..e1abc00 Binary files /dev/null and b/assets/coverage/glass.png differ diff --git a/assets/coverage/ruby.png b/assets/coverage/ruby.png new file mode 100644 index 0000000..991b6d4 Binary files /dev/null and b/assets/coverage/ruby.png differ diff --git a/assets/coverage/snow.png b/assets/coverage/snow.png new file mode 100644 index 0000000..2cdae10 Binary files /dev/null and b/assets/coverage/snow.png differ diff --git a/assets/coverage/updown.png b/assets/coverage/updown.png new file mode 100644 index 0000000..aa56a23 Binary files /dev/null and b/assets/coverage/updown.png differ diff --git a/assets/doc/304_8c__incl.map b/assets/doc/304_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/304_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/304_8c__incl.md5 b/assets/doc/304_8c__incl.md5 new file mode 100644 index 0000000..81edebf --- /dev/null +++ b/assets/doc/304_8c__incl.md5 @@ -0,0 +1 @@ +693f21b16abdc4558d52e79109d3ef00 \ No newline at end of file diff --git a/assets/doc/304_8c__incl.png b/assets/doc/304_8c__incl.png new file mode 100644 index 0000000..2685bab Binary files /dev/null and b/assets/doc/304_8c__incl.png differ diff --git a/assets/doc/304_8c_aba6316bd46f4f785b21855689f7fcb41_cgraph.map b/assets/doc/304_8c_aba6316bd46f4f785b21855689f7fcb41_cgraph.map new file mode 100644 index 0000000..d953c62 --- /dev/null +++ b/assets/doc/304_8c_aba6316bd46f4f785b21855689f7fcb41_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/assets/doc/304_8c_aba6316bd46f4f785b21855689f7fcb41_cgraph.md5 b/assets/doc/304_8c_aba6316bd46f4f785b21855689f7fcb41_cgraph.md5 new file mode 100644 index 0000000..fd232ab --- /dev/null +++ b/assets/doc/304_8c_aba6316bd46f4f785b21855689f7fcb41_cgraph.md5 @@ -0,0 +1 @@ +ef24b8cdd4ef3d5b35421f27298df887 \ No newline at end of file diff --git a/assets/doc/304_8c_aba6316bd46f4f785b21855689f7fcb41_cgraph.png b/assets/doc/304_8c_aba6316bd46f4f785b21855689f7fcb41_cgraph.png new file mode 100644 index 0000000..5ea90e5 Binary files /dev/null and b/assets/doc/304_8c_aba6316bd46f4f785b21855689f7fcb41_cgraph.png differ diff --git a/assets/doc/304_8c_aba6316bd46f4f785b21855689f7fcb41_icgraph.map b/assets/doc/304_8c_aba6316bd46f4f785b21855689f7fcb41_icgraph.map new file mode 100644 index 0000000..3a0e0c0 --- /dev/null +++ b/assets/doc/304_8c_aba6316bd46f4f785b21855689f7fcb41_icgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/assets/doc/304_8c_aba6316bd46f4f785b21855689f7fcb41_icgraph.md5 b/assets/doc/304_8c_aba6316bd46f4f785b21855689f7fcb41_icgraph.md5 new file mode 100644 index 0000000..3c1b3c3 --- /dev/null +++ b/assets/doc/304_8c_aba6316bd46f4f785b21855689f7fcb41_icgraph.md5 @@ -0,0 +1 @@ +27ff4d584d7ea1716f2602a1d864c44f \ No newline at end of file diff --git a/assets/doc/304_8c_aba6316bd46f4f785b21855689f7fcb41_icgraph.png b/assets/doc/304_8c_aba6316bd46f4f785b21855689f7fcb41_icgraph.png new file mode 100644 index 0000000..c891f4c Binary files /dev/null and b/assets/doc/304_8c_aba6316bd46f4f785b21855689f7fcb41_icgraph.png differ diff --git a/assets/doc/403_8c__incl.map b/assets/doc/403_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/403_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/403_8c__incl.md5 b/assets/doc/403_8c__incl.md5 new file mode 100644 index 0000000..53ed2e8 --- /dev/null +++ b/assets/doc/403_8c__incl.md5 @@ -0,0 +1 @@ +8d0fbf371fe65297ff3ffa47bfe47cee \ No newline at end of file diff --git a/assets/doc/403_8c__incl.png b/assets/doc/403_8c__incl.png new file mode 100644 index 0000000..07a431f Binary files /dev/null and b/assets/doc/403_8c__incl.png differ diff --git a/assets/doc/403_8c_a10bdf15320dd802fed606cadf5f3cc2c_icgraph.map b/assets/doc/403_8c_a10bdf15320dd802fed606cadf5f3cc2c_icgraph.map new file mode 100644 index 0000000..72100f6 --- /dev/null +++ b/assets/doc/403_8c_a10bdf15320dd802fed606cadf5f3cc2c_icgraph.map @@ -0,0 +1,3 @@ + + + diff --git a/assets/doc/403_8c_a10bdf15320dd802fed606cadf5f3cc2c_icgraph.md5 b/assets/doc/403_8c_a10bdf15320dd802fed606cadf5f3cc2c_icgraph.md5 new file mode 100644 index 0000000..b01034c --- /dev/null +++ b/assets/doc/403_8c_a10bdf15320dd802fed606cadf5f3cc2c_icgraph.md5 @@ -0,0 +1 @@ +8b2662cf9dca2933d7dad16f4b0c5f74 \ No newline at end of file diff --git a/assets/doc/403_8c_a10bdf15320dd802fed606cadf5f3cc2c_icgraph.png b/assets/doc/403_8c_a10bdf15320dd802fed606cadf5f3cc2c_icgraph.png new file mode 100644 index 0000000..5e09bde Binary files /dev/null and b/assets/doc/403_8c_a10bdf15320dd802fed606cadf5f3cc2c_icgraph.png differ diff --git a/assets/doc/404_8c__incl.map b/assets/doc/404_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/404_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/404_8c__incl.md5 b/assets/doc/404_8c__incl.md5 new file mode 100644 index 0000000..dab7cfb --- /dev/null +++ b/assets/doc/404_8c__incl.md5 @@ -0,0 +1 @@ +55e89b15197da65df17ee70008028579 \ No newline at end of file diff --git a/assets/doc/404_8c__incl.png b/assets/doc/404_8c__incl.png new file mode 100644 index 0000000..9a24585 Binary files /dev/null and b/assets/doc/404_8c__incl.png differ diff --git a/assets/doc/404_8c_aeab2dc61e86e010d1eb3511eaf8d8ad0_cgraph.map b/assets/doc/404_8c_aeab2dc61e86e010d1eb3511eaf8d8ad0_cgraph.map new file mode 100644 index 0000000..d953c62 --- /dev/null +++ b/assets/doc/404_8c_aeab2dc61e86e010d1eb3511eaf8d8ad0_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/assets/doc/404_8c_aeab2dc61e86e010d1eb3511eaf8d8ad0_cgraph.md5 b/assets/doc/404_8c_aeab2dc61e86e010d1eb3511eaf8d8ad0_cgraph.md5 new file mode 100644 index 0000000..90d7f87 --- /dev/null +++ b/assets/doc/404_8c_aeab2dc61e86e010d1eb3511eaf8d8ad0_cgraph.md5 @@ -0,0 +1 @@ +b5009c9d6951e4e18d2cb4aa07e8d35d \ No newline at end of file diff --git a/assets/doc/404_8c_aeab2dc61e86e010d1eb3511eaf8d8ad0_cgraph.png b/assets/doc/404_8c_aeab2dc61e86e010d1eb3511eaf8d8ad0_cgraph.png new file mode 100644 index 0000000..9d7782a Binary files /dev/null and b/assets/doc/404_8c_aeab2dc61e86e010d1eb3511eaf8d8ad0_cgraph.png differ diff --git a/assets/doc/404_8c_aeab2dc61e86e010d1eb3511eaf8d8ad0_icgraph.map b/assets/doc/404_8c_aeab2dc61e86e010d1eb3511eaf8d8ad0_icgraph.map new file mode 100644 index 0000000..72100f6 --- /dev/null +++ b/assets/doc/404_8c_aeab2dc61e86e010d1eb3511eaf8d8ad0_icgraph.map @@ -0,0 +1,3 @@ + + + diff --git a/assets/doc/404_8c_aeab2dc61e86e010d1eb3511eaf8d8ad0_icgraph.md5 b/assets/doc/404_8c_aeab2dc61e86e010d1eb3511eaf8d8ad0_icgraph.md5 new file mode 100644 index 0000000..98d4db3 --- /dev/null +++ b/assets/doc/404_8c_aeab2dc61e86e010d1eb3511eaf8d8ad0_icgraph.md5 @@ -0,0 +1 @@ +fa88000745e7284a6723560a8c5a11d6 \ No newline at end of file diff --git a/assets/doc/404_8c_aeab2dc61e86e010d1eb3511eaf8d8ad0_icgraph.png b/assets/doc/404_8c_aeab2dc61e86e010d1eb3511eaf8d8ad0_icgraph.png new file mode 100644 index 0000000..945cf3f Binary files /dev/null and b/assets/doc/404_8c_aeab2dc61e86e010d1eb3511eaf8d8ad0_icgraph.png differ diff --git a/assets/doc/accept_8c__incl.map b/assets/doc/accept_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/accept_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/accept_8c__incl.md5 b/assets/doc/accept_8c__incl.md5 new file mode 100644 index 0000000..5887e1c --- /dev/null +++ b/assets/doc/accept_8c__incl.md5 @@ -0,0 +1 @@ +ed335309b8f4135860997a08f7966b7e \ No newline at end of file diff --git a/assets/doc/accept_8c__incl.png b/assets/doc/accept_8c__incl.png new file mode 100644 index 0000000..2523c39 Binary files /dev/null and b/assets/doc/accept_8c__incl.png differ diff --git a/assets/doc/accept_8c_a45ec8fbdb035314da3d390fdcd6dc304_cgraph.map b/assets/doc/accept_8c_a45ec8fbdb035314da3d390fdcd6dc304_cgraph.map new file mode 100644 index 0000000..8270608 --- /dev/null +++ b/assets/doc/accept_8c_a45ec8fbdb035314da3d390fdcd6dc304_cgraph.map @@ -0,0 +1,3 @@ + + + diff --git a/assets/doc/accept_8c_a45ec8fbdb035314da3d390fdcd6dc304_cgraph.md5 b/assets/doc/accept_8c_a45ec8fbdb035314da3d390fdcd6dc304_cgraph.md5 new file mode 100644 index 0000000..08888e3 --- /dev/null +++ b/assets/doc/accept_8c_a45ec8fbdb035314da3d390fdcd6dc304_cgraph.md5 @@ -0,0 +1 @@ +1cc1a92d921e57f23edbe408b26a8fe6 \ No newline at end of file diff --git a/assets/doc/accept_8c_a45ec8fbdb035314da3d390fdcd6dc304_cgraph.png b/assets/doc/accept_8c_a45ec8fbdb035314da3d390fdcd6dc304_cgraph.png new file mode 100644 index 0000000..631e47c Binary files /dev/null and b/assets/doc/accept_8c_a45ec8fbdb035314da3d390fdcd6dc304_cgraph.png differ diff --git a/assets/doc/accept_8c_a45ec8fbdb035314da3d390fdcd6dc304_icgraph.map b/assets/doc/accept_8c_a45ec8fbdb035314da3d390fdcd6dc304_icgraph.map new file mode 100644 index 0000000..6b42e03 --- /dev/null +++ b/assets/doc/accept_8c_a45ec8fbdb035314da3d390fdcd6dc304_icgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/assets/doc/accept_8c_a45ec8fbdb035314da3d390fdcd6dc304_icgraph.md5 b/assets/doc/accept_8c_a45ec8fbdb035314da3d390fdcd6dc304_icgraph.md5 new file mode 100644 index 0000000..ddc73c1 --- /dev/null +++ b/assets/doc/accept_8c_a45ec8fbdb035314da3d390fdcd6dc304_icgraph.md5 @@ -0,0 +1 @@ +a30a33dddc16d1e8ea765121b3fad418 \ No newline at end of file diff --git a/assets/doc/accept_8c_a45ec8fbdb035314da3d390fdcd6dc304_icgraph.png b/assets/doc/accept_8c_a45ec8fbdb035314da3d390fdcd6dc304_icgraph.png new file mode 100644 index 0000000..e4e2242 Binary files /dev/null and b/assets/doc/accept_8c_a45ec8fbdb035314da3d390fdcd6dc304_icgraph.png differ diff --git a/assets/doc/add__common__header_8c__incl.map b/assets/doc/add__common__header_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/add__common__header_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/add__common__header_8c__incl.md5 b/assets/doc/add__common__header_8c__incl.md5 new file mode 100644 index 0000000..3631e36 --- /dev/null +++ b/assets/doc/add__common__header_8c__incl.md5 @@ -0,0 +1 @@ +d3303450db7005a8fd0fb8dc6d8cadd4 \ No newline at end of file diff --git a/assets/doc/add__common__header_8c__incl.png b/assets/doc/add__common__header_8c__incl.png new file mode 100644 index 0000000..c729791 Binary files /dev/null and b/assets/doc/add__common__header_8c__incl.png differ diff --git a/assets/doc/add__common__header_8c_add957dad05e83999f82233f85b1ca535_cgraph.map b/assets/doc/add__common__header_8c_add957dad05e83999f82233f85b1ca535_cgraph.map new file mode 100644 index 0000000..bd401aa --- /dev/null +++ b/assets/doc/add__common__header_8c_add957dad05e83999f82233f85b1ca535_cgraph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/assets/doc/add__common__header_8c_add957dad05e83999f82233f85b1ca535_cgraph.md5 b/assets/doc/add__common__header_8c_add957dad05e83999f82233f85b1ca535_cgraph.md5 new file mode 100644 index 0000000..d80459a --- /dev/null +++ b/assets/doc/add__common__header_8c_add957dad05e83999f82233f85b1ca535_cgraph.md5 @@ -0,0 +1 @@ +2fedeafe2baba856adcea0d2ab1c54e2 \ No newline at end of file diff --git a/assets/doc/add__common__header_8c_add957dad05e83999f82233f85b1ca535_cgraph.png b/assets/doc/add__common__header_8c_add957dad05e83999f82233f85b1ca535_cgraph.png new file mode 100644 index 0000000..1aa9076 Binary files /dev/null and b/assets/doc/add__common__header_8c_add957dad05e83999f82233f85b1ca535_cgraph.png differ diff --git a/assets/doc/add__common__header_8c_add957dad05e83999f82233f85b1ca535_icgraph.map b/assets/doc/add__common__header_8c_add957dad05e83999f82233f85b1ca535_icgraph.map new file mode 100644 index 0000000..e0c8c17 --- /dev/null +++ b/assets/doc/add__common__header_8c_add957dad05e83999f82233f85b1ca535_icgraph.map @@ -0,0 +1,3 @@ + + + diff --git a/assets/doc/add__common__header_8c_add957dad05e83999f82233f85b1ca535_icgraph.md5 b/assets/doc/add__common__header_8c_add957dad05e83999f82233f85b1ca535_icgraph.md5 new file mode 100644 index 0000000..f5d88ce --- /dev/null +++ b/assets/doc/add__common__header_8c_add957dad05e83999f82233f85b1ca535_icgraph.md5 @@ -0,0 +1 @@ +24a9c2ade77b2fc1db39a8e93b808652 \ No newline at end of file diff --git a/assets/doc/add__common__header_8c_add957dad05e83999f82233f85b1ca535_icgraph.png b/assets/doc/add__common__header_8c_add957dad05e83999f82233f85b1ca535_icgraph.png new file mode 100644 index 0000000..b299af9 Binary files /dev/null and b/assets/doc/add__common__header_8c_add957dad05e83999f82233f85b1ca535_icgraph.png differ diff --git a/assets/doc/addr__index_8c__incl.map b/assets/doc/addr__index_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/addr__index_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/addr__index_8c__incl.md5 b/assets/doc/addr__index_8c__incl.md5 new file mode 100644 index 0000000..8f388dd --- /dev/null +++ b/assets/doc/addr__index_8c__incl.md5 @@ -0,0 +1 @@ +5c50bb66c3f7f9f4e07d14022a4695f9 \ No newline at end of file diff --git a/assets/doc/addr__index_8c__incl.png b/assets/doc/addr__index_8c__incl.png new file mode 100644 index 0000000..358dadc Binary files /dev/null and b/assets/doc/addr__index_8c__incl.png differ diff --git a/assets/doc/addr__index_8c_afea7754e8d68ccc6b7e21dc74d7c7226_cgraph.map b/assets/doc/addr__index_8c_afea7754e8d68ccc6b7e21dc74d7c7226_cgraph.map new file mode 100644 index 0000000..410dd8f --- /dev/null +++ b/assets/doc/addr__index_8c_afea7754e8d68ccc6b7e21dc74d7c7226_cgraph.map @@ -0,0 +1,3 @@ + + + diff --git a/assets/doc/addr__index_8c_afea7754e8d68ccc6b7e21dc74d7c7226_cgraph.md5 b/assets/doc/addr__index_8c_afea7754e8d68ccc6b7e21dc74d7c7226_cgraph.md5 new file mode 100644 index 0000000..6b3ff71 --- /dev/null +++ b/assets/doc/addr__index_8c_afea7754e8d68ccc6b7e21dc74d7c7226_cgraph.md5 @@ -0,0 +1 @@ +cb7f171961aa1126980cc661902da5e2 \ No newline at end of file diff --git a/assets/doc/addr__index_8c_afea7754e8d68ccc6b7e21dc74d7c7226_cgraph.png b/assets/doc/addr__index_8c_afea7754e8d68ccc6b7e21dc74d7c7226_cgraph.png new file mode 100644 index 0000000..1d9b53e Binary files /dev/null and b/assets/doc/addr__index_8c_afea7754e8d68ccc6b7e21dc74d7c7226_cgraph.png differ diff --git a/assets/doc/addr__index_8c_afea7754e8d68ccc6b7e21dc74d7c7226_icgraph.map b/assets/doc/addr__index_8c_afea7754e8d68ccc6b7e21dc74d7c7226_icgraph.map new file mode 100644 index 0000000..3a35635 --- /dev/null +++ b/assets/doc/addr__index_8c_afea7754e8d68ccc6b7e21dc74d7c7226_icgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/assets/doc/addr__index_8c_afea7754e8d68ccc6b7e21dc74d7c7226_icgraph.md5 b/assets/doc/addr__index_8c_afea7754e8d68ccc6b7e21dc74d7c7226_icgraph.md5 new file mode 100644 index 0000000..a71b0c7 --- /dev/null +++ b/assets/doc/addr__index_8c_afea7754e8d68ccc6b7e21dc74d7c7226_icgraph.md5 @@ -0,0 +1 @@ +a7d446ff158d565966ef181d9702085f \ No newline at end of file diff --git a/assets/doc/addr__index_8c_afea7754e8d68ccc6b7e21dc74d7c7226_icgraph.png b/assets/doc/addr__index_8c_afea7754e8d68ccc6b7e21dc74d7c7226_icgraph.png new file mode 100644 index 0000000..d20ea64 Binary files /dev/null and b/assets/doc/addr__index_8c_afea7754e8d68ccc6b7e21dc74d7c7226_icgraph.png differ diff --git a/assets/doc/answer_8c__incl.map b/assets/doc/answer_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/answer_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/answer_8c__incl.md5 b/assets/doc/answer_8c__incl.md5 new file mode 100644 index 0000000..08e1fd9 --- /dev/null +++ b/assets/doc/answer_8c__incl.md5 @@ -0,0 +1 @@ +78bf4fd352e0a44da23784e2dbe9bc74 \ No newline at end of file diff --git a/assets/doc/answer_8c__incl.png b/assets/doc/answer_8c__incl.png new file mode 100644 index 0000000..5ba7605 Binary files /dev/null and b/assets/doc/answer_8c__incl.png differ diff --git a/assets/doc/answer_8c_add3fe105c4e782e5b1387cb596792bbe_cgraph.map b/assets/doc/answer_8c_add3fe105c4e782e5b1387cb596792bbe_cgraph.map new file mode 100644 index 0000000..271d074 --- /dev/null +++ b/assets/doc/answer_8c_add3fe105c4e782e5b1387cb596792bbe_cgraph.map @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/doc/answer_8c_add3fe105c4e782e5b1387cb596792bbe_cgraph.md5 b/assets/doc/answer_8c_add3fe105c4e782e5b1387cb596792bbe_cgraph.md5 new file mode 100644 index 0000000..3fa8720 --- /dev/null +++ b/assets/doc/answer_8c_add3fe105c4e782e5b1387cb596792bbe_cgraph.md5 @@ -0,0 +1 @@ +9c24e6534f1fec50f48b3ea9d12d8fb6 \ No newline at end of file diff --git a/assets/doc/answer_8c_add3fe105c4e782e5b1387cb596792bbe_cgraph.png b/assets/doc/answer_8c_add3fe105c4e782e5b1387cb596792bbe_cgraph.png new file mode 100644 index 0000000..2489e4c Binary files /dev/null and b/assets/doc/answer_8c_add3fe105c4e782e5b1387cb596792bbe_cgraph.png differ diff --git a/assets/doc/asset_8c__incl.map b/assets/doc/asset_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/asset_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/asset_8c__incl.md5 b/assets/doc/asset_8c__incl.md5 new file mode 100644 index 0000000..6feaa07 --- /dev/null +++ b/assets/doc/asset_8c__incl.md5 @@ -0,0 +1 @@ +a3b59b06aa79f3a56232c4a0f206ce69 \ No newline at end of file diff --git a/assets/doc/asset_8c__incl.png b/assets/doc/asset_8c__incl.png new file mode 100644 index 0000000..c3106e9 Binary files /dev/null and b/assets/doc/asset_8c__incl.png differ diff --git a/assets/doc/asset_8c_ad693b054ffb0f2640f8732850f09adb0_cgraph.map b/assets/doc/asset_8c_ad693b054ffb0f2640f8732850f09adb0_cgraph.map new file mode 100644 index 0000000..ffb0daf --- /dev/null +++ b/assets/doc/asset_8c_ad693b054ffb0f2640f8732850f09adb0_cgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/assets/doc/asset_8c_ad693b054ffb0f2640f8732850f09adb0_cgraph.md5 b/assets/doc/asset_8c_ad693b054ffb0f2640f8732850f09adb0_cgraph.md5 new file mode 100644 index 0000000..7338328 --- /dev/null +++ b/assets/doc/asset_8c_ad693b054ffb0f2640f8732850f09adb0_cgraph.md5 @@ -0,0 +1 @@ +40e1ad46eb10fd653ca5248860e5ff69 \ No newline at end of file diff --git a/assets/doc/asset_8c_ad693b054ffb0f2640f8732850f09adb0_cgraph.png b/assets/doc/asset_8c_ad693b054ffb0f2640f8732850f09adb0_cgraph.png new file mode 100644 index 0000000..f42dd2f Binary files /dev/null and b/assets/doc/asset_8c_ad693b054ffb0f2640f8732850f09adb0_cgraph.png differ diff --git a/assets/doc/asset_8c_ad693b054ffb0f2640f8732850f09adb0_icgraph.map b/assets/doc/asset_8c_ad693b054ffb0f2640f8732850f09adb0_icgraph.map new file mode 100644 index 0000000..9faf4c8 --- /dev/null +++ b/assets/doc/asset_8c_ad693b054ffb0f2640f8732850f09adb0_icgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/assets/doc/asset_8c_ad693b054ffb0f2640f8732850f09adb0_icgraph.md5 b/assets/doc/asset_8c_ad693b054ffb0f2640f8732850f09adb0_icgraph.md5 new file mode 100644 index 0000000..e987121 --- /dev/null +++ b/assets/doc/asset_8c_ad693b054ffb0f2640f8732850f09adb0_icgraph.md5 @@ -0,0 +1 @@ +f0186488c482411372b93fb2ca495e54 \ No newline at end of file diff --git a/assets/doc/asset_8c_ad693b054ffb0f2640f8732850f09adb0_icgraph.png b/assets/doc/asset_8c_ad693b054ffb0f2640f8732850f09adb0_icgraph.png new file mode 100644 index 0000000..20caefb Binary files /dev/null and b/assets/doc/asset_8c_ad693b054ffb0f2640f8732850f09adb0_icgraph.png differ diff --git a/assets/doc/auth_2auth_8h__dep__incl.map b/assets/doc/auth_2auth_8h__dep__incl.map new file mode 100644 index 0000000..503b2be --- /dev/null +++ b/assets/doc/auth_2auth_8h__dep__incl.map @@ -0,0 +1,3 @@ + + + diff --git a/assets/doc/auth_2auth_8h__dep__incl.md5 b/assets/doc/auth_2auth_8h__dep__incl.md5 new file mode 100644 index 0000000..55a2dcf --- /dev/null +++ b/assets/doc/auth_2auth_8h__dep__incl.md5 @@ -0,0 +1 @@ +5ba7fece30c4da4ae5ed29fcc098e68a \ No newline at end of file diff --git a/assets/doc/auth_2auth_8h__dep__incl.png b/assets/doc/auth_2auth_8h__dep__incl.png new file mode 100644 index 0000000..ee2c27b Binary files /dev/null and b/assets/doc/auth_2auth_8h__dep__incl.png differ diff --git a/assets/doc/auth_2auth_8h__incl.map b/assets/doc/auth_2auth_8h__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/auth_2auth_8h__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/auth_2auth_8h__incl.md5 b/assets/doc/auth_2auth_8h__incl.md5 new file mode 100644 index 0000000..3c2cd6c --- /dev/null +++ b/assets/doc/auth_2auth_8h__incl.md5 @@ -0,0 +1 @@ +40507c53e6a6197837d5e88f4eee3f88 \ No newline at end of file diff --git a/assets/doc/auth_2auth_8h__incl.png b/assets/doc/auth_2auth_8h__incl.png new file mode 100644 index 0000000..74eeb1e Binary files /dev/null and b/assets/doc/auth_2auth_8h__incl.png differ diff --git a/assets/doc/auth_2interface_2auth_8h__dep__incl.map b/assets/doc/auth_2interface_2auth_8h__dep__incl.map new file mode 100644 index 0000000..3694882 --- /dev/null +++ b/assets/doc/auth_2interface_2auth_8h__dep__incl.map @@ -0,0 +1,3 @@ + + + diff --git a/assets/doc/auth_2interface_2auth_8h__dep__incl.md5 b/assets/doc/auth_2interface_2auth_8h__dep__incl.md5 new file mode 100644 index 0000000..ad490ca --- /dev/null +++ b/assets/doc/auth_2interface_2auth_8h__dep__incl.md5 @@ -0,0 +1 @@ +755daa4131d15ed358f0b4d2b6675132 \ No newline at end of file diff --git a/assets/doc/auth_2interface_2auth_8h__dep__incl.png b/assets/doc/auth_2interface_2auth_8h__dep__incl.png new file mode 100644 index 0000000..8feaa5e Binary files /dev/null and b/assets/doc/auth_2interface_2auth_8h__dep__incl.png differ diff --git a/assets/doc/auth_2interface_2auth_8h__incl.map b/assets/doc/auth_2interface_2auth_8h__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/auth_2interface_2auth_8h__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/auth_2interface_2auth_8h__incl.md5 b/assets/doc/auth_2interface_2auth_8h__incl.md5 new file mode 100644 index 0000000..9fa7ceb --- /dev/null +++ b/assets/doc/auth_2interface_2auth_8h__incl.md5 @@ -0,0 +1 @@ +2b92961a1ddf1f16ae87512d549b8482 \ No newline at end of file diff --git a/assets/doc/auth_2interface_2auth_8h__incl.png b/assets/doc/auth_2interface_2auth_8h__incl.png new file mode 100644 index 0000000..46818a0 Binary files /dev/null and b/assets/doc/auth_2interface_2auth_8h__incl.png differ diff --git a/assets/doc/auth_2interface_2auth_8h_ab945bc2a04f35ed92362f0c08762a00b_cgraph.map b/assets/doc/auth_2interface_2auth_8h_ab945bc2a04f35ed92362f0c08762a00b_cgraph.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/auth_2interface_2auth_8h_ab945bc2a04f35ed92362f0c08762a00b_cgraph.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/auth_2interface_2auth_8h_ab945bc2a04f35ed92362f0c08762a00b_cgraph.md5 b/assets/doc/auth_2interface_2auth_8h_ab945bc2a04f35ed92362f0c08762a00b_cgraph.md5 new file mode 100644 index 0000000..45e60b7 --- /dev/null +++ b/assets/doc/auth_2interface_2auth_8h_ab945bc2a04f35ed92362f0c08762a00b_cgraph.md5 @@ -0,0 +1 @@ +7380dccafa1aebcc25f8fa8ca4c1c708 \ No newline at end of file diff --git a/assets/doc/auth_2interface_2auth_8h_ab945bc2a04f35ed92362f0c08762a00b_cgraph.png b/assets/doc/auth_2interface_2auth_8h_ab945bc2a04f35ed92362f0c08762a00b_cgraph.png new file mode 100644 index 0000000..dd60152 Binary files /dev/null and b/assets/doc/auth_2interface_2auth_8h_ab945bc2a04f35ed92362f0c08762a00b_cgraph.png differ diff --git a/assets/doc/auth_2interface_2auth_8h_ab945bc2a04f35ed92362f0c08762a00b_icgraph.map b/assets/doc/auth_2interface_2auth_8h_ab945bc2a04f35ed92362f0c08762a00b_icgraph.map new file mode 100644 index 0000000..fdd8a30 --- /dev/null +++ b/assets/doc/auth_2interface_2auth_8h_ab945bc2a04f35ed92362f0c08762a00b_icgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/assets/doc/auth_2interface_2auth_8h_ab945bc2a04f35ed92362f0c08762a00b_icgraph.md5 b/assets/doc/auth_2interface_2auth_8h_ab945bc2a04f35ed92362f0c08762a00b_icgraph.md5 new file mode 100644 index 0000000..32a633c --- /dev/null +++ b/assets/doc/auth_2interface_2auth_8h_ab945bc2a04f35ed92362f0c08762a00b_icgraph.md5 @@ -0,0 +1 @@ +8ed1b3520e657f43470b75dc14caf722 \ No newline at end of file diff --git a/assets/doc/auth_2interface_2auth_8h_ab945bc2a04f35ed92362f0c08762a00b_icgraph.png b/assets/doc/auth_2interface_2auth_8h_ab945bc2a04f35ed92362f0c08762a00b_icgraph.png new file mode 100644 index 0000000..2f2a5ec Binary files /dev/null and b/assets/doc/auth_2interface_2auth_8h_ab945bc2a04f35ed92362f0c08762a00b_icgraph.png differ diff --git a/assets/doc/auth_8c__incl.map b/assets/doc/auth_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/auth_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/auth_8c__incl.md5 b/assets/doc/auth_8c__incl.md5 new file mode 100644 index 0000000..687691e --- /dev/null +++ b/assets/doc/auth_8c__incl.md5 @@ -0,0 +1 @@ +922809e9d8447b40784d908b8a529a44 \ No newline at end of file diff --git a/assets/doc/auth_8c__incl.png b/assets/doc/auth_8c__incl.png new file mode 100644 index 0000000..a04c282 Binary files /dev/null and b/assets/doc/auth_8c__incl.png differ diff --git a/assets/doc/auth_8c_ab066fc1014ca4047cc8ff30a6359d42a_cgraph.map b/assets/doc/auth_8c_ab066fc1014ca4047cc8ff30a6359d42a_cgraph.map new file mode 100644 index 0000000..0755223 --- /dev/null +++ b/assets/doc/auth_8c_ab066fc1014ca4047cc8ff30a6359d42a_cgraph.map @@ -0,0 +1,3 @@ + + + diff --git a/assets/doc/auth_8c_ab066fc1014ca4047cc8ff30a6359d42a_cgraph.md5 b/assets/doc/auth_8c_ab066fc1014ca4047cc8ff30a6359d42a_cgraph.md5 new file mode 100644 index 0000000..ae46e0b --- /dev/null +++ b/assets/doc/auth_8c_ab066fc1014ca4047cc8ff30a6359d42a_cgraph.md5 @@ -0,0 +1 @@ +3c7f4021044c7ee84e94cf2c582853ad \ No newline at end of file diff --git a/assets/doc/auth_8c_ab066fc1014ca4047cc8ff30a6359d42a_cgraph.png b/assets/doc/auth_8c_ab066fc1014ca4047cc8ff30a6359d42a_cgraph.png new file mode 100644 index 0000000..8e9b4a5 Binary files /dev/null and b/assets/doc/auth_8c_ab066fc1014ca4047cc8ff30a6359d42a_cgraph.png differ diff --git a/assets/doc/auth_8c_ab066fc1014ca4047cc8ff30a6359d42a_icgraph.map b/assets/doc/auth_8c_ab066fc1014ca4047cc8ff30a6359d42a_icgraph.map new file mode 100644 index 0000000..8c76afc --- /dev/null +++ b/assets/doc/auth_8c_ab066fc1014ca4047cc8ff30a6359d42a_icgraph.map @@ -0,0 +1,3 @@ + + + diff --git a/assets/doc/auth_8c_ab066fc1014ca4047cc8ff30a6359d42a_icgraph.md5 b/assets/doc/auth_8c_ab066fc1014ca4047cc8ff30a6359d42a_icgraph.md5 new file mode 100644 index 0000000..e5f3fa3 --- /dev/null +++ b/assets/doc/auth_8c_ab066fc1014ca4047cc8ff30a6359d42a_icgraph.md5 @@ -0,0 +1 @@ +d323521fccf1368dfcae08a713ce4b1f \ No newline at end of file diff --git a/assets/doc/auth_8c_ab066fc1014ca4047cc8ff30a6359d42a_icgraph.png b/assets/doc/auth_8c_ab066fc1014ca4047cc8ff30a6359d42a_icgraph.png new file mode 100644 index 0000000..c28f802 Binary files /dev/null and b/assets/doc/auth_8c_ab066fc1014ca4047cc8ff30a6359d42a_icgraph.png differ diff --git a/assets/doc/auth_8h__incl.map b/assets/doc/auth_8h__incl.map new file mode 100644 index 0000000..ab4e86a --- /dev/null +++ b/assets/doc/auth_8h__incl.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/assets/doc/auth_8h__incl.md5 b/assets/doc/auth_8h__incl.md5 new file mode 100644 index 0000000..d6c72ea --- /dev/null +++ b/assets/doc/auth_8h__incl.md5 @@ -0,0 +1 @@ +6abf4d459143f34a417a0b3297ff1994 \ No newline at end of file diff --git a/assets/doc/auth_8h__incl.png b/assets/doc/auth_8h__incl.png new file mode 100644 index 0000000..ec0a5f1 Binary files /dev/null and b/assets/doc/auth_8h__incl.png differ diff --git a/assets/doc/bc_s.png b/assets/doc/bc_s.png new file mode 100644 index 0000000..e401862 Binary files /dev/null and b/assets/doc/bc_s.png differ diff --git a/assets/doc/cbuf_2read_8c__incl.map b/assets/doc/cbuf_2read_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/cbuf_2read_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/cbuf_2read_8c__incl.md5 b/assets/doc/cbuf_2read_8c__incl.md5 new file mode 100644 index 0000000..a5866b7 --- /dev/null +++ b/assets/doc/cbuf_2read_8c__incl.md5 @@ -0,0 +1 @@ +6b609ddffe7bf9a9bff8619a96343646 \ No newline at end of file diff --git a/assets/doc/cbuf_2read_8c__incl.png b/assets/doc/cbuf_2read_8c__incl.png new file mode 100644 index 0000000..1c1a3ee Binary files /dev/null and b/assets/doc/cbuf_2read_8c__incl.png differ diff --git a/assets/doc/cbuf_2read_8c_a5582ca70b847b9dd308d8234055c1dde_cgraph.map b/assets/doc/cbuf_2read_8c_a5582ca70b847b9dd308d8234055c1dde_cgraph.map new file mode 100644 index 0000000..e412166 --- /dev/null +++ b/assets/doc/cbuf_2read_8c_a5582ca70b847b9dd308d8234055c1dde_cgraph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/assets/doc/cbuf_2read_8c_a5582ca70b847b9dd308d8234055c1dde_cgraph.md5 b/assets/doc/cbuf_2read_8c_a5582ca70b847b9dd308d8234055c1dde_cgraph.md5 new file mode 100644 index 0000000..f294d60 --- /dev/null +++ b/assets/doc/cbuf_2read_8c_a5582ca70b847b9dd308d8234055c1dde_cgraph.md5 @@ -0,0 +1 @@ +724711b032af4bf5efcf8a91443fd1d0 \ No newline at end of file diff --git a/assets/doc/cbuf_2read_8c_a5582ca70b847b9dd308d8234055c1dde_cgraph.png b/assets/doc/cbuf_2read_8c_a5582ca70b847b9dd308d8234055c1dde_cgraph.png new file mode 100644 index 0000000..3a5d80f Binary files /dev/null and b/assets/doc/cbuf_2read_8c_a5582ca70b847b9dd308d8234055c1dde_cgraph.png differ diff --git a/assets/doc/cbuf_2read_8c_a5582ca70b847b9dd308d8234055c1dde_icgraph.map b/assets/doc/cbuf_2read_8c_a5582ca70b847b9dd308d8234055c1dde_icgraph.map new file mode 100644 index 0000000..cc42a45 --- /dev/null +++ b/assets/doc/cbuf_2read_8c_a5582ca70b847b9dd308d8234055c1dde_icgraph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/assets/doc/cbuf_2read_8c_a5582ca70b847b9dd308d8234055c1dde_icgraph.md5 b/assets/doc/cbuf_2read_8c_a5582ca70b847b9dd308d8234055c1dde_icgraph.md5 new file mode 100644 index 0000000..5d21d9e --- /dev/null +++ b/assets/doc/cbuf_2read_8c_a5582ca70b847b9dd308d8234055c1dde_icgraph.md5 @@ -0,0 +1 @@ +ff66882ae20142e7b7d71dda7a5c1934 \ No newline at end of file diff --git a/assets/doc/cbuf_2read_8c_a5582ca70b847b9dd308d8234055c1dde_icgraph.png b/assets/doc/cbuf_2read_8c_a5582ca70b847b9dd308d8234055c1dde_icgraph.png new file mode 100644 index 0000000..72a7f21 Binary files /dev/null and b/assets/doc/cbuf_2read_8c_a5582ca70b847b9dd308d8234055c1dde_icgraph.png differ diff --git a/assets/doc/cbuf_2write_8c__incl.map b/assets/doc/cbuf_2write_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/cbuf_2write_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/cbuf_2write_8c__incl.md5 b/assets/doc/cbuf_2write_8c__incl.md5 new file mode 100644 index 0000000..2841802 --- /dev/null +++ b/assets/doc/cbuf_2write_8c__incl.md5 @@ -0,0 +1 @@ +e246a436ec3350113f180b4c27767f98 \ No newline at end of file diff --git a/assets/doc/cbuf_2write_8c__incl.png b/assets/doc/cbuf_2write_8c__incl.png new file mode 100644 index 0000000..8569a3c Binary files /dev/null and b/assets/doc/cbuf_2write_8c__incl.png differ diff --git a/assets/doc/cbuf_2write_8c_a3872748b7d2c563a6e73eb3f2e1e7130_cgraph.map b/assets/doc/cbuf_2write_8c_a3872748b7d2c563a6e73eb3f2e1e7130_cgraph.map new file mode 100644 index 0000000..249f915 --- /dev/null +++ b/assets/doc/cbuf_2write_8c_a3872748b7d2c563a6e73eb3f2e1e7130_cgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/assets/doc/cbuf_2write_8c_a3872748b7d2c563a6e73eb3f2e1e7130_cgraph.md5 b/assets/doc/cbuf_2write_8c_a3872748b7d2c563a6e73eb3f2e1e7130_cgraph.md5 new file mode 100644 index 0000000..4d9f224 --- /dev/null +++ b/assets/doc/cbuf_2write_8c_a3872748b7d2c563a6e73eb3f2e1e7130_cgraph.md5 @@ -0,0 +1 @@ +72b1ff909879a1793ac1cb3ebc6eeaef \ No newline at end of file diff --git a/assets/doc/cbuf_2write_8c_a3872748b7d2c563a6e73eb3f2e1e7130_cgraph.png b/assets/doc/cbuf_2write_8c_a3872748b7d2c563a6e73eb3f2e1e7130_cgraph.png new file mode 100644 index 0000000..da85265 Binary files /dev/null and b/assets/doc/cbuf_2write_8c_a3872748b7d2c563a6e73eb3f2e1e7130_cgraph.png differ diff --git a/assets/doc/cbuf_2write_8c_a3872748b7d2c563a6e73eb3f2e1e7130_icgraph.map b/assets/doc/cbuf_2write_8c_a3872748b7d2c563a6e73eb3f2e1e7130_icgraph.map new file mode 100644 index 0000000..11d76de --- /dev/null +++ b/assets/doc/cbuf_2write_8c_a3872748b7d2c563a6e73eb3f2e1e7130_icgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/assets/doc/cbuf_2write_8c_a3872748b7d2c563a6e73eb3f2e1e7130_icgraph.md5 b/assets/doc/cbuf_2write_8c_a3872748b7d2c563a6e73eb3f2e1e7130_icgraph.md5 new file mode 100644 index 0000000..5c2370c --- /dev/null +++ b/assets/doc/cbuf_2write_8c_a3872748b7d2c563a6e73eb3f2e1e7130_icgraph.md5 @@ -0,0 +1 @@ +bc06f5352c1ab575208be204a4f9a31f \ No newline at end of file diff --git a/assets/doc/cbuf_2write_8c_a3872748b7d2c563a6e73eb3f2e1e7130_icgraph.png b/assets/doc/cbuf_2write_8c_a3872748b7d2c563a6e73eb3f2e1e7130_icgraph.png new file mode 100644 index 0000000..f8a4066 Binary files /dev/null and b/assets/doc/cbuf_2write_8c_a3872748b7d2c563a6e73eb3f2e1e7130_icgraph.png differ diff --git a/assets/doc/cbuf_8c__incl.map b/assets/doc/cbuf_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/cbuf_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/cbuf_8c__incl.md5 b/assets/doc/cbuf_8c__incl.md5 new file mode 100644 index 0000000..bdac07c --- /dev/null +++ b/assets/doc/cbuf_8c__incl.md5 @@ -0,0 +1 @@ +b85f0c6d82886c84ca78c385d9e9b104 \ No newline at end of file diff --git a/assets/doc/cbuf_8c__incl.png b/assets/doc/cbuf_8c__incl.png new file mode 100644 index 0000000..6c6e81b Binary files /dev/null and b/assets/doc/cbuf_8c__incl.png differ diff --git a/assets/doc/cbuf_8h__incl.map b/assets/doc/cbuf_8h__incl.map new file mode 100644 index 0000000..69994f0 --- /dev/null +++ b/assets/doc/cbuf_8h__incl.map @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/assets/doc/cbuf_8h__incl.md5 b/assets/doc/cbuf_8h__incl.md5 new file mode 100644 index 0000000..902d596 --- /dev/null +++ b/assets/doc/cbuf_8h__incl.md5 @@ -0,0 +1 @@ +896fe7fb19d29c643963501215c78f48 \ No newline at end of file diff --git a/assets/doc/cbuf_8h__incl.png b/assets/doc/cbuf_8h__incl.png new file mode 100644 index 0000000..be6b23a Binary files /dev/null and b/assets/doc/cbuf_8h__incl.png differ diff --git a/assets/doc/cbuf_8h_a1983134b7a26ad2ea077adcd343dca24_cgraph.map b/assets/doc/cbuf_8h_a1983134b7a26ad2ea077adcd343dca24_cgraph.map new file mode 100644 index 0000000..7dc2d78 --- /dev/null +++ b/assets/doc/cbuf_8h_a1983134b7a26ad2ea077adcd343dca24_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/assets/doc/cbuf_8h_a1983134b7a26ad2ea077adcd343dca24_cgraph.md5 b/assets/doc/cbuf_8h_a1983134b7a26ad2ea077adcd343dca24_cgraph.md5 new file mode 100644 index 0000000..a02bff7 --- /dev/null +++ b/assets/doc/cbuf_8h_a1983134b7a26ad2ea077adcd343dca24_cgraph.md5 @@ -0,0 +1 @@ +46be1f74aa2a012b38632b09fdd890a8 \ No newline at end of file diff --git a/assets/doc/cbuf_8h_a1983134b7a26ad2ea077adcd343dca24_cgraph.png b/assets/doc/cbuf_8h_a1983134b7a26ad2ea077adcd343dca24_cgraph.png new file mode 100644 index 0000000..4fac7aa Binary files /dev/null and b/assets/doc/cbuf_8h_a1983134b7a26ad2ea077adcd343dca24_cgraph.png differ diff --git a/assets/doc/cbuf_8h_a1983134b7a26ad2ea077adcd343dca24_icgraph.map b/assets/doc/cbuf_8h_a1983134b7a26ad2ea077adcd343dca24_icgraph.map new file mode 100644 index 0000000..3f834e4 --- /dev/null +++ b/assets/doc/cbuf_8h_a1983134b7a26ad2ea077adcd343dca24_icgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/assets/doc/cbuf_8h_a1983134b7a26ad2ea077adcd343dca24_icgraph.md5 b/assets/doc/cbuf_8h_a1983134b7a26ad2ea077adcd343dca24_icgraph.md5 new file mode 100644 index 0000000..5ab4633 --- /dev/null +++ b/assets/doc/cbuf_8h_a1983134b7a26ad2ea077adcd343dca24_icgraph.md5 @@ -0,0 +1 @@ +f69b87c2db222514559bd77c54ea11ef \ No newline at end of file diff --git a/assets/doc/cbuf_8h_a1983134b7a26ad2ea077adcd343dca24_icgraph.png b/assets/doc/cbuf_8h_a1983134b7a26ad2ea077adcd343dca24_icgraph.png new file mode 100644 index 0000000..ba4587c Binary files /dev/null and b/assets/doc/cbuf_8h_a1983134b7a26ad2ea077adcd343dca24_icgraph.png differ diff --git a/assets/doc/cbuf_8h_a49cdbb3d52ada4cef5a6e88267aacad3_cgraph.map b/assets/doc/cbuf_8h_a49cdbb3d52ada4cef5a6e88267aacad3_cgraph.map new file mode 100644 index 0000000..149f1c9 --- /dev/null +++ b/assets/doc/cbuf_8h_a49cdbb3d52ada4cef5a6e88267aacad3_cgraph.map @@ -0,0 +1,3 @@ + + + diff --git a/assets/doc/cbuf_8h_a49cdbb3d52ada4cef5a6e88267aacad3_cgraph.md5 b/assets/doc/cbuf_8h_a49cdbb3d52ada4cef5a6e88267aacad3_cgraph.md5 new file mode 100644 index 0000000..b5f9d4b --- /dev/null +++ b/assets/doc/cbuf_8h_a49cdbb3d52ada4cef5a6e88267aacad3_cgraph.md5 @@ -0,0 +1 @@ +fc33603a4c8f520f5c51eb08e431d85c \ No newline at end of file diff --git a/assets/doc/cbuf_8h_a49cdbb3d52ada4cef5a6e88267aacad3_cgraph.png b/assets/doc/cbuf_8h_a49cdbb3d52ada4cef5a6e88267aacad3_cgraph.png new file mode 100644 index 0000000..796f0fd Binary files /dev/null and b/assets/doc/cbuf_8h_a49cdbb3d52ada4cef5a6e88267aacad3_cgraph.png differ diff --git a/assets/doc/cbuf_8h_a49cdbb3d52ada4cef5a6e88267aacad3_icgraph.map b/assets/doc/cbuf_8h_a49cdbb3d52ada4cef5a6e88267aacad3_icgraph.map new file mode 100644 index 0000000..1acb5ac --- /dev/null +++ b/assets/doc/cbuf_8h_a49cdbb3d52ada4cef5a6e88267aacad3_icgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/assets/doc/cbuf_8h_a49cdbb3d52ada4cef5a6e88267aacad3_icgraph.md5 b/assets/doc/cbuf_8h_a49cdbb3d52ada4cef5a6e88267aacad3_icgraph.md5 new file mode 100644 index 0000000..6b71916 --- /dev/null +++ b/assets/doc/cbuf_8h_a49cdbb3d52ada4cef5a6e88267aacad3_icgraph.md5 @@ -0,0 +1 @@ +50b980c2158801fa903a6654351ed46e \ No newline at end of file diff --git a/assets/doc/cbuf_8h_a49cdbb3d52ada4cef5a6e88267aacad3_icgraph.png b/assets/doc/cbuf_8h_a49cdbb3d52ada4cef5a6e88267aacad3_icgraph.png new file mode 100644 index 0000000..0d4e516 Binary files /dev/null and b/assets/doc/cbuf_8h_a49cdbb3d52ada4cef5a6e88267aacad3_icgraph.png differ diff --git a/assets/doc/cbuf_8h_a60512cdcca11f127c26a8a30e42b8c5c_cgraph.map b/assets/doc/cbuf_8h_a60512cdcca11f127c26a8a30e42b8c5c_cgraph.map new file mode 100644 index 0000000..9dd3d9d --- /dev/null +++ b/assets/doc/cbuf_8h_a60512cdcca11f127c26a8a30e42b8c5c_cgraph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/assets/doc/cbuf_8h_a60512cdcca11f127c26a8a30e42b8c5c_cgraph.md5 b/assets/doc/cbuf_8h_a60512cdcca11f127c26a8a30e42b8c5c_cgraph.md5 new file mode 100644 index 0000000..64da25e --- /dev/null +++ b/assets/doc/cbuf_8h_a60512cdcca11f127c26a8a30e42b8c5c_cgraph.md5 @@ -0,0 +1 @@ +dee6e0e6df3460851675a0a57e3ab914 \ No newline at end of file diff --git a/assets/doc/cbuf_8h_a60512cdcca11f127c26a8a30e42b8c5c_cgraph.png b/assets/doc/cbuf_8h_a60512cdcca11f127c26a8a30e42b8c5c_cgraph.png new file mode 100644 index 0000000..bbbd462 Binary files /dev/null and b/assets/doc/cbuf_8h_a60512cdcca11f127c26a8a30e42b8c5c_cgraph.png differ diff --git a/assets/doc/cbuf_8h_a60512cdcca11f127c26a8a30e42b8c5c_icgraph.map b/assets/doc/cbuf_8h_a60512cdcca11f127c26a8a30e42b8c5c_icgraph.map new file mode 100644 index 0000000..2f4e7e4 --- /dev/null +++ b/assets/doc/cbuf_8h_a60512cdcca11f127c26a8a30e42b8c5c_icgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/assets/doc/cbuf_8h_a60512cdcca11f127c26a8a30e42b8c5c_icgraph.md5 b/assets/doc/cbuf_8h_a60512cdcca11f127c26a8a30e42b8c5c_icgraph.md5 new file mode 100644 index 0000000..959d444 --- /dev/null +++ b/assets/doc/cbuf_8h_a60512cdcca11f127c26a8a30e42b8c5c_icgraph.md5 @@ -0,0 +1 @@ +baa09bda1cd73ffe148186bac0ebb2e9 \ No newline at end of file diff --git a/assets/doc/cbuf_8h_a60512cdcca11f127c26a8a30e42b8c5c_icgraph.png b/assets/doc/cbuf_8h_a60512cdcca11f127c26a8a30e42b8c5c_icgraph.png new file mode 100644 index 0000000..752562a Binary files /dev/null and b/assets/doc/cbuf_8h_a60512cdcca11f127c26a8a30e42b8c5c_icgraph.png differ diff --git a/assets/doc/cbuf_8h_a652d95658664b0658eceaa09e93a3252_icgraph.map b/assets/doc/cbuf_8h_a652d95658664b0658eceaa09e93a3252_icgraph.map new file mode 100644 index 0000000..e6704e0 --- /dev/null +++ b/assets/doc/cbuf_8h_a652d95658664b0658eceaa09e93a3252_icgraph.map @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/assets/doc/cbuf_8h_a652d95658664b0658eceaa09e93a3252_icgraph.md5 b/assets/doc/cbuf_8h_a652d95658664b0658eceaa09e93a3252_icgraph.md5 new file mode 100644 index 0000000..ff55023 --- /dev/null +++ b/assets/doc/cbuf_8h_a652d95658664b0658eceaa09e93a3252_icgraph.md5 @@ -0,0 +1 @@ +1c5694b4fd19aee5c820c909ce214e74 \ No newline at end of file diff --git a/assets/doc/cbuf_8h_a652d95658664b0658eceaa09e93a3252_icgraph.png b/assets/doc/cbuf_8h_a652d95658664b0658eceaa09e93a3252_icgraph.png new file mode 100644 index 0000000..63d5f46 Binary files /dev/null and b/assets/doc/cbuf_8h_a652d95658664b0658eceaa09e93a3252_icgraph.png differ diff --git a/assets/doc/cbuf_8h_a68666a5ebddc6682b6786cc604072478_icgraph.map b/assets/doc/cbuf_8h_a68666a5ebddc6682b6786cc604072478_icgraph.map new file mode 100644 index 0000000..a54a47e --- /dev/null +++ b/assets/doc/cbuf_8h_a68666a5ebddc6682b6786cc604072478_icgraph.map @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/assets/doc/cbuf_8h_a68666a5ebddc6682b6786cc604072478_icgraph.md5 b/assets/doc/cbuf_8h_a68666a5ebddc6682b6786cc604072478_icgraph.md5 new file mode 100644 index 0000000..e8eeda2 --- /dev/null +++ b/assets/doc/cbuf_8h_a68666a5ebddc6682b6786cc604072478_icgraph.md5 @@ -0,0 +1 @@ +6b8f739a2ce908f9f8152062cacf1675 \ No newline at end of file diff --git a/assets/doc/cbuf_8h_a68666a5ebddc6682b6786cc604072478_icgraph.png b/assets/doc/cbuf_8h_a68666a5ebddc6682b6786cc604072478_icgraph.png new file mode 100644 index 0000000..b6e136e Binary files /dev/null and b/assets/doc/cbuf_8h_a68666a5ebddc6682b6786cc604072478_icgraph.png differ diff --git a/assets/doc/cbuf_8h_a6e4de5096568ca24607ed25184f39621_cgraph.map b/assets/doc/cbuf_8h_a6e4de5096568ca24607ed25184f39621_cgraph.map new file mode 100644 index 0000000..e412166 --- /dev/null +++ b/assets/doc/cbuf_8h_a6e4de5096568ca24607ed25184f39621_cgraph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/assets/doc/cbuf_8h_a6e4de5096568ca24607ed25184f39621_cgraph.md5 b/assets/doc/cbuf_8h_a6e4de5096568ca24607ed25184f39621_cgraph.md5 new file mode 100644 index 0000000..f294d60 --- /dev/null +++ b/assets/doc/cbuf_8h_a6e4de5096568ca24607ed25184f39621_cgraph.md5 @@ -0,0 +1 @@ +724711b032af4bf5efcf8a91443fd1d0 \ No newline at end of file diff --git a/assets/doc/cbuf_8h_a6e4de5096568ca24607ed25184f39621_cgraph.png b/assets/doc/cbuf_8h_a6e4de5096568ca24607ed25184f39621_cgraph.png new file mode 100644 index 0000000..3a5d80f Binary files /dev/null and b/assets/doc/cbuf_8h_a6e4de5096568ca24607ed25184f39621_cgraph.png differ diff --git a/assets/doc/cbuf_8h_a6e4de5096568ca24607ed25184f39621_icgraph.map b/assets/doc/cbuf_8h_a6e4de5096568ca24607ed25184f39621_icgraph.map new file mode 100644 index 0000000..cc42a45 --- /dev/null +++ b/assets/doc/cbuf_8h_a6e4de5096568ca24607ed25184f39621_icgraph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/assets/doc/cbuf_8h_a6e4de5096568ca24607ed25184f39621_icgraph.md5 b/assets/doc/cbuf_8h_a6e4de5096568ca24607ed25184f39621_icgraph.md5 new file mode 100644 index 0000000..5d21d9e --- /dev/null +++ b/assets/doc/cbuf_8h_a6e4de5096568ca24607ed25184f39621_icgraph.md5 @@ -0,0 +1 @@ +ff66882ae20142e7b7d71dda7a5c1934 \ No newline at end of file diff --git a/assets/doc/cbuf_8h_a6e4de5096568ca24607ed25184f39621_icgraph.png b/assets/doc/cbuf_8h_a6e4de5096568ca24607ed25184f39621_icgraph.png new file mode 100644 index 0000000..72a7f21 Binary files /dev/null and b/assets/doc/cbuf_8h_a6e4de5096568ca24607ed25184f39621_icgraph.png differ diff --git a/assets/doc/cbuf_8h_a7afb7def79f9b383ac2ff39ffdbb6b7e_icgraph.map b/assets/doc/cbuf_8h_a7afb7def79f9b383ac2ff39ffdbb6b7e_icgraph.map new file mode 100644 index 0000000..a54a47e --- /dev/null +++ b/assets/doc/cbuf_8h_a7afb7def79f9b383ac2ff39ffdbb6b7e_icgraph.map @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/assets/doc/cbuf_8h_a7afb7def79f9b383ac2ff39ffdbb6b7e_icgraph.md5 b/assets/doc/cbuf_8h_a7afb7def79f9b383ac2ff39ffdbb6b7e_icgraph.md5 new file mode 100644 index 0000000..621c69e --- /dev/null +++ b/assets/doc/cbuf_8h_a7afb7def79f9b383ac2ff39ffdbb6b7e_icgraph.md5 @@ -0,0 +1 @@ +2f628e228ec548f9cd0cfec0157ac507 \ No newline at end of file diff --git a/assets/doc/cbuf_8h_a7afb7def79f9b383ac2ff39ffdbb6b7e_icgraph.png b/assets/doc/cbuf_8h_a7afb7def79f9b383ac2ff39ffdbb6b7e_icgraph.png new file mode 100644 index 0000000..f82a36b Binary files /dev/null and b/assets/doc/cbuf_8h_a7afb7def79f9b383ac2ff39ffdbb6b7e_icgraph.png differ diff --git a/assets/doc/cbuf_8h_a87c05ad967d95ea590151e69af0ff4fe_icgraph.map b/assets/doc/cbuf_8h_a87c05ad967d95ea590151e69af0ff4fe_icgraph.map new file mode 100644 index 0000000..b08aa37 --- /dev/null +++ b/assets/doc/cbuf_8h_a87c05ad967d95ea590151e69af0ff4fe_icgraph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/assets/doc/cbuf_8h_a87c05ad967d95ea590151e69af0ff4fe_icgraph.md5 b/assets/doc/cbuf_8h_a87c05ad967d95ea590151e69af0ff4fe_icgraph.md5 new file mode 100644 index 0000000..2f177db --- /dev/null +++ b/assets/doc/cbuf_8h_a87c05ad967d95ea590151e69af0ff4fe_icgraph.md5 @@ -0,0 +1 @@ +245cff9a2e72f0104d2ad1114d39eb4c \ No newline at end of file diff --git a/assets/doc/cbuf_8h_a87c05ad967d95ea590151e69af0ff4fe_icgraph.png b/assets/doc/cbuf_8h_a87c05ad967d95ea590151e69af0ff4fe_icgraph.png new file mode 100644 index 0000000..170b034 Binary files /dev/null and b/assets/doc/cbuf_8h_a87c05ad967d95ea590151e69af0ff4fe_icgraph.png differ diff --git a/assets/doc/cbuf_8h_a9836b66494452a0b01511163285e2ba6_icgraph.map b/assets/doc/cbuf_8h_a9836b66494452a0b01511163285e2ba6_icgraph.map new file mode 100644 index 0000000..99f6ade --- /dev/null +++ b/assets/doc/cbuf_8h_a9836b66494452a0b01511163285e2ba6_icgraph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/assets/doc/cbuf_8h_a9836b66494452a0b01511163285e2ba6_icgraph.md5 b/assets/doc/cbuf_8h_a9836b66494452a0b01511163285e2ba6_icgraph.md5 new file mode 100644 index 0000000..7ffb49d --- /dev/null +++ b/assets/doc/cbuf_8h_a9836b66494452a0b01511163285e2ba6_icgraph.md5 @@ -0,0 +1 @@ +fe36549eead32500e3ef874543de712f \ No newline at end of file diff --git a/assets/doc/cbuf_8h_a9836b66494452a0b01511163285e2ba6_icgraph.png b/assets/doc/cbuf_8h_a9836b66494452a0b01511163285e2ba6_icgraph.png new file mode 100644 index 0000000..6a4b005 Binary files /dev/null and b/assets/doc/cbuf_8h_a9836b66494452a0b01511163285e2ba6_icgraph.png differ diff --git a/assets/doc/cbuf_8h_aa041996b32209a9b81a3e5db178c8339_icgraph.map b/assets/doc/cbuf_8h_aa041996b32209a9b81a3e5db178c8339_icgraph.map new file mode 100644 index 0000000..c706360 --- /dev/null +++ b/assets/doc/cbuf_8h_aa041996b32209a9b81a3e5db178c8339_icgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/assets/doc/cbuf_8h_aa041996b32209a9b81a3e5db178c8339_icgraph.md5 b/assets/doc/cbuf_8h_aa041996b32209a9b81a3e5db178c8339_icgraph.md5 new file mode 100644 index 0000000..6054057 --- /dev/null +++ b/assets/doc/cbuf_8h_aa041996b32209a9b81a3e5db178c8339_icgraph.md5 @@ -0,0 +1 @@ +126aed7f1236f55ae9e23647f35ed7cd \ No newline at end of file diff --git a/assets/doc/cbuf_8h_aa041996b32209a9b81a3e5db178c8339_icgraph.png b/assets/doc/cbuf_8h_aa041996b32209a9b81a3e5db178c8339_icgraph.png new file mode 100644 index 0000000..68df8b9 Binary files /dev/null and b/assets/doc/cbuf_8h_aa041996b32209a9b81a3e5db178c8339_icgraph.png differ diff --git a/assets/doc/cbuf_8h_aa6b501bd8016dfe1951f54dffe59262e_icgraph.map b/assets/doc/cbuf_8h_aa6b501bd8016dfe1951f54dffe59262e_icgraph.map new file mode 100644 index 0000000..cc831e8 --- /dev/null +++ b/assets/doc/cbuf_8h_aa6b501bd8016dfe1951f54dffe59262e_icgraph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/assets/doc/cbuf_8h_aa6b501bd8016dfe1951f54dffe59262e_icgraph.md5 b/assets/doc/cbuf_8h_aa6b501bd8016dfe1951f54dffe59262e_icgraph.md5 new file mode 100644 index 0000000..fd09a9e --- /dev/null +++ b/assets/doc/cbuf_8h_aa6b501bd8016dfe1951f54dffe59262e_icgraph.md5 @@ -0,0 +1 @@ +73356de6d7f1fabc2b2d75c5498d4175 \ No newline at end of file diff --git a/assets/doc/cbuf_8h_aa6b501bd8016dfe1951f54dffe59262e_icgraph.png b/assets/doc/cbuf_8h_aa6b501bd8016dfe1951f54dffe59262e_icgraph.png new file mode 100644 index 0000000..7bab784 Binary files /dev/null and b/assets/doc/cbuf_8h_aa6b501bd8016dfe1951f54dffe59262e_icgraph.png differ diff --git a/assets/doc/cbuf_8h_abc3bb54c6a324c849b872823ec70ce62_cgraph.map b/assets/doc/cbuf_8h_abc3bb54c6a324c849b872823ec70ce62_cgraph.map new file mode 100644 index 0000000..0439da2 --- /dev/null +++ b/assets/doc/cbuf_8h_abc3bb54c6a324c849b872823ec70ce62_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/assets/doc/cbuf_8h_abc3bb54c6a324c849b872823ec70ce62_cgraph.md5 b/assets/doc/cbuf_8h_abc3bb54c6a324c849b872823ec70ce62_cgraph.md5 new file mode 100644 index 0000000..bbfb547 --- /dev/null +++ b/assets/doc/cbuf_8h_abc3bb54c6a324c849b872823ec70ce62_cgraph.md5 @@ -0,0 +1 @@ +96e672ff17ab110c1dde271a5bac80b7 \ No newline at end of file diff --git a/assets/doc/cbuf_8h_abc3bb54c6a324c849b872823ec70ce62_cgraph.png b/assets/doc/cbuf_8h_abc3bb54c6a324c849b872823ec70ce62_cgraph.png new file mode 100644 index 0000000..6382f5b Binary files /dev/null and b/assets/doc/cbuf_8h_abc3bb54c6a324c849b872823ec70ce62_cgraph.png differ diff --git a/assets/doc/cbuf_8h_abc3bb54c6a324c849b872823ec70ce62_icgraph.map b/assets/doc/cbuf_8h_abc3bb54c6a324c849b872823ec70ce62_icgraph.map new file mode 100644 index 0000000..f03668e --- /dev/null +++ b/assets/doc/cbuf_8h_abc3bb54c6a324c849b872823ec70ce62_icgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/assets/doc/cbuf_8h_abc3bb54c6a324c849b872823ec70ce62_icgraph.md5 b/assets/doc/cbuf_8h_abc3bb54c6a324c849b872823ec70ce62_icgraph.md5 new file mode 100644 index 0000000..45a5e48 --- /dev/null +++ b/assets/doc/cbuf_8h_abc3bb54c6a324c849b872823ec70ce62_icgraph.md5 @@ -0,0 +1 @@ +2cdc3eb2b20cf14e96a13a05faae55d0 \ No newline at end of file diff --git a/assets/doc/cbuf_8h_abc3bb54c6a324c849b872823ec70ce62_icgraph.png b/assets/doc/cbuf_8h_abc3bb54c6a324c849b872823ec70ce62_icgraph.png new file mode 100644 index 0000000..0f8bd48 Binary files /dev/null and b/assets/doc/cbuf_8h_abc3bb54c6a324c849b872823ec70ce62_icgraph.png differ diff --git a/assets/doc/cbuf_8h_ac6a5c458373606ebadf44cb631a615cb_icgraph.map b/assets/doc/cbuf_8h_ac6a5c458373606ebadf44cb631a615cb_icgraph.map new file mode 100644 index 0000000..d9291e5 --- /dev/null +++ b/assets/doc/cbuf_8h_ac6a5c458373606ebadf44cb631a615cb_icgraph.map @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/assets/doc/cbuf_8h_ac6a5c458373606ebadf44cb631a615cb_icgraph.md5 b/assets/doc/cbuf_8h_ac6a5c458373606ebadf44cb631a615cb_icgraph.md5 new file mode 100644 index 0000000..54ee1f3 --- /dev/null +++ b/assets/doc/cbuf_8h_ac6a5c458373606ebadf44cb631a615cb_icgraph.md5 @@ -0,0 +1 @@ +31d5acee33ca298d30be925ca12233e1 \ No newline at end of file diff --git a/assets/doc/cbuf_8h_ac6a5c458373606ebadf44cb631a615cb_icgraph.png b/assets/doc/cbuf_8h_ac6a5c458373606ebadf44cb631a615cb_icgraph.png new file mode 100644 index 0000000..e7fc300 Binary files /dev/null and b/assets/doc/cbuf_8h_ac6a5c458373606ebadf44cb631a615cb_icgraph.png differ diff --git a/assets/doc/cbuf_8h_add0d09c7cdee8a8bdd00d3416e1ed062_cgraph.map b/assets/doc/cbuf_8h_add0d09c7cdee8a8bdd00d3416e1ed062_cgraph.map new file mode 100644 index 0000000..249f915 --- /dev/null +++ b/assets/doc/cbuf_8h_add0d09c7cdee8a8bdd00d3416e1ed062_cgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/assets/doc/cbuf_8h_add0d09c7cdee8a8bdd00d3416e1ed062_cgraph.md5 b/assets/doc/cbuf_8h_add0d09c7cdee8a8bdd00d3416e1ed062_cgraph.md5 new file mode 100644 index 0000000..4d9f224 --- /dev/null +++ b/assets/doc/cbuf_8h_add0d09c7cdee8a8bdd00d3416e1ed062_cgraph.md5 @@ -0,0 +1 @@ +72b1ff909879a1793ac1cb3ebc6eeaef \ No newline at end of file diff --git a/assets/doc/cbuf_8h_add0d09c7cdee8a8bdd00d3416e1ed062_cgraph.png b/assets/doc/cbuf_8h_add0d09c7cdee8a8bdd00d3416e1ed062_cgraph.png new file mode 100644 index 0000000..da85265 Binary files /dev/null and b/assets/doc/cbuf_8h_add0d09c7cdee8a8bdd00d3416e1ed062_cgraph.png differ diff --git a/assets/doc/cbuf_8h_add0d09c7cdee8a8bdd00d3416e1ed062_icgraph.map b/assets/doc/cbuf_8h_add0d09c7cdee8a8bdd00d3416e1ed062_icgraph.map new file mode 100644 index 0000000..11d76de --- /dev/null +++ b/assets/doc/cbuf_8h_add0d09c7cdee8a8bdd00d3416e1ed062_icgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/assets/doc/cbuf_8h_add0d09c7cdee8a8bdd00d3416e1ed062_icgraph.md5 b/assets/doc/cbuf_8h_add0d09c7cdee8a8bdd00d3416e1ed062_icgraph.md5 new file mode 100644 index 0000000..5c2370c --- /dev/null +++ b/assets/doc/cbuf_8h_add0d09c7cdee8a8bdd00d3416e1ed062_icgraph.md5 @@ -0,0 +1 @@ +bc06f5352c1ab575208be204a4f9a31f \ No newline at end of file diff --git a/assets/doc/cbuf_8h_add0d09c7cdee8a8bdd00d3416e1ed062_icgraph.png b/assets/doc/cbuf_8h_add0d09c7cdee8a8bdd00d3416e1ed062_icgraph.png new file mode 100644 index 0000000..f8a4066 Binary files /dev/null and b/assets/doc/cbuf_8h_add0d09c7cdee8a8bdd00d3416e1ed062_icgraph.png differ diff --git a/assets/doc/cbuf_8h_ae0e7a74c1e6c503c3cfd0ae5bc8702fd_icgraph.map b/assets/doc/cbuf_8h_ae0e7a74c1e6c503c3cfd0ae5bc8702fd_icgraph.map new file mode 100644 index 0000000..8dbb025 --- /dev/null +++ b/assets/doc/cbuf_8h_ae0e7a74c1e6c503c3cfd0ae5bc8702fd_icgraph.map @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/assets/doc/cbuf_8h_ae0e7a74c1e6c503c3cfd0ae5bc8702fd_icgraph.md5 b/assets/doc/cbuf_8h_ae0e7a74c1e6c503c3cfd0ae5bc8702fd_icgraph.md5 new file mode 100644 index 0000000..3ce8a36 --- /dev/null +++ b/assets/doc/cbuf_8h_ae0e7a74c1e6c503c3cfd0ae5bc8702fd_icgraph.md5 @@ -0,0 +1 @@ +2a808b9ec02fa596cb6c1b0a58a8b5ef \ No newline at end of file diff --git a/assets/doc/cbuf_8h_ae0e7a74c1e6c503c3cfd0ae5bc8702fd_icgraph.png b/assets/doc/cbuf_8h_ae0e7a74c1e6c503c3cfd0ae5bc8702fd_icgraph.png new file mode 100644 index 0000000..619440f Binary files /dev/null and b/assets/doc/cbuf_8h_ae0e7a74c1e6c503c3cfd0ae5bc8702fd_icgraph.png differ diff --git a/assets/doc/cbuf_8h_aee8e983250f1f7b58d98cc70b765493a_cgraph.map b/assets/doc/cbuf_8h_aee8e983250f1f7b58d98cc70b765493a_cgraph.map new file mode 100644 index 0000000..b016a7e --- /dev/null +++ b/assets/doc/cbuf_8h_aee8e983250f1f7b58d98cc70b765493a_cgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/assets/doc/cbuf_8h_aee8e983250f1f7b58d98cc70b765493a_cgraph.md5 b/assets/doc/cbuf_8h_aee8e983250f1f7b58d98cc70b765493a_cgraph.md5 new file mode 100644 index 0000000..5459bc5 --- /dev/null +++ b/assets/doc/cbuf_8h_aee8e983250f1f7b58d98cc70b765493a_cgraph.md5 @@ -0,0 +1 @@ +2cf52b0aea85c2d46545a66e180595f7 \ No newline at end of file diff --git a/assets/doc/cbuf_8h_aee8e983250f1f7b58d98cc70b765493a_cgraph.png b/assets/doc/cbuf_8h_aee8e983250f1f7b58d98cc70b765493a_cgraph.png new file mode 100644 index 0000000..065cdeb Binary files /dev/null and b/assets/doc/cbuf_8h_aee8e983250f1f7b58d98cc70b765493a_cgraph.png differ diff --git a/assets/doc/cbuf_8h_aee8e983250f1f7b58d98cc70b765493a_icgraph.map b/assets/doc/cbuf_8h_aee8e983250f1f7b58d98cc70b765493a_icgraph.map new file mode 100644 index 0000000..cc831e8 --- /dev/null +++ b/assets/doc/cbuf_8h_aee8e983250f1f7b58d98cc70b765493a_icgraph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/assets/doc/cbuf_8h_aee8e983250f1f7b58d98cc70b765493a_icgraph.md5 b/assets/doc/cbuf_8h_aee8e983250f1f7b58d98cc70b765493a_icgraph.md5 new file mode 100644 index 0000000..6c7f17b --- /dev/null +++ b/assets/doc/cbuf_8h_aee8e983250f1f7b58d98cc70b765493a_icgraph.md5 @@ -0,0 +1 @@ +5c8760e214d7ae956a5aa4ab82458ad7 \ No newline at end of file diff --git a/assets/doc/cbuf_8h_aee8e983250f1f7b58d98cc70b765493a_icgraph.png b/assets/doc/cbuf_8h_aee8e983250f1f7b58d98cc70b765493a_icgraph.png new file mode 100644 index 0000000..ee61053 Binary files /dev/null and b/assets/doc/cbuf_8h_aee8e983250f1f7b58d98cc70b765493a_icgraph.png differ diff --git a/assets/doc/cbuf_8h_afea7754e8d68ccc6b7e21dc74d7c7226_cgraph.map b/assets/doc/cbuf_8h_afea7754e8d68ccc6b7e21dc74d7c7226_cgraph.map new file mode 100644 index 0000000..410dd8f --- /dev/null +++ b/assets/doc/cbuf_8h_afea7754e8d68ccc6b7e21dc74d7c7226_cgraph.map @@ -0,0 +1,3 @@ + + + diff --git a/assets/doc/cbuf_8h_afea7754e8d68ccc6b7e21dc74d7c7226_cgraph.md5 b/assets/doc/cbuf_8h_afea7754e8d68ccc6b7e21dc74d7c7226_cgraph.md5 new file mode 100644 index 0000000..6b3ff71 --- /dev/null +++ b/assets/doc/cbuf_8h_afea7754e8d68ccc6b7e21dc74d7c7226_cgraph.md5 @@ -0,0 +1 @@ +cb7f171961aa1126980cc661902da5e2 \ No newline at end of file diff --git a/assets/doc/cbuf_8h_afea7754e8d68ccc6b7e21dc74d7c7226_cgraph.png b/assets/doc/cbuf_8h_afea7754e8d68ccc6b7e21dc74d7c7226_cgraph.png new file mode 100644 index 0000000..1d9b53e Binary files /dev/null and b/assets/doc/cbuf_8h_afea7754e8d68ccc6b7e21dc74d7c7226_cgraph.png differ diff --git a/assets/doc/cbuf_8h_afea7754e8d68ccc6b7e21dc74d7c7226_icgraph.map b/assets/doc/cbuf_8h_afea7754e8d68ccc6b7e21dc74d7c7226_icgraph.map new file mode 100644 index 0000000..3a35635 --- /dev/null +++ b/assets/doc/cbuf_8h_afea7754e8d68ccc6b7e21dc74d7c7226_icgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/assets/doc/cbuf_8h_afea7754e8d68ccc6b7e21dc74d7c7226_icgraph.md5 b/assets/doc/cbuf_8h_afea7754e8d68ccc6b7e21dc74d7c7226_icgraph.md5 new file mode 100644 index 0000000..a71b0c7 --- /dev/null +++ b/assets/doc/cbuf_8h_afea7754e8d68ccc6b7e21dc74d7c7226_icgraph.md5 @@ -0,0 +1 @@ +a7d446ff158d565966ef181d9702085f \ No newline at end of file diff --git a/assets/doc/cbuf_8h_afea7754e8d68ccc6b7e21dc74d7c7226_icgraph.png b/assets/doc/cbuf_8h_afea7754e8d68ccc6b7e21dc74d7c7226_icgraph.png new file mode 100644 index 0000000..d20ea64 Binary files /dev/null and b/assets/doc/cbuf_8h_afea7754e8d68ccc6b7e21dc74d7c7226_icgraph.png differ diff --git a/assets/doc/class_2class_8h__dep__incl.map b/assets/doc/class_2class_8h__dep__incl.map new file mode 100644 index 0000000..f708a70 --- /dev/null +++ b/assets/doc/class_2class_8h__dep__incl.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/assets/doc/class_2class_8h__dep__incl.md5 b/assets/doc/class_2class_8h__dep__incl.md5 new file mode 100644 index 0000000..aaabc97 --- /dev/null +++ b/assets/doc/class_2class_8h__dep__incl.md5 @@ -0,0 +1 @@ +6e098d57e77640f678ce50bdba03712a \ No newline at end of file diff --git a/assets/doc/class_2class_8h__dep__incl.png b/assets/doc/class_2class_8h__dep__incl.png new file mode 100644 index 0000000..10fc365 Binary files /dev/null and b/assets/doc/class_2class_8h__dep__incl.png differ diff --git a/assets/doc/class_2class_8h__incl.map b/assets/doc/class_2class_8h__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/class_2class_8h__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/class_2class_8h__incl.md5 b/assets/doc/class_2class_8h__incl.md5 new file mode 100644 index 0000000..ab81127 --- /dev/null +++ b/assets/doc/class_2class_8h__incl.md5 @@ -0,0 +1 @@ +6ae74454639abb7073a53873135b222d \ No newline at end of file diff --git a/assets/doc/class_2class_8h__incl.png b/assets/doc/class_2class_8h__incl.png new file mode 100644 index 0000000..64fcd49 Binary files /dev/null and b/assets/doc/class_2class_8h__incl.png differ diff --git a/assets/doc/class_2interface_2class_8h__dep__incl.map b/assets/doc/class_2interface_2class_8h__dep__incl.map new file mode 100644 index 0000000..f708a70 --- /dev/null +++ b/assets/doc/class_2interface_2class_8h__dep__incl.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/assets/doc/class_2interface_2class_8h__dep__incl.md5 b/assets/doc/class_2interface_2class_8h__dep__incl.md5 new file mode 100644 index 0000000..e495a2a --- /dev/null +++ b/assets/doc/class_2interface_2class_8h__dep__incl.md5 @@ -0,0 +1 @@ +cff32cebaef86b620a512b40f9472d5e \ No newline at end of file diff --git a/assets/doc/class_2interface_2class_8h__dep__incl.png b/assets/doc/class_2interface_2class_8h__dep__incl.png new file mode 100644 index 0000000..c5db901 Binary files /dev/null and b/assets/doc/class_2interface_2class_8h__dep__incl.png differ diff --git a/assets/doc/class_2interface_2class_8h__incl.map b/assets/doc/class_2interface_2class_8h__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/class_2interface_2class_8h__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/class_2interface_2class_8h__incl.md5 b/assets/doc/class_2interface_2class_8h__incl.md5 new file mode 100644 index 0000000..c1bf405 --- /dev/null +++ b/assets/doc/class_2interface_2class_8h__incl.md5 @@ -0,0 +1 @@ +03ab7a32a65b73cecc24fde8a337ec17 \ No newline at end of file diff --git a/assets/doc/class_2interface_2class_8h__incl.png b/assets/doc/class_2interface_2class_8h__incl.png new file mode 100644 index 0000000..b885564 Binary files /dev/null and b/assets/doc/class_2interface_2class_8h__incl.png differ diff --git a/assets/doc/class_2interface_2class_8h_ac064b1caf75bc6c8b1a4371748d55878_icgraph.map b/assets/doc/class_2interface_2class_8h_ac064b1caf75bc6c8b1a4371748d55878_icgraph.map new file mode 100644 index 0000000..63ced95 --- /dev/null +++ b/assets/doc/class_2interface_2class_8h_ac064b1caf75bc6c8b1a4371748d55878_icgraph.map @@ -0,0 +1,3 @@ + + + diff --git a/assets/doc/class_2interface_2class_8h_ac064b1caf75bc6c8b1a4371748d55878_icgraph.md5 b/assets/doc/class_2interface_2class_8h_ac064b1caf75bc6c8b1a4371748d55878_icgraph.md5 new file mode 100644 index 0000000..996b76b --- /dev/null +++ b/assets/doc/class_2interface_2class_8h_ac064b1caf75bc6c8b1a4371748d55878_icgraph.md5 @@ -0,0 +1 @@ +75239f9f436b396c87ff4b9f53dbb3d3 \ No newline at end of file diff --git a/assets/doc/class_2interface_2class_8h_ac064b1caf75bc6c8b1a4371748d55878_icgraph.png b/assets/doc/class_2interface_2class_8h_ac064b1caf75bc6c8b1a4371748d55878_icgraph.png new file mode 100644 index 0000000..f65d643 Binary files /dev/null and b/assets/doc/class_2interface_2class_8h_ac064b1caf75bc6c8b1a4371748d55878_icgraph.png differ diff --git a/assets/doc/class_2interface_2class_8h_adebe9bba79f753f5c44409a2ff664299_cgraph.map b/assets/doc/class_2interface_2class_8h_adebe9bba79f753f5c44409a2ff664299_cgraph.map new file mode 100644 index 0000000..0c911a2 --- /dev/null +++ b/assets/doc/class_2interface_2class_8h_adebe9bba79f753f5c44409a2ff664299_cgraph.map @@ -0,0 +1,3 @@ + + + diff --git a/assets/doc/class_2interface_2class_8h_adebe9bba79f753f5c44409a2ff664299_cgraph.md5 b/assets/doc/class_2interface_2class_8h_adebe9bba79f753f5c44409a2ff664299_cgraph.md5 new file mode 100644 index 0000000..f3729da --- /dev/null +++ b/assets/doc/class_2interface_2class_8h_adebe9bba79f753f5c44409a2ff664299_cgraph.md5 @@ -0,0 +1 @@ +39e5cc2dd018942fb34f32be8f2b6978 \ No newline at end of file diff --git a/assets/doc/class_2interface_2class_8h_adebe9bba79f753f5c44409a2ff664299_cgraph.png b/assets/doc/class_2interface_2class_8h_adebe9bba79f753f5c44409a2ff664299_cgraph.png new file mode 100644 index 0000000..9261564 Binary files /dev/null and b/assets/doc/class_2interface_2class_8h_adebe9bba79f753f5c44409a2ff664299_cgraph.png differ diff --git a/assets/doc/class_8h__dep__incl.map b/assets/doc/class_8h__dep__incl.map new file mode 100644 index 0000000..6128997 --- /dev/null +++ b/assets/doc/class_8h__dep__incl.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/assets/doc/class_8h__dep__incl.md5 b/assets/doc/class_8h__dep__incl.md5 new file mode 100644 index 0000000..f801039 --- /dev/null +++ b/assets/doc/class_8h__dep__incl.md5 @@ -0,0 +1 @@ +255b5385c90de336b7494a70cfd8b373 \ No newline at end of file diff --git a/assets/doc/class_8h__dep__incl.png b/assets/doc/class_8h__dep__incl.png new file mode 100644 index 0000000..445ba33 Binary files /dev/null and b/assets/doc/class_8h__dep__incl.png differ diff --git a/assets/doc/class_8h__incl.map b/assets/doc/class_8h__incl.map new file mode 100644 index 0000000..8e0fc9c --- /dev/null +++ b/assets/doc/class_8h__incl.map @@ -0,0 +1,5 @@ + + + + + diff --git a/assets/doc/class_8h__incl.md5 b/assets/doc/class_8h__incl.md5 new file mode 100644 index 0000000..2fa2892 --- /dev/null +++ b/assets/doc/class_8h__incl.md5 @@ -0,0 +1 @@ +d7a53527778307f95a7a92fb1902ec01 \ No newline at end of file diff --git a/assets/doc/class_8h__incl.png b/assets/doc/class_8h__incl.png new file mode 100644 index 0000000..ad8b39c Binary files /dev/null and b/assets/doc/class_8h__incl.png differ diff --git a/assets/doc/close__conn_8c__incl.map b/assets/doc/close__conn_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/close__conn_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/close__conn_8c__incl.md5 b/assets/doc/close__conn_8c__incl.md5 new file mode 100644 index 0000000..c3bb0f4 --- /dev/null +++ b/assets/doc/close__conn_8c__incl.md5 @@ -0,0 +1 @@ +798a09cc7929eaeb099d9d0b645df4e4 \ No newline at end of file diff --git a/assets/doc/close__conn_8c__incl.png b/assets/doc/close__conn_8c__incl.png new file mode 100644 index 0000000..cbf2efb Binary files /dev/null and b/assets/doc/close__conn_8c__incl.png differ diff --git a/assets/doc/close__conn_8c_ad721e61c8676f0b4c3b8fc401e26f266_icgraph.map b/assets/doc/close__conn_8c_ad721e61c8676f0b4c3b8fc401e26f266_icgraph.map new file mode 100644 index 0000000..ce24553 --- /dev/null +++ b/assets/doc/close__conn_8c_ad721e61c8676f0b4c3b8fc401e26f266_icgraph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/assets/doc/close__conn_8c_ad721e61c8676f0b4c3b8fc401e26f266_icgraph.md5 b/assets/doc/close__conn_8c_ad721e61c8676f0b4c3b8fc401e26f266_icgraph.md5 new file mode 100644 index 0000000..3e000e4 --- /dev/null +++ b/assets/doc/close__conn_8c_ad721e61c8676f0b4c3b8fc401e26f266_icgraph.md5 @@ -0,0 +1 @@ +cad38ebfe381e30f735008f849120875 \ No newline at end of file diff --git a/assets/doc/close__conn_8c_ad721e61c8676f0b4c3b8fc401e26f266_icgraph.png b/assets/doc/close__conn_8c_ad721e61c8676f0b4c3b8fc401e26f266_icgraph.png new file mode 100644 index 0000000..4f7f6bb Binary files /dev/null and b/assets/doc/close__conn_8c_ad721e61c8676f0b4c3b8fc401e26f266_icgraph.png differ diff --git a/assets/doc/closed.png b/assets/doc/closed.png new file mode 100644 index 0000000..b7d4bd9 Binary files /dev/null and b/assets/doc/closed.png differ diff --git a/assets/doc/commons_8h__dep__incl.map b/assets/doc/commons_8h__dep__incl.map new file mode 100644 index 0000000..2cd4b15 --- /dev/null +++ b/assets/doc/commons_8h__dep__incl.map @@ -0,0 +1,3 @@ + + + diff --git a/assets/doc/commons_8h__dep__incl.md5 b/assets/doc/commons_8h__dep__incl.md5 new file mode 100644 index 0000000..4dc9b0e --- /dev/null +++ b/assets/doc/commons_8h__dep__incl.md5 @@ -0,0 +1 @@ +3a14df4c4ca2de17a0b87416717b83ed \ No newline at end of file diff --git a/assets/doc/commons_8h__dep__incl.png b/assets/doc/commons_8h__dep__incl.png new file mode 100644 index 0000000..4db509f Binary files /dev/null and b/assets/doc/commons_8h__dep__incl.png differ diff --git a/assets/doc/connect_8c__incl.map b/assets/doc/connect_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/connect_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/connect_8c__incl.md5 b/assets/doc/connect_8c__incl.md5 new file mode 100644 index 0000000..7008024 --- /dev/null +++ b/assets/doc/connect_8c__incl.md5 @@ -0,0 +1 @@ +b57cc0534184bb2f032cd0cc66aa1739 \ No newline at end of file diff --git a/assets/doc/connect_8c__incl.png b/assets/doc/connect_8c__incl.png new file mode 100644 index 0000000..684c76d Binary files /dev/null and b/assets/doc/connect_8c__incl.png differ diff --git a/assets/doc/connect_8c_af5684b9040cb1a3973fbef198123d449_cgraph.map b/assets/doc/connect_8c_af5684b9040cb1a3973fbef198123d449_cgraph.map new file mode 100644 index 0000000..1b9578e --- /dev/null +++ b/assets/doc/connect_8c_af5684b9040cb1a3973fbef198123d449_cgraph.map @@ -0,0 +1,3 @@ + + + diff --git a/assets/doc/connect_8c_af5684b9040cb1a3973fbef198123d449_cgraph.md5 b/assets/doc/connect_8c_af5684b9040cb1a3973fbef198123d449_cgraph.md5 new file mode 100644 index 0000000..23a9d78 --- /dev/null +++ b/assets/doc/connect_8c_af5684b9040cb1a3973fbef198123d449_cgraph.md5 @@ -0,0 +1 @@ +31d01afe508215f3754328999b15ba4f \ No newline at end of file diff --git a/assets/doc/connect_8c_af5684b9040cb1a3973fbef198123d449_cgraph.png b/assets/doc/connect_8c_af5684b9040cb1a3973fbef198123d449_cgraph.png new file mode 100644 index 0000000..17319e9 Binary files /dev/null and b/assets/doc/connect_8c_af5684b9040cb1a3973fbef198123d449_cgraph.png differ diff --git a/assets/doc/cookie_8c__incl.map b/assets/doc/cookie_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/cookie_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/cookie_8c__incl.md5 b/assets/doc/cookie_8c__incl.md5 new file mode 100644 index 0000000..61dbad1 --- /dev/null +++ b/assets/doc/cookie_8c__incl.md5 @@ -0,0 +1 @@ +348c67b3d5ffa2b490fdb158293a6b72 \ No newline at end of file diff --git a/assets/doc/cookie_8c__incl.png b/assets/doc/cookie_8c__incl.png new file mode 100644 index 0000000..0d959b7 Binary files /dev/null and b/assets/doc/cookie_8c__incl.png differ diff --git a/assets/doc/cookie_8h__dep__incl.map b/assets/doc/cookie_8h__dep__incl.map new file mode 100644 index 0000000..b48140b --- /dev/null +++ b/assets/doc/cookie_8h__dep__incl.map @@ -0,0 +1,3 @@ + + + diff --git a/assets/doc/cookie_8h__dep__incl.md5 b/assets/doc/cookie_8h__dep__incl.md5 new file mode 100644 index 0000000..8773e28 --- /dev/null +++ b/assets/doc/cookie_8h__dep__incl.md5 @@ -0,0 +1 @@ +a8126cde8a7477a2f97288e57455346c \ No newline at end of file diff --git a/assets/doc/cookie_8h__dep__incl.png b/assets/doc/cookie_8h__dep__incl.png new file mode 100644 index 0000000..bc0f3c8 Binary files /dev/null and b/assets/doc/cookie_8h__dep__incl.png differ diff --git a/assets/doc/cookie_8h__incl.map b/assets/doc/cookie_8h__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/cookie_8h__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/cookie_8h__incl.md5 b/assets/doc/cookie_8h__incl.md5 new file mode 100644 index 0000000..3764738 --- /dev/null +++ b/assets/doc/cookie_8h__incl.md5 @@ -0,0 +1 @@ +649cf3e961aa56ad0d6667f47d0fe5a0 \ No newline at end of file diff --git a/assets/doc/cookie_8h__incl.png b/assets/doc/cookie_8h__incl.png new file mode 100644 index 0000000..51a293f Binary files /dev/null and b/assets/doc/cookie_8h__incl.png differ diff --git a/assets/doc/credential_8c__incl.map b/assets/doc/credential_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/credential_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/credential_8c__incl.md5 b/assets/doc/credential_8c__incl.md5 new file mode 100644 index 0000000..dcf23fa --- /dev/null +++ b/assets/doc/credential_8c__incl.md5 @@ -0,0 +1 @@ +731a1052637268b35747abe38b2a473a \ No newline at end of file diff --git a/assets/doc/credential_8c__incl.png b/assets/doc/credential_8c__incl.png new file mode 100644 index 0000000..a211ed9 Binary files /dev/null and b/assets/doc/credential_8c__incl.png differ diff --git a/assets/doc/credential_8h__dep__incl.map b/assets/doc/credential_8h__dep__incl.map new file mode 100644 index 0000000..580a761 --- /dev/null +++ b/assets/doc/credential_8h__dep__incl.map @@ -0,0 +1,3 @@ + + + diff --git a/assets/doc/credential_8h__dep__incl.md5 b/assets/doc/credential_8h__dep__incl.md5 new file mode 100644 index 0000000..a2cf138 --- /dev/null +++ b/assets/doc/credential_8h__dep__incl.md5 @@ -0,0 +1 @@ +7c834dfb00cc67bb74e64580a053f182 \ No newline at end of file diff --git a/assets/doc/credential_8h__dep__incl.png b/assets/doc/credential_8h__dep__incl.png new file mode 100644 index 0000000..76420d4 Binary files /dev/null and b/assets/doc/credential_8h__dep__incl.png differ diff --git a/assets/doc/credential_8h__incl.map b/assets/doc/credential_8h__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/credential_8h__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/credential_8h__incl.md5 b/assets/doc/credential_8h__incl.md5 new file mode 100644 index 0000000..d5f808b --- /dev/null +++ b/assets/doc/credential_8h__incl.md5 @@ -0,0 +1 @@ +1b22c5ba5e0fb13d58d6de69f6c6dc15 \ No newline at end of file diff --git a/assets/doc/credential_8h__incl.png b/assets/doc/credential_8h__incl.png new file mode 100644 index 0000000..0656f08 Binary files /dev/null and b/assets/doc/credential_8h__incl.png differ diff --git a/assets/doc/daemonize_8c__incl.map b/assets/doc/daemonize_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/daemonize_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/daemonize_8c__incl.md5 b/assets/doc/daemonize_8c__incl.md5 new file mode 100644 index 0000000..7cf8957 --- /dev/null +++ b/assets/doc/daemonize_8c__incl.md5 @@ -0,0 +1 @@ +b07c0d64d546f3aaf9925436f78625f0 \ No newline at end of file diff --git a/assets/doc/daemonize_8c__incl.png b/assets/doc/daemonize_8c__incl.png new file mode 100644 index 0000000..929a6cd Binary files /dev/null and b/assets/doc/daemonize_8c__incl.png differ diff --git a/assets/doc/doxygen.css b/assets/doc/doxygen.css new file mode 100644 index 0000000..101c7a5 --- /dev/null +++ b/assets/doc/doxygen.css @@ -0,0 +1,800 @@ +/* The standard CSS for doxygen */ + +body, table, div, p, dl { + font-family: Lucida Grande, Verdana, Geneva, Arial, sans-serif; + font-size: 12px; +} + +/* @group Heading Levels */ + +h1 { + font-size: 150%; +} + +h2 { + font-size: 120%; +} + +h3 { + font-size: 100%; +} + +dt { + font-weight: bold; +} + +div.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; +} + +p.startli, p.startdd, p.starttd { + margin-top: 2px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.qindex, div.navtab{ + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; + margin: 2px; + padding: 2px; +} + +div.qindex, div.navpath { + width: 100%; + line-height: 140%; +} + +div.navtab { + margin-right: 15px; +} + +/* @group Link Styling */ + +a { + color: #3D578C; + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: #4665A2; +} + +a:hover { + text-decoration: underline; +} + +a.qindex { + font-weight: bold; +} + +a.qindexHL { + font-weight: bold; + background-color: #9CAFD4; + color: #ffffff; + border: 1px double #869DCA; +} + +.contents a.qindexHL:visited { + color: #ffffff; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code { + color: #4665A2; +} + +a.codeRef { + color: #4665A2; +} + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +.fragment { + font-family: monospace, fixed; + font-size: 105%; +} + +pre.fragment { + border: 1px solid #C4CFE5; + background-color: #FBFCFD; + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; +} + +div.ah { + background-color: black; + font-weight: bold; + color: #ffffff; + margin-bottom: 3px; + margin-top: 3px; + padding: 0.2em; + border: solid thin #333; + border-radius: 0.5em; + -webkit-border-radius: .5em; + -moz-border-radius: .5em; + box-shadow: 2px 2px 3px #999; + -webkit-box-shadow: 2px 2px 3px #999; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); + background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000); +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + background: white; + color: black; + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 10px; + margin-right: 10px; +} + +td.indexkey { + background-color: #EBEFF6; + font-weight: bold; + border: 1px solid #C4CFE5; + margin: 2px 0px 2px 0; + padding: 2px 10px; +} + +td.indexvalue { + background-color: #EBEFF6; + border: 1px solid #C4CFE5; + padding: 2px 10px; + margin: 2px 0px; +} + +tr.memlist { + background-color: #EEF1F7; +} + +p.formulaDsp { + text-align: center; +} + +img.formulaDsp { + +} + +img.formulaInl { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; +} + +/* @group Code Colorization */ + +span.keyword { + color: #008000 +} + +span.keywordtype { + color: #604020 +} + +span.keywordflow { + color: #e08000 +} + +span.comment { + color: #800000 +} + +span.preprocessor { + color: #806020 +} + +span.stringliteral { + color: #002080 +} + +span.charliteral { + color: #008080 +} + +span.vhdldigit { + color: #ff00ff +} + +span.vhdlchar { + color: #000000 +} + +span.vhdlkeyword { + color: #700070 +} + +span.vhdllogic { + color: #ff0000 +} + +/* @end */ + +/* +.search { + color: #003399; + font-weight: bold; +} + +form.search { + margin-bottom: 0px; + margin-top: 0px; +} + +input.search { + font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +*/ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid #A3B4D7; +} + +th.dirtab { + background: #EBEFF6; + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid #4A6AAA; +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: #F9FAFC; + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: #555; +} + +.memItemLeft, .memItemRight, .memTemplParams { + border-top: 1px solid #C4CFE5; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memTemplParams { + color: #4665A2; + white-space: nowrap; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtemplate { + font-size: 80%; + color: #4665A2; + font-weight: normal; + margin-left: 9px; +} + +.memnav { + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} + +.memitem { + padding: 0; + margin-bottom: 10px; +} + +.memname { + white-space: nowrap; + font-weight: bold; + margin-left: 6px; +} + +.memproto { + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 0px 6px 0px; + color: #253555; + font-weight: bold; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + /* opera specific markup */ + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 8px; + border-top-left-radius: 8px; + /* firefox specific markup */ + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + -moz-border-radius-topright: 8px; + -moz-border-radius-topleft: 8px; + /* webkit specific markup */ + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + -webkit-border-top-right-radius: 8px; + -webkit-border-top-left-radius: 8px; + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E8F2; + +} + +.memdoc { + border-bottom: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 2px 5px; + background-color: #FBFCFD; + border-top-width: 0; + /* opera specific markup */ + border-bottom-left-radius: 8px; + border-bottom-right-radius: 8px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 8px; + -moz-border-radius-bottomright: 8px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + background-image: -moz-linear-gradient(center top, #FFFFFF 0%, #FFFFFF 60%, #F7F8FB 95%, #EEF1F7); + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 8px; + -webkit-border-bottom-right-radius: 8px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + background-image: -webkit-gradient(linear,center top,center bottom,from(#FFFFFF), color-stop(0.6,#FFFFFF), color-stop(0.60,#FFFFFF), color-stop(0.95,#F7F8FB), to(#EEF1F7)); +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: #602020; + white-space: nowrap; +} +.paramname em { + font-style: normal; +} + +.params, .retval, .exception, .tparams { + border-spacing: 6px 2px; +} + +.params .paramname, .retval .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir { + font-family: "courier new",courier,monospace; + vertical-align: top; +} + + + + +/* @end */ + +/* @group Directory (tree) */ + +/* for the tree view */ + +.ftvtree { + font-family: sans-serif; + margin: 0px; +} + +/* these are for tree view when used as main index */ + +.directory { + font-size: 9pt; + font-weight: bold; + margin: 5px; +} + +.directory h3 { + margin: 0px; + margin-top: 1em; + font-size: 11pt; +} + +/* +The following two styles can be used to replace the root node title +with an image of your choice. Simply uncomment the next two styles, +specify the name of your image and be sure to set 'height' to the +proper pixel height of your image. +*/ + +/* +.directory h3.swap { + height: 61px; + background-repeat: no-repeat; + background-image: url("yourimage.gif"); +} +.directory h3.swap span { + display: none; +} +*/ + +.directory > h3 { + margin-top: 0; +} + +.directory p { + margin: 0px; + white-space: nowrap; +} + +.directory div { + display: none; + margin: 0px; +} + +.directory img { + vertical-align: -30%; +} + +/* these are for tree view when not used as main index */ + +.directory-alt { + font-size: 100%; + font-weight: bold; +} + +.directory-alt h3 { + margin: 0px; + margin-top: 1em; + font-size: 11pt; +} + +.directory-alt > h3 { + margin-top: 0; +} + +.directory-alt p { + margin: 0px; + white-space: nowrap; +} + +.directory-alt div { + display: none; + margin: 0px; +} + +.directory-alt img { + vertical-align: -30%; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; +} + +address { + font-style: normal; + color: #2A3D61; +} + +table.doxtable { + border-collapse:collapse; +} + +table.doxtable td, table.doxtable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; + text-align:left; +} + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: url('tab_b.png'); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image:url('tab_b.png'); + background-repeat:repeat-x; + height:30px; + line-height:30px; + color:#8AA0CC; + border:solid 1px #C2CDE4; + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:url('bc_s.png'); + background-repeat:no-repeat; + background-position:right; + color:#364D7C; +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; +} + +.navpath li.navelem a:hover +{ + color:#6884BD; +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color:#364D7C; + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +div.ingroups +{ + font-size: 8pt; + padding-left: 5px; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image:url('nav_h.png'); + background-repeat:repeat-x; + background-color: #F9FAFC; + margin: 0px; + border-bottom: 1px solid #C4CFE5; +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +dl +{ + padding: 0 0 0 10px; +} + +dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug +{ + border-left:4px solid; + padding: 0 0 0 6px; +} + +dl.note +{ + border-color: #D0D000; +} + +dl.warning, dl.attention +{ + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant +{ + border-color: #00D000; +} + +dl.deprecated +{ + border-color: #505050; +} + +dl.todo +{ + border-color: #00C0E0; +} + +dl.test +{ + border-color: #3030E0; +} + +dl.bug +{ + border-color: #C08050; +} + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectname +{ + font: 300% arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#projectbrief +{ + font: 120% arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font: 50% arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid #5373B4; +} + diff --git a/assets/doc/doxygen.png b/assets/doc/doxygen.png new file mode 100644 index 0000000..635ed52 Binary files /dev/null and b/assets/doc/doxygen.png differ diff --git a/assets/doc/each_8c__incl.map b/assets/doc/each_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/each_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/each_8c__incl.md5 b/assets/doc/each_8c__incl.md5 new file mode 100644 index 0000000..b044a46 --- /dev/null +++ b/assets/doc/each_8c__incl.md5 @@ -0,0 +1 @@ +b725f243e9c68b755dea2d3d0f45a4da \ No newline at end of file diff --git a/assets/doc/each_8c__incl.png b/assets/doc/each_8c__incl.png new file mode 100644 index 0000000..862d35d Binary files /dev/null and b/assets/doc/each_8c__incl.png differ diff --git a/assets/doc/each_8c_a2367fe80c680184c231dd6489eecff33_icgraph.map b/assets/doc/each_8c_a2367fe80c680184c231dd6489eecff33_icgraph.map new file mode 100644 index 0000000..67c472c --- /dev/null +++ b/assets/doc/each_8c_a2367fe80c680184c231dd6489eecff33_icgraph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/assets/doc/each_8c_a2367fe80c680184c231dd6489eecff33_icgraph.md5 b/assets/doc/each_8c_a2367fe80c680184c231dd6489eecff33_icgraph.md5 new file mode 100644 index 0000000..bc92624 --- /dev/null +++ b/assets/doc/each_8c_a2367fe80c680184c231dd6489eecff33_icgraph.md5 @@ -0,0 +1 @@ +10020865742e998c750c1ace5c04932b \ No newline at end of file diff --git a/assets/doc/each_8c_a2367fe80c680184c231dd6489eecff33_icgraph.png b/assets/doc/each_8c_a2367fe80c680184c231dd6489eecff33_icgraph.png new file mode 100644 index 0000000..bf9b586 Binary files /dev/null and b/assets/doc/each_8c_a2367fe80c680184c231dd6489eecff33_icgraph.png differ diff --git a/assets/doc/empty_8c__incl.map b/assets/doc/empty_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/empty_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/empty_8c__incl.md5 b/assets/doc/empty_8c__incl.md5 new file mode 100644 index 0000000..a621026 --- /dev/null +++ b/assets/doc/empty_8c__incl.md5 @@ -0,0 +1 @@ +47699b889c91f26dff49deea2998a1e7 \ No newline at end of file diff --git a/assets/doc/empty_8c__incl.png b/assets/doc/empty_8c__incl.png new file mode 100644 index 0000000..7ed2988 Binary files /dev/null and b/assets/doc/empty_8c__incl.png differ diff --git a/assets/doc/ftv2blank.png b/assets/doc/ftv2blank.png new file mode 100644 index 0000000..3b7a29c Binary files /dev/null and b/assets/doc/ftv2blank.png differ diff --git a/assets/doc/ftv2doc.png b/assets/doc/ftv2doc.png new file mode 100644 index 0000000..310e441 Binary files /dev/null and b/assets/doc/ftv2doc.png differ diff --git a/assets/doc/ftv2folderclosed.png b/assets/doc/ftv2folderclosed.png new file mode 100644 index 0000000..79aeaf7 Binary files /dev/null and b/assets/doc/ftv2folderclosed.png differ diff --git a/assets/doc/ftv2folderopen.png b/assets/doc/ftv2folderopen.png new file mode 100644 index 0000000..1b703dd Binary files /dev/null and b/assets/doc/ftv2folderopen.png differ diff --git a/assets/doc/ftv2lastnode.png b/assets/doc/ftv2lastnode.png new file mode 100644 index 0000000..3b7a29c Binary files /dev/null and b/assets/doc/ftv2lastnode.png differ diff --git a/assets/doc/ftv2link.png b/assets/doc/ftv2link.png new file mode 100644 index 0000000..310e441 Binary files /dev/null and b/assets/doc/ftv2link.png differ diff --git a/assets/doc/ftv2mlastnode.png b/assets/doc/ftv2mlastnode.png new file mode 100644 index 0000000..ec51f17 Binary files /dev/null and b/assets/doc/ftv2mlastnode.png differ diff --git a/assets/doc/ftv2mnode.png b/assets/doc/ftv2mnode.png new file mode 100644 index 0000000..ec51f17 Binary files /dev/null and b/assets/doc/ftv2mnode.png differ diff --git a/assets/doc/ftv2node.png b/assets/doc/ftv2node.png new file mode 100644 index 0000000..3b7a29c Binary files /dev/null and b/assets/doc/ftv2node.png differ diff --git a/assets/doc/ftv2plastnode.png b/assets/doc/ftv2plastnode.png new file mode 100644 index 0000000..270a965 Binary files /dev/null and b/assets/doc/ftv2plastnode.png differ diff --git a/assets/doc/ftv2pnode.png b/assets/doc/ftv2pnode.png new file mode 100644 index 0000000..270a965 Binary files /dev/null and b/assets/doc/ftv2pnode.png differ diff --git a/assets/doc/ftv2splitbar.png b/assets/doc/ftv2splitbar.png new file mode 100644 index 0000000..f60a527 Binary files /dev/null and b/assets/doc/ftv2splitbar.png differ diff --git a/assets/doc/ftv2vertline.png b/assets/doc/ftv2vertline.png new file mode 100644 index 0000000..3b7a29c Binary files /dev/null and b/assets/doc/ftv2vertline.png differ diff --git a/assets/doc/get__asset_8c__incl.map b/assets/doc/get__asset_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/get__asset_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/get__asset_8c__incl.md5 b/assets/doc/get__asset_8c__incl.md5 new file mode 100644 index 0000000..31c64f9 --- /dev/null +++ b/assets/doc/get__asset_8c__incl.md5 @@ -0,0 +1 @@ +d14bfa5243a8f3b57c5d07458ea03c91 \ No newline at end of file diff --git a/assets/doc/get__asset_8c__incl.png b/assets/doc/get__asset_8c__incl.png new file mode 100644 index 0000000..42c8763 Binary files /dev/null and b/assets/doc/get__asset_8c__incl.png differ diff --git a/assets/doc/get__asset_8c_a69ca591563d52afa450af7390568d158_cgraph.map b/assets/doc/get__asset_8c_a69ca591563d52afa450af7390568d158_cgraph.map new file mode 100644 index 0000000..c29c249 --- /dev/null +++ b/assets/doc/get__asset_8c_a69ca591563d52afa450af7390568d158_cgraph.map @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/assets/doc/get__asset_8c_a69ca591563d52afa450af7390568d158_cgraph.md5 b/assets/doc/get__asset_8c_a69ca591563d52afa450af7390568d158_cgraph.md5 new file mode 100644 index 0000000..58dd5a9 --- /dev/null +++ b/assets/doc/get__asset_8c_a69ca591563d52afa450af7390568d158_cgraph.md5 @@ -0,0 +1 @@ +0d64146b469948216ae193e358eb0f4d \ No newline at end of file diff --git a/assets/doc/get__asset_8c_a69ca591563d52afa450af7390568d158_cgraph.png b/assets/doc/get__asset_8c_a69ca591563d52afa450af7390568d158_cgraph.png new file mode 100644 index 0000000..49f5b61 Binary files /dev/null and b/assets/doc/get__asset_8c_a69ca591563d52afa450af7390568d158_cgraph.png differ diff --git a/assets/doc/get__asset_8c_a69ca591563d52afa450af7390568d158_icgraph.map b/assets/doc/get__asset_8c_a69ca591563d52afa450af7390568d158_icgraph.map new file mode 100644 index 0000000..31f1a39 --- /dev/null +++ b/assets/doc/get__asset_8c_a69ca591563d52afa450af7390568d158_icgraph.map @@ -0,0 +1,3 @@ + + + diff --git a/assets/doc/get__asset_8c_a69ca591563d52afa450af7390568d158_icgraph.md5 b/assets/doc/get__asset_8c_a69ca591563d52afa450af7390568d158_icgraph.md5 new file mode 100644 index 0000000..8985ec1 --- /dev/null +++ b/assets/doc/get__asset_8c_a69ca591563d52afa450af7390568d158_icgraph.md5 @@ -0,0 +1 @@ +f938f22072dd4b489cb308c616dca31e \ No newline at end of file diff --git a/assets/doc/get__asset_8c_a69ca591563d52afa450af7390568d158_icgraph.png b/assets/doc/get__asset_8c_a69ca591563d52afa450af7390568d158_icgraph.png new file mode 100644 index 0000000..24f25d4 Binary files /dev/null and b/assets/doc/get__asset_8c_a69ca591563d52afa450af7390568d158_icgraph.png differ diff --git a/assets/doc/get__data_8c__incl.map b/assets/doc/get__data_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/get__data_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/get__data_8c__incl.md5 b/assets/doc/get__data_8c__incl.md5 new file mode 100644 index 0000000..d39d1a0 --- /dev/null +++ b/assets/doc/get__data_8c__incl.md5 @@ -0,0 +1 @@ +30c2998a160e5a8b6f8bf48dbfc7d24b \ No newline at end of file diff --git a/assets/doc/get__data_8c__incl.png b/assets/doc/get__data_8c__incl.png new file mode 100644 index 0000000..4f74622 Binary files /dev/null and b/assets/doc/get__data_8c__incl.png differ diff --git a/assets/doc/get__data_8c_a45b464bf71d1ce027aa11f20fd5be4ab_cgraph.map b/assets/doc/get__data_8c_a45b464bf71d1ce027aa11f20fd5be4ab_cgraph.map new file mode 100644 index 0000000..0439da2 --- /dev/null +++ b/assets/doc/get__data_8c_a45b464bf71d1ce027aa11f20fd5be4ab_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/assets/doc/get__data_8c_a45b464bf71d1ce027aa11f20fd5be4ab_cgraph.md5 b/assets/doc/get__data_8c_a45b464bf71d1ce027aa11f20fd5be4ab_cgraph.md5 new file mode 100644 index 0000000..bbfb547 --- /dev/null +++ b/assets/doc/get__data_8c_a45b464bf71d1ce027aa11f20fd5be4ab_cgraph.md5 @@ -0,0 +1 @@ +96e672ff17ab110c1dde271a5bac80b7 \ No newline at end of file diff --git a/assets/doc/get__data_8c_a45b464bf71d1ce027aa11f20fd5be4ab_cgraph.png b/assets/doc/get__data_8c_a45b464bf71d1ce027aa11f20fd5be4ab_cgraph.png new file mode 100644 index 0000000..6382f5b Binary files /dev/null and b/assets/doc/get__data_8c_a45b464bf71d1ce027aa11f20fd5be4ab_cgraph.png differ diff --git a/assets/doc/get__data_8c_a45b464bf71d1ce027aa11f20fd5be4ab_icgraph.map b/assets/doc/get__data_8c_a45b464bf71d1ce027aa11f20fd5be4ab_icgraph.map new file mode 100644 index 0000000..f03668e --- /dev/null +++ b/assets/doc/get__data_8c_a45b464bf71d1ce027aa11f20fd5be4ab_icgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/assets/doc/get__data_8c_a45b464bf71d1ce027aa11f20fd5be4ab_icgraph.md5 b/assets/doc/get__data_8c_a45b464bf71d1ce027aa11f20fd5be4ab_icgraph.md5 new file mode 100644 index 0000000..45a5e48 --- /dev/null +++ b/assets/doc/get__data_8c_a45b464bf71d1ce027aa11f20fd5be4ab_icgraph.md5 @@ -0,0 +1 @@ +2cdc3eb2b20cf14e96a13a05faae55d0 \ No newline at end of file diff --git a/assets/doc/get__data_8c_a45b464bf71d1ce027aa11f20fd5be4ab_icgraph.png b/assets/doc/get__data_8c_a45b464bf71d1ce027aa11f20fd5be4ab_icgraph.png new file mode 100644 index 0000000..0f8bd48 Binary files /dev/null and b/assets/doc/get__data_8c_a45b464bf71d1ce027aa11f20fd5be4ab_icgraph.png differ diff --git a/assets/doc/get__free_8c__incl.map b/assets/doc/get__free_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/get__free_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/get__free_8c__incl.md5 b/assets/doc/get__free_8c__incl.md5 new file mode 100644 index 0000000..2ddb983 --- /dev/null +++ b/assets/doc/get__free_8c__incl.md5 @@ -0,0 +1 @@ +cc7f751490620244a38d65e9c3301416 \ No newline at end of file diff --git a/assets/doc/get__free_8c__incl.png b/assets/doc/get__free_8c__incl.png new file mode 100644 index 0000000..dc5b008 Binary files /dev/null and b/assets/doc/get__free_8c__incl.png differ diff --git a/assets/doc/get__free_8c_a68666a5ebddc6682b6786cc604072478_icgraph.map b/assets/doc/get__free_8c_a68666a5ebddc6682b6786cc604072478_icgraph.map new file mode 100644 index 0000000..a54a47e --- /dev/null +++ b/assets/doc/get__free_8c_a68666a5ebddc6682b6786cc604072478_icgraph.map @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/assets/doc/get__free_8c_a68666a5ebddc6682b6786cc604072478_icgraph.md5 b/assets/doc/get__free_8c_a68666a5ebddc6682b6786cc604072478_icgraph.md5 new file mode 100644 index 0000000..e8eeda2 --- /dev/null +++ b/assets/doc/get__free_8c_a68666a5ebddc6682b6786cc604072478_icgraph.md5 @@ -0,0 +1 @@ +6b8f739a2ce908f9f8152062cacf1675 \ No newline at end of file diff --git a/assets/doc/get__free_8c_a68666a5ebddc6682b6786cc604072478_icgraph.png b/assets/doc/get__free_8c_a68666a5ebddc6682b6786cc604072478_icgraph.png new file mode 100644 index 0000000..b6e136e Binary files /dev/null and b/assets/doc/get__free_8c_a68666a5ebddc6682b6786cc604072478_icgraph.png differ diff --git a/assets/doc/get__line_8c__incl.map b/assets/doc/get__line_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/get__line_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/get__line_8c__incl.md5 b/assets/doc/get__line_8c__incl.md5 new file mode 100644 index 0000000..42688fb --- /dev/null +++ b/assets/doc/get__line_8c__incl.md5 @@ -0,0 +1 @@ +8b63dd57ee1f27965e4b0d6d22d9cc2c \ No newline at end of file diff --git a/assets/doc/get__line_8c__incl.png b/assets/doc/get__line_8c__incl.png new file mode 100644 index 0000000..3805c1a Binary files /dev/null and b/assets/doc/get__line_8c__incl.png differ diff --git a/assets/doc/get__line_8c_a3b3ab88391b205a30a17885bec781928_cgraph.map b/assets/doc/get__line_8c_a3b3ab88391b205a30a17885bec781928_cgraph.map new file mode 100644 index 0000000..9dd3d9d --- /dev/null +++ b/assets/doc/get__line_8c_a3b3ab88391b205a30a17885bec781928_cgraph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/assets/doc/get__line_8c_a3b3ab88391b205a30a17885bec781928_cgraph.md5 b/assets/doc/get__line_8c_a3b3ab88391b205a30a17885bec781928_cgraph.md5 new file mode 100644 index 0000000..64da25e --- /dev/null +++ b/assets/doc/get__line_8c_a3b3ab88391b205a30a17885bec781928_cgraph.md5 @@ -0,0 +1 @@ +dee6e0e6df3460851675a0a57e3ab914 \ No newline at end of file diff --git a/assets/doc/get__line_8c_a3b3ab88391b205a30a17885bec781928_cgraph.png b/assets/doc/get__line_8c_a3b3ab88391b205a30a17885bec781928_cgraph.png new file mode 100644 index 0000000..bbbd462 Binary files /dev/null and b/assets/doc/get__line_8c_a3b3ab88391b205a30a17885bec781928_cgraph.png differ diff --git a/assets/doc/get__line_8c_a3b3ab88391b205a30a17885bec781928_icgraph.map b/assets/doc/get__line_8c_a3b3ab88391b205a30a17885bec781928_icgraph.map new file mode 100644 index 0000000..2f4e7e4 --- /dev/null +++ b/assets/doc/get__line_8c_a3b3ab88391b205a30a17885bec781928_icgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/assets/doc/get__line_8c_a3b3ab88391b205a30a17885bec781928_icgraph.md5 b/assets/doc/get__line_8c_a3b3ab88391b205a30a17885bec781928_icgraph.md5 new file mode 100644 index 0000000..959d444 --- /dev/null +++ b/assets/doc/get__line_8c_a3b3ab88391b205a30a17885bec781928_icgraph.md5 @@ -0,0 +1 @@ +baa09bda1cd73ffe148186bac0ebb2e9 \ No newline at end of file diff --git a/assets/doc/get__line_8c_a3b3ab88391b205a30a17885bec781928_icgraph.png b/assets/doc/get__line_8c_a3b3ab88391b205a30a17885bec781928_icgraph.png new file mode 100644 index 0000000..752562a Binary files /dev/null and b/assets/doc/get__line_8c_a3b3ab88391b205a30a17885bec781928_icgraph.png differ diff --git a/assets/doc/get__read_8c__incl.map b/assets/doc/get__read_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/get__read_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/get__read_8c__incl.md5 b/assets/doc/get__read_8c__incl.md5 new file mode 100644 index 0000000..3c1d31d --- /dev/null +++ b/assets/doc/get__read_8c__incl.md5 @@ -0,0 +1 @@ +28bba25c14b8d05e6a8cd3c7676a627e \ No newline at end of file diff --git a/assets/doc/get__read_8c__incl.png b/assets/doc/get__read_8c__incl.png new file mode 100644 index 0000000..bd65e3d Binary files /dev/null and b/assets/doc/get__read_8c__incl.png differ diff --git a/assets/doc/get__read_8c_a652d95658664b0658eceaa09e93a3252_icgraph.map b/assets/doc/get__read_8c_a652d95658664b0658eceaa09e93a3252_icgraph.map new file mode 100644 index 0000000..e6704e0 --- /dev/null +++ b/assets/doc/get__read_8c_a652d95658664b0658eceaa09e93a3252_icgraph.map @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/assets/doc/get__read_8c_a652d95658664b0658eceaa09e93a3252_icgraph.md5 b/assets/doc/get__read_8c_a652d95658664b0658eceaa09e93a3252_icgraph.md5 new file mode 100644 index 0000000..ff55023 --- /dev/null +++ b/assets/doc/get__read_8c_a652d95658664b0658eceaa09e93a3252_icgraph.md5 @@ -0,0 +1 @@ +1c5694b4fd19aee5c820c909ce214e74 \ No newline at end of file diff --git a/assets/doc/get__read_8c_a652d95658664b0658eceaa09e93a3252_icgraph.png b/assets/doc/get__read_8c_a652d95658664b0658eceaa09e93a3252_icgraph.png new file mode 100644 index 0000000..63d5f46 Binary files /dev/null and b/assets/doc/get__read_8c_a652d95658664b0658eceaa09e93a3252_icgraph.png differ diff --git a/assets/doc/get__version_8c__incl.map b/assets/doc/get__version_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/get__version_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/get__version_8c__incl.md5 b/assets/doc/get__version_8c__incl.md5 new file mode 100644 index 0000000..5ade5f4 --- /dev/null +++ b/assets/doc/get__version_8c__incl.md5 @@ -0,0 +1 @@ +3e98b2c266286c7a914a459d59875e95 \ No newline at end of file diff --git a/assets/doc/get__version_8c__incl.png b/assets/doc/get__version_8c__incl.png new file mode 100644 index 0000000..3fb602a Binary files /dev/null and b/assets/doc/get__version_8c__incl.png differ diff --git a/assets/doc/get__version_8c_ada12bfcafdb40b62e4a24c09481b7e16_icgraph.map b/assets/doc/get__version_8c_ada12bfcafdb40b62e4a24c09481b7e16_icgraph.map new file mode 100644 index 0000000..02bcd07 --- /dev/null +++ b/assets/doc/get__version_8c_ada12bfcafdb40b62e4a24c09481b7e16_icgraph.map @@ -0,0 +1,3 @@ + + + diff --git a/assets/doc/get__version_8c_ada12bfcafdb40b62e4a24c09481b7e16_icgraph.md5 b/assets/doc/get__version_8c_ada12bfcafdb40b62e4a24c09481b7e16_icgraph.md5 new file mode 100644 index 0000000..c64a08b --- /dev/null +++ b/assets/doc/get__version_8c_ada12bfcafdb40b62e4a24c09481b7e16_icgraph.md5 @@ -0,0 +1 @@ +a096019b92b33e21d169447fb94731d1 \ No newline at end of file diff --git a/assets/doc/get__version_8c_ada12bfcafdb40b62e4a24c09481b7e16_icgraph.png b/assets/doc/get__version_8c_ada12bfcafdb40b62e4a24c09481b7e16_icgraph.png new file mode 100644 index 0000000..6a055ed Binary files /dev/null and b/assets/doc/get__version_8c_ada12bfcafdb40b62e4a24c09481b7e16_icgraph.png differ diff --git a/assets/doc/get__write_8c__incl.map b/assets/doc/get__write_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/get__write_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/get__write_8c__incl.md5 b/assets/doc/get__write_8c__incl.md5 new file mode 100644 index 0000000..8e4a8b3 --- /dev/null +++ b/assets/doc/get__write_8c__incl.md5 @@ -0,0 +1 @@ +38a48db68937cc3b359287b223660f08 \ No newline at end of file diff --git a/assets/doc/get__write_8c__incl.png b/assets/doc/get__write_8c__incl.png new file mode 100644 index 0000000..6ff8ae9 Binary files /dev/null and b/assets/doc/get__write_8c__incl.png differ diff --git a/assets/doc/get__write_8c_ae0e7a74c1e6c503c3cfd0ae5bc8702fd_icgraph.map b/assets/doc/get__write_8c_ae0e7a74c1e6c503c3cfd0ae5bc8702fd_icgraph.map new file mode 100644 index 0000000..8dbb025 --- /dev/null +++ b/assets/doc/get__write_8c_ae0e7a74c1e6c503c3cfd0ae5bc8702fd_icgraph.map @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/assets/doc/get__write_8c_ae0e7a74c1e6c503c3cfd0ae5bc8702fd_icgraph.md5 b/assets/doc/get__write_8c_ae0e7a74c1e6c503c3cfd0ae5bc8702fd_icgraph.md5 new file mode 100644 index 0000000..3ce8a36 --- /dev/null +++ b/assets/doc/get__write_8c_ae0e7a74c1e6c503c3cfd0ae5bc8702fd_icgraph.md5 @@ -0,0 +1 @@ +2a808b9ec02fa596cb6c1b0a58a8b5ef \ No newline at end of file diff --git a/assets/doc/get__write_8c_ae0e7a74c1e6c503c3cfd0ae5bc8702fd_icgraph.png b/assets/doc/get__write_8c_ae0e7a74c1e6c503c3cfd0ae5bc8702fd_icgraph.png new file mode 100644 index 0000000..619440f Binary files /dev/null and b/assets/doc/get__write_8c_ae0e7a74c1e6c503c3cfd0ae5bc8702fd_icgraph.png differ diff --git a/assets/doc/graph_legend.md5 b/assets/doc/graph_legend.md5 new file mode 100644 index 0000000..f955910 --- /dev/null +++ b/assets/doc/graph_legend.md5 @@ -0,0 +1 @@ +9db1b0ad00397ef229eb2a8ab06ab3c2 \ No newline at end of file diff --git a/assets/doc/graph_legend.png b/assets/doc/graph_legend.png new file mode 100644 index 0000000..8e50498 Binary files /dev/null and b/assets/doc/graph_legend.png differ diff --git a/assets/doc/handle__accept_8c__incl.map b/assets/doc/handle__accept_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/handle__accept_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/handle__accept_8c__incl.md5 b/assets/doc/handle__accept_8c__incl.md5 new file mode 100644 index 0000000..1cf3656 --- /dev/null +++ b/assets/doc/handle__accept_8c__incl.md5 @@ -0,0 +1 @@ +0203a2f52ca68af200f8aec82f6fe9e7 \ No newline at end of file diff --git a/assets/doc/handle__accept_8c__incl.png b/assets/doc/handle__accept_8c__incl.png new file mode 100644 index 0000000..8e430ba Binary files /dev/null and b/assets/doc/handle__accept_8c__incl.png differ diff --git a/assets/doc/handle__accept_8c_abc50e74ce8e5c91817ad8cc1ca167541_cgraph.map b/assets/doc/handle__accept_8c_abc50e74ce8e5c91817ad8cc1ca167541_cgraph.map new file mode 100644 index 0000000..244b8c6 --- /dev/null +++ b/assets/doc/handle__accept_8c_abc50e74ce8e5c91817ad8cc1ca167541_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/assets/doc/handle__accept_8c_abc50e74ce8e5c91817ad8cc1ca167541_cgraph.md5 b/assets/doc/handle__accept_8c_abc50e74ce8e5c91817ad8cc1ca167541_cgraph.md5 new file mode 100644 index 0000000..a752744 --- /dev/null +++ b/assets/doc/handle__accept_8c_abc50e74ce8e5c91817ad8cc1ca167541_cgraph.md5 @@ -0,0 +1 @@ +ae130674a3b5cd4821330cdcc8283b9e \ No newline at end of file diff --git a/assets/doc/handle__accept_8c_abc50e74ce8e5c91817ad8cc1ca167541_cgraph.png b/assets/doc/handle__accept_8c_abc50e74ce8e5c91817ad8cc1ca167541_cgraph.png new file mode 100644 index 0000000..d04ab3d Binary files /dev/null and b/assets/doc/handle__accept_8c_abc50e74ce8e5c91817ad8cc1ca167541_cgraph.png differ diff --git a/assets/doc/handle__accept_8c_abc50e74ce8e5c91817ad8cc1ca167541_icgraph.map b/assets/doc/handle__accept_8c_abc50e74ce8e5c91817ad8cc1ca167541_icgraph.map new file mode 100644 index 0000000..30e34ce --- /dev/null +++ b/assets/doc/handle__accept_8c_abc50e74ce8e5c91817ad8cc1ca167541_icgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/assets/doc/handle__accept_8c_abc50e74ce8e5c91817ad8cc1ca167541_icgraph.md5 b/assets/doc/handle__accept_8c_abc50e74ce8e5c91817ad8cc1ca167541_icgraph.md5 new file mode 100644 index 0000000..48e663a --- /dev/null +++ b/assets/doc/handle__accept_8c_abc50e74ce8e5c91817ad8cc1ca167541_icgraph.md5 @@ -0,0 +1 @@ +958c91257d6a31570b210a4f84f4912f \ No newline at end of file diff --git a/assets/doc/handle__accept_8c_abc50e74ce8e5c91817ad8cc1ca167541_icgraph.png b/assets/doc/handle__accept_8c_abc50e74ce8e5c91817ad8cc1ca167541_icgraph.png new file mode 100644 index 0000000..2b2a332 Binary files /dev/null and b/assets/doc/handle__accept_8c_abc50e74ce8e5c91817ad8cc1ca167541_icgraph.png differ diff --git a/assets/doc/has__keep__alive_8c__incl.map b/assets/doc/has__keep__alive_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/has__keep__alive_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/has__keep__alive_8c__incl.md5 b/assets/doc/has__keep__alive_8c__incl.md5 new file mode 100644 index 0000000..0373353 --- /dev/null +++ b/assets/doc/has__keep__alive_8c__incl.md5 @@ -0,0 +1 @@ +ba21479f6b94b9b8837ac5bd6ac48876 \ No newline at end of file diff --git a/assets/doc/has__keep__alive_8c__incl.png b/assets/doc/has__keep__alive_8c__incl.png new file mode 100644 index 0000000..e420c4f Binary files /dev/null and b/assets/doc/has__keep__alive_8c__incl.png differ diff --git a/assets/doc/has__keep__alive_8c_a5379089b8d4ee009c4d7ad6c87e9d3ca_cgraph.map b/assets/doc/has__keep__alive_8c_a5379089b8d4ee009c4d7ad6c87e9d3ca_cgraph.map new file mode 100644 index 0000000..8950ca3 --- /dev/null +++ b/assets/doc/has__keep__alive_8c_a5379089b8d4ee009c4d7ad6c87e9d3ca_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/assets/doc/has__keep__alive_8c_a5379089b8d4ee009c4d7ad6c87e9d3ca_cgraph.md5 b/assets/doc/has__keep__alive_8c_a5379089b8d4ee009c4d7ad6c87e9d3ca_cgraph.md5 new file mode 100644 index 0000000..63003f1 --- /dev/null +++ b/assets/doc/has__keep__alive_8c_a5379089b8d4ee009c4d7ad6c87e9d3ca_cgraph.md5 @@ -0,0 +1 @@ +ada2cad95c1f65f793dce58e6ccb9adb \ No newline at end of file diff --git a/assets/doc/has__keep__alive_8c_a5379089b8d4ee009c4d7ad6c87e9d3ca_cgraph.png b/assets/doc/has__keep__alive_8c_a5379089b8d4ee009c4d7ad6c87e9d3ca_cgraph.png new file mode 100644 index 0000000..4e3846d Binary files /dev/null and b/assets/doc/has__keep__alive_8c_a5379089b8d4ee009c4d7ad6c87e9d3ca_cgraph.png differ diff --git a/assets/doc/has__keep__alive_8c_a5379089b8d4ee009c4d7ad6c87e9d3ca_icgraph.map b/assets/doc/has__keep__alive_8c_a5379089b8d4ee009c4d7ad6c87e9d3ca_icgraph.map new file mode 100644 index 0000000..1fa0092 --- /dev/null +++ b/assets/doc/has__keep__alive_8c_a5379089b8d4ee009c4d7ad6c87e9d3ca_icgraph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/assets/doc/has__keep__alive_8c_a5379089b8d4ee009c4d7ad6c87e9d3ca_icgraph.md5 b/assets/doc/has__keep__alive_8c_a5379089b8d4ee009c4d7ad6c87e9d3ca_icgraph.md5 new file mode 100644 index 0000000..24944d9 --- /dev/null +++ b/assets/doc/has__keep__alive_8c_a5379089b8d4ee009c4d7ad6c87e9d3ca_icgraph.md5 @@ -0,0 +1 @@ +4f49f6c1ac39a55e92c7fdc4d3858025 \ No newline at end of file diff --git a/assets/doc/has__keep__alive_8c_a5379089b8d4ee009c4d7ad6c87e9d3ca_icgraph.png b/assets/doc/has__keep__alive_8c_a5379089b8d4ee009c4d7ad6c87e9d3ca_icgraph.png new file mode 100644 index 0000000..4a97e80 Binary files /dev/null and b/assets/doc/has__keep__alive_8c_a5379089b8d4ee009c4d7ad6c87e9d3ca_icgraph.png differ diff --git a/assets/doc/has__valid__method_8c__incl.map b/assets/doc/has__valid__method_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/has__valid__method_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/has__valid__method_8c__incl.md5 b/assets/doc/has__valid__method_8c__incl.md5 new file mode 100644 index 0000000..b405a87 --- /dev/null +++ b/assets/doc/has__valid__method_8c__incl.md5 @@ -0,0 +1 @@ +13865536b62b55699f24c3a81da65de3 \ No newline at end of file diff --git a/assets/doc/has__valid__method_8c__incl.png b/assets/doc/has__valid__method_8c__incl.png new file mode 100644 index 0000000..91c56d8 Binary files /dev/null and b/assets/doc/has__valid__method_8c__incl.png differ diff --git a/assets/doc/has__valid__version_8c__incl.map b/assets/doc/has__valid__version_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/has__valid__version_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/has__valid__version_8c__incl.md5 b/assets/doc/has__valid__version_8c__incl.md5 new file mode 100644 index 0000000..946a393 --- /dev/null +++ b/assets/doc/has__valid__version_8c__incl.md5 @@ -0,0 +1 @@ +b8ec6b41557c757cd3746f994df5b18e \ No newline at end of file diff --git a/assets/doc/has__valid__version_8c__incl.png b/assets/doc/has__valid__version_8c__incl.png new file mode 100644 index 0000000..f334782 Binary files /dev/null and b/assets/doc/has__valid__version_8c__incl.png differ diff --git a/assets/doc/has__valid__version_8c_ac976f1351e95c6cfaadc92a3b250e3e9_cgraph.map b/assets/doc/has__valid__version_8c_ac976f1351e95c6cfaadc92a3b250e3e9_cgraph.map new file mode 100644 index 0000000..5c926b4 --- /dev/null +++ b/assets/doc/has__valid__version_8c_ac976f1351e95c6cfaadc92a3b250e3e9_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/assets/doc/has__valid__version_8c_ac976f1351e95c6cfaadc92a3b250e3e9_cgraph.md5 b/assets/doc/has__valid__version_8c_ac976f1351e95c6cfaadc92a3b250e3e9_cgraph.md5 new file mode 100644 index 0000000..35d076a --- /dev/null +++ b/assets/doc/has__valid__version_8c_ac976f1351e95c6cfaadc92a3b250e3e9_cgraph.md5 @@ -0,0 +1 @@ +917e6a351567b4a7d72da0e1ca02289f \ No newline at end of file diff --git a/assets/doc/has__valid__version_8c_ac976f1351e95c6cfaadc92a3b250e3e9_cgraph.png b/assets/doc/has__valid__version_8c_ac976f1351e95c6cfaadc92a3b250e3e9_cgraph.png new file mode 100644 index 0000000..fa6475e Binary files /dev/null and b/assets/doc/has__valid__version_8c_ac976f1351e95c6cfaadc92a3b250e3e9_cgraph.png differ diff --git a/assets/doc/hash_2add_8c__incl.map b/assets/doc/hash_2add_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/hash_2add_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/hash_2add_8c__incl.md5 b/assets/doc/hash_2add_8c__incl.md5 new file mode 100644 index 0000000..b05cde7 --- /dev/null +++ b/assets/doc/hash_2add_8c__incl.md5 @@ -0,0 +1 @@ +8890fc3dc20c69c86ba0780e37838afe \ No newline at end of file diff --git a/assets/doc/hash_2add_8c__incl.png b/assets/doc/hash_2add_8c__incl.png new file mode 100644 index 0000000..02d58e6 Binary files /dev/null and b/assets/doc/hash_2add_8c__incl.png differ diff --git a/assets/doc/hash_2add_8c_a766059f8dbcc1b55fa3d6a9f877ce945_cgraph.map b/assets/doc/hash_2add_8c_a766059f8dbcc1b55fa3d6a9f877ce945_cgraph.map new file mode 100644 index 0000000..cc75cd0 --- /dev/null +++ b/assets/doc/hash_2add_8c_a766059f8dbcc1b55fa3d6a9f877ce945_cgraph.map @@ -0,0 +1,3 @@ + + + diff --git a/assets/doc/hash_2add_8c_a766059f8dbcc1b55fa3d6a9f877ce945_cgraph.md5 b/assets/doc/hash_2add_8c_a766059f8dbcc1b55fa3d6a9f877ce945_cgraph.md5 new file mode 100644 index 0000000..a521773 --- /dev/null +++ b/assets/doc/hash_2add_8c_a766059f8dbcc1b55fa3d6a9f877ce945_cgraph.md5 @@ -0,0 +1 @@ +cbe2af8af687f6fe7b01c076e72c972a \ No newline at end of file diff --git a/assets/doc/hash_2add_8c_a766059f8dbcc1b55fa3d6a9f877ce945_cgraph.png b/assets/doc/hash_2add_8c_a766059f8dbcc1b55fa3d6a9f877ce945_cgraph.png new file mode 100644 index 0000000..9bafecd Binary files /dev/null and b/assets/doc/hash_2add_8c_a766059f8dbcc1b55fa3d6a9f877ce945_cgraph.png differ diff --git a/assets/doc/hash_2add_8c_a766059f8dbcc1b55fa3d6a9f877ce945_icgraph.map b/assets/doc/hash_2add_8c_a766059f8dbcc1b55fa3d6a9f877ce945_icgraph.map new file mode 100644 index 0000000..3fba375 --- /dev/null +++ b/assets/doc/hash_2add_8c_a766059f8dbcc1b55fa3d6a9f877ce945_icgraph.map @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/assets/doc/hash_2add_8c_a766059f8dbcc1b55fa3d6a9f877ce945_icgraph.md5 b/assets/doc/hash_2add_8c_a766059f8dbcc1b55fa3d6a9f877ce945_icgraph.md5 new file mode 100644 index 0000000..3e2974a --- /dev/null +++ b/assets/doc/hash_2add_8c_a766059f8dbcc1b55fa3d6a9f877ce945_icgraph.md5 @@ -0,0 +1 @@ +9c2bc6ea617d564829b24683c88801b1 \ No newline at end of file diff --git a/assets/doc/hash_2add_8c_a766059f8dbcc1b55fa3d6a9f877ce945_icgraph.png b/assets/doc/hash_2add_8c_a766059f8dbcc1b55fa3d6a9f877ce945_icgraph.png new file mode 100644 index 0000000..ee79bb7 Binary files /dev/null and b/assets/doc/hash_2add_8c_a766059f8dbcc1b55fa3d6a9f877ce945_icgraph.png differ diff --git a/assets/doc/hash_2delete_8c__incl.map b/assets/doc/hash_2delete_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/hash_2delete_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/hash_2delete_8c__incl.md5 b/assets/doc/hash_2delete_8c__incl.md5 new file mode 100644 index 0000000..f226993 --- /dev/null +++ b/assets/doc/hash_2delete_8c__incl.md5 @@ -0,0 +1 @@ +98e64c38fdfc76e75b6674a134cbf3d9 \ No newline at end of file diff --git a/assets/doc/hash_2delete_8c__incl.png b/assets/doc/hash_2delete_8c__incl.png new file mode 100644 index 0000000..4800a20 Binary files /dev/null and b/assets/doc/hash_2delete_8c__incl.png differ diff --git a/assets/doc/hash_2delete_8c_a71b435ecdfcdc89331b97dc927133731_cgraph.map b/assets/doc/hash_2delete_8c_a71b435ecdfcdc89331b97dc927133731_cgraph.map new file mode 100644 index 0000000..a1d2782 --- /dev/null +++ b/assets/doc/hash_2delete_8c_a71b435ecdfcdc89331b97dc927133731_cgraph.map @@ -0,0 +1,3 @@ + + + diff --git a/assets/doc/hash_2delete_8c_a71b435ecdfcdc89331b97dc927133731_cgraph.md5 b/assets/doc/hash_2delete_8c_a71b435ecdfcdc89331b97dc927133731_cgraph.md5 new file mode 100644 index 0000000..273baf8 --- /dev/null +++ b/assets/doc/hash_2delete_8c_a71b435ecdfcdc89331b97dc927133731_cgraph.md5 @@ -0,0 +1 @@ +85565cfe69a80906501ab95b8733dbe0 \ No newline at end of file diff --git a/assets/doc/hash_2delete_8c_a71b435ecdfcdc89331b97dc927133731_cgraph.png b/assets/doc/hash_2delete_8c_a71b435ecdfcdc89331b97dc927133731_cgraph.png new file mode 100644 index 0000000..e402c98 Binary files /dev/null and b/assets/doc/hash_2delete_8c_a71b435ecdfcdc89331b97dc927133731_cgraph.png differ diff --git a/assets/doc/hash_2get_8c__incl.map b/assets/doc/hash_2get_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/hash_2get_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/hash_2get_8c__incl.md5 b/assets/doc/hash_2get_8c__incl.md5 new file mode 100644 index 0000000..c6d4f20 --- /dev/null +++ b/assets/doc/hash_2get_8c__incl.md5 @@ -0,0 +1 @@ +179fd7b8aa9dee781cfdddbd74386bb6 \ No newline at end of file diff --git a/assets/doc/hash_2get_8c__incl.png b/assets/doc/hash_2get_8c__incl.png new file mode 100644 index 0000000..bda9558 Binary files /dev/null and b/assets/doc/hash_2get_8c__incl.png differ diff --git a/assets/doc/hash_2get_8c_a32e5b0bb67587b88cebae386625b9de7_cgraph.map b/assets/doc/hash_2get_8c_a32e5b0bb67587b88cebae386625b9de7_cgraph.map new file mode 100644 index 0000000..ff721a8 --- /dev/null +++ b/assets/doc/hash_2get_8c_a32e5b0bb67587b88cebae386625b9de7_cgraph.map @@ -0,0 +1,3 @@ + + + diff --git a/assets/doc/hash_2get_8c_a32e5b0bb67587b88cebae386625b9de7_cgraph.md5 b/assets/doc/hash_2get_8c_a32e5b0bb67587b88cebae386625b9de7_cgraph.md5 new file mode 100644 index 0000000..1ab3d4b --- /dev/null +++ b/assets/doc/hash_2get_8c_a32e5b0bb67587b88cebae386625b9de7_cgraph.md5 @@ -0,0 +1 @@ +171b6199dcdcdd84fc37d2b7fcd1247f \ No newline at end of file diff --git a/assets/doc/hash_2get_8c_a32e5b0bb67587b88cebae386625b9de7_cgraph.png b/assets/doc/hash_2get_8c_a32e5b0bb67587b88cebae386625b9de7_cgraph.png new file mode 100644 index 0000000..f8b5ebf Binary files /dev/null and b/assets/doc/hash_2get_8c_a32e5b0bb67587b88cebae386625b9de7_cgraph.png differ diff --git a/assets/doc/hash_2get_8c_a32e5b0bb67587b88cebae386625b9de7_icgraph.map b/assets/doc/hash_2get_8c_a32e5b0bb67587b88cebae386625b9de7_icgraph.map new file mode 100644 index 0000000..4ead11d --- /dev/null +++ b/assets/doc/hash_2get_8c_a32e5b0bb67587b88cebae386625b9de7_icgraph.map @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/assets/doc/hash_2get_8c_a32e5b0bb67587b88cebae386625b9de7_icgraph.md5 b/assets/doc/hash_2get_8c_a32e5b0bb67587b88cebae386625b9de7_icgraph.md5 new file mode 100644 index 0000000..00f841d --- /dev/null +++ b/assets/doc/hash_2get_8c_a32e5b0bb67587b88cebae386625b9de7_icgraph.md5 @@ -0,0 +1 @@ +798d29e133e509fd7322294b1984821d \ No newline at end of file diff --git a/assets/doc/hash_2get_8c_a32e5b0bb67587b88cebae386625b9de7_icgraph.png b/assets/doc/hash_2get_8c_a32e5b0bb67587b88cebae386625b9de7_icgraph.png new file mode 100644 index 0000000..217a195 Binary files /dev/null and b/assets/doc/hash_2get_8c_a32e5b0bb67587b88cebae386625b9de7_icgraph.png differ diff --git a/assets/doc/hash_2hash_8c__incl.map b/assets/doc/hash_2hash_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/hash_2hash_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/hash_2hash_8c__incl.md5 b/assets/doc/hash_2hash_8c__incl.md5 new file mode 100644 index 0000000..48c3ac6 --- /dev/null +++ b/assets/doc/hash_2hash_8c__incl.md5 @@ -0,0 +1 @@ +9adf3070a6ca62a40460c78fd5c01adc \ No newline at end of file diff --git a/assets/doc/hash_2hash_8c__incl.png b/assets/doc/hash_2hash_8c__incl.png new file mode 100644 index 0000000..a95df2b Binary files /dev/null and b/assets/doc/hash_2hash_8c__incl.png differ diff --git a/assets/doc/hash_2hash_8h__dep__incl.map b/assets/doc/hash_2hash_8h__dep__incl.map new file mode 100644 index 0000000..015edf6 --- /dev/null +++ b/assets/doc/hash_2hash_8h__dep__incl.map @@ -0,0 +1,3 @@ + + + diff --git a/assets/doc/hash_2hash_8h__dep__incl.md5 b/assets/doc/hash_2hash_8h__dep__incl.md5 new file mode 100644 index 0000000..cf1b6a9 --- /dev/null +++ b/assets/doc/hash_2hash_8h__dep__incl.md5 @@ -0,0 +1 @@ +df4f818a768a2f0852bed6f6d932f6f4 \ No newline at end of file diff --git a/assets/doc/hash_2hash_8h__dep__incl.png b/assets/doc/hash_2hash_8h__dep__incl.png new file mode 100644 index 0000000..5caaade Binary files /dev/null and b/assets/doc/hash_2hash_8h__dep__incl.png differ diff --git a/assets/doc/hash_2hash_8h__incl.map b/assets/doc/hash_2hash_8h__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/hash_2hash_8h__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/hash_2hash_8h__incl.md5 b/assets/doc/hash_2hash_8h__incl.md5 new file mode 100644 index 0000000..a8c0622 --- /dev/null +++ b/assets/doc/hash_2hash_8h__incl.md5 @@ -0,0 +1 @@ +86f0527213e0d9f2280df9dd3bcaa4f3 \ No newline at end of file diff --git a/assets/doc/hash_2hash_8h__incl.png b/assets/doc/hash_2hash_8h__incl.png new file mode 100644 index 0000000..10d54b4 Binary files /dev/null and b/assets/doc/hash_2hash_8h__incl.png differ diff --git a/assets/doc/hash_2hash_8h_a15c5c8fa9517a5dadcdbdd024f3dea88_cgraph.map b/assets/doc/hash_2hash_8h_a15c5c8fa9517a5dadcdbdd024f3dea88_cgraph.map new file mode 100644 index 0000000..cc75cd0 --- /dev/null +++ b/assets/doc/hash_2hash_8h_a15c5c8fa9517a5dadcdbdd024f3dea88_cgraph.map @@ -0,0 +1,3 @@ + + + diff --git a/assets/doc/hash_2hash_8h_a15c5c8fa9517a5dadcdbdd024f3dea88_cgraph.md5 b/assets/doc/hash_2hash_8h_a15c5c8fa9517a5dadcdbdd024f3dea88_cgraph.md5 new file mode 100644 index 0000000..a521773 --- /dev/null +++ b/assets/doc/hash_2hash_8h_a15c5c8fa9517a5dadcdbdd024f3dea88_cgraph.md5 @@ -0,0 +1 @@ +cbe2af8af687f6fe7b01c076e72c972a \ No newline at end of file diff --git a/assets/doc/hash_2hash_8h_a15c5c8fa9517a5dadcdbdd024f3dea88_cgraph.png b/assets/doc/hash_2hash_8h_a15c5c8fa9517a5dadcdbdd024f3dea88_cgraph.png new file mode 100644 index 0000000..9bafecd Binary files /dev/null and b/assets/doc/hash_2hash_8h_a15c5c8fa9517a5dadcdbdd024f3dea88_cgraph.png differ diff --git a/assets/doc/hash_2hash_8h_a15c5c8fa9517a5dadcdbdd024f3dea88_icgraph.map b/assets/doc/hash_2hash_8h_a15c5c8fa9517a5dadcdbdd024f3dea88_icgraph.map new file mode 100644 index 0000000..3fba375 --- /dev/null +++ b/assets/doc/hash_2hash_8h_a15c5c8fa9517a5dadcdbdd024f3dea88_icgraph.map @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/assets/doc/hash_2hash_8h_a15c5c8fa9517a5dadcdbdd024f3dea88_icgraph.md5 b/assets/doc/hash_2hash_8h_a15c5c8fa9517a5dadcdbdd024f3dea88_icgraph.md5 new file mode 100644 index 0000000..3e2974a --- /dev/null +++ b/assets/doc/hash_2hash_8h_a15c5c8fa9517a5dadcdbdd024f3dea88_icgraph.md5 @@ -0,0 +1 @@ +9c2bc6ea617d564829b24683c88801b1 \ No newline at end of file diff --git a/assets/doc/hash_2hash_8h_a15c5c8fa9517a5dadcdbdd024f3dea88_icgraph.png b/assets/doc/hash_2hash_8h_a15c5c8fa9517a5dadcdbdd024f3dea88_icgraph.png new file mode 100644 index 0000000..ee79bb7 Binary files /dev/null and b/assets/doc/hash_2hash_8h_a15c5c8fa9517a5dadcdbdd024f3dea88_icgraph.png differ diff --git a/assets/doc/hash_2hash_8h_a984bb5e7db9e115a0efff9fd6972734a_cgraph.map b/assets/doc/hash_2hash_8h_a984bb5e7db9e115a0efff9fd6972734a_cgraph.map new file mode 100644 index 0000000..a1d2782 --- /dev/null +++ b/assets/doc/hash_2hash_8h_a984bb5e7db9e115a0efff9fd6972734a_cgraph.map @@ -0,0 +1,3 @@ + + + diff --git a/assets/doc/hash_2hash_8h_a984bb5e7db9e115a0efff9fd6972734a_cgraph.md5 b/assets/doc/hash_2hash_8h_a984bb5e7db9e115a0efff9fd6972734a_cgraph.md5 new file mode 100644 index 0000000..273baf8 --- /dev/null +++ b/assets/doc/hash_2hash_8h_a984bb5e7db9e115a0efff9fd6972734a_cgraph.md5 @@ -0,0 +1 @@ +85565cfe69a80906501ab95b8733dbe0 \ No newline at end of file diff --git a/assets/doc/hash_2hash_8h_a984bb5e7db9e115a0efff9fd6972734a_cgraph.png b/assets/doc/hash_2hash_8h_a984bb5e7db9e115a0efff9fd6972734a_cgraph.png new file mode 100644 index 0000000..e402c98 Binary files /dev/null and b/assets/doc/hash_2hash_8h_a984bb5e7db9e115a0efff9fd6972734a_cgraph.png differ diff --git a/assets/doc/hash_2hash_8h_ae3424797442ac15f9f88e702c98ddafb_icgraph.map b/assets/doc/hash_2hash_8h_ae3424797442ac15f9f88e702c98ddafb_icgraph.map new file mode 100644 index 0000000..67c472c --- /dev/null +++ b/assets/doc/hash_2hash_8h_ae3424797442ac15f9f88e702c98ddafb_icgraph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/assets/doc/hash_2hash_8h_ae3424797442ac15f9f88e702c98ddafb_icgraph.md5 b/assets/doc/hash_2hash_8h_ae3424797442ac15f9f88e702c98ddafb_icgraph.md5 new file mode 100644 index 0000000..bc92624 --- /dev/null +++ b/assets/doc/hash_2hash_8h_ae3424797442ac15f9f88e702c98ddafb_icgraph.md5 @@ -0,0 +1 @@ +10020865742e998c750c1ace5c04932b \ No newline at end of file diff --git a/assets/doc/hash_2hash_8h_ae3424797442ac15f9f88e702c98ddafb_icgraph.png b/assets/doc/hash_2hash_8h_ae3424797442ac15f9f88e702c98ddafb_icgraph.png new file mode 100644 index 0000000..bf9b586 Binary files /dev/null and b/assets/doc/hash_2hash_8h_ae3424797442ac15f9f88e702c98ddafb_icgraph.png differ diff --git a/assets/doc/hash_2hash_8h_ae63f5dffd0f7894f09a5f9b725cb6113_cgraph.map b/assets/doc/hash_2hash_8h_ae63f5dffd0f7894f09a5f9b725cb6113_cgraph.map new file mode 100644 index 0000000..ff721a8 --- /dev/null +++ b/assets/doc/hash_2hash_8h_ae63f5dffd0f7894f09a5f9b725cb6113_cgraph.map @@ -0,0 +1,3 @@ + + + diff --git a/assets/doc/hash_2hash_8h_ae63f5dffd0f7894f09a5f9b725cb6113_cgraph.md5 b/assets/doc/hash_2hash_8h_ae63f5dffd0f7894f09a5f9b725cb6113_cgraph.md5 new file mode 100644 index 0000000..1ab3d4b --- /dev/null +++ b/assets/doc/hash_2hash_8h_ae63f5dffd0f7894f09a5f9b725cb6113_cgraph.md5 @@ -0,0 +1 @@ +171b6199dcdcdd84fc37d2b7fcd1247f \ No newline at end of file diff --git a/assets/doc/hash_2hash_8h_ae63f5dffd0f7894f09a5f9b725cb6113_cgraph.png b/assets/doc/hash_2hash_8h_ae63f5dffd0f7894f09a5f9b725cb6113_cgraph.png new file mode 100644 index 0000000..f8b5ebf Binary files /dev/null and b/assets/doc/hash_2hash_8h_ae63f5dffd0f7894f09a5f9b725cb6113_cgraph.png differ diff --git a/assets/doc/hash_2hash_8h_ae63f5dffd0f7894f09a5f9b725cb6113_icgraph.map b/assets/doc/hash_2hash_8h_ae63f5dffd0f7894f09a5f9b725cb6113_icgraph.map new file mode 100644 index 0000000..4ead11d --- /dev/null +++ b/assets/doc/hash_2hash_8h_ae63f5dffd0f7894f09a5f9b725cb6113_icgraph.map @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/assets/doc/hash_2hash_8h_ae63f5dffd0f7894f09a5f9b725cb6113_icgraph.md5 b/assets/doc/hash_2hash_8h_ae63f5dffd0f7894f09a5f9b725cb6113_icgraph.md5 new file mode 100644 index 0000000..00f841d --- /dev/null +++ b/assets/doc/hash_2hash_8h_ae63f5dffd0f7894f09a5f9b725cb6113_icgraph.md5 @@ -0,0 +1 @@ +798d29e133e509fd7322294b1984821d \ No newline at end of file diff --git a/assets/doc/hash_2hash_8h_ae63f5dffd0f7894f09a5f9b725cb6113_icgraph.png b/assets/doc/hash_2hash_8h_ae63f5dffd0f7894f09a5f9b725cb6113_icgraph.png new file mode 100644 index 0000000..217a195 Binary files /dev/null and b/assets/doc/hash_2hash_8h_ae63f5dffd0f7894f09a5f9b725cb6113_icgraph.png differ diff --git a/assets/doc/hash_8h__incl.map b/assets/doc/hash_8h__incl.map new file mode 100644 index 0000000..cc7cb6b --- /dev/null +++ b/assets/doc/hash_8h__incl.map @@ -0,0 +1,5 @@ + + + + + diff --git a/assets/doc/hash_8h__incl.md5 b/assets/doc/hash_8h__incl.md5 new file mode 100644 index 0000000..78187d1 --- /dev/null +++ b/assets/doc/hash_8h__incl.md5 @@ -0,0 +1 @@ +c0b401caa5c50341defc9a5871179cbb \ No newline at end of file diff --git a/assets/doc/hash_8h__incl.png b/assets/doc/hash_8h__incl.png new file mode 100644 index 0000000..d8566ce Binary files /dev/null and b/assets/doc/hash_8h__incl.png differ diff --git a/assets/doc/hashable_8c__incl.map b/assets/doc/hashable_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/hashable_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/hashable_8c__incl.md5 b/assets/doc/hashable_8c__incl.md5 new file mode 100644 index 0000000..e1e5a70 --- /dev/null +++ b/assets/doc/hashable_8c__incl.md5 @@ -0,0 +1 @@ +b5854d65c14734137aa702a1308f47d2 \ No newline at end of file diff --git a/assets/doc/hashable_8c__incl.png b/assets/doc/hashable_8c__incl.png new file mode 100644 index 0000000..01bfd80 Binary files /dev/null and b/assets/doc/hashable_8c__incl.png differ diff --git a/assets/doc/hashable_8c_a7a66c599cd6d35c87cb9cc5b2f1fd20b_icgraph.map b/assets/doc/hashable_8c_a7a66c599cd6d35c87cb9cc5b2f1fd20b_icgraph.map new file mode 100644 index 0000000..b525dfa --- /dev/null +++ b/assets/doc/hashable_8c_a7a66c599cd6d35c87cb9cc5b2f1fd20b_icgraph.map @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/assets/doc/hashable_8c_a7a66c599cd6d35c87cb9cc5b2f1fd20b_icgraph.md5 b/assets/doc/hashable_8c_a7a66c599cd6d35c87cb9cc5b2f1fd20b_icgraph.md5 new file mode 100644 index 0000000..14a24f3 --- /dev/null +++ b/assets/doc/hashable_8c_a7a66c599cd6d35c87cb9cc5b2f1fd20b_icgraph.md5 @@ -0,0 +1 @@ +76a53707e7afae3d71e2cbb25bfc558c \ No newline at end of file diff --git a/assets/doc/hashable_8c_a7a66c599cd6d35c87cb9cc5b2f1fd20b_icgraph.png b/assets/doc/hashable_8c_a7a66c599cd6d35c87cb9cc5b2f1fd20b_icgraph.png new file mode 100644 index 0000000..5ec1a89 Binary files /dev/null and b/assets/doc/hashable_8c_a7a66c599cd6d35c87cb9cc5b2f1fd20b_icgraph.png differ diff --git a/assets/doc/hashable_8h__dep__incl.map b/assets/doc/hashable_8h__dep__incl.map new file mode 100644 index 0000000..1955721 --- /dev/null +++ b/assets/doc/hashable_8h__dep__incl.map @@ -0,0 +1,3 @@ + + + diff --git a/assets/doc/hashable_8h__dep__incl.md5 b/assets/doc/hashable_8h__dep__incl.md5 new file mode 100644 index 0000000..84897a5 --- /dev/null +++ b/assets/doc/hashable_8h__dep__incl.md5 @@ -0,0 +1 @@ +4cc664f6de40aecfc8eb8d6658ad9787 \ No newline at end of file diff --git a/assets/doc/hashable_8h__dep__incl.png b/assets/doc/hashable_8h__dep__incl.png new file mode 100644 index 0000000..a6dbc3a Binary files /dev/null and b/assets/doc/hashable_8h__dep__incl.png differ diff --git a/assets/doc/hashable_8h__incl.map b/assets/doc/hashable_8h__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/hashable_8h__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/hashable_8h__incl.md5 b/assets/doc/hashable_8h__incl.md5 new file mode 100644 index 0000000..286fc62 --- /dev/null +++ b/assets/doc/hashable_8h__incl.md5 @@ -0,0 +1 @@ +378ea8bf158d07d1fc62e03930e7e827 \ No newline at end of file diff --git a/assets/doc/hashable_8h__incl.png b/assets/doc/hashable_8h__incl.png new file mode 100644 index 0000000..e03db88 Binary files /dev/null and b/assets/doc/hashable_8h__incl.png differ diff --git a/assets/doc/hashable_8h_a18043293eb74b036ff3adf679afd7606_icgraph.map b/assets/doc/hashable_8h_a18043293eb74b036ff3adf679afd7606_icgraph.map new file mode 100644 index 0000000..b525dfa --- /dev/null +++ b/assets/doc/hashable_8h_a18043293eb74b036ff3adf679afd7606_icgraph.map @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/assets/doc/hashable_8h_a18043293eb74b036ff3adf679afd7606_icgraph.md5 b/assets/doc/hashable_8h_a18043293eb74b036ff3adf679afd7606_icgraph.md5 new file mode 100644 index 0000000..14a24f3 --- /dev/null +++ b/assets/doc/hashable_8h_a18043293eb74b036ff3adf679afd7606_icgraph.md5 @@ -0,0 +1 @@ +76a53707e7afae3d71e2cbb25bfc558c \ No newline at end of file diff --git a/assets/doc/hashable_8h_a18043293eb74b036ff3adf679afd7606_icgraph.png b/assets/doc/hashable_8h_a18043293eb74b036ff3adf679afd7606_icgraph.png new file mode 100644 index 0000000..5ec1a89 Binary files /dev/null and b/assets/doc/hashable_8h_a18043293eb74b036ff3adf679afd7606_icgraph.png differ diff --git a/assets/doc/header_8c__incl.map b/assets/doc/header_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/header_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/header_8c__incl.md5 b/assets/doc/header_8c__incl.md5 new file mode 100644 index 0000000..575a836 --- /dev/null +++ b/assets/doc/header_8c__incl.md5 @@ -0,0 +1 @@ +f54e64cac7cf1d1ff33b4372100adf44 \ No newline at end of file diff --git a/assets/doc/header_8c__incl.png b/assets/doc/header_8c__incl.png new file mode 100644 index 0000000..8cc55bc Binary files /dev/null and b/assets/doc/header_8c__incl.png differ diff --git a/assets/doc/header_8h__dep__incl.map b/assets/doc/header_8h__dep__incl.map new file mode 100644 index 0000000..b48140b --- /dev/null +++ b/assets/doc/header_8h__dep__incl.map @@ -0,0 +1,3 @@ + + + diff --git a/assets/doc/header_8h__dep__incl.md5 b/assets/doc/header_8h__dep__incl.md5 new file mode 100644 index 0000000..f914492 --- /dev/null +++ b/assets/doc/header_8h__dep__incl.md5 @@ -0,0 +1 @@ +01c90dbde0ceabd16ea1ebd8aacff803 \ No newline at end of file diff --git a/assets/doc/header_8h__dep__incl.png b/assets/doc/header_8h__dep__incl.png new file mode 100644 index 0000000..9cb6ebd Binary files /dev/null and b/assets/doc/header_8h__dep__incl.png differ diff --git a/assets/doc/header_8h__incl.map b/assets/doc/header_8h__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/header_8h__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/header_8h__incl.md5 b/assets/doc/header_8h__incl.md5 new file mode 100644 index 0000000..ca7dfdc --- /dev/null +++ b/assets/doc/header_8h__incl.md5 @@ -0,0 +1 @@ +cfd9e4af9fe2749fbaed9288b34129c0 \ No newline at end of file diff --git a/assets/doc/header_8h__incl.png b/assets/doc/header_8h__incl.png new file mode 100644 index 0000000..62d116c Binary files /dev/null and b/assets/doc/header_8h__incl.png differ diff --git a/assets/doc/header__size__get_8c__incl.map b/assets/doc/header__size__get_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/header__size__get_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/header__size__get_8c__incl.md5 b/assets/doc/header__size__get_8c__incl.md5 new file mode 100644 index 0000000..5313815 --- /dev/null +++ b/assets/doc/header__size__get_8c__incl.md5 @@ -0,0 +1 @@ +86e5e9a8559f623977beaf26de1e6143 \ No newline at end of file diff --git a/assets/doc/header__size__get_8c__incl.png b/assets/doc/header__size__get_8c__incl.png new file mode 100644 index 0000000..e6282df Binary files /dev/null and b/assets/doc/header__size__get_8c__incl.png differ diff --git a/assets/doc/header__size__get_8c_ab30885fa82741d068d75401e2b56c388_cgraph.map b/assets/doc/header__size__get_8c_ab30885fa82741d068d75401e2b56c388_cgraph.map new file mode 100644 index 0000000..eb59203 --- /dev/null +++ b/assets/doc/header__size__get_8c_ab30885fa82741d068d75401e2b56c388_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/assets/doc/header__size__get_8c_ab30885fa82741d068d75401e2b56c388_cgraph.md5 b/assets/doc/header__size__get_8c_ab30885fa82741d068d75401e2b56c388_cgraph.md5 new file mode 100644 index 0000000..6f15de6 --- /dev/null +++ b/assets/doc/header__size__get_8c_ab30885fa82741d068d75401e2b56c388_cgraph.md5 @@ -0,0 +1 @@ +eedbde88da76b2577f3ad5f577a20459 \ No newline at end of file diff --git a/assets/doc/header__size__get_8c_ab30885fa82741d068d75401e2b56c388_cgraph.png b/assets/doc/header__size__get_8c_ab30885fa82741d068d75401e2b56c388_cgraph.png new file mode 100644 index 0000000..1c2d17f Binary files /dev/null and b/assets/doc/header__size__get_8c_ab30885fa82741d068d75401e2b56c388_cgraph.png differ diff --git a/assets/doc/header__size__get_8c_ab30885fa82741d068d75401e2b56c388_icgraph.map b/assets/doc/header__size__get_8c_ab30885fa82741d068d75401e2b56c388_icgraph.map new file mode 100644 index 0000000..31d731c --- /dev/null +++ b/assets/doc/header__size__get_8c_ab30885fa82741d068d75401e2b56c388_icgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/assets/doc/header__size__get_8c_ab30885fa82741d068d75401e2b56c388_icgraph.md5 b/assets/doc/header__size__get_8c_ab30885fa82741d068d75401e2b56c388_icgraph.md5 new file mode 100644 index 0000000..0670446 --- /dev/null +++ b/assets/doc/header__size__get_8c_ab30885fa82741d068d75401e2b56c388_icgraph.md5 @@ -0,0 +1 @@ +a29c2a1360ebf8a0be038deb67a76cf9 \ No newline at end of file diff --git a/assets/doc/header__size__get_8c_ab30885fa82741d068d75401e2b56c388_icgraph.png b/assets/doc/header__size__get_8c_ab30885fa82741d068d75401e2b56c388_icgraph.png new file mode 100644 index 0000000..786b534 Binary files /dev/null and b/assets/doc/header__size__get_8c_ab30885fa82741d068d75401e2b56c388_icgraph.png differ diff --git a/assets/doc/header__to__string_8c__incl.map b/assets/doc/header__to__string_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/header__to__string_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/header__to__string_8c__incl.md5 b/assets/doc/header__to__string_8c__incl.md5 new file mode 100644 index 0000000..12a615c --- /dev/null +++ b/assets/doc/header__to__string_8c__incl.md5 @@ -0,0 +1 @@ +ec01b1033a3141a1941fd7022c0d5b6b \ No newline at end of file diff --git a/assets/doc/header__to__string_8c__incl.png b/assets/doc/header__to__string_8c__incl.png new file mode 100644 index 0000000..59f0334 Binary files /dev/null and b/assets/doc/header__to__string_8c__incl.png differ diff --git a/assets/doc/header__to__string_8c_ad5eb0c2ed8b062e5025b6c11b0f158d0_cgraph.map b/assets/doc/header__to__string_8c_ad5eb0c2ed8b062e5025b6c11b0f158d0_cgraph.map new file mode 100644 index 0000000..56de47a --- /dev/null +++ b/assets/doc/header__to__string_8c_ad5eb0c2ed8b062e5025b6c11b0f158d0_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/assets/doc/header__to__string_8c_ad5eb0c2ed8b062e5025b6c11b0f158d0_cgraph.md5 b/assets/doc/header__to__string_8c_ad5eb0c2ed8b062e5025b6c11b0f158d0_cgraph.md5 new file mode 100644 index 0000000..d8ac911 --- /dev/null +++ b/assets/doc/header__to__string_8c_ad5eb0c2ed8b062e5025b6c11b0f158d0_cgraph.md5 @@ -0,0 +1 @@ +5f367f21a65348274754d7b3cb52d5d0 \ No newline at end of file diff --git a/assets/doc/header__to__string_8c_ad5eb0c2ed8b062e5025b6c11b0f158d0_cgraph.png b/assets/doc/header__to__string_8c_ad5eb0c2ed8b062e5025b6c11b0f158d0_cgraph.png new file mode 100644 index 0000000..0c8903c Binary files /dev/null and b/assets/doc/header__to__string_8c_ad5eb0c2ed8b062e5025b6c11b0f158d0_cgraph.png differ diff --git a/assets/doc/header__to__string_8c_ad5eb0c2ed8b062e5025b6c11b0f158d0_icgraph.map b/assets/doc/header__to__string_8c_ad5eb0c2ed8b062e5025b6c11b0f158d0_icgraph.map new file mode 100644 index 0000000..fbbd4e4 --- /dev/null +++ b/assets/doc/header__to__string_8c_ad5eb0c2ed8b062e5025b6c11b0f158d0_icgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/assets/doc/header__to__string_8c_ad5eb0c2ed8b062e5025b6c11b0f158d0_icgraph.md5 b/assets/doc/header__to__string_8c_ad5eb0c2ed8b062e5025b6c11b0f158d0_icgraph.md5 new file mode 100644 index 0000000..daae320 --- /dev/null +++ b/assets/doc/header__to__string_8c_ad5eb0c2ed8b062e5025b6c11b0f158d0_icgraph.md5 @@ -0,0 +1 @@ +b75933f6d8798f479fca33ec3390402f \ No newline at end of file diff --git a/assets/doc/header__to__string_8c_ad5eb0c2ed8b062e5025b6c11b0f158d0_icgraph.png b/assets/doc/header__to__string_8c_ad5eb0c2ed8b062e5025b6c11b0f158d0_icgraph.png new file mode 100644 index 0000000..e4141ec Binary files /dev/null and b/assets/doc/header__to__string_8c_ad5eb0c2ed8b062e5025b6c11b0f158d0_icgraph.png differ diff --git a/assets/doc/http_2response_2session_8c__incl.map b/assets/doc/http_2response_2session_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/http_2response_2session_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/http_2response_2session_8c__incl.md5 b/assets/doc/http_2response_2session_8c__incl.md5 new file mode 100644 index 0000000..956cf6b --- /dev/null +++ b/assets/doc/http_2response_2session_8c__incl.md5 @@ -0,0 +1 @@ +ac1705dd83a7a9e2b257a8e0a12ffc27 \ No newline at end of file diff --git a/assets/doc/http_2response_2session_8c__incl.png b/assets/doc/http_2response_2session_8c__incl.png new file mode 100644 index 0000000..9571f44 Binary files /dev/null and b/assets/doc/http_2response_2session_8c__incl.png differ diff --git a/assets/doc/http_2response_2session_8c_a57c16a95301602edff257a4cfb29d02d_cgraph.map b/assets/doc/http_2response_2session_8c_a57c16a95301602edff257a4cfb29d02d_cgraph.map new file mode 100644 index 0000000..86fad85 --- /dev/null +++ b/assets/doc/http_2response_2session_8c_a57c16a95301602edff257a4cfb29d02d_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/assets/doc/http_2response_2session_8c_a57c16a95301602edff257a4cfb29d02d_cgraph.md5 b/assets/doc/http_2response_2session_8c_a57c16a95301602edff257a4cfb29d02d_cgraph.md5 new file mode 100644 index 0000000..0aba359 --- /dev/null +++ b/assets/doc/http_2response_2session_8c_a57c16a95301602edff257a4cfb29d02d_cgraph.md5 @@ -0,0 +1 @@ +bbc51dd429b35cd556cdc3d0e329754e \ No newline at end of file diff --git a/assets/doc/http_2response_2session_8c_a57c16a95301602edff257a4cfb29d02d_cgraph.png b/assets/doc/http_2response_2session_8c_a57c16a95301602edff257a4cfb29d02d_cgraph.png new file mode 100644 index 0000000..6352168 Binary files /dev/null and b/assets/doc/http_2response_2session_8c_a57c16a95301602edff257a4cfb29d02d_cgraph.png differ diff --git a/assets/doc/http_2response_2session_8c_a57c16a95301602edff257a4cfb29d02d_icgraph.map b/assets/doc/http_2response_2session_8c_a57c16a95301602edff257a4cfb29d02d_icgraph.map new file mode 100644 index 0000000..3026719 --- /dev/null +++ b/assets/doc/http_2response_2session_8c_a57c16a95301602edff257a4cfb29d02d_icgraph.map @@ -0,0 +1,3 @@ + + + diff --git a/assets/doc/http_2response_2session_8c_a57c16a95301602edff257a4cfb29d02d_icgraph.md5 b/assets/doc/http_2response_2session_8c_a57c16a95301602edff257a4cfb29d02d_icgraph.md5 new file mode 100644 index 0000000..62613b0 --- /dev/null +++ b/assets/doc/http_2response_2session_8c_a57c16a95301602edff257a4cfb29d02d_icgraph.md5 @@ -0,0 +1 @@ +ce69d21a7164f25be76222f314545c4a \ No newline at end of file diff --git a/assets/doc/http_2response_2session_8c_a57c16a95301602edff257a4cfb29d02d_icgraph.png b/assets/doc/http_2response_2session_8c_a57c16a95301602edff257a4cfb29d02d_icgraph.png new file mode 100644 index 0000000..c12416a Binary files /dev/null and b/assets/doc/http_2response_2session_8c_a57c16a95301602edff257a4cfb29d02d_icgraph.png differ diff --git a/assets/doc/http_2writer_2write_8c__incl.map b/assets/doc/http_2writer_2write_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/http_2writer_2write_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/http_2writer_2write_8c__incl.md5 b/assets/doc/http_2writer_2write_8c__incl.md5 new file mode 100644 index 0000000..22990e9 --- /dev/null +++ b/assets/doc/http_2writer_2write_8c__incl.md5 @@ -0,0 +1 @@ +49c6bf29b162f6fab41b4c2fdc4618e1 \ No newline at end of file diff --git a/assets/doc/http_2writer_2write_8c__incl.png b/assets/doc/http_2writer_2write_8c__incl.png new file mode 100644 index 0000000..bf5aff3 Binary files /dev/null and b/assets/doc/http_2writer_2write_8c__incl.png differ diff --git a/assets/doc/http_2writer_2write_8c_accd7a3cfe29607d72a35fe3e3d187c48_cgraph.map b/assets/doc/http_2writer_2write_8c_accd7a3cfe29607d72a35fe3e3d187c48_cgraph.map new file mode 100644 index 0000000..35d419a --- /dev/null +++ b/assets/doc/http_2writer_2write_8c_accd7a3cfe29607d72a35fe3e3d187c48_cgraph.map @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/doc/http_2writer_2write_8c_accd7a3cfe29607d72a35fe3e3d187c48_cgraph.md5 b/assets/doc/http_2writer_2write_8c_accd7a3cfe29607d72a35fe3e3d187c48_cgraph.md5 new file mode 100644 index 0000000..76f5423 --- /dev/null +++ b/assets/doc/http_2writer_2write_8c_accd7a3cfe29607d72a35fe3e3d187c48_cgraph.md5 @@ -0,0 +1 @@ +87f07e1fbc2b3c3a758f05f75ce9c9b6 \ No newline at end of file diff --git a/assets/doc/http_2writer_2write_8c_accd7a3cfe29607d72a35fe3e3d187c48_cgraph.png b/assets/doc/http_2writer_2write_8c_accd7a3cfe29607d72a35fe3e3d187c48_cgraph.png new file mode 100644 index 0000000..c8a3fca Binary files /dev/null and b/assets/doc/http_2writer_2write_8c_accd7a3cfe29607d72a35fe3e3d187c48_cgraph.png differ diff --git a/assets/doc/http_2writer_2write_8c_accd7a3cfe29607d72a35fe3e3d187c48_icgraph.map b/assets/doc/http_2writer_2write_8c_accd7a3cfe29607d72a35fe3e3d187c48_icgraph.map new file mode 100644 index 0000000..ad0e04d --- /dev/null +++ b/assets/doc/http_2writer_2write_8c_accd7a3cfe29607d72a35fe3e3d187c48_icgraph.map @@ -0,0 +1,3 @@ + + + diff --git a/assets/doc/http_2writer_2write_8c_accd7a3cfe29607d72a35fe3e3d187c48_icgraph.md5 b/assets/doc/http_2writer_2write_8c_accd7a3cfe29607d72a35fe3e3d187c48_icgraph.md5 new file mode 100644 index 0000000..4705d2a --- /dev/null +++ b/assets/doc/http_2writer_2write_8c_accd7a3cfe29607d72a35fe3e3d187c48_icgraph.md5 @@ -0,0 +1 @@ +0a5b288c725d9cc75e8b15bdf4408dcc \ No newline at end of file diff --git a/assets/doc/http_2writer_2write_8c_accd7a3cfe29607d72a35fe3e3d187c48_icgraph.png b/assets/doc/http_2writer_2write_8c_accd7a3cfe29607d72a35fe3e3d187c48_icgraph.png new file mode 100644 index 0000000..c1156ee Binary files /dev/null and b/assets/doc/http_2writer_2write_8c_accd7a3cfe29607d72a35fe3e3d187c48_icgraph.png differ diff --git a/assets/doc/http_2writer_8c__incl.map b/assets/doc/http_2writer_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/http_2writer_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/http_2writer_8c__incl.md5 b/assets/doc/http_2writer_8c__incl.md5 new file mode 100644 index 0000000..3e8ce43 --- /dev/null +++ b/assets/doc/http_2writer_8c__incl.md5 @@ -0,0 +1 @@ +83ebecd5d976b8ac0cbf94bd6b9bbb98 \ No newline at end of file diff --git a/assets/doc/http_2writer_8c__incl.png b/assets/doc/http_2writer_8c__incl.png new file mode 100644 index 0000000..68869ef Binary files /dev/null and b/assets/doc/http_2writer_8c__incl.png differ diff --git a/assets/doc/http_2writer_8h__dep__incl.map b/assets/doc/http_2writer_8h__dep__incl.map new file mode 100644 index 0000000..2b0e02e --- /dev/null +++ b/assets/doc/http_2writer_8h__dep__incl.map @@ -0,0 +1,3 @@ + + + diff --git a/assets/doc/http_2writer_8h__dep__incl.md5 b/assets/doc/http_2writer_8h__dep__incl.md5 new file mode 100644 index 0000000..d77d178 --- /dev/null +++ b/assets/doc/http_2writer_8h__dep__incl.md5 @@ -0,0 +1 @@ +fd2091e476de6643024ff0b91e684dc0 \ No newline at end of file diff --git a/assets/doc/http_2writer_8h__dep__incl.png b/assets/doc/http_2writer_8h__dep__incl.png new file mode 100644 index 0000000..44d811d Binary files /dev/null and b/assets/doc/http_2writer_8h__dep__incl.png differ diff --git a/assets/doc/http_2writer_8h__incl.map b/assets/doc/http_2writer_8h__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/http_2writer_8h__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/http_2writer_8h__incl.md5 b/assets/doc/http_2writer_8h__incl.md5 new file mode 100644 index 0000000..f8d9b4f --- /dev/null +++ b/assets/doc/http_2writer_8h__incl.md5 @@ -0,0 +1 @@ +58e3e22e4b86a65bef8c8a7617769f4f \ No newline at end of file diff --git a/assets/doc/http_2writer_8h__incl.png b/assets/doc/http_2writer_8h__incl.png new file mode 100644 index 0000000..3855f50 Binary files /dev/null and b/assets/doc/http_2writer_8h__incl.png differ diff --git a/assets/doc/http_2writer_8h_a535aa1e3c862130ca83fcf1d815bca78_cgraph.map b/assets/doc/http_2writer_8h_a535aa1e3c862130ca83fcf1d815bca78_cgraph.map new file mode 100644 index 0000000..35d419a --- /dev/null +++ b/assets/doc/http_2writer_8h_a535aa1e3c862130ca83fcf1d815bca78_cgraph.map @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/doc/http_2writer_8h_a535aa1e3c862130ca83fcf1d815bca78_cgraph.md5 b/assets/doc/http_2writer_8h_a535aa1e3c862130ca83fcf1d815bca78_cgraph.md5 new file mode 100644 index 0000000..76f5423 --- /dev/null +++ b/assets/doc/http_2writer_8h_a535aa1e3c862130ca83fcf1d815bca78_cgraph.md5 @@ -0,0 +1 @@ +87f07e1fbc2b3c3a758f05f75ce9c9b6 \ No newline at end of file diff --git a/assets/doc/http_2writer_8h_a535aa1e3c862130ca83fcf1d815bca78_cgraph.png b/assets/doc/http_2writer_8h_a535aa1e3c862130ca83fcf1d815bca78_cgraph.png new file mode 100644 index 0000000..c8a3fca Binary files /dev/null and b/assets/doc/http_2writer_8h_a535aa1e3c862130ca83fcf1d815bca78_cgraph.png differ diff --git a/assets/doc/http_2writer_8h_a535aa1e3c862130ca83fcf1d815bca78_icgraph.map b/assets/doc/http_2writer_8h_a535aa1e3c862130ca83fcf1d815bca78_icgraph.map new file mode 100644 index 0000000..ad0e04d --- /dev/null +++ b/assets/doc/http_2writer_8h_a535aa1e3c862130ca83fcf1d815bca78_icgraph.map @@ -0,0 +1,3 @@ + + + diff --git a/assets/doc/http_2writer_8h_a535aa1e3c862130ca83fcf1d815bca78_icgraph.md5 b/assets/doc/http_2writer_8h_a535aa1e3c862130ca83fcf1d815bca78_icgraph.md5 new file mode 100644 index 0000000..4705d2a --- /dev/null +++ b/assets/doc/http_2writer_8h_a535aa1e3c862130ca83fcf1d815bca78_icgraph.md5 @@ -0,0 +1 @@ +0a5b288c725d9cc75e8b15bdf4408dcc \ No newline at end of file diff --git a/assets/doc/http_2writer_8h_a535aa1e3c862130ca83fcf1d815bca78_icgraph.png b/assets/doc/http_2writer_8h_a535aa1e3c862130ca83fcf1d815bca78_icgraph.png new file mode 100644 index 0000000..c1156ee Binary files /dev/null and b/assets/doc/http_2writer_8h_a535aa1e3c862130ca83fcf1d815bca78_icgraph.png differ diff --git a/assets/doc/http_8c__incl.map b/assets/doc/http_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/http_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/http_8c__incl.md5 b/assets/doc/http_8c__incl.md5 new file mode 100644 index 0000000..c8447af --- /dev/null +++ b/assets/doc/http_8c__incl.md5 @@ -0,0 +1 @@ +fc74fbcbfb24724f81928d8503571e63 \ No newline at end of file diff --git a/assets/doc/http_8c__incl.png b/assets/doc/http_8c__incl.png new file mode 100644 index 0000000..8184b97 Binary files /dev/null and b/assets/doc/http_8c__incl.png differ diff --git a/assets/doc/http_8c_a5803a2dc11a522a854c820cc5dd14e00_cgraph.map b/assets/doc/http_8c_a5803a2dc11a522a854c820cc5dd14e00_cgraph.map new file mode 100644 index 0000000..c62792b --- /dev/null +++ b/assets/doc/http_8c_a5803a2dc11a522a854c820cc5dd14e00_cgraph.map @@ -0,0 +1,3 @@ + + + diff --git a/assets/doc/http_8c_a5803a2dc11a522a854c820cc5dd14e00_cgraph.md5 b/assets/doc/http_8c_a5803a2dc11a522a854c820cc5dd14e00_cgraph.md5 new file mode 100644 index 0000000..86b59c4 --- /dev/null +++ b/assets/doc/http_8c_a5803a2dc11a522a854c820cc5dd14e00_cgraph.md5 @@ -0,0 +1 @@ +a52aaa27b969b10f52f701ab0eedb521 \ No newline at end of file diff --git a/assets/doc/http_8c_a5803a2dc11a522a854c820cc5dd14e00_cgraph.png b/assets/doc/http_8c_a5803a2dc11a522a854c820cc5dd14e00_cgraph.png new file mode 100644 index 0000000..cc2fb12 Binary files /dev/null and b/assets/doc/http_8c_a5803a2dc11a522a854c820cc5dd14e00_cgraph.png differ diff --git a/assets/doc/http_8c_a5803a2dc11a522a854c820cc5dd14e00_icgraph.map b/assets/doc/http_8c_a5803a2dc11a522a854c820cc5dd14e00_icgraph.map new file mode 100644 index 0000000..ec3b7ed --- /dev/null +++ b/assets/doc/http_8c_a5803a2dc11a522a854c820cc5dd14e00_icgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/assets/doc/http_8c_a5803a2dc11a522a854c820cc5dd14e00_icgraph.md5 b/assets/doc/http_8c_a5803a2dc11a522a854c820cc5dd14e00_icgraph.md5 new file mode 100644 index 0000000..642a433 --- /dev/null +++ b/assets/doc/http_8c_a5803a2dc11a522a854c820cc5dd14e00_icgraph.md5 @@ -0,0 +1 @@ +b04e37ff3c13ab6c20b679b73b033b15 \ No newline at end of file diff --git a/assets/doc/http_8c_a5803a2dc11a522a854c820cc5dd14e00_icgraph.png b/assets/doc/http_8c_a5803a2dc11a522a854c820cc5dd14e00_icgraph.png new file mode 100644 index 0000000..3a27a0c Binary files /dev/null and b/assets/doc/http_8c_a5803a2dc11a522a854c820cc5dd14e00_icgraph.png differ diff --git a/assets/doc/http_8c_ac8c356badc588a5dfcc397697260461c_icgraph.map b/assets/doc/http_8c_ac8c356badc588a5dfcc397697260461c_icgraph.map new file mode 100644 index 0000000..f467c01 --- /dev/null +++ b/assets/doc/http_8c_ac8c356badc588a5dfcc397697260461c_icgraph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/assets/doc/http_8c_ac8c356badc588a5dfcc397697260461c_icgraph.md5 b/assets/doc/http_8c_ac8c356badc588a5dfcc397697260461c_icgraph.md5 new file mode 100644 index 0000000..8972329 --- /dev/null +++ b/assets/doc/http_8c_ac8c356badc588a5dfcc397697260461c_icgraph.md5 @@ -0,0 +1 @@ +57b9f18a282512224318c9faa37a7581 \ No newline at end of file diff --git a/assets/doc/http_8c_ac8c356badc588a5dfcc397697260461c_icgraph.png b/assets/doc/http_8c_ac8c356badc588a5dfcc397697260461c_icgraph.png new file mode 100644 index 0000000..9d6dc10 Binary files /dev/null and b/assets/doc/http_8c_ac8c356badc588a5dfcc397697260461c_icgraph.png differ diff --git a/assets/doc/http_8h__incl.map b/assets/doc/http_8h__incl.map new file mode 100644 index 0000000..4dc818f --- /dev/null +++ b/assets/doc/http_8h__incl.map @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/assets/doc/http_8h__incl.md5 b/assets/doc/http_8h__incl.md5 new file mode 100644 index 0000000..6a30122 --- /dev/null +++ b/assets/doc/http_8h__incl.md5 @@ -0,0 +1 @@ +e7108ef5f758b9827b7f062a38a7675e \ No newline at end of file diff --git a/assets/doc/http_8h__incl.png b/assets/doc/http_8h__incl.png new file mode 100644 index 0000000..7a5209d Binary files /dev/null and b/assets/doc/http_8h__incl.png differ diff --git a/assets/doc/http__intro_8h__dep__incl.map b/assets/doc/http__intro_8h__dep__incl.map new file mode 100644 index 0000000..d8741a1 --- /dev/null +++ b/assets/doc/http__intro_8h__dep__incl.map @@ -0,0 +1,3 @@ + + + diff --git a/assets/doc/http__intro_8h__dep__incl.md5 b/assets/doc/http__intro_8h__dep__incl.md5 new file mode 100644 index 0000000..5631847 --- /dev/null +++ b/assets/doc/http__intro_8h__dep__incl.md5 @@ -0,0 +1 @@ +808694846fe32b1f96d8d91e7840716a \ No newline at end of file diff --git a/assets/doc/http__intro_8h__dep__incl.png b/assets/doc/http__intro_8h__dep__incl.png new file mode 100644 index 0000000..2fda66c Binary files /dev/null and b/assets/doc/http__intro_8h__dep__incl.png differ diff --git a/assets/doc/http__intro_8h__incl.map b/assets/doc/http__intro_8h__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/http__intro_8h__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/http__intro_8h__incl.md5 b/assets/doc/http__intro_8h__incl.md5 new file mode 100644 index 0000000..85e8e3d --- /dev/null +++ b/assets/doc/http__intro_8h__incl.md5 @@ -0,0 +1 @@ +6ed840a64822e761e62613a5d9de5d9a \ No newline at end of file diff --git a/assets/doc/http__intro_8h__incl.png b/assets/doc/http__intro_8h__incl.png new file mode 100644 index 0000000..eaef426 Binary files /dev/null and b/assets/doc/http__intro_8h__incl.png differ diff --git a/assets/doc/http__intro_8h_a3922302df6136db7c0e4ddd6ef737006_icgraph.map b/assets/doc/http__intro_8h_a3922302df6136db7c0e4ddd6ef737006_icgraph.map new file mode 100644 index 0000000..a5d5a3f --- /dev/null +++ b/assets/doc/http__intro_8h_a3922302df6136db7c0e4ddd6ef737006_icgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/assets/doc/http__intro_8h_a3922302df6136db7c0e4ddd6ef737006_icgraph.md5 b/assets/doc/http__intro_8h_a3922302df6136db7c0e4ddd6ef737006_icgraph.md5 new file mode 100644 index 0000000..42b0c56 --- /dev/null +++ b/assets/doc/http__intro_8h_a3922302df6136db7c0e4ddd6ef737006_icgraph.md5 @@ -0,0 +1 @@ +5c58f815da197047a407fba23318a2b7 \ No newline at end of file diff --git a/assets/doc/http__intro_8h_a3922302df6136db7c0e4ddd6ef737006_icgraph.png b/assets/doc/http__intro_8h_a3922302df6136db7c0e4ddd6ef737006_icgraph.png new file mode 100644 index 0000000..3da2f29 Binary files /dev/null and b/assets/doc/http__intro_8h_a3922302df6136db7c0e4ddd6ef737006_icgraph.png differ diff --git a/assets/doc/http__intro_8h_af41c89fd27103661df0f89351483f93e_icgraph.map b/assets/doc/http__intro_8h_af41c89fd27103661df0f89351483f93e_icgraph.map new file mode 100644 index 0000000..df0e034 --- /dev/null +++ b/assets/doc/http__intro_8h_af41c89fd27103661df0f89351483f93e_icgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/assets/doc/http__intro_8h_af41c89fd27103661df0f89351483f93e_icgraph.md5 b/assets/doc/http__intro_8h_af41c89fd27103661df0f89351483f93e_icgraph.md5 new file mode 100644 index 0000000..5b6552f --- /dev/null +++ b/assets/doc/http__intro_8h_af41c89fd27103661df0f89351483f93e_icgraph.md5 @@ -0,0 +1 @@ +b92e0c1b9c0adf4e003df468ef2789b3 \ No newline at end of file diff --git a/assets/doc/http__intro_8h_af41c89fd27103661df0f89351483f93e_icgraph.png b/assets/doc/http__intro_8h_af41c89fd27103661df0f89351483f93e_icgraph.png new file mode 100644 index 0000000..f02b62f Binary files /dev/null and b/assets/doc/http__intro_8h_af41c89fd27103661df0f89351483f93e_icgraph.png differ diff --git a/assets/doc/i__class_8c__incl.map b/assets/doc/i__class_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/i__class_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/i__class_8c__incl.md5 b/assets/doc/i__class_8c__incl.md5 new file mode 100644 index 0000000..eccaab1 --- /dev/null +++ b/assets/doc/i__class_8c__incl.md5 @@ -0,0 +1 @@ +a1398322a489ae3e467cbdfff1639ece \ No newline at end of file diff --git a/assets/doc/i__class_8c__incl.png b/assets/doc/i__class_8c__incl.png new file mode 100644 index 0000000..69362a5 Binary files /dev/null and b/assets/doc/i__class_8c__incl.png differ diff --git a/assets/doc/i__class_8c_a292005216c251622a115ea90ff6d36c0_icgraph.map b/assets/doc/i__class_8c_a292005216c251622a115ea90ff6d36c0_icgraph.map new file mode 100644 index 0000000..63ced95 --- /dev/null +++ b/assets/doc/i__class_8c_a292005216c251622a115ea90ff6d36c0_icgraph.map @@ -0,0 +1,3 @@ + + + diff --git a/assets/doc/i__class_8c_a292005216c251622a115ea90ff6d36c0_icgraph.md5 b/assets/doc/i__class_8c_a292005216c251622a115ea90ff6d36c0_icgraph.md5 new file mode 100644 index 0000000..996b76b --- /dev/null +++ b/assets/doc/i__class_8c_a292005216c251622a115ea90ff6d36c0_icgraph.md5 @@ -0,0 +1 @@ +75239f9f436b396c87ff4b9f53dbb3d3 \ No newline at end of file diff --git a/assets/doc/i__class_8c_a292005216c251622a115ea90ff6d36c0_icgraph.png b/assets/doc/i__class_8c_a292005216c251622a115ea90ff6d36c0_icgraph.png new file mode 100644 index 0000000..f65d643 Binary files /dev/null and b/assets/doc/i__class_8c_a292005216c251622a115ea90ff6d36c0_icgraph.png differ diff --git a/assets/doc/i__class_8c_a841e4a0f9bceb16fda262302d038bfa0_cgraph.map b/assets/doc/i__class_8c_a841e4a0f9bceb16fda262302d038bfa0_cgraph.map new file mode 100644 index 0000000..0c911a2 --- /dev/null +++ b/assets/doc/i__class_8c_a841e4a0f9bceb16fda262302d038bfa0_cgraph.map @@ -0,0 +1,3 @@ + + + diff --git a/assets/doc/i__class_8c_a841e4a0f9bceb16fda262302d038bfa0_cgraph.md5 b/assets/doc/i__class_8c_a841e4a0f9bceb16fda262302d038bfa0_cgraph.md5 new file mode 100644 index 0000000..f3729da --- /dev/null +++ b/assets/doc/i__class_8c_a841e4a0f9bceb16fda262302d038bfa0_cgraph.md5 @@ -0,0 +1 @@ +39e5cc2dd018942fb34f32be8f2b6978 \ No newline at end of file diff --git a/assets/doc/i__class_8c_a841e4a0f9bceb16fda262302d038bfa0_cgraph.png b/assets/doc/i__class_8c_a841e4a0f9bceb16fda262302d038bfa0_cgraph.png new file mode 100644 index 0000000..9261564 Binary files /dev/null and b/assets/doc/i__class_8c_a841e4a0f9bceb16fda262302d038bfa0_cgraph.png differ diff --git a/assets/doc/i__http__intro_8c__incl.map b/assets/doc/i__http__intro_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/i__http__intro_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/i__http__intro_8c__incl.md5 b/assets/doc/i__http__intro_8c__incl.md5 new file mode 100644 index 0000000..8428755 --- /dev/null +++ b/assets/doc/i__http__intro_8c__incl.md5 @@ -0,0 +1 @@ +9b3c6988234fbaa106d8001d06319df2 \ No newline at end of file diff --git a/assets/doc/i__http__intro_8c__incl.png b/assets/doc/i__http__intro_8c__incl.png new file mode 100644 index 0000000..bd3a65a Binary files /dev/null and b/assets/doc/i__http__intro_8c__incl.png differ diff --git a/assets/doc/i__http__intro_8c_a2217711bc175207f9dddacba3503f55a_icgraph.map b/assets/doc/i__http__intro_8c_a2217711bc175207f9dddacba3503f55a_icgraph.map new file mode 100644 index 0000000..a5d5a3f --- /dev/null +++ b/assets/doc/i__http__intro_8c_a2217711bc175207f9dddacba3503f55a_icgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/assets/doc/i__http__intro_8c_a2217711bc175207f9dddacba3503f55a_icgraph.md5 b/assets/doc/i__http__intro_8c_a2217711bc175207f9dddacba3503f55a_icgraph.md5 new file mode 100644 index 0000000..42b0c56 --- /dev/null +++ b/assets/doc/i__http__intro_8c_a2217711bc175207f9dddacba3503f55a_icgraph.md5 @@ -0,0 +1 @@ +5c58f815da197047a407fba23318a2b7 \ No newline at end of file diff --git a/assets/doc/i__http__intro_8c_a2217711bc175207f9dddacba3503f55a_icgraph.png b/assets/doc/i__http__intro_8c_a2217711bc175207f9dddacba3503f55a_icgraph.png new file mode 100644 index 0000000..3da2f29 Binary files /dev/null and b/assets/doc/i__http__intro_8c_a2217711bc175207f9dddacba3503f55a_icgraph.png differ diff --git a/assets/doc/i__http__intro_8c_ab5c5666a3d4c464932d8776667745acb_icgraph.map b/assets/doc/i__http__intro_8c_ab5c5666a3d4c464932d8776667745acb_icgraph.map new file mode 100644 index 0000000..df0e034 --- /dev/null +++ b/assets/doc/i__http__intro_8c_ab5c5666a3d4c464932d8776667745acb_icgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/assets/doc/i__http__intro_8c_ab5c5666a3d4c464932d8776667745acb_icgraph.md5 b/assets/doc/i__http__intro_8c_ab5c5666a3d4c464932d8776667745acb_icgraph.md5 new file mode 100644 index 0000000..5b6552f --- /dev/null +++ b/assets/doc/i__http__intro_8c_ab5c5666a3d4c464932d8776667745acb_icgraph.md5 @@ -0,0 +1 @@ +b92e0c1b9c0adf4e003df468ef2789b3 \ No newline at end of file diff --git a/assets/doc/i__http__intro_8c_ab5c5666a3d4c464932d8776667745acb_icgraph.png b/assets/doc/i__http__intro_8c_ab5c5666a3d4c464932d8776667745acb_icgraph.png new file mode 100644 index 0000000..f02b62f Binary files /dev/null and b/assets/doc/i__http__intro_8c_ab5c5666a3d4c464932d8776667745acb_icgraph.png differ diff --git a/assets/doc/i__logger_8c__incl.map b/assets/doc/i__logger_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/i__logger_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/i__logger_8c__incl.md5 b/assets/doc/i__logger_8c__incl.md5 new file mode 100644 index 0000000..d279c54 --- /dev/null +++ b/assets/doc/i__logger_8c__incl.md5 @@ -0,0 +1 @@ +c7582b594488f51b7ad0342bb0f1d8a3 \ No newline at end of file diff --git a/assets/doc/i__logger_8c__incl.png b/assets/doc/i__logger_8c__incl.png new file mode 100644 index 0000000..dd2cdae Binary files /dev/null and b/assets/doc/i__logger_8c__incl.png differ diff --git a/assets/doc/i__logger_8c_a9053743a944f1faef3866efaa52d3c7f_icgraph.map b/assets/doc/i__logger_8c_a9053743a944f1faef3866efaa52d3c7f_icgraph.map new file mode 100644 index 0000000..f7ffd70 --- /dev/null +++ b/assets/doc/i__logger_8c_a9053743a944f1faef3866efaa52d3c7f_icgraph.map @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/assets/doc/i__logger_8c_a9053743a944f1faef3866efaa52d3c7f_icgraph.md5 b/assets/doc/i__logger_8c_a9053743a944f1faef3866efaa52d3c7f_icgraph.md5 new file mode 100644 index 0000000..bc4a4ac --- /dev/null +++ b/assets/doc/i__logger_8c_a9053743a944f1faef3866efaa52d3c7f_icgraph.md5 @@ -0,0 +1 @@ +d7f0aa442f921286803d20fbb567a8c4 \ No newline at end of file diff --git a/assets/doc/i__logger_8c_a9053743a944f1faef3866efaa52d3c7f_icgraph.png b/assets/doc/i__logger_8c_a9053743a944f1faef3866efaa52d3c7f_icgraph.png new file mode 100644 index 0000000..fc2b6aa Binary files /dev/null and b/assets/doc/i__logger_8c_a9053743a944f1faef3866efaa52d3c7f_icgraph.png differ diff --git a/assets/doc/inc__read_8c__incl.map b/assets/doc/inc__read_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/inc__read_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/inc__read_8c__incl.md5 b/assets/doc/inc__read_8c__incl.md5 new file mode 100644 index 0000000..7a460a3 --- /dev/null +++ b/assets/doc/inc__read_8c__incl.md5 @@ -0,0 +1 @@ +57dcc5eacd0bda6d2e97826bd85c6ef2 \ No newline at end of file diff --git a/assets/doc/inc__read_8c__incl.png b/assets/doc/inc__read_8c__incl.png new file mode 100644 index 0000000..43afa1c Binary files /dev/null and b/assets/doc/inc__read_8c__incl.png differ diff --git a/assets/doc/inc__read_8c_ac6a5c458373606ebadf44cb631a615cb_icgraph.map b/assets/doc/inc__read_8c_ac6a5c458373606ebadf44cb631a615cb_icgraph.map new file mode 100644 index 0000000..d9291e5 --- /dev/null +++ b/assets/doc/inc__read_8c_ac6a5c458373606ebadf44cb631a615cb_icgraph.map @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/assets/doc/inc__read_8c_ac6a5c458373606ebadf44cb631a615cb_icgraph.md5 b/assets/doc/inc__read_8c_ac6a5c458373606ebadf44cb631a615cb_icgraph.md5 new file mode 100644 index 0000000..54ee1f3 --- /dev/null +++ b/assets/doc/inc__read_8c_ac6a5c458373606ebadf44cb631a615cb_icgraph.md5 @@ -0,0 +1 @@ +31d5acee33ca298d30be925ca12233e1 \ No newline at end of file diff --git a/assets/doc/inc__read_8c_ac6a5c458373606ebadf44cb631a615cb_icgraph.png b/assets/doc/inc__read_8c_ac6a5c458373606ebadf44cb631a615cb_icgraph.png new file mode 100644 index 0000000..e7fc300 Binary files /dev/null and b/assets/doc/inc__read_8c_ac6a5c458373606ebadf44cb631a615cb_icgraph.png differ diff --git a/assets/doc/inc__write_8c__incl.map b/assets/doc/inc__write_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/inc__write_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/inc__write_8c__incl.md5 b/assets/doc/inc__write_8c__incl.md5 new file mode 100644 index 0000000..e1d91a4 --- /dev/null +++ b/assets/doc/inc__write_8c__incl.md5 @@ -0,0 +1 @@ +8b7ab35d79a582bf7f8521174140a02b \ No newline at end of file diff --git a/assets/doc/inc__write_8c__incl.png b/assets/doc/inc__write_8c__incl.png new file mode 100644 index 0000000..1794ceb Binary files /dev/null and b/assets/doc/inc__write_8c__incl.png differ diff --git a/assets/doc/inc__write_8c_a7afb7def79f9b383ac2ff39ffdbb6b7e_icgraph.map b/assets/doc/inc__write_8c_a7afb7def79f9b383ac2ff39ffdbb6b7e_icgraph.map new file mode 100644 index 0000000..a54a47e --- /dev/null +++ b/assets/doc/inc__write_8c_a7afb7def79f9b383ac2ff39ffdbb6b7e_icgraph.map @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/assets/doc/inc__write_8c_a7afb7def79f9b383ac2ff39ffdbb6b7e_icgraph.md5 b/assets/doc/inc__write_8c_a7afb7def79f9b383ac2ff39ffdbb6b7e_icgraph.md5 new file mode 100644 index 0000000..621c69e --- /dev/null +++ b/assets/doc/inc__write_8c_a7afb7def79f9b383ac2ff39ffdbb6b7e_icgraph.md5 @@ -0,0 +1 @@ +2f628e228ec548f9cd0cfec0157ac507 \ No newline at end of file diff --git a/assets/doc/inc__write_8c_a7afb7def79f9b383ac2ff39ffdbb6b7e_icgraph.png b/assets/doc/inc__write_8c_a7afb7def79f9b383ac2ff39ffdbb6b7e_icgraph.png new file mode 100644 index 0000000..f82a36b Binary files /dev/null and b/assets/doc/inc__write_8c_a7afb7def79f9b383ac2ff39ffdbb6b7e_icgraph.png differ diff --git a/assets/doc/installdox b/assets/doc/installdox new file mode 100755 index 0000000..edf5bbf --- /dev/null +++ b/assets/doc/installdox @@ -0,0 +1,112 @@ +#!/usr/bin/perl + +%subst = ( ); +$quiet = 0; + +while ( @ARGV ) { + $_ = shift @ARGV; + if ( s/^-// ) { + if ( /^l(.*)/ ) { + $v = ($1 eq "") ? shift @ARGV : $1; + ($v =~ /\/$/) || ($v .= "/"); + $_ = $v; + if ( /(.+)\@(.+)/ ) { + if ( exists $subst{$1} ) { + $subst{$1} = $2; + } else { + print STDERR "Unknown tag file $1 given with option -l\n"; + &usage(); + } + } else { + print STDERR "Argument $_ is invalid for option -l\n"; + &usage(); + } + } + elsif ( /^q/ ) { + $quiet = 1; + } + elsif ( /^\?|^h/ ) { + &usage(); + } + else { + print STDERR "Illegal option -$_\n"; + &usage(); + } + } + else { + push (@files, $_ ); + } +} + +foreach $sub (keys %subst) +{ + if ( $subst{$sub} eq "" ) + { + print STDERR "No substitute given for tag file `$sub'\n"; + &usage(); + } + elsif ( ! $quiet && $sub ne "_doc" && $sub ne "_cgi" ) + { + print "Substituting $subst{$sub} for each occurrence of tag file $sub\n"; + } +} + +if ( ! @files ) { + if (opendir(D,".")) { + foreach $file ( readdir(D) ) { + $match = ".html"; + next if ( $file =~ /^\.\.?$/ ); + ($file =~ /$match/) && (push @files, $file); + ($file =~ /\.svg/) && (push @files, $file); + ($file =~ "navtree.js") && (push @files, $file); + } + closedir(D); + } +} + +if ( ! @files ) { + print STDERR "Warning: No input files given and none found!\n"; +} + +foreach $f (@files) +{ + if ( ! $quiet ) { + print "Editing: $f...\n"; + } + $oldf = $f; + $f .= ".bak"; + unless (rename $oldf,$f) { + print STDERR "Error: cannot rename file $oldf\n"; + exit 1; + } + if (open(F,"<$f")) { + unless (open(G,">$oldf")) { + print STDERR "Error: opening file $oldf for writing\n"; + exit 1; + } + if ($oldf ne "tree.js") { + while () { + s/doxygen\=\"([^ \"\:\t\>\<]*)\:([^ \"\t\>\<]*)\" (xlink:href|href|src)=\"\2/doxygen\=\"$1:$subst{$1}\" \3=\"$subst{$1}/g; + print G "$_"; + } + } + else { + while () { + s/\"([^ \"\:\t\>\<]*)\:([^ \"\t\>\<]*)\", \"\2/\"$1:$subst{$1}\" ,\"$subst{$1}/g; + print G "$_"; + } + } + } + else { + print STDERR "Warning file $f does not exist\n"; + } + unlink $f; +} + +sub usage { + print STDERR "Usage: installdox [options] [html-file [html-file ...]]\n"; + print STDERR "Options:\n"; + print STDERR " -l tagfile\@linkName tag file + URL or directory \n"; + print STDERR " -q Quiet mode\n\n"; + exit 1; +} diff --git a/assets/doc/interface_8c__incl.map b/assets/doc/interface_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/interface_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/interface_8c__incl.md5 b/assets/doc/interface_8c__incl.md5 new file mode 100644 index 0000000..53be814 --- /dev/null +++ b/assets/doc/interface_8c__incl.md5 @@ -0,0 +1 @@ +93d972bdd14f7634ff73e88023b8540c \ No newline at end of file diff --git a/assets/doc/interface_8c__incl.png b/assets/doc/interface_8c__incl.png new file mode 100644 index 0000000..aa24e47 Binary files /dev/null and b/assets/doc/interface_8c__incl.png differ diff --git a/assets/doc/interface_8h__dep__incl.map b/assets/doc/interface_8h__dep__incl.map new file mode 100644 index 0000000..f708a70 --- /dev/null +++ b/assets/doc/interface_8h__dep__incl.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/assets/doc/interface_8h__dep__incl.md5 b/assets/doc/interface_8h__dep__incl.md5 new file mode 100644 index 0000000..35eb636 --- /dev/null +++ b/assets/doc/interface_8h__dep__incl.md5 @@ -0,0 +1 @@ +2ac3db0be31aa9a49cdad45edb595b4f \ No newline at end of file diff --git a/assets/doc/interface_8h__dep__incl.png b/assets/doc/interface_8h__dep__incl.png new file mode 100644 index 0000000..6006c66 Binary files /dev/null and b/assets/doc/interface_8h__dep__incl.png differ diff --git a/assets/doc/interface_8h__incl.map b/assets/doc/interface_8h__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/interface_8h__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/interface_8h__incl.md5 b/assets/doc/interface_8h__incl.md5 new file mode 100644 index 0000000..d38eb9d --- /dev/null +++ b/assets/doc/interface_8h__incl.md5 @@ -0,0 +1 @@ +1ed96628633fb190f8b1650118d8bc35 \ No newline at end of file diff --git a/assets/doc/interface_8h__incl.png b/assets/doc/interface_8h__incl.png new file mode 100644 index 0000000..fde8210 Binary files /dev/null and b/assets/doc/interface_8h__incl.png differ diff --git a/assets/doc/is__empty_8c__incl.map b/assets/doc/is__empty_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/is__empty_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/is__empty_8c__incl.md5 b/assets/doc/is__empty_8c__incl.md5 new file mode 100644 index 0000000..0eb57ae --- /dev/null +++ b/assets/doc/is__empty_8c__incl.md5 @@ -0,0 +1 @@ +190019c9d0fd9b150deae1e951894fd7 \ No newline at end of file diff --git a/assets/doc/is__empty_8c__incl.png b/assets/doc/is__empty_8c__incl.png new file mode 100644 index 0000000..a0bc8ce Binary files /dev/null and b/assets/doc/is__empty_8c__incl.png differ diff --git a/assets/doc/is__empty_8c_aa041996b32209a9b81a3e5db178c8339_icgraph.map b/assets/doc/is__empty_8c_aa041996b32209a9b81a3e5db178c8339_icgraph.map new file mode 100644 index 0000000..c706360 --- /dev/null +++ b/assets/doc/is__empty_8c_aa041996b32209a9b81a3e5db178c8339_icgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/assets/doc/is__empty_8c_aa041996b32209a9b81a3e5db178c8339_icgraph.md5 b/assets/doc/is__empty_8c_aa041996b32209a9b81a3e5db178c8339_icgraph.md5 new file mode 100644 index 0000000..6054057 --- /dev/null +++ b/assets/doc/is__empty_8c_aa041996b32209a9b81a3e5db178c8339_icgraph.md5 @@ -0,0 +1 @@ +126aed7f1236f55ae9e23647f35ed7cd \ No newline at end of file diff --git a/assets/doc/is__empty_8c_aa041996b32209a9b81a3e5db178c8339_icgraph.png b/assets/doc/is__empty_8c_aa041996b32209a9b81a3e5db178c8339_icgraph.png new file mode 100644 index 0000000..68df8b9 Binary files /dev/null and b/assets/doc/is__empty_8c_aa041996b32209a9b81a3e5db178c8339_icgraph.png differ diff --git a/assets/doc/is__locked_8c__incl.map b/assets/doc/is__locked_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/is__locked_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/is__locked_8c__incl.md5 b/assets/doc/is__locked_8c__incl.md5 new file mode 100644 index 0000000..f1c7e5f --- /dev/null +++ b/assets/doc/is__locked_8c__incl.md5 @@ -0,0 +1 @@ +ed1adcfde593a9503bb2e188d045ea15 \ No newline at end of file diff --git a/assets/doc/is__locked_8c__incl.png b/assets/doc/is__locked_8c__incl.png new file mode 100644 index 0000000..a6a457c Binary files /dev/null and b/assets/doc/is__locked_8c__incl.png differ diff --git a/assets/doc/is__locked_8c_a87c05ad967d95ea590151e69af0ff4fe_icgraph.map b/assets/doc/is__locked_8c_a87c05ad967d95ea590151e69af0ff4fe_icgraph.map new file mode 100644 index 0000000..b08aa37 --- /dev/null +++ b/assets/doc/is__locked_8c_a87c05ad967d95ea590151e69af0ff4fe_icgraph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/assets/doc/is__locked_8c_a87c05ad967d95ea590151e69af0ff4fe_icgraph.md5 b/assets/doc/is__locked_8c_a87c05ad967d95ea590151e69af0ff4fe_icgraph.md5 new file mode 100644 index 0000000..2f177db --- /dev/null +++ b/assets/doc/is__locked_8c_a87c05ad967d95ea590151e69af0ff4fe_icgraph.md5 @@ -0,0 +1 @@ +245cff9a2e72f0104d2ad1114d39eb4c \ No newline at end of file diff --git a/assets/doc/is__locked_8c_a87c05ad967d95ea590151e69af0ff4fe_icgraph.png b/assets/doc/is__locked_8c_a87c05ad967d95ea590151e69af0ff4fe_icgraph.png new file mode 100644 index 0000000..170b034 Binary files /dev/null and b/assets/doc/is__locked_8c_a87c05ad967d95ea590151e69af0ff4fe_icgraph.png differ diff --git a/assets/doc/jquery.js b/assets/doc/jquery.js new file mode 100644 index 0000000..c052173 --- /dev/null +++ b/assets/doc/jquery.js @@ -0,0 +1,54 @@ +/* + * jQuery JavaScript Library v1.3.2 + * http://jquery.com/ + * + * Copyright (c) 2009 John Resig + * Dual licensed under the MIT and GPL licenses. + * http://docs.jquery.com/License + * + * Date: 2009-02-19 17:34:21 -0500 (Thu, 19 Feb 2009) + * Revision: 6246 + */ +(function(){var l=this,g,y=l.jQuery,p=l.$,o=l.jQuery=l.$=function(E,F){return new o.fn.init(E,F)},D=/^[^<]*(<(.|\s)+>)[^>]*$|^#([\w-]+)$/,f=/^.[^:#\[\.,]*$/;o.fn=o.prototype={init:function(E,H){E=E||document;if(E.nodeType){this[0]=E;this.length=1;this.context=E;return this}if(typeof E==="string"){var G=D.exec(E);if(G&&(G[1]||!H)){if(G[1]){E=o.clean([G[1]],H)}else{var I=document.getElementById(G[3]);if(I&&I.id!=G[3]){return o().find(E)}var F=o(I||[]);F.context=document;F.selector=E;return F}}else{return o(H).find(E)}}else{if(o.isFunction(E)){return o(document).ready(E)}}if(E.selector&&E.context){this.selector=E.selector;this.context=E.context}return this.setArray(o.isArray(E)?E:o.makeArray(E))},selector:"",jquery:"1.3.2",size:function(){return this.length},get:function(E){return E===g?Array.prototype.slice.call(this):this[E]},pushStack:function(F,H,E){var G=o(F);G.prevObject=this;G.context=this.context;if(H==="find"){G.selector=this.selector+(this.selector?" ":"")+E}else{if(H){G.selector=this.selector+"."+H+"("+E+")"}}return G},setArray:function(E){this.length=0;Array.prototype.push.apply(this,E);return this},each:function(F,E){return o.each(this,F,E)},index:function(E){return o.inArray(E&&E.jquery?E[0]:E,this)},attr:function(F,H,G){var E=F;if(typeof F==="string"){if(H===g){return this[0]&&o[G||"attr"](this[0],F)}else{E={};E[F]=H}}return this.each(function(I){for(F in E){o.attr(G?this.style:this,F,o.prop(this,E[F],G,I,F))}})},css:function(E,F){if((E=="width"||E=="height")&&parseFloat(F)<0){F=g}return this.attr(E,F,"curCSS")},text:function(F){if(typeof F!=="object"&&F!=null){return this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(F))}var E="";o.each(F||this,function(){o.each(this.childNodes,function(){if(this.nodeType!=8){E+=this.nodeType!=1?this.nodeValue:o.fn.text([this])}})});return E},wrapAll:function(E){if(this[0]){var F=o(E,this[0].ownerDocument).clone();if(this[0].parentNode){F.insertBefore(this[0])}F.map(function(){var G=this;while(G.firstChild){G=G.firstChild}return G}).append(this)}return this},wrapInner:function(E){return this.each(function(){o(this).contents().wrapAll(E)})},wrap:function(E){return this.each(function(){o(this).wrapAll(E)})},append:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.appendChild(E)}})},prepend:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.insertBefore(E,this.firstChild)}})},before:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this)})},after:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this.nextSibling)})},end:function(){return this.prevObject||o([])},push:[].push,sort:[].sort,splice:[].splice,find:function(E){if(this.length===1){var F=this.pushStack([],"find",E);F.length=0;o.find(E,this[0],F);return F}else{return this.pushStack(o.unique(o.map(this,function(G){return o.find(E,G)})),"find",E)}},clone:function(G){var E=this.map(function(){if(!o.support.noCloneEvent&&!o.isXMLDoc(this)){var I=this.outerHTML;if(!I){var J=this.ownerDocument.createElement("div");J.appendChild(this.cloneNode(true));I=J.innerHTML}return o.clean([I.replace(/ jQuery\d+="(?:\d+|null)"/g,"").replace(/^\s*/,"")])[0]}else{return this.cloneNode(true)}});if(G===true){var H=this.find("*").andSelf(),F=0;E.find("*").andSelf().each(function(){if(this.nodeName!==H[F].nodeName){return}var I=o.data(H[F],"events");for(var K in I){for(var J in I[K]){o.event.add(this,K,I[K][J],I[K][J].data)}}F++})}return E},filter:function(E){return this.pushStack(o.isFunction(E)&&o.grep(this,function(G,F){return E.call(G,F)})||o.multiFilter(E,o.grep(this,function(F){return F.nodeType===1})),"filter",E)},closest:function(E){var G=o.expr.match.POS.test(E)?o(E):null,F=0;return this.map(function(){var H=this;while(H&&H.ownerDocument){if(G?G.index(H)>-1:o(H).is(E)){o.data(H,"closest",F);return H}H=H.parentNode;F++}})},not:function(E){if(typeof E==="string"){if(f.test(E)){return this.pushStack(o.multiFilter(E,this,true),"not",E)}else{E=o.multiFilter(E,this)}}var F=E.length&&E[E.length-1]!==g&&!E.nodeType;return this.filter(function(){return F?o.inArray(this,E)<0:this!=E})},add:function(E){return this.pushStack(o.unique(o.merge(this.get(),typeof E==="string"?o(E):o.makeArray(E))))},is:function(E){return !!E&&o.multiFilter(E,this).length>0},hasClass:function(E){return !!E&&this.is("."+E)},val:function(K){if(K===g){var E=this[0];if(E){if(o.nodeName(E,"option")){return(E.attributes.value||{}).specified?E.value:E.text}if(o.nodeName(E,"select")){var I=E.selectedIndex,L=[],M=E.options,H=E.type=="select-one";if(I<0){return null}for(var F=H?I:0,J=H?I+1:M.length;F=0||o.inArray(this.name,K)>=0)}else{if(o.nodeName(this,"select")){var N=o.makeArray(K);o("option",this).each(function(){this.selected=(o.inArray(this.value,N)>=0||o.inArray(this.text,N)>=0)});if(!N.length){this.selectedIndex=-1}}else{this.value=K}}})},html:function(E){return E===g?(this[0]?this[0].innerHTML.replace(/ jQuery\d+="(?:\d+|null)"/g,""):null):this.empty().append(E)},replaceWith:function(E){return this.after(E).remove()},eq:function(E){return this.slice(E,+E+1)},slice:function(){return this.pushStack(Array.prototype.slice.apply(this,arguments),"slice",Array.prototype.slice.call(arguments).join(","))},map:function(E){return this.pushStack(o.map(this,function(G,F){return E.call(G,F,G)}))},andSelf:function(){return this.add(this.prevObject)},domManip:function(J,M,L){if(this[0]){var I=(this[0].ownerDocument||this[0]).createDocumentFragment(),F=o.clean(J,(this[0].ownerDocument||this[0]),I),H=I.firstChild;if(H){for(var G=0,E=this.length;G1||G>0?I.cloneNode(true):I)}}if(F){o.each(F,z)}}return this;function K(N,O){return M&&o.nodeName(N,"table")&&o.nodeName(O,"tr")?(N.getElementsByTagName("tbody")[0]||N.appendChild(N.ownerDocument.createElement("tbody"))):N}}};o.fn.init.prototype=o.fn;function z(E,F){if(F.src){o.ajax({url:F.src,async:false,dataType:"script"})}else{o.globalEval(F.text||F.textContent||F.innerHTML||"")}if(F.parentNode){F.parentNode.removeChild(F)}}function e(){return +new Date}o.extend=o.fn.extend=function(){var J=arguments[0]||{},H=1,I=arguments.length,E=false,G;if(typeof J==="boolean"){E=J;J=arguments[1]||{};H=2}if(typeof J!=="object"&&!o.isFunction(J)){J={}}if(I==H){J=this;--H}for(;H-1}},swap:function(H,G,I){var E={};for(var F in G){E[F]=H.style[F];H.style[F]=G[F]}I.call(H);for(var F in G){H.style[F]=E[F]}},css:function(H,F,J,E){if(F=="width"||F=="height"){var L,G={position:"absolute",visibility:"hidden",display:"block"},K=F=="width"?["Left","Right"]:["Top","Bottom"];function I(){L=F=="width"?H.offsetWidth:H.offsetHeight;if(E==="border"){return}o.each(K,function(){if(!E){L-=parseFloat(o.curCSS(H,"padding"+this,true))||0}if(E==="margin"){L+=parseFloat(o.curCSS(H,"margin"+this,true))||0}else{L-=parseFloat(o.curCSS(H,"border"+this+"Width",true))||0}})}if(H.offsetWidth!==0){I()}else{o.swap(H,G,I)}return Math.max(0,Math.round(L))}return o.curCSS(H,F,J)},curCSS:function(I,F,G){var L,E=I.style;if(F=="opacity"&&!o.support.opacity){L=o.attr(E,"opacity");return L==""?"1":L}if(F.match(/float/i)){F=w}if(!G&&E&&E[F]){L=E[F]}else{if(q.getComputedStyle){if(F.match(/float/i)){F="float"}F=F.replace(/([A-Z])/g,"-$1").toLowerCase();var M=q.getComputedStyle(I,null);if(M){L=M.getPropertyValue(F)}if(F=="opacity"&&L==""){L="1"}}else{if(I.currentStyle){var J=F.replace(/\-(\w)/g,function(N,O){return O.toUpperCase()});L=I.currentStyle[F]||I.currentStyle[J];if(!/^\d+(px)?$/i.test(L)&&/^\d/.test(L)){var H=E.left,K=I.runtimeStyle.left;I.runtimeStyle.left=I.currentStyle.left;E.left=L||0;L=E.pixelLeft+"px";E.left=H;I.runtimeStyle.left=K}}}}return L},clean:function(F,K,I){K=K||document;if(typeof K.createElement==="undefined"){K=K.ownerDocument||K[0]&&K[0].ownerDocument||document}if(!I&&F.length===1&&typeof F[0]==="string"){var H=/^<(\w+)\s*\/?>$/.exec(F[0]);if(H){return[K.createElement(H[1])]}}var G=[],E=[],L=K.createElement("div");o.each(F,function(P,S){if(typeof S==="number"){S+=""}if(!S){return}if(typeof S==="string"){S=S.replace(/(<(\w+)[^>]*?)\/>/g,function(U,V,T){return T.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)?U:V+">"});var O=S.replace(/^\s+/,"").substring(0,10).toLowerCase();var Q=!O.indexOf("",""]||!O.indexOf("",""]||O.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,"","
"]||!O.indexOf("",""]||(!O.indexOf("",""]||!O.indexOf("",""]||!o.support.htmlSerialize&&[1,"div
","
"]||[0,"",""];L.innerHTML=Q[1]+S+Q[2];while(Q[0]--){L=L.lastChild}if(!o.support.tbody){var R=/"&&!R?L.childNodes:[];for(var M=N.length-1;M>=0;--M){if(o.nodeName(N[M],"tbody")&&!N[M].childNodes.length){N[M].parentNode.removeChild(N[M])}}}if(!o.support.leadingWhitespace&&/^\s/.test(S)){L.insertBefore(K.createTextNode(S.match(/^\s*/)[0]),L.firstChild)}S=o.makeArray(L.childNodes)}if(S.nodeType){G.push(S)}else{G=o.merge(G,S)}});if(I){for(var J=0;G[J];J++){if(o.nodeName(G[J],"script")&&(!G[J].type||G[J].type.toLowerCase()==="text/javascript")){E.push(G[J].parentNode?G[J].parentNode.removeChild(G[J]):G[J])}else{if(G[J].nodeType===1){G.splice.apply(G,[J+1,0].concat(o.makeArray(G[J].getElementsByTagName("script"))))}I.appendChild(G[J])}}return E}return G},attr:function(J,G,K){if(!J||J.nodeType==3||J.nodeType==8){return g}var H=!o.isXMLDoc(J),L=K!==g;G=H&&o.props[G]||G;if(J.tagName){var F=/href|src|style/.test(G);if(G=="selected"&&J.parentNode){J.parentNode.selectedIndex}if(G in J&&H&&!F){if(L){if(G=="type"&&o.nodeName(J,"input")&&J.parentNode){throw"type property can't be changed"}J[G]=K}if(o.nodeName(J,"form")&&J.getAttributeNode(G)){return J.getAttributeNode(G).nodeValue}if(G=="tabIndex"){var I=J.getAttributeNode("tabIndex");return I&&I.specified?I.value:J.nodeName.match(/(button|input|object|select|textarea)/i)?0:J.nodeName.match(/^(a|area)$/i)&&J.href?0:g}return J[G]}if(!o.support.style&&H&&G=="style"){return o.attr(J.style,"cssText",K)}if(L){J.setAttribute(G,""+K)}var E=!o.support.hrefNormalized&&H&&F?J.getAttribute(G,2):J.getAttribute(G);return E===null?g:E}if(!o.support.opacity&&G=="opacity"){if(L){J.zoom=1;J.filter=(J.filter||"").replace(/alpha\([^)]*\)/,"")+(parseInt(K)+""=="NaN"?"":"alpha(opacity="+K*100+")")}return J.filter&&J.filter.indexOf("opacity=")>=0?(parseFloat(J.filter.match(/opacity=([^)]*)/)[1])/100)+"":""}G=G.replace(/-([a-z])/ig,function(M,N){return N.toUpperCase()});if(L){J[G]=K}return J[G]},trim:function(E){return(E||"").replace(/^\s+|\s+$/g,"")},makeArray:function(G){var E=[];if(G!=null){var F=G.length;if(F==null||typeof G==="string"||o.isFunction(G)||G.setInterval){E[0]=G}else{while(F){E[--F]=G[F]}}}return E},inArray:function(G,H){for(var E=0,F=H.length;E0?this.clone(true):this).get();o.fn[F].apply(o(L[K]),I);J=J.concat(I)}return this.pushStack(J,E,G)}});o.each({removeAttr:function(E){o.attr(this,E,"");if(this.nodeType==1){this.removeAttribute(E)}},addClass:function(E){o.className.add(this,E)},removeClass:function(E){o.className.remove(this,E)},toggleClass:function(F,E){if(typeof E!=="boolean"){E=!o.className.has(this,F)}o.className[E?"add":"remove"](this,F)},remove:function(E){if(!E||o.filter(E,[this]).length){o("*",this).add([this]).each(function(){o.event.remove(this);o.removeData(this)});if(this.parentNode){this.parentNode.removeChild(this)}}},empty:function(){o(this).children().remove();while(this.firstChild){this.removeChild(this.firstChild)}}},function(E,F){o.fn[E]=function(){return this.each(F,arguments)}});function j(E,F){return E[0]&&parseInt(o.curCSS(E[0],F,true),10)||0}var h="jQuery"+e(),v=0,A={};o.extend({cache:{},data:function(F,E,G){F=F==l?A:F;var H=F[h];if(!H){H=F[h]=++v}if(E&&!o.cache[H]){o.cache[H]={}}if(G!==g){o.cache[H][E]=G}return E?o.cache[H][E]:H},removeData:function(F,E){F=F==l?A:F;var H=F[h];if(E){if(o.cache[H]){delete o.cache[H][E];E="";for(E in o.cache[H]){break}if(!E){o.removeData(F)}}}else{try{delete F[h]}catch(G){if(F.removeAttribute){F.removeAttribute(h)}}delete o.cache[H]}},queue:function(F,E,H){if(F){E=(E||"fx")+"queue";var G=o.data(F,E);if(!G||o.isArray(H)){G=o.data(F,E,o.makeArray(H))}else{if(H){G.push(H)}}}return G},dequeue:function(H,G){var E=o.queue(H,G),F=E.shift();if(!G||G==="fx"){F=E[0]}if(F!==g){F.call(H)}}});o.fn.extend({data:function(E,G){var H=E.split(".");H[1]=H[1]?"."+H[1]:"";if(G===g){var F=this.triggerHandler("getData"+H[1]+"!",[H[0]]);if(F===g&&this.length){F=o.data(this[0],E)}return F===g&&H[1]?this.data(H[0]):F}else{return this.trigger("setData"+H[1]+"!",[H[0],G]).each(function(){o.data(this,E,G)})}},removeData:function(E){return this.each(function(){o.removeData(this,E)})},queue:function(E,F){if(typeof E!=="string"){F=E;E="fx"}if(F===g){return o.queue(this[0],E)}return this.each(function(){var G=o.queue(this,E,F);if(E=="fx"&&G.length==1){G[0].call(this)}})},dequeue:function(E){return this.each(function(){o.dequeue(this,E)})}}); +/* + * Sizzle CSS Selector Engine - v0.9.3 + * Copyright 2009, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * More information: http://sizzlejs.com/ + */ +(function(){var R=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?/g,L=0,H=Object.prototype.toString;var F=function(Y,U,ab,ac){ab=ab||[];U=U||document;if(U.nodeType!==1&&U.nodeType!==9){return[]}if(!Y||typeof Y!=="string"){return ab}var Z=[],W,af,ai,T,ad,V,X=true;R.lastIndex=0;while((W=R.exec(Y))!==null){Z.push(W[1]);if(W[2]){V=RegExp.rightContext;break}}if(Z.length>1&&M.exec(Y)){if(Z.length===2&&I.relative[Z[0]]){af=J(Z[0]+Z[1],U)}else{af=I.relative[Z[0]]?[U]:F(Z.shift(),U);while(Z.length){Y=Z.shift();if(I.relative[Y]){Y+=Z.shift()}af=J(Y,af)}}}else{var ae=ac?{expr:Z.pop(),set:E(ac)}:F.find(Z.pop(),Z.length===1&&U.parentNode?U.parentNode:U,Q(U));af=F.filter(ae.expr,ae.set);if(Z.length>0){ai=E(af)}else{X=false}while(Z.length){var ah=Z.pop(),ag=ah;if(!I.relative[ah]){ah=""}else{ag=Z.pop()}if(ag==null){ag=U}I.relative[ah](ai,ag,Q(U))}}if(!ai){ai=af}if(!ai){throw"Syntax error, unrecognized expression: "+(ah||Y)}if(H.call(ai)==="[object Array]"){if(!X){ab.push.apply(ab,ai)}else{if(U.nodeType===1){for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&(ai[aa]===true||ai[aa].nodeType===1&&K(U,ai[aa]))){ab.push(af[aa])}}}else{for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&ai[aa].nodeType===1){ab.push(af[aa])}}}}}else{E(ai,ab)}if(V){F(V,U,ab,ac);if(G){hasDuplicate=false;ab.sort(G);if(hasDuplicate){for(var aa=1;aa":function(Z,U,aa){var X=typeof U==="string";if(X&&!/\W/.test(U)){U=aa?U:U.toUpperCase();for(var V=0,T=Z.length;V=0)){if(!V){T.push(Y)}}else{if(V){U[X]=false}}}}return false},ID:function(T){return T[1].replace(/\\/g,"")},TAG:function(U,T){for(var V=0;T[V]===false;V++){}return T[V]&&Q(T[V])?U[1]:U[1].toUpperCase()},CHILD:function(T){if(T[1]=="nth"){var U=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(T[2]=="even"&&"2n"||T[2]=="odd"&&"2n+1"||!/\D/.test(T[2])&&"0n+"+T[2]||T[2]);T[2]=(U[1]+(U[2]||1))-0;T[3]=U[3]-0}T[0]=L++;return T},ATTR:function(X,U,V,T,Y,Z){var W=X[1].replace(/\\/g,"");if(!Z&&I.attrMap[W]){X[1]=I.attrMap[W]}if(X[2]==="~="){X[4]=" "+X[4]+" "}return X},PSEUDO:function(X,U,V,T,Y){if(X[1]==="not"){if(X[3].match(R).length>1||/^\w/.test(X[3])){X[3]=F(X[3],null,null,U)}else{var W=F.filter(X[3],U,V,true^Y);if(!V){T.push.apply(T,W)}return false}}else{if(I.match.POS.test(X[0])||I.match.CHILD.test(X[0])){return true}}return X},POS:function(T){T.unshift(true);return T}},filters:{enabled:function(T){return T.disabled===false&&T.type!=="hidden"},disabled:function(T){return T.disabled===true},checked:function(T){return T.checked===true},selected:function(T){T.parentNode.selectedIndex;return T.selected===true},parent:function(T){return !!T.firstChild},empty:function(T){return !T.firstChild},has:function(V,U,T){return !!F(T[3],V).length},header:function(T){return/h\d/i.test(T.nodeName)},text:function(T){return"text"===T.type},radio:function(T){return"radio"===T.type},checkbox:function(T){return"checkbox"===T.type},file:function(T){return"file"===T.type},password:function(T){return"password"===T.type},submit:function(T){return"submit"===T.type},image:function(T){return"image"===T.type},reset:function(T){return"reset"===T.type},button:function(T){return"button"===T.type||T.nodeName.toUpperCase()==="BUTTON"},input:function(T){return/input|select|textarea|button/i.test(T.nodeName)}},setFilters:{first:function(U,T){return T===0},last:function(V,U,T,W){return U===W.length-1},even:function(U,T){return T%2===0},odd:function(U,T){return T%2===1},lt:function(V,U,T){return UT[3]-0},nth:function(V,U,T){return T[3]-0==U},eq:function(V,U,T){return T[3]-0==U}},filter:{PSEUDO:function(Z,V,W,aa){var U=V[1],X=I.filters[U];if(X){return X(Z,W,V,aa)}else{if(U==="contains"){return(Z.textContent||Z.innerText||"").indexOf(V[3])>=0}else{if(U==="not"){var Y=V[3];for(var W=0,T=Y.length;W=0)}}},ID:function(U,T){return U.nodeType===1&&U.getAttribute("id")===T},TAG:function(U,T){return(T==="*"&&U.nodeType===1)||U.nodeName===T},CLASS:function(U,T){return(" "+(U.className||U.getAttribute("class"))+" ").indexOf(T)>-1},ATTR:function(Y,W){var V=W[1],T=I.attrHandle[V]?I.attrHandle[V](Y):Y[V]!=null?Y[V]:Y.getAttribute(V),Z=T+"",X=W[2],U=W[4];return T==null?X==="!=":X==="="?Z===U:X==="*="?Z.indexOf(U)>=0:X==="~="?(" "+Z+" ").indexOf(U)>=0:!U?Z&&T!==false:X==="!="?Z!=U:X==="^="?Z.indexOf(U)===0:X==="$="?Z.substr(Z.length-U.length)===U:X==="|="?Z===U||Z.substr(0,U.length+1)===U+"-":false},POS:function(X,U,V,Y){var T=U[2],W=I.setFilters[T];if(W){return W(X,V,U,Y)}}}};var M=I.match.POS;for(var O in I.match){I.match[O]=RegExp(I.match[O].source+/(?![^\[]*\])(?![^\(]*\))/.source)}var E=function(U,T){U=Array.prototype.slice.call(U);if(T){T.push.apply(T,U);return T}return U};try{Array.prototype.slice.call(document.documentElement.childNodes)}catch(N){E=function(X,W){var U=W||[];if(H.call(X)==="[object Array]"){Array.prototype.push.apply(U,X)}else{if(typeof X.length==="number"){for(var V=0,T=X.length;V";var T=document.documentElement;T.insertBefore(U,T.firstChild);if(!!document.getElementById(V)){I.find.ID=function(X,Y,Z){if(typeof Y.getElementById!=="undefined"&&!Z){var W=Y.getElementById(X[1]);return W?W.id===X[1]||typeof W.getAttributeNode!=="undefined"&&W.getAttributeNode("id").nodeValue===X[1]?[W]:g:[]}};I.filter.ID=function(Y,W){var X=typeof Y.getAttributeNode!=="undefined"&&Y.getAttributeNode("id");return Y.nodeType===1&&X&&X.nodeValue===W}}T.removeChild(U)})();(function(){var T=document.createElement("div");T.appendChild(document.createComment(""));if(T.getElementsByTagName("*").length>0){I.find.TAG=function(U,Y){var X=Y.getElementsByTagName(U[1]);if(U[1]==="*"){var W=[];for(var V=0;X[V];V++){if(X[V].nodeType===1){W.push(X[V])}}X=W}return X}}T.innerHTML="";if(T.firstChild&&typeof T.firstChild.getAttribute!=="undefined"&&T.firstChild.getAttribute("href")!=="#"){I.attrHandle.href=function(U){return U.getAttribute("href",2)}}})();if(document.querySelectorAll){(function(){var T=F,U=document.createElement("div");U.innerHTML="

";if(U.querySelectorAll&&U.querySelectorAll(".TEST").length===0){return}F=function(Y,X,V,W){X=X||document;if(!W&&X.nodeType===9&&!Q(X)){try{return E(X.querySelectorAll(Y),V)}catch(Z){}}return T(Y,X,V,W)};F.find=T.find;F.filter=T.filter;F.selectors=T.selectors;F.matches=T.matches})()}if(document.getElementsByClassName&&document.documentElement.getElementsByClassName){(function(){var T=document.createElement("div");T.innerHTML="
";if(T.getElementsByClassName("e").length===0){return}T.lastChild.className="e";if(T.getElementsByClassName("e").length===1){return}I.order.splice(1,0,"CLASS");I.find.CLASS=function(U,V,W){if(typeof V.getElementsByClassName!=="undefined"&&!W){return V.getElementsByClassName(U[1])}}})()}function P(U,Z,Y,ad,aa,ac){var ab=U=="previousSibling"&&!ac;for(var W=0,V=ad.length;W0){X=T;break}}}T=T[U]}ad[W]=X}}}var K=document.compareDocumentPosition?function(U,T){return U.compareDocumentPosition(T)&16}:function(U,T){return U!==T&&(U.contains?U.contains(T):true)};var Q=function(T){return T.nodeType===9&&T.documentElement.nodeName!=="HTML"||!!T.ownerDocument&&Q(T.ownerDocument)};var J=function(T,aa){var W=[],X="",Y,V=aa.nodeType?[aa]:aa;while((Y=I.match.PSEUDO.exec(T))){X+=Y[0];T=T.replace(I.match.PSEUDO,"")}T=I.relative[T]?T+"*":T;for(var Z=0,U=V.length;Z0||T.offsetHeight>0};F.selectors.filters.animated=function(T){return o.grep(o.timers,function(U){return T===U.elem}).length};o.multiFilter=function(V,T,U){if(U){V=":not("+V+")"}return F.matches(V,T)};o.dir=function(V,U){var T=[],W=V[U];while(W&&W!=document){if(W.nodeType==1){T.push(W)}W=W[U]}return T};o.nth=function(X,T,V,W){T=T||1;var U=0;for(;X;X=X[V]){if(X.nodeType==1&&++U==T){break}}return X};o.sibling=function(V,U){var T=[];for(;V;V=V.nextSibling){if(V.nodeType==1&&V!=U){T.push(V)}}return T};return;l.Sizzle=F})();o.event={add:function(I,F,H,K){if(I.nodeType==3||I.nodeType==8){return}if(I.setInterval&&I!=l){I=l}if(!H.guid){H.guid=this.guid++}if(K!==g){var G=H;H=this.proxy(G);H.data=K}var E=o.data(I,"events")||o.data(I,"events",{}),J=o.data(I,"handle")||o.data(I,"handle",function(){return typeof o!=="undefined"&&!o.event.triggered?o.event.handle.apply(arguments.callee.elem,arguments):g});J.elem=I;o.each(F.split(/\s+/),function(M,N){var O=N.split(".");N=O.shift();H.type=O.slice().sort().join(".");var L=E[N];if(o.event.specialAll[N]){o.event.specialAll[N].setup.call(I,K,O)}if(!L){L=E[N]={};if(!o.event.special[N]||o.event.special[N].setup.call(I,K,O)===false){if(I.addEventListener){I.addEventListener(N,J,false)}else{if(I.attachEvent){I.attachEvent("on"+N,J)}}}}L[H.guid]=H;o.event.global[N]=true});I=null},guid:1,global:{},remove:function(K,H,J){if(K.nodeType==3||K.nodeType==8){return}var G=o.data(K,"events"),F,E;if(G){if(H===g||(typeof H==="string"&&H.charAt(0)==".")){for(var I in G){this.remove(K,I+(H||""))}}else{if(H.type){J=H.handler;H=H.type}o.each(H.split(/\s+/),function(M,O){var Q=O.split(".");O=Q.shift();var N=RegExp("(^|\\.)"+Q.slice().sort().join(".*\\.")+"(\\.|$)");if(G[O]){if(J){delete G[O][J.guid]}else{for(var P in G[O]){if(N.test(G[O][P].type)){delete G[O][P]}}}if(o.event.specialAll[O]){o.event.specialAll[O].teardown.call(K,Q)}for(F in G[O]){break}if(!F){if(!o.event.special[O]||o.event.special[O].teardown.call(K,Q)===false){if(K.removeEventListener){K.removeEventListener(O,o.data(K,"handle"),false)}else{if(K.detachEvent){K.detachEvent("on"+O,o.data(K,"handle"))}}}F=null;delete G[O]}}})}for(F in G){break}if(!F){var L=o.data(K,"handle");if(L){L.elem=null}o.removeData(K,"events");o.removeData(K,"handle")}}},trigger:function(I,K,H,E){var G=I.type||I;if(!E){I=typeof I==="object"?I[h]?I:o.extend(o.Event(G),I):o.Event(G);if(G.indexOf("!")>=0) +{I.type=G=G.slice(0,-1);I.exclusive=true}if(!H){I.stopPropagation();if(this.global[G]){o.each(o.cache,function(){if(this.events&&this.events[G]){o.event.trigger(I,K,this.handle.elem)}})}}if(!H||H.nodeType==3||H.nodeType==8){return g}I.result=g;I.target=H;K=o.makeArray(K);K.unshift(I)}I.currentTarget=H;var J=o.data(H,"handle");if(J){J.apply(H,K)}if((!H[G]||(o.nodeName(H,"a")&&G=="click"))&&H["on"+G]&&H["on"+G].apply(H,K)===false){I.result=false}if(!E&&H[G]&&!I.isDefaultPrevented()&&!(o.nodeName(H,"a")&&G=="click")){this.triggered=true;try{H[G]()}catch(L){}}this.triggered=false;if(!I.isPropagationStopped()){var F=H.parentNode||H.ownerDocument;if(F){o.event.trigger(I,K,F,true)}}},handle:function(K){var J,E;K=arguments[0]=o.event.fix(K||l.event);K.currentTarget=this;var L=K.type.split(".");K.type=L.shift();J=!L.length&&!K.exclusive;var I=RegExp("(^|\\.)"+L.slice().sort().join(".*\\.")+"(\\.|$)");E=(o.data(this,"events")||{})[K.type];for(var G in E){var H=E[G];if(J||I.test(H.type)){K.handler=H;K.data=H.data;var F=H.apply(this,arguments);if(F!==g){K.result=F;if(F===false){K.preventDefault();K.stopPropagation()}}if(K.isImmediatePropagationStopped()){break}}}},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),fix:function(H){if(H[h]){return H}var F=H;H=o.Event(F);for(var G=this.props.length,J;G;){J=this.props[--G];H[J]=F[J]}if(!H.target){H.target=H.srcElement||document}if(H.target.nodeType==3){H.target=H.target.parentNode}if(!H.relatedTarget&&H.fromElement){H.relatedTarget=H.fromElement==H.target?H.toElement:H.fromElement}if(H.pageX==null&&H.clientX!=null){var I=document.documentElement,E=document.body;H.pageX=H.clientX+(I&&I.scrollLeft||E&&E.scrollLeft||0)-(I.clientLeft||0);H.pageY=H.clientY+(I&&I.scrollTop||E&&E.scrollTop||0)-(I.clientTop||0)}if(!H.which&&((H.charCode||H.charCode===0)?H.charCode:H.keyCode)){H.which=H.charCode||H.keyCode}if(!H.metaKey&&H.ctrlKey){H.metaKey=H.ctrlKey}if(!H.which&&H.button){H.which=(H.button&1?1:(H.button&2?3:(H.button&4?2:0)))}return H},proxy:function(F,E){E=E||function(){return F.apply(this,arguments)};E.guid=F.guid=F.guid||E.guid||this.guid++;return E},special:{ready:{setup:B,teardown:function(){}}},specialAll:{live:{setup:function(E,F){o.event.add(this,F[0],c)},teardown:function(G){if(G.length){var E=0,F=RegExp("(^|\\.)"+G[0]+"(\\.|$)");o.each((o.data(this,"events").live||{}),function(){if(F.test(this.type)){E++}});if(E<1){o.event.remove(this,G[0],c)}}}}}};o.Event=function(E){if(!this.preventDefault){return new o.Event(E)}if(E&&E.type){this.originalEvent=E;this.type=E.type}else{this.type=E}this.timeStamp=e();this[h]=true};function k(){return false}function u(){return true}o.Event.prototype={preventDefault:function(){this.isDefaultPrevented=u;var E=this.originalEvent;if(!E){return}if(E.preventDefault){E.preventDefault()}E.returnValue=false},stopPropagation:function(){this.isPropagationStopped=u;var E=this.originalEvent;if(!E){return}if(E.stopPropagation){E.stopPropagation()}E.cancelBubble=true},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=u;this.stopPropagation()},isDefaultPrevented:k,isPropagationStopped:k,isImmediatePropagationStopped:k};var a=function(F){var E=F.relatedTarget;while(E&&E!=this){try{E=E.parentNode}catch(G){E=this}}if(E!=this){F.type=F.data;o.event.handle.apply(this,arguments)}};o.each({mouseover:"mouseenter",mouseout:"mouseleave"},function(F,E){o.event.special[E]={setup:function(){o.event.add(this,F,a,E)},teardown:function(){o.event.remove(this,F,a)}}});o.fn.extend({bind:function(F,G,E){return F=="unload"?this.one(F,G,E):this.each(function(){o.event.add(this,F,E||G,E&&G)})},one:function(G,H,F){var E=o.event.proxy(F||H,function(I){o(this).unbind(I,E);return(F||H).apply(this,arguments)});return this.each(function(){o.event.add(this,G,E,F&&H)})},unbind:function(F,E){return this.each(function(){o.event.remove(this,F,E)})},trigger:function(E,F){return this.each(function(){o.event.trigger(E,F,this)})},triggerHandler:function(E,G){if(this[0]){var F=o.Event(E);F.preventDefault();F.stopPropagation();o.event.trigger(F,G,this[0]);return F.result}},toggle:function(G){var E=arguments,F=1;while(F=0){var E=G.slice(I,G.length);G=G.slice(0,I)}var H="GET";if(J){if(o.isFunction(J)){K=J;J=null}else{if(typeof J==="object"){J=o.param(J);H="POST"}}}var F=this;o.ajax({url:G,type:H,dataType:"html",data:J,complete:function(M,L){if(L=="success"||L=="notmodified"){F.html(E?o("
").append(M.responseText.replace(//g,"")).find(E):M.responseText)}if(K){F.each(K,[M.responseText,L,M])}}});return this},serialize:function(){return o.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?o.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password|search/i.test(this.type))}).map(function(E,F){var G=o(this).val();return G==null?null:o.isArray(G)?o.map(G,function(I,H){return{name:F.name,value:I}}):{name:F.name,value:G}}).get()}});o.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(E,F){o.fn[F]=function(G){return this.bind(F,G)}});var r=e();o.extend({get:function(E,G,H,F){if(o.isFunction(G)){H=G;G=null}return o.ajax({type:"GET",url:E,data:G,success:H,dataType:F})},getScript:function(E,F){return o.get(E,null,F,"script")},getJSON:function(E,F,G){return o.get(E,F,G,"json")},post:function(E,G,H,F){if(o.isFunction(G)){H=G;G={}}return o.ajax({type:"POST",url:E,data:G,success:H,dataType:F})},ajaxSetup:function(E){o.extend(o.ajaxSettings,E)},ajaxSettings:{url:location.href,global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:function(){return l.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest()},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},ajax:function(M){M=o.extend(true,M,o.extend(true,{},o.ajaxSettings,M));var W,F=/=\?(&|$)/g,R,V,G=M.type.toUpperCase();if(M.data&&M.processData&&typeof M.data!=="string"){M.data=o.param(M.data)}if(M.dataType=="jsonp"){if(G=="GET"){if(!M.url.match(F)){M.url+=(M.url.match(/\?/)?"&":"?")+(M.jsonp||"callback")+"=?"}}else{if(!M.data||!M.data.match(F)){M.data=(M.data?M.data+"&":"")+(M.jsonp||"callback")+"=?"}}M.dataType="json"}if(M.dataType=="json"&&(M.data&&M.data.match(F)||M.url.match(F))){W="jsonp"+r++;if(M.data){M.data=(M.data+"").replace(F,"="+W+"$1")}M.url=M.url.replace(F,"="+W+"$1");M.dataType="script";l[W]=function(X){V=X;I();L();l[W]=g;try{delete l[W]}catch(Y){}if(H){H.removeChild(T)}}}if(M.dataType=="script"&&M.cache==null){M.cache=false}if(M.cache===false&&G=="GET"){var E=e();var U=M.url.replace(/(\?|&)_=.*?(&|$)/,"$1_="+E+"$2");M.url=U+((U==M.url)?(M.url.match(/\?/)?"&":"?")+"_="+E:"")}if(M.data&&G=="GET"){M.url+=(M.url.match(/\?/)?"&":"?")+M.data;M.data=null}if(M.global&&!o.active++){o.event.trigger("ajaxStart")}var Q=/^(\w+:)?\/\/([^\/?#]+)/.exec(M.url);if(M.dataType=="script"&&G=="GET"&&Q&&(Q[1]&&Q[1]!=location.protocol||Q[2]!=location.host)){var H=document.getElementsByTagName("head")[0];var T=document.createElement("script");T.src=M.url;if(M.scriptCharset){T.charset=M.scriptCharset}if(!W){var O=false;T.onload=T.onreadystatechange=function(){if(!O&&(!this.readyState||this.readyState=="loaded"||this.readyState=="complete")){O=true;I();L();T.onload=T.onreadystatechange=null;H.removeChild(T)}}}H.appendChild(T);return g}var K=false;var J=M.xhr();if(M.username){J.open(G,M.url,M.async,M.username,M.password)}else{J.open(G,M.url,M.async)}try{if(M.data){J.setRequestHeader("Content-Type",M.contentType)}if(M.ifModified){J.setRequestHeader("If-Modified-Since",o.lastModified[M.url]||"Thu, 01 Jan 1970 00:00:00 GMT")}J.setRequestHeader("X-Requested-With","XMLHttpRequest");J.setRequestHeader("Accept",M.dataType&&M.accepts[M.dataType]?M.accepts[M.dataType]+", */*":M.accepts._default)}catch(S){}if(M.beforeSend&&M.beforeSend(J,M)===false){if(M.global&&!--o.active){o.event.trigger("ajaxStop")}J.abort();return false}if(M.global){o.event.trigger("ajaxSend",[J,M])}var N=function(X){if(J.readyState==0){if(P){clearInterval(P);P=null;if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}}else{if(!K&&J&&(J.readyState==4||X=="timeout")){K=true;if(P){clearInterval(P);P=null}R=X=="timeout"?"timeout":!o.httpSuccess(J)?"error":M.ifModified&&o.httpNotModified(J,M.url)?"notmodified":"success";if(R=="success"){try{V=o.httpData(J,M.dataType,M)}catch(Z){R="parsererror"}}if(R=="success"){var Y;try{Y=J.getResponseHeader("Last-Modified")}catch(Z){}if(M.ifModified&&Y){o.lastModified[M.url]=Y}if(!W){I()}}else{o.handleError(M,J,R)}L();if(X){J.abort()}if(M.async){J=null}}}};if(M.async){var P=setInterval(N,13);if(M.timeout>0){setTimeout(function(){if(J&&!K){N("timeout")}},M.timeout)}}try{J.send(M.data)}catch(S){o.handleError(M,J,null,S)}if(!M.async){N()}function I(){if(M.success){M.success(V,R)}if(M.global){o.event.trigger("ajaxSuccess",[J,M])}}function L(){if(M.complete){M.complete(J,R)}if(M.global){o.event.trigger("ajaxComplete",[J,M])}if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}return J},handleError:function(F,H,E,G){if(F.error){F.error(H,E,G)}if(F.global){o.event.trigger("ajaxError",[H,F,G])}},active:0,httpSuccess:function(F){try{return !F.status&&location.protocol=="file:"||(F.status>=200&&F.status<300)||F.status==304||F.status==1223}catch(E){}return false},httpNotModified:function(G,E){try{var H=G.getResponseHeader("Last-Modified");return G.status==304||H==o.lastModified[E]}catch(F){}return false},httpData:function(J,H,G){var F=J.getResponseHeader("content-type"),E=H=="xml"||!H&&F&&F.indexOf("xml")>=0,I=E?J.responseXML:J.responseText;if(E&&I.documentElement.tagName=="parsererror"){throw"parsererror"}if(G&&G.dataFilter){I=G.dataFilter(I,H)}if(typeof I==="string"){if(H=="script"){o.globalEval(I)}if(H=="json"){I=l["eval"]("("+I+")")}}return I},param:function(E){var G=[];function H(I,J){G[G.length]=encodeURIComponent(I)+"="+encodeURIComponent(J)}if(o.isArray(E)||E.jquery){o.each(E,function(){H(this.name,this.value)})}else{for(var F in E){if(o.isArray(E[F])){o.each(E[F],function(){H(F,this)})}else{H(F,o.isFunction(E[F])?E[F]():E[F])}}}return G.join("&").replace(/%20/g,"+")}});var m={},n,d=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];function t(F,E){var G={};o.each(d.concat.apply([],d.slice(0,E)),function() +{G[this]=F});return G}o.fn.extend({show:function(J,L){if(J){return this.animate(t("show",3),J,L)}else{for(var H=0,F=this.length;H").appendTo("body");K=I.css("display");if(K==="none"){K="block"}I.remove();m[G]=K}o.data(this[H],"olddisplay",K)}}for(var H=0,F=this.length;H=0;H--){if(G[H].elem==this){if(E){G[H](true)}G.splice(H,1)}}});if(!E){this.dequeue()}return this}});o.each({slideDown:t("show",1),slideUp:t("hide",1),slideToggle:t("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(E,F){o.fn[E]=function(G,H){return this.animate(F,G,H)}});o.extend({speed:function(G,H,F){var E=typeof G==="object"?G:{complete:F||!F&&H||o.isFunction(G)&&G,duration:G,easing:F&&H||H&&!o.isFunction(H)&&H};E.duration=o.fx.off?0:typeof E.duration==="number"?E.duration:o.fx.speeds[E.duration]||o.fx.speeds._default;E.old=E.complete;E.complete=function(){if(E.queue!==false){o(this).dequeue()}if(o.isFunction(E.old)){E.old.call(this)}};return E},easing:{linear:function(G,H,E,F){return E+F*G},swing:function(G,H,E,F){return((-Math.cos(G*Math.PI)/2)+0.5)*F+E}},timers:[],fx:function(F,E,G){this.options=E;this.elem=F;this.prop=G;if(!E.orig){E.orig={}}}});o.fx.prototype={update:function(){if(this.options.step){this.options.step.call(this.elem,this.now,this)}(o.fx.step[this.prop]||o.fx.step._default)(this);if((this.prop=="height"||this.prop=="width")&&this.elem.style){this.elem.style.display="block"}},cur:function(F){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null)){return this.elem[this.prop]}var E=parseFloat(o.css(this.elem,this.prop,F));return E&&E>-10000?E:parseFloat(o.curCSS(this.elem,this.prop))||0},custom:function(I,H,G){this.startTime=e();this.start=I;this.end=H;this.unit=G||this.unit||"px";this.now=this.start;this.pos=this.state=0;var E=this;function F(J){return E.step(J)}F.elem=this.elem;if(F()&&o.timers.push(F)&&!n){n=setInterval(function(){var K=o.timers;for(var J=0;J=this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var E=true;for(var F in this.options.curAnim){if(this.options.curAnim[F]!==true){E=false}}if(E){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;this.elem.style.display=this.options.display;if(o.css(this.elem,"display")=="none"){this.elem.style.display="block"}}if(this.options.hide){o(this.elem).hide()}if(this.options.hide||this.options.show){for(var I in this.options.curAnim){o.attr(this.elem.style,I,this.options.orig[I])}}this.options.complete.call(this.elem)}return false}else{var J=G-this.startTime;this.state=J/this.options.duration;this.pos=o.easing[this.options.easing||(o.easing.swing?"swing":"linear")](this.state,J,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update()}return true}};o.extend(o.fx,{speeds:{slow:600,fast:200,_default:400},step:{opacity:function(E){o.attr(E.elem.style,"opacity",E.now)},_default:function(E){if(E.elem.style&&E.elem.style[E.prop]!=null){E.elem.style[E.prop]=E.now+E.unit}else{E.elem[E.prop]=E.now}}}});if(document.documentElement.getBoundingClientRect){o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}var G=this[0].getBoundingClientRect(),J=this[0].ownerDocument,F=J.body,E=J.documentElement,L=E.clientTop||F.clientTop||0,K=E.clientLeft||F.clientLeft||0,I=G.top+(self.pageYOffset||o.boxModel&&E.scrollTop||F.scrollTop)-L,H=G.left+(self.pageXOffset||o.boxModel&&E.scrollLeft||F.scrollLeft)-K;return{top:I,left:H}}}else{o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}o.offset.initialized||o.offset.initialize();var J=this[0],G=J.offsetParent,F=J,O=J.ownerDocument,M,H=O.documentElement,K=O.body,L=O.defaultView,E=L.getComputedStyle(J,null),N=J.offsetTop,I=J.offsetLeft;while((J=J.parentNode)&&J!==K&&J!==H){M=L.getComputedStyle(J,null);N-=J.scrollTop,I-=J.scrollLeft;if(J===G){N+=J.offsetTop,I+=J.offsetLeft;if(o.offset.doesNotAddBorder&&!(o.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(J.tagName))){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}F=G,G=J.offsetParent}if(o.offset.subtractsBorderForOverflowNotVisible&&M.overflow!=="visible"){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}E=M}if(E.position==="relative"||E.position==="static"){N+=K.offsetTop,I+=K.offsetLeft}if(E.position==="fixed"){N+=Math.max(H.scrollTop,K.scrollTop),I+=Math.max(H.scrollLeft,K.scrollLeft)}return{top:N,left:I}}}o.offset={initialize:function(){if(this.initialized){return}var L=document.body,F=document.createElement("div"),H,G,N,I,M,E,J=L.style.marginTop,K='
';M={position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"};for(E in M){F.style[E]=M[E]}F.innerHTML=K;L.insertBefore(F,L.firstChild);H=F.firstChild,G=H.firstChild,I=H.nextSibling.firstChild.firstChild;this.doesNotAddBorder=(G.offsetTop!==5);this.doesAddBorderForTableAndCells=(I.offsetTop===5);H.style.overflow="hidden",H.style.position="relative";this.subtractsBorderForOverflowNotVisible=(G.offsetTop===-5);L.style.marginTop="1px";this.doesNotIncludeMarginInBodyOffset=(L.offsetTop===0);L.style.marginTop=J;L.removeChild(F);this.initialized=true},bodyOffset:function(E){o.offset.initialized||o.offset.initialize();var G=E.offsetTop,F=E.offsetLeft;if(o.offset.doesNotIncludeMarginInBodyOffset){G+=parseInt(o.curCSS(E,"marginTop",true),10)||0,F+=parseInt(o.curCSS(E,"marginLeft",true),10)||0}return{top:G,left:F}}};o.fn.extend({position:function(){var I=0,H=0,F;if(this[0]){var G=this.offsetParent(),J=this.offset(),E=/^body|html$/i.test(G[0].tagName)?{top:0,left:0}:G.offset();J.top-=j(this,"marginTop");J.left-=j(this,"marginLeft");E.top+=j(G,"borderTopWidth");E.left+=j(G,"borderLeftWidth");F={top:J.top-E.top,left:J.left-E.left}}return F},offsetParent:function(){var E=this[0].offsetParent||document.body;while(E&&(!/^body|html$/i.test(E.tagName)&&o.css(E,"position")=="static")){E=E.offsetParent}return o(E)}});o.each(["Left","Top"],function(F,E){var G="scroll"+E;o.fn[G]=function(H){if(!this[0]){return null}return H!==g?this.each(function(){this==l||this==document?l.scrollTo(!F?H:o(l).scrollLeft(),F?H:o(l).scrollTop()):this[G]=H}):this[0]==l||this[0]==document?self[F?"pageYOffset":"pageXOffset"]||o.boxModel&&document.documentElement[G]||document.body[G]:this[0][G]}});o.each(["Height","Width"],function(I,G){var E=I?"Left":"Top",H=I?"Right":"Bottom",F=G.toLowerCase();o.fn["inner"+G]=function(){return this[0]?o.css(this[0],F,false,"padding"):null};o.fn["outer"+G]=function(K){return this[0]?o.css(this[0],F,false,K?"margin":"border"):null};var J=G.toLowerCase();o.fn[J]=function(K){return this[0]==l?document.compatMode=="CSS1Compat"&&document.documentElement["client"+G]||document.body["client"+G]:this[0]==document?Math.max(document.documentElement["client"+G],document.body["scroll"+G],document.documentElement["scroll"+G],document.body["offset"+G],document.documentElement["offset"+G]):K===g?(this.length?o.css(this[0],J):null):this.css(J,typeof K==="string"?K:K+"px")}})})(); +/* + * jQuery UI 1.7.2 + * + * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * http://docs.jquery.com/UI + */ +jQuery.ui||(function(c){var i=c.fn.remove,d=c.browser.mozilla&&(parseFloat(c.browser.version)<1.9);c.ui={version:"1.7.2",plugin:{add:function(k,l,n){var m=c.ui[k].prototype;for(var j in n){m.plugins[j]=m.plugins[j]||[];m.plugins[j].push([l,n[j]])}},call:function(j,l,k){var n=j.plugins[l];if(!n||!j.element[0].parentNode){return}for(var m=0;m0){return true}m[j]=1;l=(m[j]>0);m[j]=0;return l},isOverAxis:function(k,j,l){return(k>j)&&(k<(j+l))},isOver:function(o,k,n,m,j,l){return c.ui.isOverAxis(o,n,j)&&c.ui.isOverAxis(k,m,l)},keyCode:{BACKSPACE:8,CAPS_LOCK:20,COMMA:188,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38}};if(d){var f=c.attr,e=c.fn.removeAttr,h="http://www.w3.org/2005/07/aaa",a=/^aria-/,b=/^wairole:/;c.attr=function(k,j,l){var m=l!==undefined;return(j=="role"?(m?f.call(this,k,j,"wairole:"+l):(f.apply(this,arguments)||"").replace(b,"")):(a.test(j)?(m?k.setAttributeNS(h,j.replace(a,"aaa:"),l):f.call(this,k,j.replace(a,"aaa:"))):f.apply(this,arguments)))};c.fn.removeAttr=function(j){return(a.test(j)?this.each(function(){this.removeAttributeNS(h,j.replace(a,""))}):e.call(this,j))}}c.fn.extend({remove:function(){c("*",this).add(this).each(function(){c(this).triggerHandler("remove")});return i.apply(this,arguments)},enableSelection:function(){return this.attr("unselectable","off").css("MozUserSelect","").unbind("selectstart.ui")},disableSelection:function(){return this.attr("unselectable","on").css("MozUserSelect","none").bind("selectstart.ui",function(){return false})},scrollParent:function(){var j;if((c.browser.msie&&(/(static|relative)/).test(this.css("position")))||(/absolute/).test(this.css("position"))){j=this.parents().filter(function(){return(/(relative|absolute|fixed)/).test(c.curCSS(this,"position",1))&&(/(auto|scroll)/).test(c.curCSS(this,"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0)}else{j=this.parents().filter(function(){return(/(auto|scroll)/).test(c.curCSS(this,"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0)}return(/fixed/).test(this.css("position"))||!j.length?c(document):j}});c.extend(c.expr[":"],{data:function(l,k,j){return !!c.data(l,j[3])},focusable:function(k){var l=k.nodeName.toLowerCase(),j=c.attr(k,"tabindex");return(/input|select|textarea|button|object/.test(l)?!k.disabled:"a"==l||"area"==l?k.href||!isNaN(j):!isNaN(j))&&!c(k)["area"==l?"parents":"closest"](":hidden").length},tabbable:function(k){var j=c.attr(k,"tabindex");return(isNaN(j)||j>=0)&&c(k).is(":focusable")}});function g(m,n,o,l){function k(q){var p=c[m][n][q]||[];return(typeof p=="string"?p.split(/,?\s+/):p)}var j=k("getter");if(l.length==1&&typeof l[0]=="string"){j=j.concat(k("getterSetter"))}return(c.inArray(o,j)!=-1)}c.widget=function(k,j){var l=k.split(".")[0];k=k.split(".")[1];c.fn[k]=function(p){var n=(typeof p=="string"),o=Array.prototype.slice.call(arguments,1);if(n&&p.substring(0,1)=="_"){return this}if(n&&g(l,k,p,o)){var m=c.data(this[0],k);return(m?m[p].apply(m,o):undefined)}return this.each(function(){var q=c.data(this,k);(!q&&!n&&c.data(this,k,new c[l][k](this,p))._init());(q&&n&&c.isFunction(q[p])&&q[p].apply(q,o))})};c[l]=c[l]||{};c[l][k]=function(o,n){var m=this;this.namespace=l;this.widgetName=k;this.widgetEventPrefix=c[l][k].eventPrefix||k;this.widgetBaseClass=l+"-"+k;this.options=c.extend({},c.widget.defaults,c[l][k].defaults,c.metadata&&c.metadata.get(o)[k],n);this.element=c(o).bind("setData."+k,function(q,p,r){if(q.target==o){return m._setData(p,r)}}).bind("getData."+k,function(q,p){if(q.target==o){return m._getData(p)}}).bind("remove",function(){return m.destroy()})};c[l][k].prototype=c.extend({},c.widget.prototype,j);c[l][k].getterSetter="option"};c.widget.prototype={_init:function(){},destroy:function(){this.element.removeData(this.widgetName).removeClass(this.widgetBaseClass+"-disabled "+this.namespace+"-state-disabled").removeAttr("aria-disabled")},option:function(l,m){var k=l,j=this;if(typeof l=="string"){if(m===undefined){return this._getData(l)}k={};k[l]=m}c.each(k,function(n,o){j._setData(n,o)})},_getData:function(j){return this.options[j]},_setData:function(j,k){this.options[j]=k;if(j=="disabled"){this.element[k?"addClass":"removeClass"](this.widgetBaseClass+"-disabled "+this.namespace+"-state-disabled").attr("aria-disabled",k)}},enable:function(){this._setData("disabled",false)},disable:function(){this._setData("disabled",true)},_trigger:function(l,m,n){var p=this.options[l],j=(l==this.widgetEventPrefix?l:this.widgetEventPrefix+l);m=c.Event(m);m.type=j;if(m.originalEvent){for(var k=c.event.props.length,o;k;){o=c.event.props[--k];m[o]=m.originalEvent[o]}}this.element.trigger(m,n);return !(c.isFunction(p)&&p.call(this.element[0],m,n)===false||m.isDefaultPrevented())}};c.widget.defaults={disabled:false};c.ui.mouse={_mouseInit:function(){var j=this;this.element.bind("mousedown."+this.widgetName,function(k){return j._mouseDown(k)}).bind("click."+this.widgetName,function(k){if(j._preventClickEvent){j._preventClickEvent=false;k.stopImmediatePropagation();return false}});if(c.browser.msie){this._mouseUnselectable=this.element.attr("unselectable");this.element.attr("unselectable","on")}this.started=false},_mouseDestroy:function(){this.element.unbind("."+this.widgetName);(c.browser.msie&&this.element.attr("unselectable",this._mouseUnselectable))},_mouseDown:function(l){l.originalEvent=l.originalEvent||{};if(l.originalEvent.mouseHandled){return}(this._mouseStarted&&this._mouseUp(l));this._mouseDownEvent=l;var k=this,m=(l.which==1),j=(typeof this.options.cancel=="string"?c(l.target).parents().add(l.target).filter(this.options.cancel).length:false);if(!m||j||!this._mouseCapture(l)){return true}this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet){this._mouseDelayTimer=setTimeout(function(){k.mouseDelayMet=true},this.options.delay)}if(this._mouseDistanceMet(l)&&this._mouseDelayMet(l)){this._mouseStarted=(this._mouseStart(l)!==false);if(!this._mouseStarted){l.preventDefault();return true}}this._mouseMoveDelegate=function(n){return k._mouseMove(n)};this._mouseUpDelegate=function(n){return k._mouseUp(n)};c(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);(c.browser.safari||l.preventDefault());l.originalEvent.mouseHandled=true;return true},_mouseMove:function(j){if(c.browser.msie&&!j.button){return this._mouseUp(j)}if(this._mouseStarted){this._mouseDrag(j);return j.preventDefault()}if(this._mouseDistanceMet(j)&&this._mouseDelayMet(j)){this._mouseStarted=(this._mouseStart(this._mouseDownEvent,j)!==false);(this._mouseStarted?this._mouseDrag(j):this._mouseUp(j))}return !this._mouseStarted},_mouseUp:function(j){c(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;this._preventClickEvent=(j.target==this._mouseDownEvent.target);this._mouseStop(j)}return false},_mouseDistanceMet:function(j){return(Math.max(Math.abs(this._mouseDownEvent.pageX-j.pageX),Math.abs(this._mouseDownEvent.pageY-j.pageY))>=this.options.distance)},_mouseDelayMet:function(j){return this.mouseDelayMet},_mouseStart:function(j){},_mouseDrag:function(j){},_mouseStop:function(j){},_mouseCapture:function(j){return true}};c.ui.mouse.defaults={cancel:null,distance:1,delay:0}})(jQuery);;/* * jQuery UI Resizable 1.7.2 + * + * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * http://docs.jquery.com/UI/Resizables + * + * Depends: + * ui.core.js + */ +(function(c){c.widget("ui.resizable",c.extend({},c.ui.mouse,{_init:function(){var e=this,j=this.options;this.element.addClass("ui-resizable");c.extend(this,{_aspectRatio:!!(j.aspectRatio),aspectRatio:j.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:j.helper||j.ghost||j.animate?j.helper||"ui-resizable-helper":null});if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)){if(/relative/.test(this.element.css("position"))&&c.browser.opera){this.element.css({position:"relative",top:"auto",left:"auto"})}this.element.wrap(c('
').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")}));this.element=this.element.parent().data("resizable",this.element.data("resizable"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});this.originalResizeStyle=this.originalElement.css("resize");this.originalElement.css("resize","none");this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"}));this.originalElement.css({margin:this.originalElement.css("margin")});this._proportionallyResize()}this.handles=j.handles||(!c(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"});if(this.handles.constructor==String){if(this.handles=="all"){this.handles="n,e,s,w,se,sw,ne,nw"}var k=this.handles.split(",");this.handles={};for(var f=0;f
');if(/sw|se|ne|nw/.test(h)){g.css({zIndex:++j.zIndex})}if("se"==h){g.addClass("ui-icon ui-icon-gripsmall-diagonal-se")}this.handles[h]=".ui-resizable-"+h;this.element.append(g)}}this._renderAxis=function(p){p=p||this.element;for(var m in this.handles){if(this.handles[m].constructor==String){this.handles[m]=c(this.handles[m],this.element).show()}if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var n=c(this.handles[m],this.element),o=0;o=/sw|ne|nw|se|n|s/.test(m)?n.outerHeight():n.outerWidth();var l=["padding",/ne|nw|n/.test(m)?"Top":/se|sw|s/.test(m)?"Bottom":/^e$/.test(m)?"Right":"Left"].join("");p.css(l,o);this._proportionallyResize()}if(!c(this.handles[m]).length){continue}}};this._renderAxis(this.element);this._handles=c(".ui-resizable-handle",this.element).disableSelection();this._handles.mouseover(function(){if(!e.resizing){if(this.className){var i=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)}e.axis=i&&i[1]?i[1]:"se"}});if(j.autoHide){this._handles.hide();c(this.element).addClass("ui-resizable-autohide").hover(function(){c(this).removeClass("ui-resizable-autohide");e._handles.show()},function(){if(!e.resizing){c(this).addClass("ui-resizable-autohide");e._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy();var d=function(f){c(f).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){d(this.element);var e=this.element;e.parent().append(this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")})).end().remove()}this.originalElement.css("resize",this.originalResizeStyle);d(this.originalElement)},_mouseCapture:function(e){var f=false;for(var d in this.handles){if(c(this.handles[d])[0]==e.target){f=true}}return this.options.disabled||!!f},_mouseStart:function(f){var i=this.options,e=this.element.position(),d=this.element;this.resizing=true;this.documentScroll={top:c(document).scrollTop(),left:c(document).scrollLeft()};if(d.is(".ui-draggable")||(/absolute/).test(d.css("position"))){d.css({position:"absolute",top:e.top,left:e.left})}if(c.browser.opera&&(/relative/).test(d.css("position"))){d.css({position:"relative",top:"auto",left:"auto"})}this._renderProxy();var j=b(this.helper.css("left")),g=b(this.helper.css("top"));if(i.containment){j+=c(i.containment).scrollLeft()||0;g+=c(i.containment).scrollTop()||0}this.offset=this.helper.offset();this.position={left:j,top:g};this.size=this._helper?{width:d.outerWidth(),height:d.outerHeight()}:{width:d.width(),height:d.height()};this.originalSize=this._helper?{width:d.outerWidth(),height:d.outerHeight()}:{width:d.width(),height:d.height()};this.originalPosition={left:j,top:g};this.sizeDiff={width:d.outerWidth()-d.width(),height:d.outerHeight()-d.height()};this.originalMousePosition={left:f.pageX,top:f.pageY};this.aspectRatio=(typeof i.aspectRatio=="number")?i.aspectRatio:((this.originalSize.width/this.originalSize.height)||1);var h=c(".ui-resizable-"+this.axis).css("cursor");c("body").css("cursor",h=="auto"?this.axis+"-resize":h);d.addClass("ui-resizable-resizing");this._propagate("start",f);return true},_mouseDrag:function(d){var g=this.helper,f=this.options,l={},p=this,i=this.originalMousePosition,m=this.axis;var q=(d.pageX-i.left)||0,n=(d.pageY-i.top)||0;var h=this._change[m];if(!h){return false}var k=h.apply(this,[d,q,n]),j=c.browser.msie&&c.browser.version<7,e=this.sizeDiff;if(this._aspectRatio||d.shiftKey){k=this._updateRatio(k,d)}k=this._respectSize(k,d);this._propagate("resize",d);g.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});if(!this._helper&&this._proportionallyResizeElements.length){this._proportionallyResize()}this._updateCache(k);this._trigger("resize",d,this.ui());return false},_mouseStop:function(g){this.resizing=false;var h=this.options,l=this;if(this._helper){var f=this._proportionallyResizeElements,d=f.length&&(/textarea/i).test(f[0].nodeName),e=d&&c.ui.hasScroll(f[0],"left")?0:l.sizeDiff.height,j=d?0:l.sizeDiff.width;var m={width:(l.size.width-j),height:(l.size.height-e)},i=(parseInt(l.element.css("left"),10)+(l.position.left-l.originalPosition.left))||null,k=(parseInt(l.element.css("top"),10)+(l.position.top-l.originalPosition.top))||null;if(!h.animate){this.element.css(c.extend(m,{top:k,left:i}))}l.helper.height(l.size.height);l.helper.width(l.size.width);if(this._helper&&!h.animate){this._proportionallyResize()}}c("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop",g);if(this._helper){this.helper.remove()}return false},_updateCache:function(d){var e=this.options;this.offset=this.helper.offset();if(a(d.left)){this.position.left=d.left}if(a(d.top)){this.position.top=d.top}if(a(d.height)){this.size.height=d.height}if(a(d.width)){this.size.width=d.width}},_updateRatio:function(g,f){var h=this.options,i=this.position,e=this.size,d=this.axis;if(g.height){g.width=(e.height*this.aspectRatio)}else{if(g.width){g.height=(e.width/this.aspectRatio)}}if(d=="sw"){g.left=i.left+(e.width-g.width);g.top=null}if(d=="nw"){g.top=i.top+(e.height-g.height);g.left=i.left+(e.width-g.width)}return g},_respectSize:function(k,f){var i=this.helper,h=this.options,q=this._aspectRatio||f.shiftKey,p=this.axis,s=a(k.width)&&h.maxWidth&&(h.maxWidthk.width),r=a(k.height)&&h.minHeight&&(h.minHeight>k.height);if(g){k.width=h.minWidth}if(r){k.height=h.minHeight}if(s){k.width=h.maxWidth}if(l){k.height=h.maxHeight}var e=this.originalPosition.left+this.originalSize.width,n=this.position.top+this.size.height;var j=/sw|nw|w/.test(p),d=/nw|ne|n/.test(p);if(g&&j){k.left=e-h.minWidth}if(s&&j){k.left=e-h.maxWidth}if(r&&d){k.top=n-h.minHeight}if(l&&d){k.top=n-h.maxHeight}var m=!k.width&&!k.height;if(m&&!k.left&&k.top){k.top=null}else{if(m&&!k.top&&k.left){k.left=null}}return k},_proportionallyResize:function(){var j=this.options;if(!this._proportionallyResizeElements.length){return}var f=this.helper||this.element;for(var e=0;e');var d=c.browser.msie&&c.browser.version<7,f=(d?1:0),g=(d?2:-1);this.helper.addClass(this._helper).css({width:this.element.outerWidth()+g,height:this.element.outerHeight()+g,position:"absolute",left:this.elementOffset.left-f+"px",top:this.elementOffset.top-f+"px",zIndex:++h.zIndex});this.helper.appendTo("body").disableSelection()}else{this.helper=this.element}},_change:{e:function(f,e,d){return{width:this.originalSize.width+e}},w:function(g,e,d){var i=this.options,f=this.originalSize,h=this.originalPosition;return{left:h.left+e,width:f.width-e}},n:function(g,e,d){var i=this.options,f=this.originalSize,h=this.originalPosition;return{top:h.top+d,height:f.height-d}},s:function(f,e,d){return{height:this.originalSize.height+d}},se:function(f,e,d){return c.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[f,e,d]))},sw:function(f,e,d){return c.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[f,e,d]))},ne:function(f,e,d){return c.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[f,e,d]))},nw:function(f,e,d){return c.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[f,e,d]))}},_propagate:function(e,d){c.ui.plugin.call(this,e,[d,this.ui()]);(e!="resize"&&this._trigger(e,d,this.ui()))},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}));c.extend(c.ui.resizable,{version:"1.7.2",eventPrefix:"resize",defaults:{alsoResize:false,animate:false,animateDuration:"slow",animateEasing:"swing",aspectRatio:false,autoHide:false,cancel:":input,option",containment:false,delay:0,distance:1,ghost:false,grid:false,handles:"e,s,se",helper:false,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1000}});c.ui.plugin.add("resizable","alsoResize",{start:function(e,f){var d=c(this).data("resizable"),g=d.options;_store=function(h){c(h).each(function(){c(this).data("resizable-alsoresize",{width:parseInt(c(this).width(),10),height:parseInt(c(this).height(),10),left:parseInt(c(this).css("left"),10),top:parseInt(c(this).css("top"),10)})})};if(typeof(g.alsoResize)=="object"&&!g.alsoResize.parentNode){if(g.alsoResize.length){g.alsoResize=g.alsoResize[0];_store(g.alsoResize)}else{c.each(g.alsoResize,function(h,i){_store(h)})}}else{_store(g.alsoResize)}},resize:function(f,h){var e=c(this).data("resizable"),i=e.options,g=e.originalSize,k=e.originalPosition;var j={height:(e.size.height-g.height)||0,width:(e.size.width-g.width)||0,top:(e.position.top-k.top)||0,left:(e.position.left-k.left)||0},d=function(l,m){c(l).each(function(){var p=c(this),q=c(this).data("resizable-alsoresize"),o={},n=m&&m.length?m:["width","height","top","left"];c.each(n||["width","height","top","left"],function(r,t){var s=(q[t]||0)+(j[t]||0);if(s&&s>=0){o[t]=s||null}});if(/relative/.test(p.css("position"))&&c.browser.opera){e._revertToRelativePosition=true;p.css({position:"absolute",top:"auto",left:"auto"})}p.css(o)})};if(typeof(i.alsoResize)=="object"&&!i.alsoResize.nodeType){c.each(i.alsoResize,function(l,m){d(l,m)})}else{d(i.alsoResize)}},stop:function(e,f){var d=c(this).data("resizable");if(d._revertToRelativePosition&&c.browser.opera){d._revertToRelativePosition=false;el.css({position:"relative"})}c(this).removeData("resizable-alsoresize-start")}});c.ui.plugin.add("resizable","animate",{stop:function(h,m){var n=c(this).data("resizable"),i=n.options;var g=n._proportionallyResizeElements,d=g.length&&(/textarea/i).test(g[0].nodeName),e=d&&c.ui.hasScroll(g[0],"left")?0:n.sizeDiff.height,k=d?0:n.sizeDiff.width;var f={width:(n.size.width-k),height:(n.size.height-e)},j=(parseInt(n.element.css("left"),10)+(n.position.left-n.originalPosition.left))||null,l=(parseInt(n.element.css("top"),10)+(n.position.top-n.originalPosition.top))||null;n.element.animate(c.extend(f,l&&j?{top:l,left:j}:{}),{duration:i.animateDuration,easing:i.animateEasing,step:function(){var o={width:parseInt(n.element.css("width"),10),height:parseInt(n.element.css("height"),10),top:parseInt(n.element.css("top"),10),left:parseInt(n.element.css("left"),10)};if(g&&g.length){c(g[0]).css({width:o.width,height:o.height})}n._updateCache(o);n._propagate("resize",h)}})}});c.ui.plugin.add("resizable","containment",{start:function(e,q){var s=c(this).data("resizable"),i=s.options,k=s.element;var f=i.containment,j=(f instanceof c)?f.get(0):(/parent/.test(f))?k.parent().get(0):f;if(!j){return}s.containerElement=c(j);if(/document/.test(f)||f==document){s.containerOffset={left:0,top:0};s.containerPosition={left:0,top:0};s.parentData={element:c(document),left:0,top:0,width:c(document).width(),height:c(document).height()||document.body.parentNode.scrollHeight}}else{var m=c(j),h=[];c(["Top","Right","Left","Bottom"]).each(function(p,o){h[p]=b(m.css("padding"+o))});s.containerOffset=m.offset();s.containerPosition=m.position();s.containerSize={height:(m.innerHeight()-h[3]),width:(m.innerWidth()-h[1])};var n=s.containerOffset,d=s.containerSize.height,l=s.containerSize.width,g=(c.ui.hasScroll(j,"left")?j.scrollWidth:l),r=(c.ui.hasScroll(j)?j.scrollHeight:d);s.parentData={element:j,left:n.left,top:n.top,width:g,height:r}}},resize:function(f,p){var s=c(this).data("resizable"),h=s.options,e=s.containerSize,n=s.containerOffset,l=s.size,m=s.position,q=s._aspectRatio||f.shiftKey,d={top:0,left:0},g=s.containerElement;if(g[0]!=document&&(/static/).test(g.css("position"))){d=n}if(m.left<(s._helper?n.left:0)){s.size.width=s.size.width+(s._helper?(s.position.left-n.left):(s.position.left-d.left));if(q){s.size.height=s.size.width/h.aspectRatio}s.position.left=h.helper?n.left:0}if(m.top<(s._helper?n.top:0)) +{s.size.height=s.size.height+(s._helper?(s.position.top-n.top):s.position.top);if(q){s.size.width=s.size.height*h.aspectRatio}s.position.top=s._helper?n.top:0}s.offset.left=s.parentData.left+s.position.left;s.offset.top=s.parentData.top+s.position.top;var k=Math.abs((s._helper?s.offset.left-d.left:(s.offset.left-d.left))+s.sizeDiff.width),r=Math.abs((s._helper?s.offset.top-d.top:(s.offset.top-n.top))+s.sizeDiff.height);var j=s.containerElement.get(0)==s.element.parent().get(0),i=/relative|absolute/.test(s.containerElement.css("position"));if(j&&i){k-=s.parentData.left}if(k+s.size.width>=s.parentData.width){s.size.width=s.parentData.width-k;if(q){s.size.height=s.size.width/s.aspectRatio}}if(r+s.size.height>=s.parentData.height){s.size.height=s.parentData.height-r;if(q){s.size.width=s.size.height*s.aspectRatio}}},stop:function(e,m){var p=c(this).data("resizable"),f=p.options,k=p.position,l=p.containerOffset,d=p.containerPosition,g=p.containerElement;var i=c(p.helper),q=i.offset(),n=i.outerWidth()-p.sizeDiff.width,j=i.outerHeight()-p.sizeDiff.height;if(p._helper&&!f.animate&&(/relative/).test(g.css("position"))){c(this).css({left:q.left-d.left-l.left,width:n,height:j})}if(p._helper&&!f.animate&&(/static/).test(g.css("position"))){c(this).css({left:q.left-d.left-l.left,width:n,height:j})}}});c.ui.plugin.add("resizable","ghost",{start:function(f,g){var d=c(this).data("resizable"),h=d.options,e=d.size;d.ghost=d.originalElement.clone();d.ghost.css({opacity:0.25,display:"block",position:"relative",height:e.height,width:e.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof h.ghost=="string"?h.ghost:"");d.ghost.appendTo(d.helper)},resize:function(e,f){var d=c(this).data("resizable"),g=d.options;if(d.ghost){d.ghost.css({position:"relative",height:d.size.height,width:d.size.width})}},stop:function(e,f){var d=c(this).data("resizable"),g=d.options;if(d.ghost&&d.helper){d.helper.get(0).removeChild(d.ghost.get(0))}}});c.ui.plugin.add("resizable","grid",{resize:function(d,l){var n=c(this).data("resizable"),g=n.options,j=n.size,h=n.originalSize,i=n.originalPosition,m=n.axis,k=g._aspectRatio||d.shiftKey;g.grid=typeof g.grid=="number"?[g.grid,g.grid]:g.grid;var f=Math.round((j.width-h.width)/(g.grid[0]||1))*(g.grid[0]||1),e=Math.round((j.height-h.height)/(g.grid[1]||1))*(g.grid[1]||1);if(/^(se|s|e)$/.test(m)){n.size.width=h.width+f;n.size.height=h.height+e}else{if(/^(ne)$/.test(m)){n.size.width=h.width+f;n.size.height=h.height+e;n.position.top=i.top-e}else{if(/^(sw)$/.test(m)){n.size.width=h.width+f;n.size.height=h.height+e;n.position.left=i.left-f}else{n.size.width=h.width+f;n.size.height=h.height+e;n.position.top=i.top-e;n.position.left=i.left-f}}}}});var b=function(d){return parseInt(d,10)||0};var a=function(d){return !isNaN(parseInt(d,10))}})(jQuery);; +/** + * jQuery.ScrollTo - Easy element scrolling using jQuery. + * Copyright (c) 2008 Ariel Flesler - aflesler(at)gmail(dot)com + * Licensed under GPL license (http://www.opensource.org/licenses/gpl-license.php). + * Date: 2/8/2008 + * @author Ariel Flesler + * @version 1.3.2 + */ +;(function($){var o=$.scrollTo=function(a,b,c){o.window().scrollTo(a,b,c)};o.defaults={axis:'y',duration:1};o.window=function(){return $($.browser.safari?'body':'html')};$.fn.scrollTo=function(l,m,n){if(typeof m=='object'){n=m;m=0}n=$.extend({},o.defaults,n);m=m||n.speed||n.duration;n.queue=n.queue&&n.axis.length>1;if(n.queue)m/=2;n.offset=j(n.offset);n.over=j(n.over);return this.each(function(){var a=this,b=$(a),t=l,c,d={},w=b.is('html,body');switch(typeof t){case'number':case'string':if(/^([+-]=)?\d+(px)?$/.test(t)){t=j(t);break}t=$(t,this);case'object':if(t.is||t.style)c=(t=$(t)).offset()}$.each(n.axis.split(''),function(i,f){var P=f=='x'?'Left':'Top',p=P.toLowerCase(),k='scroll'+P,e=a[k],D=f=='x'?'Width':'Height';if(c){d[k]=c[p]+(w?0:e-b.offset()[p]);if(n.margin){d[k]-=parseInt(t.css('margin'+P))||0;d[k]-=parseInt(t.css('border'+P+'Width'))||0}d[k]+=n.offset[p]||0;if(n.over[p])d[k]+=t[D.toLowerCase()]()*n.over[p]}else d[k]=t[p];if(/^\d+$/.test(d[k]))d[k]=d[k]<=0?0:Math.min(d[k],h(D));if(!i&&n.queue){if(e!=d[k])g(n.onAfterFirst);delete d[k]}});g(n.onAfter);function g(a){b.animate(d,m,n.easing,a&&function(){a.call(this,l)})};function h(D){var b=w?$.browser.opera?document.body:document.documentElement:a;return b['scroll'+D]-b['client'+D]}})};function j(a){return typeof a=='object'?a:{top:a,left:a}}})(jQuery); + diff --git a/assets/doc/ldap_8c__incl.map b/assets/doc/ldap_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/ldap_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/ldap_8c__incl.md5 b/assets/doc/ldap_8c__incl.md5 new file mode 100644 index 0000000..5beeb7c --- /dev/null +++ b/assets/doc/ldap_8c__incl.md5 @@ -0,0 +1 @@ +1f608cf641228cd881c28e8f83656902 \ No newline at end of file diff --git a/assets/doc/ldap_8c__incl.png b/assets/doc/ldap_8c__incl.png new file mode 100644 index 0000000..ddf1b12 Binary files /dev/null and b/assets/doc/ldap_8c__incl.png differ diff --git a/assets/doc/ldap_8h__dep__incl.map b/assets/doc/ldap_8h__dep__incl.map new file mode 100644 index 0000000..3e17d69 --- /dev/null +++ b/assets/doc/ldap_8h__dep__incl.map @@ -0,0 +1,3 @@ + + + diff --git a/assets/doc/ldap_8h__dep__incl.md5 b/assets/doc/ldap_8h__dep__incl.md5 new file mode 100644 index 0000000..45ce1f0 --- /dev/null +++ b/assets/doc/ldap_8h__dep__incl.md5 @@ -0,0 +1 @@ +c9feb2a8571d021e4f458dfb04e33f01 \ No newline at end of file diff --git a/assets/doc/ldap_8h__dep__incl.png b/assets/doc/ldap_8h__dep__incl.png new file mode 100644 index 0000000..b4426ed Binary files /dev/null and b/assets/doc/ldap_8h__dep__incl.png differ diff --git a/assets/doc/ldap_8h__incl.map b/assets/doc/ldap_8h__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/ldap_8h__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/ldap_8h__incl.md5 b/assets/doc/ldap_8h__incl.md5 new file mode 100644 index 0000000..7847bb2 --- /dev/null +++ b/assets/doc/ldap_8h__incl.md5 @@ -0,0 +1 @@ +63f5e23bc2e8b0b401d26530122149b3 \ No newline at end of file diff --git a/assets/doc/ldap_8h__incl.png b/assets/doc/ldap_8h__incl.png new file mode 100644 index 0000000..1e9c077 Binary files /dev/null and b/assets/doc/ldap_8h__incl.png differ diff --git a/assets/doc/listen_8c__incl.map b/assets/doc/listen_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/listen_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/listen_8c__incl.md5 b/assets/doc/listen_8c__incl.md5 new file mode 100644 index 0000000..0970f67 --- /dev/null +++ b/assets/doc/listen_8c__incl.md5 @@ -0,0 +1 @@ +8f6d9d9075f93961addaf3b8d538deb7 \ No newline at end of file diff --git a/assets/doc/listen_8c__incl.png b/assets/doc/listen_8c__incl.png new file mode 100644 index 0000000..0b274ed Binary files /dev/null and b/assets/doc/listen_8c__incl.png differ diff --git a/assets/doc/listen_8c_a757c220e9371523ef55b1137a1efed57_cgraph.map b/assets/doc/listen_8c_a757c220e9371523ef55b1137a1efed57_cgraph.map new file mode 100644 index 0000000..f6f476b --- /dev/null +++ b/assets/doc/listen_8c_a757c220e9371523ef55b1137a1efed57_cgraph.map @@ -0,0 +1,3 @@ + + + diff --git a/assets/doc/listen_8c_a757c220e9371523ef55b1137a1efed57_cgraph.md5 b/assets/doc/listen_8c_a757c220e9371523ef55b1137a1efed57_cgraph.md5 new file mode 100644 index 0000000..01395bc --- /dev/null +++ b/assets/doc/listen_8c_a757c220e9371523ef55b1137a1efed57_cgraph.md5 @@ -0,0 +1 @@ +545f7d06b31c87170613528a5e9d473a \ No newline at end of file diff --git a/assets/doc/listen_8c_a757c220e9371523ef55b1137a1efed57_cgraph.png b/assets/doc/listen_8c_a757c220e9371523ef55b1137a1efed57_cgraph.png new file mode 100644 index 0000000..41e24eb Binary files /dev/null and b/assets/doc/listen_8c_a757c220e9371523ef55b1137a1efed57_cgraph.png differ diff --git a/assets/doc/lock_8c__incl.map b/assets/doc/lock_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/lock_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/lock_8c__incl.md5 b/assets/doc/lock_8c__incl.md5 new file mode 100644 index 0000000..f996cee --- /dev/null +++ b/assets/doc/lock_8c__incl.md5 @@ -0,0 +1 @@ +b464a3443875578163d964ec8f1da7d1 \ No newline at end of file diff --git a/assets/doc/lock_8c__incl.png b/assets/doc/lock_8c__incl.png new file mode 100644 index 0000000..21dacfc Binary files /dev/null and b/assets/doc/lock_8c__incl.png differ diff --git a/assets/doc/lock_8c_a9836b66494452a0b01511163285e2ba6_icgraph.map b/assets/doc/lock_8c_a9836b66494452a0b01511163285e2ba6_icgraph.map new file mode 100644 index 0000000..99f6ade --- /dev/null +++ b/assets/doc/lock_8c_a9836b66494452a0b01511163285e2ba6_icgraph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/assets/doc/lock_8c_a9836b66494452a0b01511163285e2ba6_icgraph.md5 b/assets/doc/lock_8c_a9836b66494452a0b01511163285e2ba6_icgraph.md5 new file mode 100644 index 0000000..7ffb49d --- /dev/null +++ b/assets/doc/lock_8c_a9836b66494452a0b01511163285e2ba6_icgraph.md5 @@ -0,0 +1 @@ +fe36549eead32500e3ef874543de712f \ No newline at end of file diff --git a/assets/doc/lock_8c_a9836b66494452a0b01511163285e2ba6_icgraph.png b/assets/doc/lock_8c_a9836b66494452a0b01511163285e2ba6_icgraph.png new file mode 100644 index 0000000..6a4b005 Binary files /dev/null and b/assets/doc/lock_8c_a9836b66494452a0b01511163285e2ba6_icgraph.png differ diff --git a/assets/doc/logger_2interface_2logger_8h__dep__incl.map b/assets/doc/logger_2interface_2logger_8h__dep__incl.map new file mode 100644 index 0000000..65c923c --- /dev/null +++ b/assets/doc/logger_2interface_2logger_8h__dep__incl.map @@ -0,0 +1,5 @@ + + + + + diff --git a/assets/doc/logger_2interface_2logger_8h__dep__incl.md5 b/assets/doc/logger_2interface_2logger_8h__dep__incl.md5 new file mode 100644 index 0000000..d386199 --- /dev/null +++ b/assets/doc/logger_2interface_2logger_8h__dep__incl.md5 @@ -0,0 +1 @@ +66d6322f535a24504df5cfd6bf13a68e \ No newline at end of file diff --git a/assets/doc/logger_2interface_2logger_8h__dep__incl.png b/assets/doc/logger_2interface_2logger_8h__dep__incl.png new file mode 100644 index 0000000..21ba6aa Binary files /dev/null and b/assets/doc/logger_2interface_2logger_8h__dep__incl.png differ diff --git a/assets/doc/logger_2interface_2logger_8h__incl.map b/assets/doc/logger_2interface_2logger_8h__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/logger_2interface_2logger_8h__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/logger_2interface_2logger_8h__incl.md5 b/assets/doc/logger_2interface_2logger_8h__incl.md5 new file mode 100644 index 0000000..d130764 --- /dev/null +++ b/assets/doc/logger_2interface_2logger_8h__incl.md5 @@ -0,0 +1 @@ +f51cce5cb5373d958bc33517fb700593 \ No newline at end of file diff --git a/assets/doc/logger_2interface_2logger_8h__incl.png b/assets/doc/logger_2interface_2logger_8h__incl.png new file mode 100644 index 0000000..3938b4b Binary files /dev/null and b/assets/doc/logger_2interface_2logger_8h__incl.png differ diff --git a/assets/doc/logger_2interface_2logger_8h_ae9f8662ec8b300dcfb5064906937553e_icgraph.map b/assets/doc/logger_2interface_2logger_8h_ae9f8662ec8b300dcfb5064906937553e_icgraph.map new file mode 100644 index 0000000..f7ffd70 --- /dev/null +++ b/assets/doc/logger_2interface_2logger_8h_ae9f8662ec8b300dcfb5064906937553e_icgraph.map @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/assets/doc/logger_2interface_2logger_8h_ae9f8662ec8b300dcfb5064906937553e_icgraph.md5 b/assets/doc/logger_2interface_2logger_8h_ae9f8662ec8b300dcfb5064906937553e_icgraph.md5 new file mode 100644 index 0000000..bc4a4ac --- /dev/null +++ b/assets/doc/logger_2interface_2logger_8h_ae9f8662ec8b300dcfb5064906937553e_icgraph.md5 @@ -0,0 +1 @@ +d7f0aa442f921286803d20fbb567a8c4 \ No newline at end of file diff --git a/assets/doc/logger_2interface_2logger_8h_ae9f8662ec8b300dcfb5064906937553e_icgraph.png b/assets/doc/logger_2interface_2logger_8h_ae9f8662ec8b300dcfb5064906937553e_icgraph.png new file mode 100644 index 0000000..fc2b6aa Binary files /dev/null and b/assets/doc/logger_2interface_2logger_8h_ae9f8662ec8b300dcfb5064906937553e_icgraph.png differ diff --git a/assets/doc/logger_2logger_8h__dep__incl.map b/assets/doc/logger_2logger_8h__dep__incl.map new file mode 100644 index 0000000..b53e379 --- /dev/null +++ b/assets/doc/logger_2logger_8h__dep__incl.map @@ -0,0 +1,5 @@ + + + + + diff --git a/assets/doc/logger_2logger_8h__dep__incl.md5 b/assets/doc/logger_2logger_8h__dep__incl.md5 new file mode 100644 index 0000000..f2efe10 --- /dev/null +++ b/assets/doc/logger_2logger_8h__dep__incl.md5 @@ -0,0 +1 @@ +18d306e84d2183cadb0b8274804ad3e9 \ No newline at end of file diff --git a/assets/doc/logger_2logger_8h__dep__incl.png b/assets/doc/logger_2logger_8h__dep__incl.png new file mode 100644 index 0000000..3b41f6f Binary files /dev/null and b/assets/doc/logger_2logger_8h__dep__incl.png differ diff --git a/assets/doc/logger_2logger_8h__incl.map b/assets/doc/logger_2logger_8h__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/logger_2logger_8h__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/logger_2logger_8h__incl.md5 b/assets/doc/logger_2logger_8h__incl.md5 new file mode 100644 index 0000000..4d86b79 --- /dev/null +++ b/assets/doc/logger_2logger_8h__incl.md5 @@ -0,0 +1 @@ +2af024d41a9f0e5d91946b50e34f006a \ No newline at end of file diff --git a/assets/doc/logger_2logger_8h__incl.png b/assets/doc/logger_2logger_8h__incl.png new file mode 100644 index 0000000..37ec65d Binary files /dev/null and b/assets/doc/logger_2logger_8h__incl.png differ diff --git a/assets/doc/logger_8c__incl.map b/assets/doc/logger_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/logger_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/logger_8c__incl.md5 b/assets/doc/logger_8c__incl.md5 new file mode 100644 index 0000000..f2b906e --- /dev/null +++ b/assets/doc/logger_8c__incl.md5 @@ -0,0 +1 @@ +bc092069ddf60806673ed08c149a613c \ No newline at end of file diff --git a/assets/doc/logger_8c__incl.png b/assets/doc/logger_8c__incl.png new file mode 100644 index 0000000..b44d1e5 Binary files /dev/null and b/assets/doc/logger_8c__incl.png differ diff --git a/assets/doc/logger_8h__dep__incl.map b/assets/doc/logger_8h__dep__incl.map new file mode 100644 index 0000000..596ed72 --- /dev/null +++ b/assets/doc/logger_8h__dep__incl.map @@ -0,0 +1,4 @@ + + + + diff --git a/assets/doc/logger_8h__dep__incl.md5 b/assets/doc/logger_8h__dep__incl.md5 new file mode 100644 index 0000000..89107c6 --- /dev/null +++ b/assets/doc/logger_8h__dep__incl.md5 @@ -0,0 +1 @@ +f5539c413e54a1366d8c5375fba84b49 \ No newline at end of file diff --git a/assets/doc/logger_8h__dep__incl.png b/assets/doc/logger_8h__dep__incl.png new file mode 100644 index 0000000..22eac47 Binary files /dev/null and b/assets/doc/logger_8h__dep__incl.png differ diff --git a/assets/doc/logger_8h__incl.map b/assets/doc/logger_8h__incl.map new file mode 100644 index 0000000..7697ddb --- /dev/null +++ b/assets/doc/logger_8h__incl.map @@ -0,0 +1,4 @@ + + + + diff --git a/assets/doc/logger_8h__incl.md5 b/assets/doc/logger_8h__incl.md5 new file mode 100644 index 0000000..a369b30 --- /dev/null +++ b/assets/doc/logger_8h__incl.md5 @@ -0,0 +1 @@ +e9f49c5d709e01cda859c4529954dd73 \ No newline at end of file diff --git a/assets/doc/logger_8h__incl.png b/assets/doc/logger_8h__incl.png new file mode 100644 index 0000000..3dbc626 Binary files /dev/null and b/assets/doc/logger_8h__incl.png differ diff --git a/assets/doc/login__form_8c__incl.map b/assets/doc/login__form_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/login__form_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/login__form_8c__incl.md5 b/assets/doc/login__form_8c__incl.md5 new file mode 100644 index 0000000..33f9c2b --- /dev/null +++ b/assets/doc/login__form_8c__incl.md5 @@ -0,0 +1 @@ +5b2b5020d5865c44d0f7ebe8220caa7c \ No newline at end of file diff --git a/assets/doc/login__form_8c__incl.png b/assets/doc/login__form_8c__incl.png new file mode 100644 index 0000000..483cf19 Binary files /dev/null and b/assets/doc/login__form_8c__incl.png differ diff --git a/assets/doc/login__form_8c_a729f0a6344c98bb226b4b0b490c8b70c_cgraph.map b/assets/doc/login__form_8c_a729f0a6344c98bb226b4b0b490c8b70c_cgraph.map new file mode 100644 index 0000000..f56bed8 --- /dev/null +++ b/assets/doc/login__form_8c_a729f0a6344c98bb226b4b0b490c8b70c_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/assets/doc/login__form_8c_a729f0a6344c98bb226b4b0b490c8b70c_cgraph.md5 b/assets/doc/login__form_8c_a729f0a6344c98bb226b4b0b490c8b70c_cgraph.md5 new file mode 100644 index 0000000..d4ee64b --- /dev/null +++ b/assets/doc/login__form_8c_a729f0a6344c98bb226b4b0b490c8b70c_cgraph.md5 @@ -0,0 +1 @@ +497bddee96d348a3f01a2b4d20d33999 \ No newline at end of file diff --git a/assets/doc/login__form_8c_a729f0a6344c98bb226b4b0b490c8b70c_cgraph.png b/assets/doc/login__form_8c_a729f0a6344c98bb226b4b0b490c8b70c_cgraph.png new file mode 100644 index 0000000..096bf09 Binary files /dev/null and b/assets/doc/login__form_8c_a729f0a6344c98bb226b4b0b490c8b70c_cgraph.png differ diff --git a/assets/doc/memchr_8c__incl.map b/assets/doc/memchr_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/memchr_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/memchr_8c__incl.md5 b/assets/doc/memchr_8c__incl.md5 new file mode 100644 index 0000000..b4bd413 --- /dev/null +++ b/assets/doc/memchr_8c__incl.md5 @@ -0,0 +1 @@ +4ff0fc764f25259a43edb355aba7cc67 \ No newline at end of file diff --git a/assets/doc/memchr_8c__incl.png b/assets/doc/memchr_8c__incl.png new file mode 100644 index 0000000..52a04c7 Binary files /dev/null and b/assets/doc/memchr_8c__incl.png differ diff --git a/assets/doc/memchr_8c_a49cdbb3d52ada4cef5a6e88267aacad3_cgraph.map b/assets/doc/memchr_8c_a49cdbb3d52ada4cef5a6e88267aacad3_cgraph.map new file mode 100644 index 0000000..149f1c9 --- /dev/null +++ b/assets/doc/memchr_8c_a49cdbb3d52ada4cef5a6e88267aacad3_cgraph.map @@ -0,0 +1,3 @@ + + + diff --git a/assets/doc/memchr_8c_a49cdbb3d52ada4cef5a6e88267aacad3_cgraph.md5 b/assets/doc/memchr_8c_a49cdbb3d52ada4cef5a6e88267aacad3_cgraph.md5 new file mode 100644 index 0000000..b5f9d4b --- /dev/null +++ b/assets/doc/memchr_8c_a49cdbb3d52ada4cef5a6e88267aacad3_cgraph.md5 @@ -0,0 +1 @@ +fc33603a4c8f520f5c51eb08e431d85c \ No newline at end of file diff --git a/assets/doc/memchr_8c_a49cdbb3d52ada4cef5a6e88267aacad3_cgraph.png b/assets/doc/memchr_8c_a49cdbb3d52ada4cef5a6e88267aacad3_cgraph.png new file mode 100644 index 0000000..796f0fd Binary files /dev/null and b/assets/doc/memchr_8c_a49cdbb3d52ada4cef5a6e88267aacad3_cgraph.png differ diff --git a/assets/doc/memchr_8c_a49cdbb3d52ada4cef5a6e88267aacad3_icgraph.map b/assets/doc/memchr_8c_a49cdbb3d52ada4cef5a6e88267aacad3_icgraph.map new file mode 100644 index 0000000..1acb5ac --- /dev/null +++ b/assets/doc/memchr_8c_a49cdbb3d52ada4cef5a6e88267aacad3_icgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/assets/doc/memchr_8c_a49cdbb3d52ada4cef5a6e88267aacad3_icgraph.md5 b/assets/doc/memchr_8c_a49cdbb3d52ada4cef5a6e88267aacad3_icgraph.md5 new file mode 100644 index 0000000..6b71916 --- /dev/null +++ b/assets/doc/memchr_8c_a49cdbb3d52ada4cef5a6e88267aacad3_icgraph.md5 @@ -0,0 +1 @@ +50b980c2158801fa903a6654351ed46e \ No newline at end of file diff --git a/assets/doc/memchr_8c_a49cdbb3d52ada4cef5a6e88267aacad3_icgraph.png b/assets/doc/memchr_8c_a49cdbb3d52ada4cef5a6e88267aacad3_icgraph.png new file mode 100644 index 0000000..0d4e516 Binary files /dev/null and b/assets/doc/memchr_8c_a49cdbb3d52ada4cef5a6e88267aacad3_icgraph.png differ diff --git a/assets/doc/memory_8c__incl.map b/assets/doc/memory_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/memory_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/memory_8c__incl.md5 b/assets/doc/memory_8c__incl.md5 new file mode 100644 index 0000000..a1527c8 --- /dev/null +++ b/assets/doc/memory_8c__incl.md5 @@ -0,0 +1 @@ +97df00e97f5afbe0e1e1ec8245a00fb2 \ No newline at end of file diff --git a/assets/doc/memory_8c__incl.png b/assets/doc/memory_8c__incl.png new file mode 100644 index 0000000..0775e27 Binary files /dev/null and b/assets/doc/memory_8c__incl.png differ diff --git a/assets/doc/message_8c__incl.map b/assets/doc/message_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/message_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/message_8c__incl.md5 b/assets/doc/message_8c__incl.md5 new file mode 100644 index 0000000..9f3f78b --- /dev/null +++ b/assets/doc/message_8c__incl.md5 @@ -0,0 +1 @@ +9017c04b824922e3aab50734bc973723 \ No newline at end of file diff --git a/assets/doc/message_8c__incl.png b/assets/doc/message_8c__incl.png new file mode 100644 index 0000000..cee47b2 Binary files /dev/null and b/assets/doc/message_8c__incl.png differ diff --git a/assets/doc/message_8h__dep__incl.map b/assets/doc/message_8h__dep__incl.map new file mode 100644 index 0000000..6ce56bb --- /dev/null +++ b/assets/doc/message_8h__dep__incl.map @@ -0,0 +1,3 @@ + + + diff --git a/assets/doc/message_8h__dep__incl.md5 b/assets/doc/message_8h__dep__incl.md5 new file mode 100644 index 0000000..1100aaf --- /dev/null +++ b/assets/doc/message_8h__dep__incl.md5 @@ -0,0 +1 @@ +2d0ec3d966e1a01d797fe68bfcfdbbf3 \ No newline at end of file diff --git a/assets/doc/message_8h__dep__incl.png b/assets/doc/message_8h__dep__incl.png new file mode 100644 index 0000000..4a88437 Binary files /dev/null and b/assets/doc/message_8h__dep__incl.png differ diff --git a/assets/doc/message_8h__incl.map b/assets/doc/message_8h__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/message_8h__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/message_8h__incl.md5 b/assets/doc/message_8h__incl.md5 new file mode 100644 index 0000000..fd8e9b1 --- /dev/null +++ b/assets/doc/message_8h__incl.md5 @@ -0,0 +1 @@ +8b93fcadc5752371f235188b1ab4b4f9 \ No newline at end of file diff --git a/assets/doc/message_8h__incl.png b/assets/doc/message_8h__incl.png new file mode 100644 index 0000000..1e0276a Binary files /dev/null and b/assets/doc/message_8h__incl.png differ diff --git a/assets/doc/message_8h_a13f77e978c3f3b0ece2b4a973da11edf_cgraph.map b/assets/doc/message_8h_a13f77e978c3f3b0ece2b4a973da11edf_cgraph.map new file mode 100644 index 0000000..eb59203 --- /dev/null +++ b/assets/doc/message_8h_a13f77e978c3f3b0ece2b4a973da11edf_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/assets/doc/message_8h_a13f77e978c3f3b0ece2b4a973da11edf_cgraph.md5 b/assets/doc/message_8h_a13f77e978c3f3b0ece2b4a973da11edf_cgraph.md5 new file mode 100644 index 0000000..6f15de6 --- /dev/null +++ b/assets/doc/message_8h_a13f77e978c3f3b0ece2b4a973da11edf_cgraph.md5 @@ -0,0 +1 @@ +eedbde88da76b2577f3ad5f577a20459 \ No newline at end of file diff --git a/assets/doc/message_8h_a13f77e978c3f3b0ece2b4a973da11edf_cgraph.png b/assets/doc/message_8h_a13f77e978c3f3b0ece2b4a973da11edf_cgraph.png new file mode 100644 index 0000000..1c2d17f Binary files /dev/null and b/assets/doc/message_8h_a13f77e978c3f3b0ece2b4a973da11edf_cgraph.png differ diff --git a/assets/doc/message_8h_a13f77e978c3f3b0ece2b4a973da11edf_icgraph.map b/assets/doc/message_8h_a13f77e978c3f3b0ece2b4a973da11edf_icgraph.map new file mode 100644 index 0000000..31d731c --- /dev/null +++ b/assets/doc/message_8h_a13f77e978c3f3b0ece2b4a973da11edf_icgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/assets/doc/message_8h_a13f77e978c3f3b0ece2b4a973da11edf_icgraph.md5 b/assets/doc/message_8h_a13f77e978c3f3b0ece2b4a973da11edf_icgraph.md5 new file mode 100644 index 0000000..0670446 --- /dev/null +++ b/assets/doc/message_8h_a13f77e978c3f3b0ece2b4a973da11edf_icgraph.md5 @@ -0,0 +1 @@ +a29c2a1360ebf8a0be038deb67a76cf9 \ No newline at end of file diff --git a/assets/doc/message_8h_a13f77e978c3f3b0ece2b4a973da11edf_icgraph.png b/assets/doc/message_8h_a13f77e978c3f3b0ece2b4a973da11edf_icgraph.png new file mode 100644 index 0000000..786b534 Binary files /dev/null and b/assets/doc/message_8h_a13f77e978c3f3b0ece2b4a973da11edf_icgraph.png differ diff --git a/assets/doc/message_8h_a822f6dbc57aa48a7b04af28d5c664a77_cgraph.map b/assets/doc/message_8h_a822f6dbc57aa48a7b04af28d5c664a77_cgraph.map new file mode 100644 index 0000000..8950ca3 --- /dev/null +++ b/assets/doc/message_8h_a822f6dbc57aa48a7b04af28d5c664a77_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/assets/doc/message_8h_a822f6dbc57aa48a7b04af28d5c664a77_cgraph.md5 b/assets/doc/message_8h_a822f6dbc57aa48a7b04af28d5c664a77_cgraph.md5 new file mode 100644 index 0000000..63003f1 --- /dev/null +++ b/assets/doc/message_8h_a822f6dbc57aa48a7b04af28d5c664a77_cgraph.md5 @@ -0,0 +1 @@ +ada2cad95c1f65f793dce58e6ccb9adb \ No newline at end of file diff --git a/assets/doc/message_8h_a822f6dbc57aa48a7b04af28d5c664a77_cgraph.png b/assets/doc/message_8h_a822f6dbc57aa48a7b04af28d5c664a77_cgraph.png new file mode 100644 index 0000000..4e3846d Binary files /dev/null and b/assets/doc/message_8h_a822f6dbc57aa48a7b04af28d5c664a77_cgraph.png differ diff --git a/assets/doc/message_8h_a822f6dbc57aa48a7b04af28d5c664a77_icgraph.map b/assets/doc/message_8h_a822f6dbc57aa48a7b04af28d5c664a77_icgraph.map new file mode 100644 index 0000000..1fa0092 --- /dev/null +++ b/assets/doc/message_8h_a822f6dbc57aa48a7b04af28d5c664a77_icgraph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/assets/doc/message_8h_a822f6dbc57aa48a7b04af28d5c664a77_icgraph.md5 b/assets/doc/message_8h_a822f6dbc57aa48a7b04af28d5c664a77_icgraph.md5 new file mode 100644 index 0000000..24944d9 --- /dev/null +++ b/assets/doc/message_8h_a822f6dbc57aa48a7b04af28d5c664a77_icgraph.md5 @@ -0,0 +1 @@ +4f49f6c1ac39a55e92c7fdc4d3858025 \ No newline at end of file diff --git a/assets/doc/message_8h_a822f6dbc57aa48a7b04af28d5c664a77_icgraph.png b/assets/doc/message_8h_a822f6dbc57aa48a7b04af28d5c664a77_icgraph.png new file mode 100644 index 0000000..4a97e80 Binary files /dev/null and b/assets/doc/message_8h_a822f6dbc57aa48a7b04af28d5c664a77_icgraph.png differ diff --git a/assets/doc/message_8h_aae0087a7322aa5a39983af64891df16d_cgraph.map b/assets/doc/message_8h_aae0087a7322aa5a39983af64891df16d_cgraph.map new file mode 100644 index 0000000..56de47a --- /dev/null +++ b/assets/doc/message_8h_aae0087a7322aa5a39983af64891df16d_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/assets/doc/message_8h_aae0087a7322aa5a39983af64891df16d_cgraph.md5 b/assets/doc/message_8h_aae0087a7322aa5a39983af64891df16d_cgraph.md5 new file mode 100644 index 0000000..d8ac911 --- /dev/null +++ b/assets/doc/message_8h_aae0087a7322aa5a39983af64891df16d_cgraph.md5 @@ -0,0 +1 @@ +5f367f21a65348274754d7b3cb52d5d0 \ No newline at end of file diff --git a/assets/doc/message_8h_aae0087a7322aa5a39983af64891df16d_cgraph.png b/assets/doc/message_8h_aae0087a7322aa5a39983af64891df16d_cgraph.png new file mode 100644 index 0000000..0c8903c Binary files /dev/null and b/assets/doc/message_8h_aae0087a7322aa5a39983af64891df16d_cgraph.png differ diff --git a/assets/doc/message_8h_aae0087a7322aa5a39983af64891df16d_icgraph.map b/assets/doc/message_8h_aae0087a7322aa5a39983af64891df16d_icgraph.map new file mode 100644 index 0000000..fbbd4e4 --- /dev/null +++ b/assets/doc/message_8h_aae0087a7322aa5a39983af64891df16d_icgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/assets/doc/message_8h_aae0087a7322aa5a39983af64891df16d_icgraph.md5 b/assets/doc/message_8h_aae0087a7322aa5a39983af64891df16d_icgraph.md5 new file mode 100644 index 0000000..daae320 --- /dev/null +++ b/assets/doc/message_8h_aae0087a7322aa5a39983af64891df16d_icgraph.md5 @@ -0,0 +1 @@ +b75933f6d8798f479fca33ec3390402f \ No newline at end of file diff --git a/assets/doc/message_8h_aae0087a7322aa5a39983af64891df16d_icgraph.png b/assets/doc/message_8h_aae0087a7322aa5a39983af64891df16d_icgraph.png new file mode 100644 index 0000000..e4141ec Binary files /dev/null and b/assets/doc/message_8h_aae0087a7322aa5a39983af64891df16d_icgraph.png differ diff --git a/assets/doc/message_8h_ac01d69e76b2259685e19962feb8e3c67_icgraph.map b/assets/doc/message_8h_ac01d69e76b2259685e19962feb8e3c67_icgraph.map new file mode 100644 index 0000000..02bcd07 --- /dev/null +++ b/assets/doc/message_8h_ac01d69e76b2259685e19962feb8e3c67_icgraph.map @@ -0,0 +1,3 @@ + + + diff --git a/assets/doc/message_8h_ac01d69e76b2259685e19962feb8e3c67_icgraph.md5 b/assets/doc/message_8h_ac01d69e76b2259685e19962feb8e3c67_icgraph.md5 new file mode 100644 index 0000000..c64a08b --- /dev/null +++ b/assets/doc/message_8h_ac01d69e76b2259685e19962feb8e3c67_icgraph.md5 @@ -0,0 +1 @@ +a096019b92b33e21d169447fb94731d1 \ No newline at end of file diff --git a/assets/doc/message_8h_ac01d69e76b2259685e19962feb8e3c67_icgraph.png b/assets/doc/message_8h_ac01d69e76b2259685e19962feb8e3c67_icgraph.png new file mode 100644 index 0000000..6a055ed Binary files /dev/null and b/assets/doc/message_8h_ac01d69e76b2259685e19962feb8e3c67_icgraph.png differ diff --git a/assets/doc/message_8h_adb129cbc82466a8a020d2e5f8abf0f92_cgraph.map b/assets/doc/message_8h_adb129cbc82466a8a020d2e5f8abf0f92_cgraph.map new file mode 100644 index 0000000..5c926b4 --- /dev/null +++ b/assets/doc/message_8h_adb129cbc82466a8a020d2e5f8abf0f92_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/assets/doc/message_8h_adb129cbc82466a8a020d2e5f8abf0f92_cgraph.md5 b/assets/doc/message_8h_adb129cbc82466a8a020d2e5f8abf0f92_cgraph.md5 new file mode 100644 index 0000000..35d076a --- /dev/null +++ b/assets/doc/message_8h_adb129cbc82466a8a020d2e5f8abf0f92_cgraph.md5 @@ -0,0 +1 @@ +917e6a351567b4a7d72da0e1ca02289f \ No newline at end of file diff --git a/assets/doc/message_8h_adb129cbc82466a8a020d2e5f8abf0f92_cgraph.png b/assets/doc/message_8h_adb129cbc82466a8a020d2e5f8abf0f92_cgraph.png new file mode 100644 index 0000000..fa6475e Binary files /dev/null and b/assets/doc/message_8h_adb129cbc82466a8a020d2e5f8abf0f92_cgraph.png differ diff --git a/assets/doc/nav_f.png b/assets/doc/nav_f.png new file mode 100644 index 0000000..1b07a16 Binary files /dev/null and b/assets/doc/nav_f.png differ diff --git a/assets/doc/nav_h.png b/assets/doc/nav_h.png new file mode 100644 index 0000000..01f5fa6 Binary files /dev/null and b/assets/doc/nav_h.png differ diff --git a/assets/doc/navtree.css b/assets/doc/navtree.css new file mode 100644 index 0000000..e46ffcd --- /dev/null +++ b/assets/doc/navtree.css @@ -0,0 +1,123 @@ +#nav-tree .children_ul { + margin:0; + padding:4px; +} + +#nav-tree ul { + list-style:none outside none; + margin:0px; + padding:0px; +} + +#nav-tree li { + white-space:nowrap; + margin:0px; + padding:0px; +} + +#nav-tree .plus { + margin:0px; +} + +#nav-tree .selected { + background-image: url('tab_a.png'); + background-repeat:repeat-x; + color: #fff; + text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +} + +#nav-tree img { + margin:0px; + padding:0px; + border:0px; + vertical-align: middle; +} + +#nav-tree a { + text-decoration:none; + padding:0px; + margin:0px; + outline:none; +} + +#nav-tree .label { + margin:0px; + padding:0px; +} + +#nav-tree .label a { + padding:2px; +} + +#nav-tree .selected a { + text-decoration:none; + padding:2px; + margin:0px; + color:#fff; +} + +#nav-tree .children_ul { + margin:0px; + padding:0px; +} + +#nav-tree .item { + margin:0px; + padding:0px; +} + +#nav-tree { + padding: 0px 0px; + background-color: #FAFAFF; + font-size:14px; + overflow:auto; +} + +#doc-content { + overflow:auto; + display:block; + padding:0px; + margin:0px; +} + +#side-nav { + padding:0 6px 0 0; + margin: 0px; + display:block; + position: absolute; + left: 0px; + width: 300px; +} + +.ui-resizable .ui-resizable-handle { + display:block; +} + +.ui-resizable-e { + background:url("ftv2splitbar.png") repeat scroll right center transparent; + cursor:e-resize; + height:100%; + right:0; + top:0; + width:6px; +} + +.ui-resizable-handle { + display:none; + font-size:0.1px; + position:absolute; + z-index:1; +} + +#nav-tree-contents { + margin: 6px 0px 0px 0px; +} + +#nav-tree { + background-image:url('nav_h.png'); + background-repeat:repeat-x; + background-color: #F9FAFC; +} + + + diff --git a/assets/doc/navtree.js b/assets/doc/navtree.js new file mode 100644 index 0000000..4dc1bca --- /dev/null +++ b/assets/doc/navtree.js @@ -0,0 +1,438 @@ +var NAVTREE = +[ + [ "Server", "index.html", [ + [ "Related Pages", "pages.html", [ + [ "Todo List", "todo.html", null ] + ] ], + [ "Data Structures", "annotated.html", [ + [ "Auth", "structAuth.html", null ], + [ "AuthLdap", "structAuthLdap.html", null ], + [ "Cbuf", "structCbuf.html", null ], + [ "class", "structclass.html", null ], + [ "conns", "structconns.html", null ], + [ "Credential", "structCredential.html", null ], + [ "Hash", "structHash.html", null ], + [ "HashValue", "structHashValue.html", null ], + [ "HttpCookie", "structHttpCookie.html", null ], + [ "HttpHeader", "structHttpHeader.html", null ], + [ "HttpMessage", "structHttpMessage.html", null ], + [ "HttpMessageQueue", "structHttpMessageQueue.html", null ], + [ "HttpParser", "structHttpParser.html", null ], + [ "HttpRequest", "structHttpRequest.html", null ], + [ "HttpResponse", "structHttpResponse.html", null ], + [ "HttpWorker", "structHttpWorker.html", null ], + [ "HttpWriter", "structHttpWriter.html", null ], + [ "i_Auth", "structi__Auth.html", null ], + [ "i_Class", "structi__Class.html", null ], + [ "i_Hashable", "structi__Hashable.html", null ], + [ "i_HttpIntro", "structi__HttpIntro.html", null ], + [ "i_Logger", "structi__Logger.html", null ], + [ "i_Observer", "structi__Observer.html", null ], + [ "i_StreamReader", "structi__StreamReader.html", null ], + [ "i_StreamWriter", "structi__StreamWriter.html", null ], + [ "i_Subject", "structi__Subject.html", null ], + [ "iface_impl", "structiface__impl.html", null ], + [ "interface", "structinterface.html", null ], + [ "Logger", "structLogger.html", null ], + [ "LoggerStderr", "structLoggerStderr.html", null ], + [ "LoggerSyslog", "structLoggerSyslog.html", null ], + [ "randval", "structrandval.html", null ], + [ "Server", "structServer.html", null ], + [ "Session", "structSession.html", null ], + [ "Sock", "structSock.html", null ], + [ "Stream", "structStream.html", null ] + ] ], + [ "Data Structure Index", "classes.html", null ], + [ "Data Fields", "functions.html", null ], + [ "File List", "files.html", [ + [ "config.h", "config_8h.html", null ], + [ "include/auth.h", "auth_8h.html", null ], + [ "include/cbuf.h", "cbuf_8h.html", null ], + [ "include/class.h", "class_8h.html", null ], + [ "include/commons.h", "commons_8h.html", null ], + [ "include/hash.h", "hash_8h.html", null ], + [ "include/http.h", "http_8h.html", null ], + [ "include/logger.h", "logger_8h.html", null ], + [ "include/server.h", "server_8h.html", null ], + [ "include/session.h", "session_8h.html", null ], + [ "include/socket.h", "socket_8h.html", null ], + [ "include/stream.h", "stream_8h.html", null ], + [ "include/auth/auth.h", "auth_2auth_8h.html", null ], + [ "include/auth/credential.h", "credential_8h.html", null ], + [ "include/auth/ldap.h", "ldap_8h.html", null ], + [ "include/auth/interface/auth.h", "auth_2interface_2auth_8h.html", null ], + [ "include/class/class.h", "class_2class_8h.html", null ], + [ "include/class/interface.h", "interface_8h.html", null ], + [ "include/class/interface/class.h", "class_2interface_2class_8h.html", null ], + [ "include/hash/hash.h", "hash_2hash_8h.html", null ], + [ "include/hash/value.h", "value_8h.html", null ], + [ "include/hash/interface/hashable.h", "hashable_8h.html", null ], + [ "include/http/cookie.h", "cookie_8h.html", null ], + [ "include/http/header.h", "header_8h.html", null ], + [ "include/http/message.h", "message_8h.html", null ], + [ "include/http/parser.h", "parser_8h.html", null ], + [ "include/http/request.h", "request_8h.html", null ], + [ "include/http/response.h", "response_8h.html", null ], + [ "include/http/worker.h", "worker_8h.html", null ], + [ "include/http/writer.h", "http_2writer_8h.html", null ], + [ "include/http/interface/http_intro.h", "http__intro_8h.html", null ], + [ "include/http/message/queue.h", "queue_8h.html", null ], + [ "include/interface/observer.h", "observer_8h.html", null ], + [ "include/interface/subject.h", "subject_8h.html", null ], + [ "include/logger/logger.h", "logger_2logger_8h.html", null ], + [ "include/logger/interface/logger.h", "logger_2interface_2logger_8h.html", null ], + [ "include/stream/stream.h", "stream_2stream_8h.html", null ], + [ "include/stream/interface/reader.h", "reader_8h.html", null ], + [ "include/stream/interface/writer.h", "stream_2interface_2writer_8h.html", null ], + [ "include/utils/hash.h", "utils_2hash_8h.html", null ], + [ "include/utils/http.h", "utils_2http_8h.html", null ], + [ "include/utils/memory.h", "memory_8h.html", null ], + [ "include/utils/signalHandling.h", "signalHandling_8h.html", null ], + [ "src/webgameserver.c", "webgameserver_8c.html", null ], + [ "src/auth/credential.c", "credential_8c.html", null ], + [ "src/auth/ldap.c", "ldap_8c.html", null ], + [ "src/auth/interface/auth.c", "auth_8c.html", null ], + [ "src/cbuf/addr_index.c", "addr__index_8c.html", null ], + [ "src/cbuf/cbuf.c", "cbuf_8c.html", null ], + [ "src/cbuf/empty.c", "empty_8c.html", null ], + [ "src/cbuf/get_data.c", "get__data_8c.html", null ], + [ "src/cbuf/get_free.c", "get__free_8c.html", null ], + [ "src/cbuf/get_line.c", "get__line_8c.html", null ], + [ "src/cbuf/get_read.c", "get__read_8c.html", null ], + [ "src/cbuf/get_write.c", "get__write_8c.html", null ], + [ "src/cbuf/inc_read.c", "inc__read_8c.html", null ], + [ "src/cbuf/inc_write.c", "inc__write_8c.html", null ], + [ "src/cbuf/is_empty.c", "is__empty_8c.html", null ], + [ "src/cbuf/is_locked.c", "is__locked_8c.html", null ], + [ "src/cbuf/lock.c", "lock_8c.html", null ], + [ "src/cbuf/memchr.c", "memchr_8c.html", null ], + [ "src/cbuf/read.c", "cbuf_2read_8c.html", null ], + [ "src/cbuf/release.c", "release_8c.html", null ], + [ "src/cbuf/set_data.c", "set__data_8c.html", null ], + [ "src/cbuf/skip_non_alpha.c", "skip__non__alpha_8c.html", null ], + [ "src/cbuf/write.c", "cbuf_2write_8c.html", null ], + [ "src/class/interface.c", "interface_8c.html", null ], + [ "src/class/interface/i_class.c", "i__class_8c.html", null ], + [ "src/hash/add.c", "hash_2add_8c.html", null ], + [ "src/hash/delete.c", "hash_2delete_8c.html", null ], + [ "src/hash/each.c", "each_8c.html", null ], + [ "src/hash/get.c", "hash_2get_8c.html", null ], + [ "src/hash/hash.c", "hash_2hash_8c.html", null ], + [ "src/hash/value.c", "value_8c.html", null ], + [ "src/hash/interface/hashable.c", "hashable_8c.html", null ], + [ "src/http/cookie.c", "cookie_8c.html", null ], + [ "src/http/header.c", "header_8c.html", null ], + [ "src/http/message.c", "message_8c.html", null ], + [ "src/http/parser.c", "parser_8c.html", null ], + [ "src/http/request.c", "request_8c.html", null ], + [ "src/http/response.c", "response_8c.html", null ], + [ "src/http/worker.c", "worker_8c.html", null ], + [ "src/http/writer.c", "http_2writer_8c.html", null ], + [ "src/http/header/to_string.c", "to__string_8c.html", null ], + [ "src/http/interface/i_http_intro.c", "i__http__intro_8c.html", null ], + [ "src/http/message/get_version.c", "get__version_8c.html", null ], + [ "src/http/message/has_keep_alive.c", "has__keep__alive_8c.html", null ], + [ "src/http/message/has_valid_version.c", "has__valid__version_8c.html", null ], + [ "src/http/message/header_size_get.c", "header__size__get_8c.html", null ], + [ "src/http/message/header_to_string.c", "header__to__string_8c.html", null ], + [ "src/http/message/queue.c", "queue_8c.html", null ], + [ "src/http/parser/new_message.c", "new__message_8c.html", null ], + [ "src/http/parser/p_body.c", "p__body_8c.html", null ], + [ "src/http/parser/p_header.c", "p__header_8c.html", null ], + [ "src/http/parser/p_post_vars.c", "p__post__vars_8c.html", null ], + [ "src/http/parser/p_request_vars.c", "p__request__vars_8c.html", null ], + [ "src/http/parser/parse.c", "parse_8c.html", null ], + [ "src/http/request/has_valid_method.c", "has__valid__method_8c.html", null ], + [ "src/http/response/304.c", "304_8c.html", null ], + [ "src/http/response/403.c", "403_8c.html", null ], + [ "src/http/response/404.c", "404_8c.html", null ], + [ "src/http/response/asset.c", "asset_8c.html", null ], + [ "src/http/response/login_form.c", "login__form_8c.html", null ], + [ "src/http/response/randval.c", "randval_8c.html", null ], + [ "src/http/response/session.c", "http_2response_2session_8c.html", null ], + [ "src/http/worker/add_common_header.c", "add__common__header_8c.html", null ], + [ "src/http/worker/answer.c", "answer_8c.html", null ], + [ "src/http/worker/get_asset.c", "get__asset_8c.html", null ], + [ "src/http/worker/process.c", "process_8c.html", null ], + [ "src/http/writer/write.c", "http_2writer_2write_8c.html", null ], + [ "src/interface/observer.c", "observer_8c.html", null ], + [ "src/interface/subject.c", "subject_8c.html", null ], + [ "src/logger/logger.c", "logger_8c.html", null ], + [ "src/logger/stderr.c", "stderr_8c.html", null ], + [ "src/logger/syslog.c", "syslog_8c.html", null ], + [ "src/logger/interface/i_logger.c", "i__logger_8c.html", null ], + [ "src/server/close_conn.c", "close__conn_8c.html", null ], + [ "src/server/handle_accept.c", "handle__accept_8c.html", null ], + [ "src/server/poll.c", "poll_8c.html", null ], + [ "src/server/read.c", "server_2read_8c.html", null ], + [ "src/server/run.c", "run_8c.html", null ], + [ "src/server/server.c", "server_8c.html", null ], + [ "src/server/write.c", "server_2write_8c.html", null ], + [ "src/session/add.c", "session_2add_8c.html", null ], + [ "src/session/delete.c", "session_2delete_8c.html", null ], + [ "src/session/get.c", "session_2get_8c.html", null ], + [ "src/session/session.c", "session_2session_8c.html", null ], + [ "src/socket/accept.c", "accept_8c.html", null ], + [ "src/socket/connect.c", "connect_8c.html", null ], + [ "src/socket/listen.c", "listen_8c.html", null ], + [ "src/socket/socket.c", "socket_8c.html", null ], + [ "src/stream/read.c", "stream_2read_8c.html", null ], + [ "src/stream/stream.c", "stream_8c.html", null ], + [ "src/stream/write.c", "stream_2write_8c.html", null ], + [ "src/stream/interface/reader.c", "reader_8c.html", null ], + [ "src/stream/interface/writer.c", "stream_2interface_2writer_8c.html", null ], + [ "src/utils/daemonize.c", "daemonize_8c.html", null ], + [ "src/utils/hash.c", "utils_2hash_8c.html", null ], + [ "src/utils/http.c", "http_8c.html", null ], + [ "src/utils/memory.c", "memory_8c.html", null ], + [ "src/utils/signalHandling.c", "signalHandling_8c.html", null ] + ] ], + [ "Globals", "globals.html", null ] + ] ] +]; + +function createIndent(o,domNode,node,level) +{ + if (node.parentNode && node.parentNode.parentNode) + { + createIndent(o,domNode,node.parentNode,level+1); + } + var imgNode = document.createElement("img"); + if (level==0 && node.childrenData) + { + node.plus_img = imgNode; + node.expandToggle = document.createElement("a"); + node.expandToggle.href = "javascript:void(0)"; + node.expandToggle.onclick = function() + { + if (node.expanded) + { + $(node.getChildrenUL()).slideUp("fast"); + if (node.isLast) + { + node.plus_img.src = node.relpath+"ftv2plastnode.png"; + } + else + { + node.plus_img.src = node.relpath+"ftv2pnode.png"; + } + node.expanded = false; + } + else + { + expandNode(o, node, false); + } + } + node.expandToggle.appendChild(imgNode); + domNode.appendChild(node.expandToggle); + } + else + { + domNode.appendChild(imgNode); + } + if (level==0) + { + if (node.isLast) + { + if (node.childrenData) + { + imgNode.src = node.relpath+"ftv2plastnode.png"; + } + else + { + imgNode.src = node.relpath+"ftv2lastnode.png"; + domNode.appendChild(imgNode); + } + } + else + { + if (node.childrenData) + { + imgNode.src = node.relpath+"ftv2pnode.png"; + } + else + { + imgNode.src = node.relpath+"ftv2node.png"; + domNode.appendChild(imgNode); + } + } + } + else + { + if (node.isLast) + { + imgNode.src = node.relpath+"ftv2blank.png"; + } + else + { + imgNode.src = node.relpath+"ftv2vertline.png"; + } + } + imgNode.border = "0"; +} + +function newNode(o, po, text, link, childrenData, lastNode) +{ + var node = new Object(); + node.children = Array(); + node.childrenData = childrenData; + node.depth = po.depth + 1; + node.relpath = po.relpath; + node.isLast = lastNode; + + node.li = document.createElement("li"); + po.getChildrenUL().appendChild(node.li); + node.parentNode = po; + + node.itemDiv = document.createElement("div"); + node.itemDiv.className = "item"; + + node.labelSpan = document.createElement("span"); + node.labelSpan.className = "label"; + + createIndent(o,node.itemDiv,node,0); + node.itemDiv.appendChild(node.labelSpan); + node.li.appendChild(node.itemDiv); + + var a = document.createElement("a"); + node.labelSpan.appendChild(a); + node.label = document.createTextNode(text); + a.appendChild(node.label); + if (link) + { + a.href = node.relpath+link; + } + else + { + if (childrenData != null) + { + a.className = "nolink"; + a.href = "javascript:void(0)"; + a.onclick = node.expandToggle.onclick; + node.expanded = false; + } + } + + node.childrenUL = null; + node.getChildrenUL = function() + { + if (!node.childrenUL) + { + node.childrenUL = document.createElement("ul"); + node.childrenUL.className = "children_ul"; + node.childrenUL.style.display = "none"; + node.li.appendChild(node.childrenUL); + } + return node.childrenUL; + }; + + return node; +} + +function showRoot() +{ + var headerHeight = $("#top").height(); + var footerHeight = $("#nav-path").height(); + var windowHeight = $(window).height() - headerHeight - footerHeight; + navtree.scrollTo('#selected',0,{offset:-windowHeight/2}); +} + +function expandNode(o, node, imm) +{ + if (node.childrenData && !node.expanded) + { + if (!node.childrenVisited) + { + getNode(o, node); + } + if (imm) + { + $(node.getChildrenUL()).show(); + } + else + { + $(node.getChildrenUL()).slideDown("fast",showRoot); + } + if (node.isLast) + { + node.plus_img.src = node.relpath+"ftv2mlastnode.png"; + } + else + { + node.plus_img.src = node.relpath+"ftv2mnode.png"; + } + node.expanded = true; + } +} + +function getNode(o, po) +{ + po.childrenVisited = true; + var l = po.childrenData.length-1; + for (var i in po.childrenData) + { + var nodeData = po.childrenData[i]; + po.children[i] = newNode(o, po, nodeData[0], nodeData[1], nodeData[2], + i==l); + } +} + +function findNavTreePage(url, data) +{ + var nodes = data; + var result = null; + for (var i in nodes) + { + var d = nodes[i]; + if (d[1] == url) + { + return new Array(i); + } + else if (d[2] != null) // array of children + { + result = findNavTreePage(url, d[2]); + if (result != null) + { + return (new Array(i).concat(result)); + } + } + } + return null; +} + +function initNavTree(toroot,relpath) +{ + var o = new Object(); + o.toroot = toroot; + o.node = new Object(); + o.node.li = document.getElementById("nav-tree-contents"); + o.node.childrenData = NAVTREE; + o.node.children = new Array(); + o.node.childrenUL = document.createElement("ul"); + o.node.getChildrenUL = function() { return o.node.childrenUL; }; + o.node.li.appendChild(o.node.childrenUL); + o.node.depth = 0; + o.node.relpath = relpath; + + getNode(o, o.node); + + o.breadcrumbs = findNavTreePage(toroot, NAVTREE); + if (o.breadcrumbs == null) + { + o.breadcrumbs = findNavTreePage("index.html",NAVTREE); + } + if (o.breadcrumbs != null && o.breadcrumbs.length>0) + { + var p = o.node; + for (var i in o.breadcrumbs) + { + var j = o.breadcrumbs[i]; + p = p.children[j]; + expandNode(o,p,true); + } + p.itemDiv.className = p.itemDiv.className + " selected"; + p.itemDiv.id = "selected"; + $(window).load(showRoot); + } +} + diff --git a/assets/doc/new__message_8c__incl.map b/assets/doc/new__message_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/new__message_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/new__message_8c__incl.md5 b/assets/doc/new__message_8c__incl.md5 new file mode 100644 index 0000000..8593fe7 --- /dev/null +++ b/assets/doc/new__message_8c__incl.md5 @@ -0,0 +1 @@ +9e545bc90b7e3029ac38f11de57c274c \ No newline at end of file diff --git a/assets/doc/new__message_8c__incl.png b/assets/doc/new__message_8c__incl.png new file mode 100644 index 0000000..b65d713 Binary files /dev/null and b/assets/doc/new__message_8c__incl.png differ diff --git a/assets/doc/new__message_8c_a1fdc8ba849d0496d659f1020a9be9757_cgraph.map b/assets/doc/new__message_8c_a1fdc8ba849d0496d659f1020a9be9757_cgraph.map new file mode 100644 index 0000000..3198f2c --- /dev/null +++ b/assets/doc/new__message_8c_a1fdc8ba849d0496d659f1020a9be9757_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/assets/doc/new__message_8c_a1fdc8ba849d0496d659f1020a9be9757_cgraph.md5 b/assets/doc/new__message_8c_a1fdc8ba849d0496d659f1020a9be9757_cgraph.md5 new file mode 100644 index 0000000..97aa4f8 --- /dev/null +++ b/assets/doc/new__message_8c_a1fdc8ba849d0496d659f1020a9be9757_cgraph.md5 @@ -0,0 +1 @@ +c558060c1c47baa4978334d17d3f1652 \ No newline at end of file diff --git a/assets/doc/new__message_8c_a1fdc8ba849d0496d659f1020a9be9757_cgraph.png b/assets/doc/new__message_8c_a1fdc8ba849d0496d659f1020a9be9757_cgraph.png new file mode 100644 index 0000000..480610f Binary files /dev/null and b/assets/doc/new__message_8c_a1fdc8ba849d0496d659f1020a9be9757_cgraph.png differ diff --git a/assets/doc/new__message_8c_a1fdc8ba849d0496d659f1020a9be9757_icgraph.map b/assets/doc/new__message_8c_a1fdc8ba849d0496d659f1020a9be9757_icgraph.map new file mode 100644 index 0000000..7e89994 --- /dev/null +++ b/assets/doc/new__message_8c_a1fdc8ba849d0496d659f1020a9be9757_icgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/assets/doc/new__message_8c_a1fdc8ba849d0496d659f1020a9be9757_icgraph.md5 b/assets/doc/new__message_8c_a1fdc8ba849d0496d659f1020a9be9757_icgraph.md5 new file mode 100644 index 0000000..21e085d --- /dev/null +++ b/assets/doc/new__message_8c_a1fdc8ba849d0496d659f1020a9be9757_icgraph.md5 @@ -0,0 +1 @@ +21215b5a37a8023147b93ca8ca949f9f \ No newline at end of file diff --git a/assets/doc/new__message_8c_a1fdc8ba849d0496d659f1020a9be9757_icgraph.png b/assets/doc/new__message_8c_a1fdc8ba849d0496d659f1020a9be9757_icgraph.png new file mode 100644 index 0000000..132333e Binary files /dev/null and b/assets/doc/new__message_8c_a1fdc8ba849d0496d659f1020a9be9757_icgraph.png differ diff --git a/assets/doc/observer_8c__incl.map b/assets/doc/observer_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/observer_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/observer_8c__incl.md5 b/assets/doc/observer_8c__incl.md5 new file mode 100644 index 0000000..f21f1b8 --- /dev/null +++ b/assets/doc/observer_8c__incl.md5 @@ -0,0 +1 @@ +e58c097a50802bb70942015910ce6014 \ No newline at end of file diff --git a/assets/doc/observer_8c__incl.png b/assets/doc/observer_8c__incl.png new file mode 100644 index 0000000..62da336 Binary files /dev/null and b/assets/doc/observer_8c__incl.png differ diff --git a/assets/doc/open.png b/assets/doc/open.png new file mode 100644 index 0000000..7b35d2c Binary files /dev/null and b/assets/doc/open.png differ diff --git a/assets/doc/p__body_8c__incl.map b/assets/doc/p__body_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/p__body_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/p__body_8c__incl.md5 b/assets/doc/p__body_8c__incl.md5 new file mode 100644 index 0000000..1e31af8 --- /dev/null +++ b/assets/doc/p__body_8c__incl.md5 @@ -0,0 +1 @@ +e57c89277401df177a935659eaacc7ac \ No newline at end of file diff --git a/assets/doc/p__body_8c__incl.png b/assets/doc/p__body_8c__incl.png new file mode 100644 index 0000000..77eb2e3 Binary files /dev/null and b/assets/doc/p__body_8c__incl.png differ diff --git a/assets/doc/p__body_8c_adeb585491c105427b6bfd7e032de20b0_icgraph.map b/assets/doc/p__body_8c_adeb585491c105427b6bfd7e032de20b0_icgraph.map new file mode 100644 index 0000000..2038d43 --- /dev/null +++ b/assets/doc/p__body_8c_adeb585491c105427b6bfd7e032de20b0_icgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/assets/doc/p__body_8c_adeb585491c105427b6bfd7e032de20b0_icgraph.md5 b/assets/doc/p__body_8c_adeb585491c105427b6bfd7e032de20b0_icgraph.md5 new file mode 100644 index 0000000..e1994ae --- /dev/null +++ b/assets/doc/p__body_8c_adeb585491c105427b6bfd7e032de20b0_icgraph.md5 @@ -0,0 +1 @@ +027e7a6d1a5c64be4497ea9791fb4695 \ No newline at end of file diff --git a/assets/doc/p__body_8c_adeb585491c105427b6bfd7e032de20b0_icgraph.png b/assets/doc/p__body_8c_adeb585491c105427b6bfd7e032de20b0_icgraph.png new file mode 100644 index 0000000..d53dc86 Binary files /dev/null and b/assets/doc/p__body_8c_adeb585491c105427b6bfd7e032de20b0_icgraph.png differ diff --git a/assets/doc/p__header_8c__incl.map b/assets/doc/p__header_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/p__header_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/p__header_8c__incl.md5 b/assets/doc/p__header_8c__incl.md5 new file mode 100644 index 0000000..1be2ec0 --- /dev/null +++ b/assets/doc/p__header_8c__incl.md5 @@ -0,0 +1 @@ +01e6c70e88180e8fb6a25cdc48b412ea \ No newline at end of file diff --git a/assets/doc/p__header_8c__incl.png b/assets/doc/p__header_8c__incl.png new file mode 100644 index 0000000..04685f0 Binary files /dev/null and b/assets/doc/p__header_8c__incl.png differ diff --git a/assets/doc/p__header_8c_a435b5009ff4af7824a1ee2bed844c149_cgraph.map b/assets/doc/p__header_8c_a435b5009ff4af7824a1ee2bed844c149_cgraph.map new file mode 100644 index 0000000..d953c62 --- /dev/null +++ b/assets/doc/p__header_8c_a435b5009ff4af7824a1ee2bed844c149_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/assets/doc/p__header_8c_a435b5009ff4af7824a1ee2bed844c149_cgraph.md5 b/assets/doc/p__header_8c_a435b5009ff4af7824a1ee2bed844c149_cgraph.md5 new file mode 100644 index 0000000..42240e3 --- /dev/null +++ b/assets/doc/p__header_8c_a435b5009ff4af7824a1ee2bed844c149_cgraph.md5 @@ -0,0 +1 @@ +39675ef3274bd3885c813a40e84b2ac9 \ No newline at end of file diff --git a/assets/doc/p__header_8c_a435b5009ff4af7824a1ee2bed844c149_cgraph.png b/assets/doc/p__header_8c_a435b5009ff4af7824a1ee2bed844c149_cgraph.png new file mode 100644 index 0000000..249620f Binary files /dev/null and b/assets/doc/p__header_8c_a435b5009ff4af7824a1ee2bed844c149_cgraph.png differ diff --git a/assets/doc/p__header_8c_a435b5009ff4af7824a1ee2bed844c149_icgraph.map b/assets/doc/p__header_8c_a435b5009ff4af7824a1ee2bed844c149_icgraph.map new file mode 100644 index 0000000..707d1ae --- /dev/null +++ b/assets/doc/p__header_8c_a435b5009ff4af7824a1ee2bed844c149_icgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/assets/doc/p__header_8c_a435b5009ff4af7824a1ee2bed844c149_icgraph.md5 b/assets/doc/p__header_8c_a435b5009ff4af7824a1ee2bed844c149_icgraph.md5 new file mode 100644 index 0000000..4ccbf9c --- /dev/null +++ b/assets/doc/p__header_8c_a435b5009ff4af7824a1ee2bed844c149_icgraph.md5 @@ -0,0 +1 @@ +18e017e1dec43c60b58fae35cb8bc9ba \ No newline at end of file diff --git a/assets/doc/p__header_8c_a435b5009ff4af7824a1ee2bed844c149_icgraph.png b/assets/doc/p__header_8c_a435b5009ff4af7824a1ee2bed844c149_icgraph.png new file mode 100644 index 0000000..d365aa6 Binary files /dev/null and b/assets/doc/p__header_8c_a435b5009ff4af7824a1ee2bed844c149_icgraph.png differ diff --git a/assets/doc/p__post__vars_8c__incl.map b/assets/doc/p__post__vars_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/p__post__vars_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/p__post__vars_8c__incl.md5 b/assets/doc/p__post__vars_8c__incl.md5 new file mode 100644 index 0000000..72a3a36 --- /dev/null +++ b/assets/doc/p__post__vars_8c__incl.md5 @@ -0,0 +1 @@ +7c515c4946a018899fd120edacd893f4 \ No newline at end of file diff --git a/assets/doc/p__post__vars_8c__incl.png b/assets/doc/p__post__vars_8c__incl.png new file mode 100644 index 0000000..efc3bcf Binary files /dev/null and b/assets/doc/p__post__vars_8c__incl.png differ diff --git a/assets/doc/p__post__vars_8c_a2bc2221df00776a7ccde55b7d05a215e_cgraph.map b/assets/doc/p__post__vars_8c_a2bc2221df00776a7ccde55b7d05a215e_cgraph.map new file mode 100644 index 0000000..99954cc --- /dev/null +++ b/assets/doc/p__post__vars_8c_a2bc2221df00776a7ccde55b7d05a215e_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/assets/doc/p__post__vars_8c_a2bc2221df00776a7ccde55b7d05a215e_cgraph.md5 b/assets/doc/p__post__vars_8c_a2bc2221df00776a7ccde55b7d05a215e_cgraph.md5 new file mode 100644 index 0000000..80eb51a --- /dev/null +++ b/assets/doc/p__post__vars_8c_a2bc2221df00776a7ccde55b7d05a215e_cgraph.md5 @@ -0,0 +1 @@ +b0df8145a031da732c134b8a2d2a4bb8 \ No newline at end of file diff --git a/assets/doc/p__post__vars_8c_a2bc2221df00776a7ccde55b7d05a215e_cgraph.png b/assets/doc/p__post__vars_8c_a2bc2221df00776a7ccde55b7d05a215e_cgraph.png new file mode 100644 index 0000000..1e74292 Binary files /dev/null and b/assets/doc/p__post__vars_8c_a2bc2221df00776a7ccde55b7d05a215e_cgraph.png differ diff --git a/assets/doc/p__post__vars_8c_a2bc2221df00776a7ccde55b7d05a215e_icgraph.map b/assets/doc/p__post__vars_8c_a2bc2221df00776a7ccde55b7d05a215e_icgraph.map new file mode 100644 index 0000000..748a2ee --- /dev/null +++ b/assets/doc/p__post__vars_8c_a2bc2221df00776a7ccde55b7d05a215e_icgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/assets/doc/p__post__vars_8c_a2bc2221df00776a7ccde55b7d05a215e_icgraph.md5 b/assets/doc/p__post__vars_8c_a2bc2221df00776a7ccde55b7d05a215e_icgraph.md5 new file mode 100644 index 0000000..0856975 --- /dev/null +++ b/assets/doc/p__post__vars_8c_a2bc2221df00776a7ccde55b7d05a215e_icgraph.md5 @@ -0,0 +1 @@ +759d5f85e4e4e1f9c055a956fad324d2 \ No newline at end of file diff --git a/assets/doc/p__post__vars_8c_a2bc2221df00776a7ccde55b7d05a215e_icgraph.png b/assets/doc/p__post__vars_8c_a2bc2221df00776a7ccde55b7d05a215e_icgraph.png new file mode 100644 index 0000000..2b8ef7d Binary files /dev/null and b/assets/doc/p__post__vars_8c_a2bc2221df00776a7ccde55b7d05a215e_icgraph.png differ diff --git a/assets/doc/p__request__vars_8c__incl.map b/assets/doc/p__request__vars_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/p__request__vars_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/p__request__vars_8c__incl.md5 b/assets/doc/p__request__vars_8c__incl.md5 new file mode 100644 index 0000000..03d40d1 --- /dev/null +++ b/assets/doc/p__request__vars_8c__incl.md5 @@ -0,0 +1 @@ +88c12fbdaed08e40d78fbd6886013955 \ No newline at end of file diff --git a/assets/doc/p__request__vars_8c__incl.png b/assets/doc/p__request__vars_8c__incl.png new file mode 100644 index 0000000..3bdbb55 Binary files /dev/null and b/assets/doc/p__request__vars_8c__incl.png differ diff --git a/assets/doc/p__request__vars_8c_a2c796d182b38451567db7fa35637fe0c_cgraph.map b/assets/doc/p__request__vars_8c_a2c796d182b38451567db7fa35637fe0c_cgraph.map new file mode 100644 index 0000000..a9a3cb6 --- /dev/null +++ b/assets/doc/p__request__vars_8c_a2c796d182b38451567db7fa35637fe0c_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/assets/doc/p__request__vars_8c_a2c796d182b38451567db7fa35637fe0c_cgraph.md5 b/assets/doc/p__request__vars_8c_a2c796d182b38451567db7fa35637fe0c_cgraph.md5 new file mode 100644 index 0000000..898f0c8 --- /dev/null +++ b/assets/doc/p__request__vars_8c_a2c796d182b38451567db7fa35637fe0c_cgraph.md5 @@ -0,0 +1 @@ +cd4e378cfbadb8bc35c9238b78054e5c \ No newline at end of file diff --git a/assets/doc/p__request__vars_8c_a2c796d182b38451567db7fa35637fe0c_cgraph.png b/assets/doc/p__request__vars_8c_a2c796d182b38451567db7fa35637fe0c_cgraph.png new file mode 100644 index 0000000..140e458 Binary files /dev/null and b/assets/doc/p__request__vars_8c_a2c796d182b38451567db7fa35637fe0c_cgraph.png differ diff --git a/assets/doc/p__request__vars_8c_a2c796d182b38451567db7fa35637fe0c_icgraph.map b/assets/doc/p__request__vars_8c_a2c796d182b38451567db7fa35637fe0c_icgraph.map new file mode 100644 index 0000000..edf830c --- /dev/null +++ b/assets/doc/p__request__vars_8c_a2c796d182b38451567db7fa35637fe0c_icgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/assets/doc/p__request__vars_8c_a2c796d182b38451567db7fa35637fe0c_icgraph.md5 b/assets/doc/p__request__vars_8c_a2c796d182b38451567db7fa35637fe0c_icgraph.md5 new file mode 100644 index 0000000..e1b0c36 --- /dev/null +++ b/assets/doc/p__request__vars_8c_a2c796d182b38451567db7fa35637fe0c_icgraph.md5 @@ -0,0 +1 @@ +b8d59c71fa8fb656636f8d852e1b4d5a \ No newline at end of file diff --git a/assets/doc/p__request__vars_8c_a2c796d182b38451567db7fa35637fe0c_icgraph.png b/assets/doc/p__request__vars_8c_a2c796d182b38451567db7fa35637fe0c_icgraph.png new file mode 100644 index 0000000..270c35b Binary files /dev/null and b/assets/doc/p__request__vars_8c_a2c796d182b38451567db7fa35637fe0c_icgraph.png differ diff --git a/assets/doc/parse_8c__incl.map b/assets/doc/parse_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/parse_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/parse_8c__incl.md5 b/assets/doc/parse_8c__incl.md5 new file mode 100644 index 0000000..2343f82 --- /dev/null +++ b/assets/doc/parse_8c__incl.md5 @@ -0,0 +1 @@ +927a6329e76f4c68893003b6053258de \ No newline at end of file diff --git a/assets/doc/parse_8c__incl.png b/assets/doc/parse_8c__incl.png new file mode 100644 index 0000000..874d0ce Binary files /dev/null and b/assets/doc/parse_8c__incl.png differ diff --git a/assets/doc/parse_8c_a1aa3a9f8959238057fe18ca5bda180db_cgraph.map b/assets/doc/parse_8c_a1aa3a9f8959238057fe18ca5bda180db_cgraph.map new file mode 100644 index 0000000..244f3c6 --- /dev/null +++ b/assets/doc/parse_8c_a1aa3a9f8959238057fe18ca5bda180db_cgraph.map @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/doc/parse_8c_a1aa3a9f8959238057fe18ca5bda180db_cgraph.md5 b/assets/doc/parse_8c_a1aa3a9f8959238057fe18ca5bda180db_cgraph.md5 new file mode 100644 index 0000000..113a0a6 --- /dev/null +++ b/assets/doc/parse_8c_a1aa3a9f8959238057fe18ca5bda180db_cgraph.md5 @@ -0,0 +1 @@ +ebd20e585579a84d42aaed855ecbf25b \ No newline at end of file diff --git a/assets/doc/parse_8c_a1aa3a9f8959238057fe18ca5bda180db_cgraph.png b/assets/doc/parse_8c_a1aa3a9f8959238057fe18ca5bda180db_cgraph.png new file mode 100644 index 0000000..22f1e2e Binary files /dev/null and b/assets/doc/parse_8c_a1aa3a9f8959238057fe18ca5bda180db_cgraph.png differ diff --git a/assets/doc/parse_8c_a1aa3a9f8959238057fe18ca5bda180db_icgraph.map b/assets/doc/parse_8c_a1aa3a9f8959238057fe18ca5bda180db_icgraph.map new file mode 100644 index 0000000..ecc2d79 --- /dev/null +++ b/assets/doc/parse_8c_a1aa3a9f8959238057fe18ca5bda180db_icgraph.map @@ -0,0 +1,3 @@ + + + diff --git a/assets/doc/parse_8c_a1aa3a9f8959238057fe18ca5bda180db_icgraph.md5 b/assets/doc/parse_8c_a1aa3a9f8959238057fe18ca5bda180db_icgraph.md5 new file mode 100644 index 0000000..b7908e5 --- /dev/null +++ b/assets/doc/parse_8c_a1aa3a9f8959238057fe18ca5bda180db_icgraph.md5 @@ -0,0 +1 @@ +ee32703a3361bfa8942e3d594bf9e5e9 \ No newline at end of file diff --git a/assets/doc/parse_8c_a1aa3a9f8959238057fe18ca5bda180db_icgraph.png b/assets/doc/parse_8c_a1aa3a9f8959238057fe18ca5bda180db_icgraph.png new file mode 100644 index 0000000..06e37eb Binary files /dev/null and b/assets/doc/parse_8c_a1aa3a9f8959238057fe18ca5bda180db_icgraph.png differ diff --git a/assets/doc/parser_8c__incl.map b/assets/doc/parser_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/parser_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/parser_8c__incl.md5 b/assets/doc/parser_8c__incl.md5 new file mode 100644 index 0000000..e8f48b7 --- /dev/null +++ b/assets/doc/parser_8c__incl.md5 @@ -0,0 +1 @@ +6d3bd7bd89c2914b09a0c810d7bed6bb \ No newline at end of file diff --git a/assets/doc/parser_8c__incl.png b/assets/doc/parser_8c__incl.png new file mode 100644 index 0000000..d56af10 Binary files /dev/null and b/assets/doc/parser_8c__incl.png differ diff --git a/assets/doc/parser_8h__dep__incl.map b/assets/doc/parser_8h__dep__incl.map new file mode 100644 index 0000000..6dcffbe --- /dev/null +++ b/assets/doc/parser_8h__dep__incl.map @@ -0,0 +1,3 @@ + + + diff --git a/assets/doc/parser_8h__dep__incl.md5 b/assets/doc/parser_8h__dep__incl.md5 new file mode 100644 index 0000000..0ec7bc5 --- /dev/null +++ b/assets/doc/parser_8h__dep__incl.md5 @@ -0,0 +1 @@ +6b28eb064ea3778155fa834ab993ad87 \ No newline at end of file diff --git a/assets/doc/parser_8h__dep__incl.png b/assets/doc/parser_8h__dep__incl.png new file mode 100644 index 0000000..f138a2c Binary files /dev/null and b/assets/doc/parser_8h__dep__incl.png differ diff --git a/assets/doc/parser_8h__incl.map b/assets/doc/parser_8h__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/parser_8h__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/parser_8h__incl.md5 b/assets/doc/parser_8h__incl.md5 new file mode 100644 index 0000000..4f59142 --- /dev/null +++ b/assets/doc/parser_8h__incl.md5 @@ -0,0 +1 @@ +59bc6a9fe1947c06fe590f6cb79a06c9 \ No newline at end of file diff --git a/assets/doc/parser_8h__incl.png b/assets/doc/parser_8h__incl.png new file mode 100644 index 0000000..b188364 Binary files /dev/null and b/assets/doc/parser_8h__incl.png differ diff --git a/assets/doc/parser_8h_a0ac1a5d015b74c978d757b2867786693_cgraph.map b/assets/doc/parser_8h_a0ac1a5d015b74c978d757b2867786693_cgraph.map new file mode 100644 index 0000000..99954cc --- /dev/null +++ b/assets/doc/parser_8h_a0ac1a5d015b74c978d757b2867786693_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/assets/doc/parser_8h_a0ac1a5d015b74c978d757b2867786693_cgraph.md5 b/assets/doc/parser_8h_a0ac1a5d015b74c978d757b2867786693_cgraph.md5 new file mode 100644 index 0000000..80eb51a --- /dev/null +++ b/assets/doc/parser_8h_a0ac1a5d015b74c978d757b2867786693_cgraph.md5 @@ -0,0 +1 @@ +b0df8145a031da732c134b8a2d2a4bb8 \ No newline at end of file diff --git a/assets/doc/parser_8h_a0ac1a5d015b74c978d757b2867786693_cgraph.png b/assets/doc/parser_8h_a0ac1a5d015b74c978d757b2867786693_cgraph.png new file mode 100644 index 0000000..1e74292 Binary files /dev/null and b/assets/doc/parser_8h_a0ac1a5d015b74c978d757b2867786693_cgraph.png differ diff --git a/assets/doc/parser_8h_a0ac1a5d015b74c978d757b2867786693_icgraph.map b/assets/doc/parser_8h_a0ac1a5d015b74c978d757b2867786693_icgraph.map new file mode 100644 index 0000000..748a2ee --- /dev/null +++ b/assets/doc/parser_8h_a0ac1a5d015b74c978d757b2867786693_icgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/assets/doc/parser_8h_a0ac1a5d015b74c978d757b2867786693_icgraph.md5 b/assets/doc/parser_8h_a0ac1a5d015b74c978d757b2867786693_icgraph.md5 new file mode 100644 index 0000000..0856975 --- /dev/null +++ b/assets/doc/parser_8h_a0ac1a5d015b74c978d757b2867786693_icgraph.md5 @@ -0,0 +1 @@ +759d5f85e4e4e1f9c055a956fad324d2 \ No newline at end of file diff --git a/assets/doc/parser_8h_a0ac1a5d015b74c978d757b2867786693_icgraph.png b/assets/doc/parser_8h_a0ac1a5d015b74c978d757b2867786693_icgraph.png new file mode 100644 index 0000000..2b8ef7d Binary files /dev/null and b/assets/doc/parser_8h_a0ac1a5d015b74c978d757b2867786693_icgraph.png differ diff --git a/assets/doc/parser_8h_a327e735e383c72c2b1da1bfd4734015e_cgraph.map b/assets/doc/parser_8h_a327e735e383c72c2b1da1bfd4734015e_cgraph.map new file mode 100644 index 0000000..244f3c6 --- /dev/null +++ b/assets/doc/parser_8h_a327e735e383c72c2b1da1bfd4734015e_cgraph.map @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/doc/parser_8h_a327e735e383c72c2b1da1bfd4734015e_cgraph.md5 b/assets/doc/parser_8h_a327e735e383c72c2b1da1bfd4734015e_cgraph.md5 new file mode 100644 index 0000000..113a0a6 --- /dev/null +++ b/assets/doc/parser_8h_a327e735e383c72c2b1da1bfd4734015e_cgraph.md5 @@ -0,0 +1 @@ +ebd20e585579a84d42aaed855ecbf25b \ No newline at end of file diff --git a/assets/doc/parser_8h_a327e735e383c72c2b1da1bfd4734015e_cgraph.png b/assets/doc/parser_8h_a327e735e383c72c2b1da1bfd4734015e_cgraph.png new file mode 100644 index 0000000..22f1e2e Binary files /dev/null and b/assets/doc/parser_8h_a327e735e383c72c2b1da1bfd4734015e_cgraph.png differ diff --git a/assets/doc/parser_8h_a327e735e383c72c2b1da1bfd4734015e_icgraph.map b/assets/doc/parser_8h_a327e735e383c72c2b1da1bfd4734015e_icgraph.map new file mode 100644 index 0000000..ecc2d79 --- /dev/null +++ b/assets/doc/parser_8h_a327e735e383c72c2b1da1bfd4734015e_icgraph.map @@ -0,0 +1,3 @@ + + + diff --git a/assets/doc/parser_8h_a327e735e383c72c2b1da1bfd4734015e_icgraph.md5 b/assets/doc/parser_8h_a327e735e383c72c2b1da1bfd4734015e_icgraph.md5 new file mode 100644 index 0000000..b7908e5 --- /dev/null +++ b/assets/doc/parser_8h_a327e735e383c72c2b1da1bfd4734015e_icgraph.md5 @@ -0,0 +1 @@ +ee32703a3361bfa8942e3d594bf9e5e9 \ No newline at end of file diff --git a/assets/doc/parser_8h_a327e735e383c72c2b1da1bfd4734015e_icgraph.png b/assets/doc/parser_8h_a327e735e383c72c2b1da1bfd4734015e_icgraph.png new file mode 100644 index 0000000..06e37eb Binary files /dev/null and b/assets/doc/parser_8h_a327e735e383c72c2b1da1bfd4734015e_icgraph.png differ diff --git a/assets/doc/parser_8h_a3add6b1b4a1e26a5baa86f2fa4c9d843_cgraph.map b/assets/doc/parser_8h_a3add6b1b4a1e26a5baa86f2fa4c9d843_cgraph.map new file mode 100644 index 0000000..d953c62 --- /dev/null +++ b/assets/doc/parser_8h_a3add6b1b4a1e26a5baa86f2fa4c9d843_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/assets/doc/parser_8h_a3add6b1b4a1e26a5baa86f2fa4c9d843_cgraph.md5 b/assets/doc/parser_8h_a3add6b1b4a1e26a5baa86f2fa4c9d843_cgraph.md5 new file mode 100644 index 0000000..42240e3 --- /dev/null +++ b/assets/doc/parser_8h_a3add6b1b4a1e26a5baa86f2fa4c9d843_cgraph.md5 @@ -0,0 +1 @@ +39675ef3274bd3885c813a40e84b2ac9 \ No newline at end of file diff --git a/assets/doc/parser_8h_a3add6b1b4a1e26a5baa86f2fa4c9d843_cgraph.png b/assets/doc/parser_8h_a3add6b1b4a1e26a5baa86f2fa4c9d843_cgraph.png new file mode 100644 index 0000000..249620f Binary files /dev/null and b/assets/doc/parser_8h_a3add6b1b4a1e26a5baa86f2fa4c9d843_cgraph.png differ diff --git a/assets/doc/parser_8h_a3add6b1b4a1e26a5baa86f2fa4c9d843_icgraph.map b/assets/doc/parser_8h_a3add6b1b4a1e26a5baa86f2fa4c9d843_icgraph.map new file mode 100644 index 0000000..707d1ae --- /dev/null +++ b/assets/doc/parser_8h_a3add6b1b4a1e26a5baa86f2fa4c9d843_icgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/assets/doc/parser_8h_a3add6b1b4a1e26a5baa86f2fa4c9d843_icgraph.md5 b/assets/doc/parser_8h_a3add6b1b4a1e26a5baa86f2fa4c9d843_icgraph.md5 new file mode 100644 index 0000000..4ccbf9c --- /dev/null +++ b/assets/doc/parser_8h_a3add6b1b4a1e26a5baa86f2fa4c9d843_icgraph.md5 @@ -0,0 +1 @@ +18e017e1dec43c60b58fae35cb8bc9ba \ No newline at end of file diff --git a/assets/doc/parser_8h_a3add6b1b4a1e26a5baa86f2fa4c9d843_icgraph.png b/assets/doc/parser_8h_a3add6b1b4a1e26a5baa86f2fa4c9d843_icgraph.png new file mode 100644 index 0000000..d365aa6 Binary files /dev/null and b/assets/doc/parser_8h_a3add6b1b4a1e26a5baa86f2fa4c9d843_icgraph.png differ diff --git a/assets/doc/parser_8h_a3ed6fd01af0d4079f592fd492b79672b_cgraph.map b/assets/doc/parser_8h_a3ed6fd01af0d4079f592fd492b79672b_cgraph.map new file mode 100644 index 0000000..a9a3cb6 --- /dev/null +++ b/assets/doc/parser_8h_a3ed6fd01af0d4079f592fd492b79672b_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/assets/doc/parser_8h_a3ed6fd01af0d4079f592fd492b79672b_cgraph.md5 b/assets/doc/parser_8h_a3ed6fd01af0d4079f592fd492b79672b_cgraph.md5 new file mode 100644 index 0000000..898f0c8 --- /dev/null +++ b/assets/doc/parser_8h_a3ed6fd01af0d4079f592fd492b79672b_cgraph.md5 @@ -0,0 +1 @@ +cd4e378cfbadb8bc35c9238b78054e5c \ No newline at end of file diff --git a/assets/doc/parser_8h_a3ed6fd01af0d4079f592fd492b79672b_cgraph.png b/assets/doc/parser_8h_a3ed6fd01af0d4079f592fd492b79672b_cgraph.png new file mode 100644 index 0000000..140e458 Binary files /dev/null and b/assets/doc/parser_8h_a3ed6fd01af0d4079f592fd492b79672b_cgraph.png differ diff --git a/assets/doc/parser_8h_a3ed6fd01af0d4079f592fd492b79672b_icgraph.map b/assets/doc/parser_8h_a3ed6fd01af0d4079f592fd492b79672b_icgraph.map new file mode 100644 index 0000000..edf830c --- /dev/null +++ b/assets/doc/parser_8h_a3ed6fd01af0d4079f592fd492b79672b_icgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/assets/doc/parser_8h_a3ed6fd01af0d4079f592fd492b79672b_icgraph.md5 b/assets/doc/parser_8h_a3ed6fd01af0d4079f592fd492b79672b_icgraph.md5 new file mode 100644 index 0000000..e1b0c36 --- /dev/null +++ b/assets/doc/parser_8h_a3ed6fd01af0d4079f592fd492b79672b_icgraph.md5 @@ -0,0 +1 @@ +b8d59c71fa8fb656636f8d852e1b4d5a \ No newline at end of file diff --git a/assets/doc/parser_8h_a3ed6fd01af0d4079f592fd492b79672b_icgraph.png b/assets/doc/parser_8h_a3ed6fd01af0d4079f592fd492b79672b_icgraph.png new file mode 100644 index 0000000..270c35b Binary files /dev/null and b/assets/doc/parser_8h_a3ed6fd01af0d4079f592fd492b79672b_icgraph.png differ diff --git a/assets/doc/parser_8h_ad17a51c93dbb9085c719de8a586614d2_cgraph.map b/assets/doc/parser_8h_ad17a51c93dbb9085c719de8a586614d2_cgraph.map new file mode 100644 index 0000000..3198f2c --- /dev/null +++ b/assets/doc/parser_8h_ad17a51c93dbb9085c719de8a586614d2_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/assets/doc/parser_8h_ad17a51c93dbb9085c719de8a586614d2_cgraph.md5 b/assets/doc/parser_8h_ad17a51c93dbb9085c719de8a586614d2_cgraph.md5 new file mode 100644 index 0000000..97aa4f8 --- /dev/null +++ b/assets/doc/parser_8h_ad17a51c93dbb9085c719de8a586614d2_cgraph.md5 @@ -0,0 +1 @@ +c558060c1c47baa4978334d17d3f1652 \ No newline at end of file diff --git a/assets/doc/parser_8h_ad17a51c93dbb9085c719de8a586614d2_cgraph.png b/assets/doc/parser_8h_ad17a51c93dbb9085c719de8a586614d2_cgraph.png new file mode 100644 index 0000000..480610f Binary files /dev/null and b/assets/doc/parser_8h_ad17a51c93dbb9085c719de8a586614d2_cgraph.png differ diff --git a/assets/doc/parser_8h_ad17a51c93dbb9085c719de8a586614d2_icgraph.map b/assets/doc/parser_8h_ad17a51c93dbb9085c719de8a586614d2_icgraph.map new file mode 100644 index 0000000..7e89994 --- /dev/null +++ b/assets/doc/parser_8h_ad17a51c93dbb9085c719de8a586614d2_icgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/assets/doc/parser_8h_ad17a51c93dbb9085c719de8a586614d2_icgraph.md5 b/assets/doc/parser_8h_ad17a51c93dbb9085c719de8a586614d2_icgraph.md5 new file mode 100644 index 0000000..21e085d --- /dev/null +++ b/assets/doc/parser_8h_ad17a51c93dbb9085c719de8a586614d2_icgraph.md5 @@ -0,0 +1 @@ +21215b5a37a8023147b93ca8ca949f9f \ No newline at end of file diff --git a/assets/doc/parser_8h_ad17a51c93dbb9085c719de8a586614d2_icgraph.png b/assets/doc/parser_8h_ad17a51c93dbb9085c719de8a586614d2_icgraph.png new file mode 100644 index 0000000..132333e Binary files /dev/null and b/assets/doc/parser_8h_ad17a51c93dbb9085c719de8a586614d2_icgraph.png differ diff --git a/assets/doc/parser_8h_ada957e3200a4127a9a803e5312610651_icgraph.map b/assets/doc/parser_8h_ada957e3200a4127a9a803e5312610651_icgraph.map new file mode 100644 index 0000000..2038d43 --- /dev/null +++ b/assets/doc/parser_8h_ada957e3200a4127a9a803e5312610651_icgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/assets/doc/parser_8h_ada957e3200a4127a9a803e5312610651_icgraph.md5 b/assets/doc/parser_8h_ada957e3200a4127a9a803e5312610651_icgraph.md5 new file mode 100644 index 0000000..e1994ae --- /dev/null +++ b/assets/doc/parser_8h_ada957e3200a4127a9a803e5312610651_icgraph.md5 @@ -0,0 +1 @@ +027e7a6d1a5c64be4497ea9791fb4695 \ No newline at end of file diff --git a/assets/doc/parser_8h_ada957e3200a4127a9a803e5312610651_icgraph.png b/assets/doc/parser_8h_ada957e3200a4127a9a803e5312610651_icgraph.png new file mode 100644 index 0000000..d53dc86 Binary files /dev/null and b/assets/doc/parser_8h_ada957e3200a4127a9a803e5312610651_icgraph.png differ diff --git a/assets/doc/poll_8c__incl.map b/assets/doc/poll_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/poll_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/poll_8c__incl.md5 b/assets/doc/poll_8c__incl.md5 new file mode 100644 index 0000000..429c6a3 --- /dev/null +++ b/assets/doc/poll_8c__incl.md5 @@ -0,0 +1 @@ +9446d75a118ff241d264b8c07ea6e3ba \ No newline at end of file diff --git a/assets/doc/poll_8c__incl.png b/assets/doc/poll_8c__incl.png new file mode 100644 index 0000000..2186306 Binary files /dev/null and b/assets/doc/poll_8c__incl.png differ diff --git a/assets/doc/poll_8c_ab102590167bdff8b5ab2f23069cfcbd3_cgraph.map b/assets/doc/poll_8c_ab102590167bdff8b5ab2f23069cfcbd3_cgraph.map new file mode 100644 index 0000000..f818d12 --- /dev/null +++ b/assets/doc/poll_8c_ab102590167bdff8b5ab2f23069cfcbd3_cgraph.map @@ -0,0 +1,3 @@ + + + diff --git a/assets/doc/poll_8c_ab102590167bdff8b5ab2f23069cfcbd3_cgraph.md5 b/assets/doc/poll_8c_ab102590167bdff8b5ab2f23069cfcbd3_cgraph.md5 new file mode 100644 index 0000000..c0e351d --- /dev/null +++ b/assets/doc/poll_8c_ab102590167bdff8b5ab2f23069cfcbd3_cgraph.md5 @@ -0,0 +1 @@ +daa6f23360995eb94e13cb6858ee4ae3 \ No newline at end of file diff --git a/assets/doc/poll_8c_ab102590167bdff8b5ab2f23069cfcbd3_cgraph.png b/assets/doc/poll_8c_ab102590167bdff8b5ab2f23069cfcbd3_cgraph.png new file mode 100644 index 0000000..c14d088 Binary files /dev/null and b/assets/doc/poll_8c_ab102590167bdff8b5ab2f23069cfcbd3_cgraph.png differ diff --git a/assets/doc/poll_8c_ab102590167bdff8b5ab2f23069cfcbd3_icgraph.map b/assets/doc/poll_8c_ab102590167bdff8b5ab2f23069cfcbd3_icgraph.map new file mode 100644 index 0000000..aa2a93b --- /dev/null +++ b/assets/doc/poll_8c_ab102590167bdff8b5ab2f23069cfcbd3_icgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/assets/doc/poll_8c_ab102590167bdff8b5ab2f23069cfcbd3_icgraph.md5 b/assets/doc/poll_8c_ab102590167bdff8b5ab2f23069cfcbd3_icgraph.md5 new file mode 100644 index 0000000..4c808d1 --- /dev/null +++ b/assets/doc/poll_8c_ab102590167bdff8b5ab2f23069cfcbd3_icgraph.md5 @@ -0,0 +1 @@ +920739b8ed9ad18ee7ac8422d0bae2aa \ No newline at end of file diff --git a/assets/doc/poll_8c_ab102590167bdff8b5ab2f23069cfcbd3_icgraph.png b/assets/doc/poll_8c_ab102590167bdff8b5ab2f23069cfcbd3_icgraph.png new file mode 100644 index 0000000..8d5637f Binary files /dev/null and b/assets/doc/poll_8c_ab102590167bdff8b5ab2f23069cfcbd3_icgraph.png differ diff --git a/assets/doc/process_8c__incl.map b/assets/doc/process_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/process_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/process_8c__incl.md5 b/assets/doc/process_8c__incl.md5 new file mode 100644 index 0000000..c5d141c --- /dev/null +++ b/assets/doc/process_8c__incl.md5 @@ -0,0 +1 @@ +777b1dcfb2886d81edc27994d435ffe3 \ No newline at end of file diff --git a/assets/doc/process_8c__incl.png b/assets/doc/process_8c__incl.png new file mode 100644 index 0000000..469c299 Binary files /dev/null and b/assets/doc/process_8c__incl.png differ diff --git a/assets/doc/process_8c_a05882322d98d5710a5512c9255e03d71_cgraph.map b/assets/doc/process_8c_a05882322d98d5710a5512c9255e03d71_cgraph.map new file mode 100644 index 0000000..2b76cfc --- /dev/null +++ b/assets/doc/process_8c_a05882322d98d5710a5512c9255e03d71_cgraph.map @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/doc/process_8c_a05882322d98d5710a5512c9255e03d71_cgraph.md5 b/assets/doc/process_8c_a05882322d98d5710a5512c9255e03d71_cgraph.md5 new file mode 100644 index 0000000..9cf85f8 --- /dev/null +++ b/assets/doc/process_8c_a05882322d98d5710a5512c9255e03d71_cgraph.md5 @@ -0,0 +1 @@ +0058153c3d078fe3c8c0125f5e3c8080 \ No newline at end of file diff --git a/assets/doc/process_8c_a05882322d98d5710a5512c9255e03d71_cgraph.png b/assets/doc/process_8c_a05882322d98d5710a5512c9255e03d71_cgraph.png new file mode 100644 index 0000000..947f66c Binary files /dev/null and b/assets/doc/process_8c_a05882322d98d5710a5512c9255e03d71_cgraph.png differ diff --git a/assets/doc/process_8c_a0c79ececf9335c2eb6017e13562c776d_cgraph.map b/assets/doc/process_8c_a0c79ececf9335c2eb6017e13562c776d_cgraph.map new file mode 100644 index 0000000..bd401aa --- /dev/null +++ b/assets/doc/process_8c_a0c79ececf9335c2eb6017e13562c776d_cgraph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/assets/doc/process_8c_a0c79ececf9335c2eb6017e13562c776d_cgraph.md5 b/assets/doc/process_8c_a0c79ececf9335c2eb6017e13562c776d_cgraph.md5 new file mode 100644 index 0000000..d80459a --- /dev/null +++ b/assets/doc/process_8c_a0c79ececf9335c2eb6017e13562c776d_cgraph.md5 @@ -0,0 +1 @@ +2fedeafe2baba856adcea0d2ab1c54e2 \ No newline at end of file diff --git a/assets/doc/process_8c_a0c79ececf9335c2eb6017e13562c776d_cgraph.png b/assets/doc/process_8c_a0c79ececf9335c2eb6017e13562c776d_cgraph.png new file mode 100644 index 0000000..1aa9076 Binary files /dev/null and b/assets/doc/process_8c_a0c79ececf9335c2eb6017e13562c776d_cgraph.png differ diff --git a/assets/doc/process_8c_a0c79ececf9335c2eb6017e13562c776d_icgraph.map b/assets/doc/process_8c_a0c79ececf9335c2eb6017e13562c776d_icgraph.map new file mode 100644 index 0000000..e0c8c17 --- /dev/null +++ b/assets/doc/process_8c_a0c79ececf9335c2eb6017e13562c776d_icgraph.map @@ -0,0 +1,3 @@ + + + diff --git a/assets/doc/process_8c_a0c79ececf9335c2eb6017e13562c776d_icgraph.md5 b/assets/doc/process_8c_a0c79ececf9335c2eb6017e13562c776d_icgraph.md5 new file mode 100644 index 0000000..f5d88ce --- /dev/null +++ b/assets/doc/process_8c_a0c79ececf9335c2eb6017e13562c776d_icgraph.md5 @@ -0,0 +1 @@ +24a9c2ade77b2fc1db39a8e93b808652 \ No newline at end of file diff --git a/assets/doc/process_8c_a0c79ececf9335c2eb6017e13562c776d_icgraph.png b/assets/doc/process_8c_a0c79ececf9335c2eb6017e13562c776d_icgraph.png new file mode 100644 index 0000000..b299af9 Binary files /dev/null and b/assets/doc/process_8c_a0c79ececf9335c2eb6017e13562c776d_icgraph.png differ diff --git a/assets/doc/process_8c_a88e0a288b7cb9bf0fd3921f258024228_cgraph.map b/assets/doc/process_8c_a88e0a288b7cb9bf0fd3921f258024228_cgraph.map new file mode 100644 index 0000000..c29c249 --- /dev/null +++ b/assets/doc/process_8c_a88e0a288b7cb9bf0fd3921f258024228_cgraph.map @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/assets/doc/process_8c_a88e0a288b7cb9bf0fd3921f258024228_cgraph.md5 b/assets/doc/process_8c_a88e0a288b7cb9bf0fd3921f258024228_cgraph.md5 new file mode 100644 index 0000000..58dd5a9 --- /dev/null +++ b/assets/doc/process_8c_a88e0a288b7cb9bf0fd3921f258024228_cgraph.md5 @@ -0,0 +1 @@ +0d64146b469948216ae193e358eb0f4d \ No newline at end of file diff --git a/assets/doc/process_8c_a88e0a288b7cb9bf0fd3921f258024228_cgraph.png b/assets/doc/process_8c_a88e0a288b7cb9bf0fd3921f258024228_cgraph.png new file mode 100644 index 0000000..49f5b61 Binary files /dev/null and b/assets/doc/process_8c_a88e0a288b7cb9bf0fd3921f258024228_cgraph.png differ diff --git a/assets/doc/process_8c_a88e0a288b7cb9bf0fd3921f258024228_icgraph.map b/assets/doc/process_8c_a88e0a288b7cb9bf0fd3921f258024228_icgraph.map new file mode 100644 index 0000000..31f1a39 --- /dev/null +++ b/assets/doc/process_8c_a88e0a288b7cb9bf0fd3921f258024228_icgraph.map @@ -0,0 +1,3 @@ + + + diff --git a/assets/doc/process_8c_a88e0a288b7cb9bf0fd3921f258024228_icgraph.md5 b/assets/doc/process_8c_a88e0a288b7cb9bf0fd3921f258024228_icgraph.md5 new file mode 100644 index 0000000..8985ec1 --- /dev/null +++ b/assets/doc/process_8c_a88e0a288b7cb9bf0fd3921f258024228_icgraph.md5 @@ -0,0 +1 @@ +f938f22072dd4b489cb308c616dca31e \ No newline at end of file diff --git a/assets/doc/process_8c_a88e0a288b7cb9bf0fd3921f258024228_icgraph.png b/assets/doc/process_8c_a88e0a288b7cb9bf0fd3921f258024228_icgraph.png new file mode 100644 index 0000000..24f25d4 Binary files /dev/null and b/assets/doc/process_8c_a88e0a288b7cb9bf0fd3921f258024228_icgraph.png differ diff --git a/assets/doc/queue_8c__incl.map b/assets/doc/queue_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/queue_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/queue_8c__incl.md5 b/assets/doc/queue_8c__incl.md5 new file mode 100644 index 0000000..9b7c67d --- /dev/null +++ b/assets/doc/queue_8c__incl.md5 @@ -0,0 +1 @@ +9ff6657499f1c4a7a2f5069856106189 \ No newline at end of file diff --git a/assets/doc/queue_8c__incl.png b/assets/doc/queue_8c__incl.png new file mode 100644 index 0000000..3183534 Binary files /dev/null and b/assets/doc/queue_8c__incl.png differ diff --git a/assets/doc/queue_8h__dep__incl.map b/assets/doc/queue_8h__dep__incl.map new file mode 100644 index 0000000..1554778 --- /dev/null +++ b/assets/doc/queue_8h__dep__incl.map @@ -0,0 +1,3 @@ + + + diff --git a/assets/doc/queue_8h__dep__incl.md5 b/assets/doc/queue_8h__dep__incl.md5 new file mode 100644 index 0000000..ac6ca82 --- /dev/null +++ b/assets/doc/queue_8h__dep__incl.md5 @@ -0,0 +1 @@ +2dc93d8392c56ec11521c34779c4f26d \ No newline at end of file diff --git a/assets/doc/queue_8h__dep__incl.png b/assets/doc/queue_8h__dep__incl.png new file mode 100644 index 0000000..50d2514 Binary files /dev/null and b/assets/doc/queue_8h__dep__incl.png differ diff --git a/assets/doc/queue_8h__incl.map b/assets/doc/queue_8h__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/queue_8h__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/queue_8h__incl.md5 b/assets/doc/queue_8h__incl.md5 new file mode 100644 index 0000000..c1dd066 --- /dev/null +++ b/assets/doc/queue_8h__incl.md5 @@ -0,0 +1 @@ +265541e3b820634d6eac0c6277ba5a2c \ No newline at end of file diff --git a/assets/doc/queue_8h__incl.png b/assets/doc/queue_8h__incl.png new file mode 100644 index 0000000..d99b515 Binary files /dev/null and b/assets/doc/queue_8h__incl.png differ diff --git a/assets/doc/randval_8c__incl.map b/assets/doc/randval_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/randval_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/randval_8c__incl.md5 b/assets/doc/randval_8c__incl.md5 new file mode 100644 index 0000000..7cb163c --- /dev/null +++ b/assets/doc/randval_8c__incl.md5 @@ -0,0 +1 @@ +a0778c8ca354dad6da8c34637ecf2fe1 \ No newline at end of file diff --git a/assets/doc/randval_8c__incl.png b/assets/doc/randval_8c__incl.png new file mode 100644 index 0000000..fbb7fdb Binary files /dev/null and b/assets/doc/randval_8c__incl.png differ diff --git a/assets/doc/randval_8c_aaa72c68badabe5fb60f70e1fad55b114_cgraph.map b/assets/doc/randval_8c_aaa72c68badabe5fb60f70e1fad55b114_cgraph.map new file mode 100644 index 0000000..86fad85 --- /dev/null +++ b/assets/doc/randval_8c_aaa72c68badabe5fb60f70e1fad55b114_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/assets/doc/randval_8c_aaa72c68badabe5fb60f70e1fad55b114_cgraph.md5 b/assets/doc/randval_8c_aaa72c68badabe5fb60f70e1fad55b114_cgraph.md5 new file mode 100644 index 0000000..0f73557 --- /dev/null +++ b/assets/doc/randval_8c_aaa72c68badabe5fb60f70e1fad55b114_cgraph.md5 @@ -0,0 +1 @@ +c6f146750f92dfbafd04181f61ac059e \ No newline at end of file diff --git a/assets/doc/randval_8c_aaa72c68badabe5fb60f70e1fad55b114_cgraph.png b/assets/doc/randval_8c_aaa72c68badabe5fb60f70e1fad55b114_cgraph.png new file mode 100644 index 0000000..6663a11 Binary files /dev/null and b/assets/doc/randval_8c_aaa72c68badabe5fb60f70e1fad55b114_cgraph.png differ diff --git a/assets/doc/randval_8c_aaa72c68badabe5fb60f70e1fad55b114_icgraph.map b/assets/doc/randval_8c_aaa72c68badabe5fb60f70e1fad55b114_icgraph.map new file mode 100644 index 0000000..3026719 --- /dev/null +++ b/assets/doc/randval_8c_aaa72c68badabe5fb60f70e1fad55b114_icgraph.map @@ -0,0 +1,3 @@ + + + diff --git a/assets/doc/randval_8c_aaa72c68badabe5fb60f70e1fad55b114_icgraph.md5 b/assets/doc/randval_8c_aaa72c68badabe5fb60f70e1fad55b114_icgraph.md5 new file mode 100644 index 0000000..0515c05 --- /dev/null +++ b/assets/doc/randval_8c_aaa72c68badabe5fb60f70e1fad55b114_icgraph.md5 @@ -0,0 +1 @@ +36fb017eb8a582c4804cc40ced6cf1b9 \ No newline at end of file diff --git a/assets/doc/randval_8c_aaa72c68badabe5fb60f70e1fad55b114_icgraph.png b/assets/doc/randval_8c_aaa72c68badabe5fb60f70e1fad55b114_icgraph.png new file mode 100644 index 0000000..1aeeced Binary files /dev/null and b/assets/doc/randval_8c_aaa72c68badabe5fb60f70e1fad55b114_icgraph.png differ diff --git a/assets/doc/reader_8c__incl.map b/assets/doc/reader_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/reader_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/reader_8c__incl.md5 b/assets/doc/reader_8c__incl.md5 new file mode 100644 index 0000000..0776b84 --- /dev/null +++ b/assets/doc/reader_8c__incl.md5 @@ -0,0 +1 @@ +c66f42bd6bf1d21447dc9ee812d14d17 \ No newline at end of file diff --git a/assets/doc/reader_8c__incl.png b/assets/doc/reader_8c__incl.png new file mode 100644 index 0000000..b61cba3 Binary files /dev/null and b/assets/doc/reader_8c__incl.png differ diff --git a/assets/doc/reader_8c_a84d1e74e8cce239e01f84a43daf0f521_icgraph.map b/assets/doc/reader_8c_a84d1e74e8cce239e01f84a43daf0f521_icgraph.map new file mode 100644 index 0000000..3b0397c --- /dev/null +++ b/assets/doc/reader_8c_a84d1e74e8cce239e01f84a43daf0f521_icgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/assets/doc/reader_8c_a84d1e74e8cce239e01f84a43daf0f521_icgraph.md5 b/assets/doc/reader_8c_a84d1e74e8cce239e01f84a43daf0f521_icgraph.md5 new file mode 100644 index 0000000..b96a9eb --- /dev/null +++ b/assets/doc/reader_8c_a84d1e74e8cce239e01f84a43daf0f521_icgraph.md5 @@ -0,0 +1 @@ +fcad05a87d820f31efebbd80004a96e2 \ No newline at end of file diff --git a/assets/doc/reader_8c_a84d1e74e8cce239e01f84a43daf0f521_icgraph.png b/assets/doc/reader_8c_a84d1e74e8cce239e01f84a43daf0f521_icgraph.png new file mode 100644 index 0000000..44398d1 Binary files /dev/null and b/assets/doc/reader_8c_a84d1e74e8cce239e01f84a43daf0f521_icgraph.png differ diff --git a/assets/doc/reader_8h__dep__incl.map b/assets/doc/reader_8h__dep__incl.map new file mode 100644 index 0000000..7e74c1e --- /dev/null +++ b/assets/doc/reader_8h__dep__incl.map @@ -0,0 +1,5 @@ + + + + + diff --git a/assets/doc/reader_8h__dep__incl.md5 b/assets/doc/reader_8h__dep__incl.md5 new file mode 100644 index 0000000..f896fa8 --- /dev/null +++ b/assets/doc/reader_8h__dep__incl.md5 @@ -0,0 +1 @@ +cb8a8a85daeeb9c9c03d924f22e2ec1e \ No newline at end of file diff --git a/assets/doc/reader_8h__dep__incl.png b/assets/doc/reader_8h__dep__incl.png new file mode 100644 index 0000000..fa2cb03 Binary files /dev/null and b/assets/doc/reader_8h__dep__incl.png differ diff --git a/assets/doc/reader_8h__incl.map b/assets/doc/reader_8h__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/reader_8h__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/reader_8h__incl.md5 b/assets/doc/reader_8h__incl.md5 new file mode 100644 index 0000000..66dd1f4 --- /dev/null +++ b/assets/doc/reader_8h__incl.md5 @@ -0,0 +1 @@ +2ea294c09000758e3fac8ddfb4c75905 \ No newline at end of file diff --git a/assets/doc/reader_8h__incl.png b/assets/doc/reader_8h__incl.png new file mode 100644 index 0000000..1ec39a0 Binary files /dev/null and b/assets/doc/reader_8h__incl.png differ diff --git a/assets/doc/reader_8h_ad06d56b0fc045531cfbaf0bfc5468b83_icgraph.map b/assets/doc/reader_8h_ad06d56b0fc045531cfbaf0bfc5468b83_icgraph.map new file mode 100644 index 0000000..3b0397c --- /dev/null +++ b/assets/doc/reader_8h_ad06d56b0fc045531cfbaf0bfc5468b83_icgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/assets/doc/reader_8h_ad06d56b0fc045531cfbaf0bfc5468b83_icgraph.md5 b/assets/doc/reader_8h_ad06d56b0fc045531cfbaf0bfc5468b83_icgraph.md5 new file mode 100644 index 0000000..b96a9eb --- /dev/null +++ b/assets/doc/reader_8h_ad06d56b0fc045531cfbaf0bfc5468b83_icgraph.md5 @@ -0,0 +1 @@ +fcad05a87d820f31efebbd80004a96e2 \ No newline at end of file diff --git a/assets/doc/reader_8h_ad06d56b0fc045531cfbaf0bfc5468b83_icgraph.png b/assets/doc/reader_8h_ad06d56b0fc045531cfbaf0bfc5468b83_icgraph.png new file mode 100644 index 0000000..44398d1 Binary files /dev/null and b/assets/doc/reader_8h_ad06d56b0fc045531cfbaf0bfc5468b83_icgraph.png differ diff --git a/assets/doc/release_8c__incl.map b/assets/doc/release_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/release_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/release_8c__incl.md5 b/assets/doc/release_8c__incl.md5 new file mode 100644 index 0000000..fab43e2 --- /dev/null +++ b/assets/doc/release_8c__incl.md5 @@ -0,0 +1 @@ +c3b8c6b0e4237a6f01881bef36e10319 \ No newline at end of file diff --git a/assets/doc/release_8c__incl.png b/assets/doc/release_8c__incl.png new file mode 100644 index 0000000..0a779ba Binary files /dev/null and b/assets/doc/release_8c__incl.png differ diff --git a/assets/doc/release_8c_aa6b501bd8016dfe1951f54dffe59262e_icgraph.map b/assets/doc/release_8c_aa6b501bd8016dfe1951f54dffe59262e_icgraph.map new file mode 100644 index 0000000..cc831e8 --- /dev/null +++ b/assets/doc/release_8c_aa6b501bd8016dfe1951f54dffe59262e_icgraph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/assets/doc/release_8c_aa6b501bd8016dfe1951f54dffe59262e_icgraph.md5 b/assets/doc/release_8c_aa6b501bd8016dfe1951f54dffe59262e_icgraph.md5 new file mode 100644 index 0000000..fd09a9e --- /dev/null +++ b/assets/doc/release_8c_aa6b501bd8016dfe1951f54dffe59262e_icgraph.md5 @@ -0,0 +1 @@ +73356de6d7f1fabc2b2d75c5498d4175 \ No newline at end of file diff --git a/assets/doc/release_8c_aa6b501bd8016dfe1951f54dffe59262e_icgraph.png b/assets/doc/release_8c_aa6b501bd8016dfe1951f54dffe59262e_icgraph.png new file mode 100644 index 0000000..7bab784 Binary files /dev/null and b/assets/doc/release_8c_aa6b501bd8016dfe1951f54dffe59262e_icgraph.png differ diff --git a/assets/doc/request_8c__incl.map b/assets/doc/request_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/request_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/request_8c__incl.md5 b/assets/doc/request_8c__incl.md5 new file mode 100644 index 0000000..619d8a1 --- /dev/null +++ b/assets/doc/request_8c__incl.md5 @@ -0,0 +1 @@ +d64d098e85f7c7ffd0f5b5e5f1b9bb93 \ No newline at end of file diff --git a/assets/doc/request_8c__incl.png b/assets/doc/request_8c__incl.png new file mode 100644 index 0000000..80f0205 Binary files /dev/null and b/assets/doc/request_8c__incl.png differ diff --git a/assets/doc/request_8h__dep__incl.map b/assets/doc/request_8h__dep__incl.map new file mode 100644 index 0000000..11509c4 --- /dev/null +++ b/assets/doc/request_8h__dep__incl.map @@ -0,0 +1,3 @@ + + + diff --git a/assets/doc/request_8h__dep__incl.md5 b/assets/doc/request_8h__dep__incl.md5 new file mode 100644 index 0000000..16bb915 --- /dev/null +++ b/assets/doc/request_8h__dep__incl.md5 @@ -0,0 +1 @@ +46ca2e7705391c3382d7b94bb733c1c5 \ No newline at end of file diff --git a/assets/doc/request_8h__dep__incl.png b/assets/doc/request_8h__dep__incl.png new file mode 100644 index 0000000..4e01cda Binary files /dev/null and b/assets/doc/request_8h__dep__incl.png differ diff --git a/assets/doc/request_8h__incl.map b/assets/doc/request_8h__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/request_8h__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/request_8h__incl.md5 b/assets/doc/request_8h__incl.md5 new file mode 100644 index 0000000..1b55689 --- /dev/null +++ b/assets/doc/request_8h__incl.md5 @@ -0,0 +1 @@ +75ee986e26b1d70e05da978fbae2658c \ No newline at end of file diff --git a/assets/doc/request_8h__incl.png b/assets/doc/request_8h__incl.png new file mode 100644 index 0000000..7ac5801 Binary files /dev/null and b/assets/doc/request_8h__incl.png differ diff --git a/assets/doc/resize.js b/assets/doc/resize.js new file mode 100644 index 0000000..04fa95c --- /dev/null +++ b/assets/doc/resize.js @@ -0,0 +1,81 @@ +var cookie_namespace = 'doxygen'; +var sidenav,navtree,content,header; + +function readCookie(cookie) +{ + var myCookie = cookie_namespace+"_"+cookie+"="; + if (document.cookie) + { + var index = document.cookie.indexOf(myCookie); + if (index != -1) + { + var valStart = index + myCookie.length; + var valEnd = document.cookie.indexOf(";", valStart); + if (valEnd == -1) + { + valEnd = document.cookie.length; + } + var val = document.cookie.substring(valStart, valEnd); + return val; + } + } + return 0; +} + +function writeCookie(cookie, val, expiration) +{ + if (val==undefined) return; + if (expiration == null) + { + var date = new Date(); + date.setTime(date.getTime()+(10*365*24*60*60*1000)); // default expiration is one week + expiration = date.toGMTString(); + } + document.cookie = cookie_namespace + "_" + cookie + "=" + val + "; expires=" + expiration+"; path=/"; +} + +function resizeWidth() +{ + var windowWidth = $(window).width() + "px"; + var sidenavWidth = $(sidenav).width(); + content.css({marginLeft:parseInt(sidenavWidth)+6+"px"}); //account for 6px-wide handle-bar + writeCookie('width',sidenavWidth, null); +} + +function restoreWidth(navWidth) +{ + var windowWidth = $(window).width() + "px"; + content.css({marginLeft:parseInt(navWidth)+6+"px"}); + sidenav.css({width:navWidth + "px"}); +} + +function resizeHeight() +{ + var headerHeight = header.height(); + var footerHeight = footer.height(); + var windowHeight = $(window).height() - headerHeight - footerHeight; + content.css({height:windowHeight + "px"}); + navtree.css({height:windowHeight + "px"}); + sidenav.css({height:windowHeight + "px",top: headerHeight+"px"}); +} + +function initResizable() +{ + header = $("#top"); + sidenav = $("#side-nav"); + content = $("#doc-content"); + navtree = $("#nav-tree"); + footer = $("#nav-path"); + $(".side-nav-resizable").resizable({resize: function(e, ui) { resizeWidth(); } }); + $(window).resize(function() { resizeHeight(); }); + var width = readCookie('width'); + if (width) { restoreWidth(width); } else { resizeWidth(); } + resizeHeight(); + var url = location.href; + var i=url.indexOf("#"); + if (i>=0) window.location.hash=url.substr(i); + var _preventDefault = function(evt) { evt.preventDefault(); }; + $("#splitbar").bind("dragstart", _preventDefault).bind("selectstart", _preventDefault); +} + + diff --git a/assets/doc/response_8c__incl.map b/assets/doc/response_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/response_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/response_8c__incl.md5 b/assets/doc/response_8c__incl.md5 new file mode 100644 index 0000000..57c2df3 --- /dev/null +++ b/assets/doc/response_8c__incl.md5 @@ -0,0 +1 @@ +d45a1e42dfb550310fecbd7eb4bf1132 \ No newline at end of file diff --git a/assets/doc/response_8c__incl.png b/assets/doc/response_8c__incl.png new file mode 100644 index 0000000..58dadf1 Binary files /dev/null and b/assets/doc/response_8c__incl.png differ diff --git a/assets/doc/response_8h__dep__incl.map b/assets/doc/response_8h__dep__incl.map new file mode 100644 index 0000000..6ce56bb --- /dev/null +++ b/assets/doc/response_8h__dep__incl.map @@ -0,0 +1,3 @@ + + + diff --git a/assets/doc/response_8h__dep__incl.md5 b/assets/doc/response_8h__dep__incl.md5 new file mode 100644 index 0000000..1a6c075 --- /dev/null +++ b/assets/doc/response_8h__dep__incl.md5 @@ -0,0 +1 @@ +ed13d34285b2f8f91935db15c0ed930a \ No newline at end of file diff --git a/assets/doc/response_8h__dep__incl.png b/assets/doc/response_8h__dep__incl.png new file mode 100644 index 0000000..d5cf719 Binary files /dev/null and b/assets/doc/response_8h__dep__incl.png differ diff --git a/assets/doc/response_8h__incl.map b/assets/doc/response_8h__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/response_8h__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/response_8h__incl.md5 b/assets/doc/response_8h__incl.md5 new file mode 100644 index 0000000..8938f48 --- /dev/null +++ b/assets/doc/response_8h__incl.md5 @@ -0,0 +1 @@ +255e25df03ecc965db0ca0a561aebe87 \ No newline at end of file diff --git a/assets/doc/response_8h__incl.png b/assets/doc/response_8h__incl.png new file mode 100644 index 0000000..1e68dbe Binary files /dev/null and b/assets/doc/response_8h__incl.png differ diff --git a/assets/doc/response_8h_a10bdf15320dd802fed606cadf5f3cc2c_icgraph.map b/assets/doc/response_8h_a10bdf15320dd802fed606cadf5f3cc2c_icgraph.map new file mode 100644 index 0000000..72100f6 --- /dev/null +++ b/assets/doc/response_8h_a10bdf15320dd802fed606cadf5f3cc2c_icgraph.map @@ -0,0 +1,3 @@ + + + diff --git a/assets/doc/response_8h_a10bdf15320dd802fed606cadf5f3cc2c_icgraph.md5 b/assets/doc/response_8h_a10bdf15320dd802fed606cadf5f3cc2c_icgraph.md5 new file mode 100644 index 0000000..b01034c --- /dev/null +++ b/assets/doc/response_8h_a10bdf15320dd802fed606cadf5f3cc2c_icgraph.md5 @@ -0,0 +1 @@ +8b2662cf9dca2933d7dad16f4b0c5f74 \ No newline at end of file diff --git a/assets/doc/response_8h_a10bdf15320dd802fed606cadf5f3cc2c_icgraph.png b/assets/doc/response_8h_a10bdf15320dd802fed606cadf5f3cc2c_icgraph.png new file mode 100644 index 0000000..5e09bde Binary files /dev/null and b/assets/doc/response_8h_a10bdf15320dd802fed606cadf5f3cc2c_icgraph.png differ diff --git a/assets/doc/response_8h_a729f0a6344c98bb226b4b0b490c8b70c_cgraph.map b/assets/doc/response_8h_a729f0a6344c98bb226b4b0b490c8b70c_cgraph.map new file mode 100644 index 0000000..f56bed8 --- /dev/null +++ b/assets/doc/response_8h_a729f0a6344c98bb226b4b0b490c8b70c_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/assets/doc/response_8h_a729f0a6344c98bb226b4b0b490c8b70c_cgraph.md5 b/assets/doc/response_8h_a729f0a6344c98bb226b4b0b490c8b70c_cgraph.md5 new file mode 100644 index 0000000..d4ee64b --- /dev/null +++ b/assets/doc/response_8h_a729f0a6344c98bb226b4b0b490c8b70c_cgraph.md5 @@ -0,0 +1 @@ +497bddee96d348a3f01a2b4d20d33999 \ No newline at end of file diff --git a/assets/doc/response_8h_a729f0a6344c98bb226b4b0b490c8b70c_cgraph.png b/assets/doc/response_8h_a729f0a6344c98bb226b4b0b490c8b70c_cgraph.png new file mode 100644 index 0000000..096bf09 Binary files /dev/null and b/assets/doc/response_8h_a729f0a6344c98bb226b4b0b490c8b70c_cgraph.png differ diff --git a/assets/doc/response_8h_a7f82e65bb81c75c37a8910456708e209_cgraph.map b/assets/doc/response_8h_a7f82e65bb81c75c37a8910456708e209_cgraph.map new file mode 100644 index 0000000..d953c62 --- /dev/null +++ b/assets/doc/response_8h_a7f82e65bb81c75c37a8910456708e209_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/assets/doc/response_8h_a7f82e65bb81c75c37a8910456708e209_cgraph.md5 b/assets/doc/response_8h_a7f82e65bb81c75c37a8910456708e209_cgraph.md5 new file mode 100644 index 0000000..fd232ab --- /dev/null +++ b/assets/doc/response_8h_a7f82e65bb81c75c37a8910456708e209_cgraph.md5 @@ -0,0 +1 @@ +ef24b8cdd4ef3d5b35421f27298df887 \ No newline at end of file diff --git a/assets/doc/response_8h_a7f82e65bb81c75c37a8910456708e209_cgraph.png b/assets/doc/response_8h_a7f82e65bb81c75c37a8910456708e209_cgraph.png new file mode 100644 index 0000000..5ea90e5 Binary files /dev/null and b/assets/doc/response_8h_a7f82e65bb81c75c37a8910456708e209_cgraph.png differ diff --git a/assets/doc/response_8h_a7f82e65bb81c75c37a8910456708e209_icgraph.map b/assets/doc/response_8h_a7f82e65bb81c75c37a8910456708e209_icgraph.map new file mode 100644 index 0000000..3a0e0c0 --- /dev/null +++ b/assets/doc/response_8h_a7f82e65bb81c75c37a8910456708e209_icgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/assets/doc/response_8h_a7f82e65bb81c75c37a8910456708e209_icgraph.md5 b/assets/doc/response_8h_a7f82e65bb81c75c37a8910456708e209_icgraph.md5 new file mode 100644 index 0000000..3c1b3c3 --- /dev/null +++ b/assets/doc/response_8h_a7f82e65bb81c75c37a8910456708e209_icgraph.md5 @@ -0,0 +1 @@ +27ff4d584d7ea1716f2602a1d864c44f \ No newline at end of file diff --git a/assets/doc/response_8h_a7f82e65bb81c75c37a8910456708e209_icgraph.png b/assets/doc/response_8h_a7f82e65bb81c75c37a8910456708e209_icgraph.png new file mode 100644 index 0000000..c891f4c Binary files /dev/null and b/assets/doc/response_8h_a7f82e65bb81c75c37a8910456708e209_icgraph.png differ diff --git a/assets/doc/response_8h_aa82eb4fe60ad9c266df2d885d0aad418_cgraph.map b/assets/doc/response_8h_aa82eb4fe60ad9c266df2d885d0aad418_cgraph.map new file mode 100644 index 0000000..ffb0daf --- /dev/null +++ b/assets/doc/response_8h_aa82eb4fe60ad9c266df2d885d0aad418_cgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/assets/doc/response_8h_aa82eb4fe60ad9c266df2d885d0aad418_cgraph.md5 b/assets/doc/response_8h_aa82eb4fe60ad9c266df2d885d0aad418_cgraph.md5 new file mode 100644 index 0000000..7338328 --- /dev/null +++ b/assets/doc/response_8h_aa82eb4fe60ad9c266df2d885d0aad418_cgraph.md5 @@ -0,0 +1 @@ +40e1ad46eb10fd653ca5248860e5ff69 \ No newline at end of file diff --git a/assets/doc/response_8h_aa82eb4fe60ad9c266df2d885d0aad418_cgraph.png b/assets/doc/response_8h_aa82eb4fe60ad9c266df2d885d0aad418_cgraph.png new file mode 100644 index 0000000..f42dd2f Binary files /dev/null and b/assets/doc/response_8h_aa82eb4fe60ad9c266df2d885d0aad418_cgraph.png differ diff --git a/assets/doc/response_8h_aa82eb4fe60ad9c266df2d885d0aad418_icgraph.map b/assets/doc/response_8h_aa82eb4fe60ad9c266df2d885d0aad418_icgraph.map new file mode 100644 index 0000000..9faf4c8 --- /dev/null +++ b/assets/doc/response_8h_aa82eb4fe60ad9c266df2d885d0aad418_icgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/assets/doc/response_8h_aa82eb4fe60ad9c266df2d885d0aad418_icgraph.md5 b/assets/doc/response_8h_aa82eb4fe60ad9c266df2d885d0aad418_icgraph.md5 new file mode 100644 index 0000000..e987121 --- /dev/null +++ b/assets/doc/response_8h_aa82eb4fe60ad9c266df2d885d0aad418_icgraph.md5 @@ -0,0 +1 @@ +f0186488c482411372b93fb2ca495e54 \ No newline at end of file diff --git a/assets/doc/response_8h_aa82eb4fe60ad9c266df2d885d0aad418_icgraph.png b/assets/doc/response_8h_aa82eb4fe60ad9c266df2d885d0aad418_icgraph.png new file mode 100644 index 0000000..20caefb Binary files /dev/null and b/assets/doc/response_8h_aa82eb4fe60ad9c266df2d885d0aad418_icgraph.png differ diff --git a/assets/doc/response_8h_ab28f3da2d73c756c0640d286c3fd37c5_cgraph.map b/assets/doc/response_8h_ab28f3da2d73c756c0640d286c3fd37c5_cgraph.map new file mode 100644 index 0000000..86fad85 --- /dev/null +++ b/assets/doc/response_8h_ab28f3da2d73c756c0640d286c3fd37c5_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/assets/doc/response_8h_ab28f3da2d73c756c0640d286c3fd37c5_cgraph.md5 b/assets/doc/response_8h_ab28f3da2d73c756c0640d286c3fd37c5_cgraph.md5 new file mode 100644 index 0000000..0aba359 --- /dev/null +++ b/assets/doc/response_8h_ab28f3da2d73c756c0640d286c3fd37c5_cgraph.md5 @@ -0,0 +1 @@ +bbc51dd429b35cd556cdc3d0e329754e \ No newline at end of file diff --git a/assets/doc/response_8h_ab28f3da2d73c756c0640d286c3fd37c5_cgraph.png b/assets/doc/response_8h_ab28f3da2d73c756c0640d286c3fd37c5_cgraph.png new file mode 100644 index 0000000..6352168 Binary files /dev/null and b/assets/doc/response_8h_ab28f3da2d73c756c0640d286c3fd37c5_cgraph.png differ diff --git a/assets/doc/response_8h_ab28f3da2d73c756c0640d286c3fd37c5_icgraph.map b/assets/doc/response_8h_ab28f3da2d73c756c0640d286c3fd37c5_icgraph.map new file mode 100644 index 0000000..3026719 --- /dev/null +++ b/assets/doc/response_8h_ab28f3da2d73c756c0640d286c3fd37c5_icgraph.map @@ -0,0 +1,3 @@ + + + diff --git a/assets/doc/response_8h_ab28f3da2d73c756c0640d286c3fd37c5_icgraph.md5 b/assets/doc/response_8h_ab28f3da2d73c756c0640d286c3fd37c5_icgraph.md5 new file mode 100644 index 0000000..62613b0 --- /dev/null +++ b/assets/doc/response_8h_ab28f3da2d73c756c0640d286c3fd37c5_icgraph.md5 @@ -0,0 +1 @@ +ce69d21a7164f25be76222f314545c4a \ No newline at end of file diff --git a/assets/doc/response_8h_ab28f3da2d73c756c0640d286c3fd37c5_icgraph.png b/assets/doc/response_8h_ab28f3da2d73c756c0640d286c3fd37c5_icgraph.png new file mode 100644 index 0000000..c12416a Binary files /dev/null and b/assets/doc/response_8h_ab28f3da2d73c756c0640d286c3fd37c5_icgraph.png differ diff --git a/assets/doc/response_8h_aeab2dc61e86e010d1eb3511eaf8d8ad0_cgraph.map b/assets/doc/response_8h_aeab2dc61e86e010d1eb3511eaf8d8ad0_cgraph.map new file mode 100644 index 0000000..d953c62 --- /dev/null +++ b/assets/doc/response_8h_aeab2dc61e86e010d1eb3511eaf8d8ad0_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/assets/doc/response_8h_aeab2dc61e86e010d1eb3511eaf8d8ad0_cgraph.md5 b/assets/doc/response_8h_aeab2dc61e86e010d1eb3511eaf8d8ad0_cgraph.md5 new file mode 100644 index 0000000..90d7f87 --- /dev/null +++ b/assets/doc/response_8h_aeab2dc61e86e010d1eb3511eaf8d8ad0_cgraph.md5 @@ -0,0 +1 @@ +b5009c9d6951e4e18d2cb4aa07e8d35d \ No newline at end of file diff --git a/assets/doc/response_8h_aeab2dc61e86e010d1eb3511eaf8d8ad0_cgraph.png b/assets/doc/response_8h_aeab2dc61e86e010d1eb3511eaf8d8ad0_cgraph.png new file mode 100644 index 0000000..9d7782a Binary files /dev/null and b/assets/doc/response_8h_aeab2dc61e86e010d1eb3511eaf8d8ad0_cgraph.png differ diff --git a/assets/doc/response_8h_aeab2dc61e86e010d1eb3511eaf8d8ad0_icgraph.map b/assets/doc/response_8h_aeab2dc61e86e010d1eb3511eaf8d8ad0_icgraph.map new file mode 100644 index 0000000..72100f6 --- /dev/null +++ b/assets/doc/response_8h_aeab2dc61e86e010d1eb3511eaf8d8ad0_icgraph.map @@ -0,0 +1,3 @@ + + + diff --git a/assets/doc/response_8h_aeab2dc61e86e010d1eb3511eaf8d8ad0_icgraph.md5 b/assets/doc/response_8h_aeab2dc61e86e010d1eb3511eaf8d8ad0_icgraph.md5 new file mode 100644 index 0000000..98d4db3 --- /dev/null +++ b/assets/doc/response_8h_aeab2dc61e86e010d1eb3511eaf8d8ad0_icgraph.md5 @@ -0,0 +1 @@ +fa88000745e7284a6723560a8c5a11d6 \ No newline at end of file diff --git a/assets/doc/response_8h_aeab2dc61e86e010d1eb3511eaf8d8ad0_icgraph.png b/assets/doc/response_8h_aeab2dc61e86e010d1eb3511eaf8d8ad0_icgraph.png new file mode 100644 index 0000000..945cf3f Binary files /dev/null and b/assets/doc/response_8h_aeab2dc61e86e010d1eb3511eaf8d8ad0_icgraph.png differ diff --git a/assets/doc/response_8h_af6ecda2c1f45abc258b7c70767c6b392_cgraph.map b/assets/doc/response_8h_af6ecda2c1f45abc258b7c70767c6b392_cgraph.map new file mode 100644 index 0000000..86fad85 --- /dev/null +++ b/assets/doc/response_8h_af6ecda2c1f45abc258b7c70767c6b392_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/assets/doc/response_8h_af6ecda2c1f45abc258b7c70767c6b392_cgraph.md5 b/assets/doc/response_8h_af6ecda2c1f45abc258b7c70767c6b392_cgraph.md5 new file mode 100644 index 0000000..0f73557 --- /dev/null +++ b/assets/doc/response_8h_af6ecda2c1f45abc258b7c70767c6b392_cgraph.md5 @@ -0,0 +1 @@ +c6f146750f92dfbafd04181f61ac059e \ No newline at end of file diff --git a/assets/doc/response_8h_af6ecda2c1f45abc258b7c70767c6b392_cgraph.png b/assets/doc/response_8h_af6ecda2c1f45abc258b7c70767c6b392_cgraph.png new file mode 100644 index 0000000..6663a11 Binary files /dev/null and b/assets/doc/response_8h_af6ecda2c1f45abc258b7c70767c6b392_cgraph.png differ diff --git a/assets/doc/response_8h_af6ecda2c1f45abc258b7c70767c6b392_icgraph.map b/assets/doc/response_8h_af6ecda2c1f45abc258b7c70767c6b392_icgraph.map new file mode 100644 index 0000000..3026719 --- /dev/null +++ b/assets/doc/response_8h_af6ecda2c1f45abc258b7c70767c6b392_icgraph.map @@ -0,0 +1,3 @@ + + + diff --git a/assets/doc/response_8h_af6ecda2c1f45abc258b7c70767c6b392_icgraph.md5 b/assets/doc/response_8h_af6ecda2c1f45abc258b7c70767c6b392_icgraph.md5 new file mode 100644 index 0000000..0515c05 --- /dev/null +++ b/assets/doc/response_8h_af6ecda2c1f45abc258b7c70767c6b392_icgraph.md5 @@ -0,0 +1 @@ +36fb017eb8a582c4804cc40ced6cf1b9 \ No newline at end of file diff --git a/assets/doc/response_8h_af6ecda2c1f45abc258b7c70767c6b392_icgraph.png b/assets/doc/response_8h_af6ecda2c1f45abc258b7c70767c6b392_icgraph.png new file mode 100644 index 0000000..1aeeced Binary files /dev/null and b/assets/doc/response_8h_af6ecda2c1f45abc258b7c70767c6b392_icgraph.png differ diff --git a/assets/doc/run_8c__incl.map b/assets/doc/run_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/run_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/run_8c__incl.md5 b/assets/doc/run_8c__incl.md5 new file mode 100644 index 0000000..87585bd --- /dev/null +++ b/assets/doc/run_8c__incl.md5 @@ -0,0 +1 @@ +583e4fa9ecec6d4b556c86dfbf869a65 \ No newline at end of file diff --git a/assets/doc/run_8c__incl.png b/assets/doc/run_8c__incl.png new file mode 100644 index 0000000..f508c51 Binary files /dev/null and b/assets/doc/run_8c__incl.png differ diff --git a/assets/doc/run_8c_a3f9eb08dd7565808de69e0bd29858c65_cgraph.map b/assets/doc/run_8c_a3f9eb08dd7565808de69e0bd29858c65_cgraph.map new file mode 100644 index 0000000..f818d12 --- /dev/null +++ b/assets/doc/run_8c_a3f9eb08dd7565808de69e0bd29858c65_cgraph.map @@ -0,0 +1,3 @@ + + + diff --git a/assets/doc/run_8c_a3f9eb08dd7565808de69e0bd29858c65_cgraph.md5 b/assets/doc/run_8c_a3f9eb08dd7565808de69e0bd29858c65_cgraph.md5 new file mode 100644 index 0000000..c0e351d --- /dev/null +++ b/assets/doc/run_8c_a3f9eb08dd7565808de69e0bd29858c65_cgraph.md5 @@ -0,0 +1 @@ +daa6f23360995eb94e13cb6858ee4ae3 \ No newline at end of file diff --git a/assets/doc/run_8c_a3f9eb08dd7565808de69e0bd29858c65_cgraph.png b/assets/doc/run_8c_a3f9eb08dd7565808de69e0bd29858c65_cgraph.png new file mode 100644 index 0000000..c14d088 Binary files /dev/null and b/assets/doc/run_8c_a3f9eb08dd7565808de69e0bd29858c65_cgraph.png differ diff --git a/assets/doc/run_8c_a3f9eb08dd7565808de69e0bd29858c65_icgraph.map b/assets/doc/run_8c_a3f9eb08dd7565808de69e0bd29858c65_icgraph.map new file mode 100644 index 0000000..aa2a93b --- /dev/null +++ b/assets/doc/run_8c_a3f9eb08dd7565808de69e0bd29858c65_icgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/assets/doc/run_8c_a3f9eb08dd7565808de69e0bd29858c65_icgraph.md5 b/assets/doc/run_8c_a3f9eb08dd7565808de69e0bd29858c65_icgraph.md5 new file mode 100644 index 0000000..4c808d1 --- /dev/null +++ b/assets/doc/run_8c_a3f9eb08dd7565808de69e0bd29858c65_icgraph.md5 @@ -0,0 +1 @@ +920739b8ed9ad18ee7ac8422d0bae2aa \ No newline at end of file diff --git a/assets/doc/run_8c_a3f9eb08dd7565808de69e0bd29858c65_icgraph.png b/assets/doc/run_8c_a3f9eb08dd7565808de69e0bd29858c65_icgraph.png new file mode 100644 index 0000000..8d5637f Binary files /dev/null and b/assets/doc/run_8c_a3f9eb08dd7565808de69e0bd29858c65_icgraph.png differ diff --git a/assets/doc/run_8c_a67a4d9073b80d8ae1459fb11ddd23675_cgraph.map b/assets/doc/run_8c_a67a4d9073b80d8ae1459fb11ddd23675_cgraph.map new file mode 100644 index 0000000..2ad6f09 --- /dev/null +++ b/assets/doc/run_8c_a67a4d9073b80d8ae1459fb11ddd23675_cgraph.map @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/assets/doc/run_8c_a67a4d9073b80d8ae1459fb11ddd23675_cgraph.md5 b/assets/doc/run_8c_a67a4d9073b80d8ae1459fb11ddd23675_cgraph.md5 new file mode 100644 index 0000000..247614e --- /dev/null +++ b/assets/doc/run_8c_a67a4d9073b80d8ae1459fb11ddd23675_cgraph.md5 @@ -0,0 +1 @@ +75fe61f2525865347d5da7e63e6590ca \ No newline at end of file diff --git a/assets/doc/run_8c_a67a4d9073b80d8ae1459fb11ddd23675_cgraph.png b/assets/doc/run_8c_a67a4d9073b80d8ae1459fb11ddd23675_cgraph.png new file mode 100644 index 0000000..a3f0d49 Binary files /dev/null and b/assets/doc/run_8c_a67a4d9073b80d8ae1459fb11ddd23675_cgraph.png differ diff --git a/assets/doc/run_8c_a67a4d9073b80d8ae1459fb11ddd23675_icgraph.map b/assets/doc/run_8c_a67a4d9073b80d8ae1459fb11ddd23675_icgraph.map new file mode 100644 index 0000000..5e49436 --- /dev/null +++ b/assets/doc/run_8c_a67a4d9073b80d8ae1459fb11ddd23675_icgraph.map @@ -0,0 +1,3 @@ + + + diff --git a/assets/doc/run_8c_a67a4d9073b80d8ae1459fb11ddd23675_icgraph.md5 b/assets/doc/run_8c_a67a4d9073b80d8ae1459fb11ddd23675_icgraph.md5 new file mode 100644 index 0000000..e177533 --- /dev/null +++ b/assets/doc/run_8c_a67a4d9073b80d8ae1459fb11ddd23675_icgraph.md5 @@ -0,0 +1 @@ +6f7774027ff0d29fd303b173c1c0e677 \ No newline at end of file diff --git a/assets/doc/run_8c_a67a4d9073b80d8ae1459fb11ddd23675_icgraph.png b/assets/doc/run_8c_a67a4d9073b80d8ae1459fb11ddd23675_icgraph.png new file mode 100644 index 0000000..eb08ad7 Binary files /dev/null and b/assets/doc/run_8c_a67a4d9073b80d8ae1459fb11ddd23675_icgraph.png differ diff --git a/assets/doc/run_8c_ac275efebefdf1c64b30511daa008d3c1_cgraph.map b/assets/doc/run_8c_ac275efebefdf1c64b30511daa008d3c1_cgraph.map new file mode 100644 index 0000000..b9aea00 --- /dev/null +++ b/assets/doc/run_8c_ac275efebefdf1c64b30511daa008d3c1_cgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/assets/doc/run_8c_ac275efebefdf1c64b30511daa008d3c1_cgraph.md5 b/assets/doc/run_8c_ac275efebefdf1c64b30511daa008d3c1_cgraph.md5 new file mode 100644 index 0000000..97508b2 --- /dev/null +++ b/assets/doc/run_8c_ac275efebefdf1c64b30511daa008d3c1_cgraph.md5 @@ -0,0 +1 @@ +fb3ffdb50568dd7c46dec3b6f36bc349 \ No newline at end of file diff --git a/assets/doc/run_8c_ac275efebefdf1c64b30511daa008d3c1_cgraph.png b/assets/doc/run_8c_ac275efebefdf1c64b30511daa008d3c1_cgraph.png new file mode 100644 index 0000000..d1f9a30 Binary files /dev/null and b/assets/doc/run_8c_ac275efebefdf1c64b30511daa008d3c1_cgraph.png differ diff --git a/assets/doc/run_8c_ac275efebefdf1c64b30511daa008d3c1_icgraph.map b/assets/doc/run_8c_ac275efebefdf1c64b30511daa008d3c1_icgraph.map new file mode 100644 index 0000000..8e4545d --- /dev/null +++ b/assets/doc/run_8c_ac275efebefdf1c64b30511daa008d3c1_icgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/assets/doc/run_8c_ac275efebefdf1c64b30511daa008d3c1_icgraph.md5 b/assets/doc/run_8c_ac275efebefdf1c64b30511daa008d3c1_icgraph.md5 new file mode 100644 index 0000000..c45cce1 --- /dev/null +++ b/assets/doc/run_8c_ac275efebefdf1c64b30511daa008d3c1_icgraph.md5 @@ -0,0 +1 @@ +db241edda8b555ddb426aabc836dce05 \ No newline at end of file diff --git a/assets/doc/run_8c_ac275efebefdf1c64b30511daa008d3c1_icgraph.png b/assets/doc/run_8c_ac275efebefdf1c64b30511daa008d3c1_icgraph.png new file mode 100644 index 0000000..ee217f3 Binary files /dev/null and b/assets/doc/run_8c_ac275efebefdf1c64b30511daa008d3c1_icgraph.png differ diff --git a/assets/doc/run_8c_ac4ce64f06fd2cb9d70953fed86a607e7_cgraph.map b/assets/doc/run_8c_ac4ce64f06fd2cb9d70953fed86a607e7_cgraph.map new file mode 100644 index 0000000..46d0f28 --- /dev/null +++ b/assets/doc/run_8c_ac4ce64f06fd2cb9d70953fed86a607e7_cgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/assets/doc/run_8c_ac4ce64f06fd2cb9d70953fed86a607e7_cgraph.md5 b/assets/doc/run_8c_ac4ce64f06fd2cb9d70953fed86a607e7_cgraph.md5 new file mode 100644 index 0000000..b579839 --- /dev/null +++ b/assets/doc/run_8c_ac4ce64f06fd2cb9d70953fed86a607e7_cgraph.md5 @@ -0,0 +1 @@ +92898f322e25e8100586a7d9fcf552b7 \ No newline at end of file diff --git a/assets/doc/run_8c_ac4ce64f06fd2cb9d70953fed86a607e7_cgraph.png b/assets/doc/run_8c_ac4ce64f06fd2cb9d70953fed86a607e7_cgraph.png new file mode 100644 index 0000000..ab40fbe Binary files /dev/null and b/assets/doc/run_8c_ac4ce64f06fd2cb9d70953fed86a607e7_cgraph.png differ diff --git a/assets/doc/run_8c_ac4ce64f06fd2cb9d70953fed86a607e7_icgraph.map b/assets/doc/run_8c_ac4ce64f06fd2cb9d70953fed86a607e7_icgraph.map new file mode 100644 index 0000000..8e4545d --- /dev/null +++ b/assets/doc/run_8c_ac4ce64f06fd2cb9d70953fed86a607e7_icgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/assets/doc/run_8c_ac4ce64f06fd2cb9d70953fed86a607e7_icgraph.md5 b/assets/doc/run_8c_ac4ce64f06fd2cb9d70953fed86a607e7_icgraph.md5 new file mode 100644 index 0000000..d0597fd --- /dev/null +++ b/assets/doc/run_8c_ac4ce64f06fd2cb9d70953fed86a607e7_icgraph.md5 @@ -0,0 +1 @@ +da7457b7ae7e1908e3f9edea82adb53f \ No newline at end of file diff --git a/assets/doc/run_8c_ac4ce64f06fd2cb9d70953fed86a607e7_icgraph.png b/assets/doc/run_8c_ac4ce64f06fd2cb9d70953fed86a607e7_icgraph.png new file mode 100644 index 0000000..335d2ff Binary files /dev/null and b/assets/doc/run_8c_ac4ce64f06fd2cb9d70953fed86a607e7_icgraph.png differ diff --git a/assets/doc/run_8c_ac80f57676062b94ad17a46646ba15e73_cgraph.map b/assets/doc/run_8c_ac80f57676062b94ad17a46646ba15e73_cgraph.map new file mode 100644 index 0000000..244b8c6 --- /dev/null +++ b/assets/doc/run_8c_ac80f57676062b94ad17a46646ba15e73_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/assets/doc/run_8c_ac80f57676062b94ad17a46646ba15e73_cgraph.md5 b/assets/doc/run_8c_ac80f57676062b94ad17a46646ba15e73_cgraph.md5 new file mode 100644 index 0000000..a752744 --- /dev/null +++ b/assets/doc/run_8c_ac80f57676062b94ad17a46646ba15e73_cgraph.md5 @@ -0,0 +1 @@ +ae130674a3b5cd4821330cdcc8283b9e \ No newline at end of file diff --git a/assets/doc/run_8c_ac80f57676062b94ad17a46646ba15e73_cgraph.png b/assets/doc/run_8c_ac80f57676062b94ad17a46646ba15e73_cgraph.png new file mode 100644 index 0000000..d04ab3d Binary files /dev/null and b/assets/doc/run_8c_ac80f57676062b94ad17a46646ba15e73_cgraph.png differ diff --git a/assets/doc/run_8c_ac80f57676062b94ad17a46646ba15e73_icgraph.map b/assets/doc/run_8c_ac80f57676062b94ad17a46646ba15e73_icgraph.map new file mode 100644 index 0000000..30e34ce --- /dev/null +++ b/assets/doc/run_8c_ac80f57676062b94ad17a46646ba15e73_icgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/assets/doc/run_8c_ac80f57676062b94ad17a46646ba15e73_icgraph.md5 b/assets/doc/run_8c_ac80f57676062b94ad17a46646ba15e73_icgraph.md5 new file mode 100644 index 0000000..48e663a --- /dev/null +++ b/assets/doc/run_8c_ac80f57676062b94ad17a46646ba15e73_icgraph.md5 @@ -0,0 +1 @@ +958c91257d6a31570b210a4f84f4912f \ No newline at end of file diff --git a/assets/doc/run_8c_ac80f57676062b94ad17a46646ba15e73_icgraph.png b/assets/doc/run_8c_ac80f57676062b94ad17a46646ba15e73_icgraph.png new file mode 100644 index 0000000..2b2a332 Binary files /dev/null and b/assets/doc/run_8c_ac80f57676062b94ad17a46646ba15e73_icgraph.png differ diff --git a/assets/doc/search/close.png b/assets/doc/search/close.png new file mode 100644 index 0000000..9342d3d Binary files /dev/null and b/assets/doc/search/close.png differ diff --git a/assets/doc/search/mag_sel.png b/assets/doc/search/mag_sel.png new file mode 100644 index 0000000..81f6040 Binary files /dev/null and b/assets/doc/search/mag_sel.png differ diff --git a/assets/doc/search/search.css b/assets/doc/search/search.css new file mode 100644 index 0000000..50249e5 --- /dev/null +++ b/assets/doc/search/search.css @@ -0,0 +1,240 @@ +/*---------------- Search Box */ + +#FSearchBox { + float: left; +} + +#searchli { + float: right; + display: block; + width: 170px; + height: 36px; +} + +#MSearchBox { + white-space : nowrap; + position: absolute; + float: none; + display: inline; + margin-top: 8px; + right: 0px; + width: 170px; + z-index: 102; +} + +#MSearchBox .left +{ + display:block; + position:absolute; + left:10px; + width:20px; + height:19px; + background:url('search_l.png') no-repeat; + background-position:right; +} + +#MSearchSelect { + display:block; + position:absolute; + width:20px; + height:19px; +} + +.left #MSearchSelect { + left:4px; +} + +.right #MSearchSelect { + right:5px; +} + +#MSearchField { + display:block; + position:absolute; + height:19px; + background:url('search_m.png') repeat-x; + border:none; + width:116px; + margin-left:20px; + padding-left:4px; + color: #909090; + outline: none; + font: 9pt Arial, Verdana, sans-serif; +} + +#FSearchBox #MSearchField { + margin-left:15px; +} + +#MSearchBox .right { + display:block; + position:absolute; + right:10px; + top:0px; + width:20px; + height:19px; + background:url('search_r.png') no-repeat; + background-position:left; +} + +#MSearchClose { + display: none; + position: absolute; + top: 4px; + background : none; + border: none; + margin: 0px 4px 0px 0px; + padding: 0px 0px; + outline: none; +} + +.left #MSearchClose { + left: 6px; +} + +.right #MSearchClose { + right: 2px; +} + +.MSearchBoxActive #MSearchField { + color: #000000; +} + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #90A5CE; + background-color: #F9FAFC; + z-index: 1; + padding-top: 4px; + padding-bottom: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +.SelectItem { + font: 8pt Arial, Verdana, sans-serif; + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: monospace; + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: #000000; + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: #000000; + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: #FFFFFF; + background-color: #3D578C; + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + width: 60ex; + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #000; + background-color: #EEF1F7; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; + padding-bottom: 15px; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +body.SRPage { + margin: 5px 2px; +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; +} + +.SRResult { + display: none; +} + +DIV.searchresults { + margin-left: 10px; + margin-right: 10px; +} diff --git a/assets/doc/search/search.js b/assets/doc/search/search.js new file mode 100644 index 0000000..57d93f5 --- /dev/null +++ b/assets/doc/search/search.js @@ -0,0 +1,742 @@ +// Search script generated by doxygen +// Copyright (C) 2009 by Dimitri van Heesch. + +// The code in this file is loosly based on main.js, part of Natural Docs, +// which is Copyright (C) 2003-2008 Greg Valure +// Natural Docs is licensed under the GPL. + +var indexSectionsWithContent = +{ + 0: "0000000000000000000000000000000000000000000000000001100000000000000000000000000000000000000000010111111111011111111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + 1: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101000011001000001100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + 2: "0000000000000000000000000000000000000000000000000001100000000000000000000000000000000000000000000101110111001111111110110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + 3: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101111011001111000110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + 4: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010111111111011111111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + 5: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101001011001000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + 6: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + 7: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101000010001000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + 8: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010011111111001110101110110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" +}; + +var indexSectionNames = +{ + 0: "all", + 1: "classes", + 2: "files", + 3: "functions", + 4: "variables", + 5: "typedefs", + 6: "enums", + 7: "enumvalues", + 8: "defines" +}; + +function convertToId(search) +{ + var result = ''; + for (i=0;i do a search + { + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex0) // Up + { + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } + else if (e.keyCode==13 || e.keyCode==27) + { + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() + { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() + { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() + { + this.keyTimeout = 0; + + // strip leading whitespace + var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + var code = searchValue.toLowerCase().charCodeAt(0); + var hexCode; + if (code<16) + { + hexCode="0"+code.toString(16); + } + else + { + hexCode=code.toString(16); + } + + var resultsPage; + var resultsPageWithSearch; + var hasResultsPage; + + if (indexSectionsWithContent[this.searchIndex].charAt(code) == '1') + { + resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + '.html'; + resultsPageWithSearch = resultsPage+'?'+escape(searchValue); + hasResultsPage = true; + } + else // nothing available for this search term + { + resultsPage = this.resultsPath + '/nomatches.html'; + resultsPageWithSearch = resultsPage; + hasResultsPage = false; + } + + window.frames.MSearchResults.location.href = resultsPageWithSearch; + var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + + if (domPopupSearchResultsWindow.style.display!='block') + { + var domSearchBox = this.DOMSearchBox(); + this.DOMSearchClose().style.display = 'inline'; + if (this.insideFrame) + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + domPopupSearchResultsWindow.style.position = 'relative'; + domPopupSearchResultsWindow.style.display = 'block'; + var width = document.body.clientWidth - 8; // the -8 is for IE :-( + domPopupSearchResultsWindow.style.width = width + 'px'; + domPopupSearchResults.style.width = width + 'px'; + } + else + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth; + var top = getYPos(domSearchBox) + 20; // domSearchBox.offsetHeight + 1; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + } + } + + this.lastSearchValue = searchValue; + this.lastResultsPage = resultsPage; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) + { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) + { + this.DOMSearchBox().className = 'MSearchBoxActive'; + + var searchField = this.DOMSearchField(); + + if (searchField.value == this.searchLabel) // clear "Search" term upon entry + { + searchField.value = ''; + this.searchActive = true; + } + } + else if (!isActive) // directly remove the panel + { + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.DOMSearchField().value = this.searchLabel; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults(name) +{ + // The number of matches from the last run of . + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) + { + var parentElement = document.getElementById(id); + var element = parentElement.firstChild; + + while (element && element!=parentElement) + { + if (element.nodeName == 'DIV' && element.className == 'SRChildren') + { + return element; + } + + if (element.nodeName == 'DIV' && element.hasChildNodes()) + { + element = element.firstChild; + } + else if (element.nextSibling) + { + element = element.nextSibling; + } + else + { + do + { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) + { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) + { + var element = this.FindChildElement(id); + if (element) + { + if (element.style.display == 'block') + { + element.style.display = 'none'; + } + else + { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) + { + if (!search) // get search word from URL + { + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + var resultRows = document.getElementsByTagName("div"); + var matches = 0; + + var i = 0; + while (i < resultRows.length) + { + var row = resultRows.item(i); + if (row.className == "SRResult") + { + var rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) + { + row.style.display = 'block'; + matches++; + } + else + { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) // no results + { + document.getElementById("NoMatches").style.display='block'; + } + else // at least one result + { + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) + { + if (e.type == "keydown") + { + this.repeatOn = false; + this.lastKey = e.keyCode; + } + else if (e.type == "keypress") + { + if (!this.repeatOn) + { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } + else if (e.type == "keyup") + { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + var newIndex = itemIndex-1; + var focusItem = this.NavPrev(newIndex); + if (focusItem) + { + var child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') // children visible + { + var n=0; + var tmpElem; + while (1) // search for last child + { + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) + { + focusItem = tmpElem; + } + else // found it! + { + break; + } + n++; + } + } + } + if (focusItem) + { + focusItem.focus(); + } + else // return focus to search field + { + parent.document.getElementById("MSearchField").focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = itemIndex+1; + var focusItem; + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') // children visible + { + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } + else if (this.lastKey==39) // Right + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } + else if (this.lastKey==37) // Left + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + if (childIndex>0) + { + var newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } + else // already at first child, jump to parent + { + document.getElementById('Item'+itemIndex).focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = childIndex+1; + var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) // last child, jump to parent next parent + { + elem = this.NavNext(itemIndex+1); + } + if (elem) + { + elem.focus(); + } + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } +} diff --git a/assets/doc/search/search_l.png b/assets/doc/search/search_l.png new file mode 100644 index 0000000..c872f4d Binary files /dev/null and b/assets/doc/search/search_l.png differ diff --git a/assets/doc/search/search_m.png b/assets/doc/search/search_m.png new file mode 100644 index 0000000..b429a16 Binary files /dev/null and b/assets/doc/search/search_m.png differ diff --git a/assets/doc/search/search_r.png b/assets/doc/search/search_r.png new file mode 100644 index 0000000..97ee8b4 Binary files /dev/null and b/assets/doc/search/search_r.png differ diff --git a/assets/doc/server_2read_8c__incl.map b/assets/doc/server_2read_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/server_2read_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/server_2read_8c__incl.md5 b/assets/doc/server_2read_8c__incl.md5 new file mode 100644 index 0000000..0bd0603 --- /dev/null +++ b/assets/doc/server_2read_8c__incl.md5 @@ -0,0 +1 @@ +ac233108084f205735e98ed01147d1b3 \ No newline at end of file diff --git a/assets/doc/server_2read_8c__incl.png b/assets/doc/server_2read_8c__incl.png new file mode 100644 index 0000000..2b1ac78 Binary files /dev/null and b/assets/doc/server_2read_8c__incl.png differ diff --git a/assets/doc/server_2read_8c_a97cbf012583a54dfd87f131233a18b0a_cgraph.map b/assets/doc/server_2read_8c_a97cbf012583a54dfd87f131233a18b0a_cgraph.map new file mode 100644 index 0000000..46d0f28 --- /dev/null +++ b/assets/doc/server_2read_8c_a97cbf012583a54dfd87f131233a18b0a_cgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/assets/doc/server_2read_8c_a97cbf012583a54dfd87f131233a18b0a_cgraph.md5 b/assets/doc/server_2read_8c_a97cbf012583a54dfd87f131233a18b0a_cgraph.md5 new file mode 100644 index 0000000..b579839 --- /dev/null +++ b/assets/doc/server_2read_8c_a97cbf012583a54dfd87f131233a18b0a_cgraph.md5 @@ -0,0 +1 @@ +92898f322e25e8100586a7d9fcf552b7 \ No newline at end of file diff --git a/assets/doc/server_2read_8c_a97cbf012583a54dfd87f131233a18b0a_cgraph.png b/assets/doc/server_2read_8c_a97cbf012583a54dfd87f131233a18b0a_cgraph.png new file mode 100644 index 0000000..ab40fbe Binary files /dev/null and b/assets/doc/server_2read_8c_a97cbf012583a54dfd87f131233a18b0a_cgraph.png differ diff --git a/assets/doc/server_2read_8c_a97cbf012583a54dfd87f131233a18b0a_icgraph.map b/assets/doc/server_2read_8c_a97cbf012583a54dfd87f131233a18b0a_icgraph.map new file mode 100644 index 0000000..8e4545d --- /dev/null +++ b/assets/doc/server_2read_8c_a97cbf012583a54dfd87f131233a18b0a_icgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/assets/doc/server_2read_8c_a97cbf012583a54dfd87f131233a18b0a_icgraph.md5 b/assets/doc/server_2read_8c_a97cbf012583a54dfd87f131233a18b0a_icgraph.md5 new file mode 100644 index 0000000..d0597fd --- /dev/null +++ b/assets/doc/server_2read_8c_a97cbf012583a54dfd87f131233a18b0a_icgraph.md5 @@ -0,0 +1 @@ +da7457b7ae7e1908e3f9edea82adb53f \ No newline at end of file diff --git a/assets/doc/server_2read_8c_a97cbf012583a54dfd87f131233a18b0a_icgraph.png b/assets/doc/server_2read_8c_a97cbf012583a54dfd87f131233a18b0a_icgraph.png new file mode 100644 index 0000000..335d2ff Binary files /dev/null and b/assets/doc/server_2read_8c_a97cbf012583a54dfd87f131233a18b0a_icgraph.png differ diff --git a/assets/doc/server_2write_8c__incl.map b/assets/doc/server_2write_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/server_2write_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/server_2write_8c__incl.md5 b/assets/doc/server_2write_8c__incl.md5 new file mode 100644 index 0000000..8c8344e --- /dev/null +++ b/assets/doc/server_2write_8c__incl.md5 @@ -0,0 +1 @@ +a54e7919b24889d902e5261c0d10733b \ No newline at end of file diff --git a/assets/doc/server_2write_8c__incl.png b/assets/doc/server_2write_8c__incl.png new file mode 100644 index 0000000..c3fb536 Binary files /dev/null and b/assets/doc/server_2write_8c__incl.png differ diff --git a/assets/doc/server_2write_8c_a0100b8630247e3ab19280ca0d38c480e_cgraph.map b/assets/doc/server_2write_8c_a0100b8630247e3ab19280ca0d38c480e_cgraph.map new file mode 100644 index 0000000..b9aea00 --- /dev/null +++ b/assets/doc/server_2write_8c_a0100b8630247e3ab19280ca0d38c480e_cgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/assets/doc/server_2write_8c_a0100b8630247e3ab19280ca0d38c480e_cgraph.md5 b/assets/doc/server_2write_8c_a0100b8630247e3ab19280ca0d38c480e_cgraph.md5 new file mode 100644 index 0000000..97508b2 --- /dev/null +++ b/assets/doc/server_2write_8c_a0100b8630247e3ab19280ca0d38c480e_cgraph.md5 @@ -0,0 +1 @@ +fb3ffdb50568dd7c46dec3b6f36bc349 \ No newline at end of file diff --git a/assets/doc/server_2write_8c_a0100b8630247e3ab19280ca0d38c480e_cgraph.png b/assets/doc/server_2write_8c_a0100b8630247e3ab19280ca0d38c480e_cgraph.png new file mode 100644 index 0000000..d1f9a30 Binary files /dev/null and b/assets/doc/server_2write_8c_a0100b8630247e3ab19280ca0d38c480e_cgraph.png differ diff --git a/assets/doc/server_2write_8c_a0100b8630247e3ab19280ca0d38c480e_icgraph.map b/assets/doc/server_2write_8c_a0100b8630247e3ab19280ca0d38c480e_icgraph.map new file mode 100644 index 0000000..8e4545d --- /dev/null +++ b/assets/doc/server_2write_8c_a0100b8630247e3ab19280ca0d38c480e_icgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/assets/doc/server_2write_8c_a0100b8630247e3ab19280ca0d38c480e_icgraph.md5 b/assets/doc/server_2write_8c_a0100b8630247e3ab19280ca0d38c480e_icgraph.md5 new file mode 100644 index 0000000..c45cce1 --- /dev/null +++ b/assets/doc/server_2write_8c_a0100b8630247e3ab19280ca0d38c480e_icgraph.md5 @@ -0,0 +1 @@ +db241edda8b555ddb426aabc836dce05 \ No newline at end of file diff --git a/assets/doc/server_2write_8c_a0100b8630247e3ab19280ca0d38c480e_icgraph.png b/assets/doc/server_2write_8c_a0100b8630247e3ab19280ca0d38c480e_icgraph.png new file mode 100644 index 0000000..ee217f3 Binary files /dev/null and b/assets/doc/server_2write_8c_a0100b8630247e3ab19280ca0d38c480e_icgraph.png differ diff --git a/assets/doc/server_2write_8c_a57f8b8c9683e7f9fd588b441ce3bca78_icgraph.map b/assets/doc/server_2write_8c_a57f8b8c9683e7f9fd588b441ce3bca78_icgraph.map new file mode 100644 index 0000000..ce24553 --- /dev/null +++ b/assets/doc/server_2write_8c_a57f8b8c9683e7f9fd588b441ce3bca78_icgraph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/assets/doc/server_2write_8c_a57f8b8c9683e7f9fd588b441ce3bca78_icgraph.md5 b/assets/doc/server_2write_8c_a57f8b8c9683e7f9fd588b441ce3bca78_icgraph.md5 new file mode 100644 index 0000000..3e000e4 --- /dev/null +++ b/assets/doc/server_2write_8c_a57f8b8c9683e7f9fd588b441ce3bca78_icgraph.md5 @@ -0,0 +1 @@ +cad38ebfe381e30f735008f849120875 \ No newline at end of file diff --git a/assets/doc/server_2write_8c_a57f8b8c9683e7f9fd588b441ce3bca78_icgraph.png b/assets/doc/server_2write_8c_a57f8b8c9683e7f9fd588b441ce3bca78_icgraph.png new file mode 100644 index 0000000..4f7f6bb Binary files /dev/null and b/assets/doc/server_2write_8c_a57f8b8c9683e7f9fd588b441ce3bca78_icgraph.png differ diff --git a/assets/doc/server_8c__incl.map b/assets/doc/server_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/server_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/server_8c__incl.md5 b/assets/doc/server_8c__incl.md5 new file mode 100644 index 0000000..fa313fc --- /dev/null +++ b/assets/doc/server_8c__incl.md5 @@ -0,0 +1 @@ +fb92bd81f4a0868005dd2340c6cd94b5 \ No newline at end of file diff --git a/assets/doc/server_8c__incl.png b/assets/doc/server_8c__incl.png new file mode 100644 index 0000000..6b02cfe Binary files /dev/null and b/assets/doc/server_8c__incl.png differ diff --git a/assets/doc/server_8h__incl.map b/assets/doc/server_8h__incl.map new file mode 100644 index 0000000..0b8941e --- /dev/null +++ b/assets/doc/server_8h__incl.map @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/assets/doc/server_8h__incl.md5 b/assets/doc/server_8h__incl.md5 new file mode 100644 index 0000000..e5aade0 --- /dev/null +++ b/assets/doc/server_8h__incl.md5 @@ -0,0 +1 @@ +b1b7d00ebe192fb7c103874b1872a11f \ No newline at end of file diff --git a/assets/doc/server_8h__incl.png b/assets/doc/server_8h__incl.png new file mode 100644 index 0000000..eaa19a1 Binary files /dev/null and b/assets/doc/server_8h__incl.png differ diff --git a/assets/doc/server_8h_a67a4d9073b80d8ae1459fb11ddd23675_cgraph.map b/assets/doc/server_8h_a67a4d9073b80d8ae1459fb11ddd23675_cgraph.map new file mode 100644 index 0000000..2ad6f09 --- /dev/null +++ b/assets/doc/server_8h_a67a4d9073b80d8ae1459fb11ddd23675_cgraph.map @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/assets/doc/server_8h_a67a4d9073b80d8ae1459fb11ddd23675_cgraph.md5 b/assets/doc/server_8h_a67a4d9073b80d8ae1459fb11ddd23675_cgraph.md5 new file mode 100644 index 0000000..247614e --- /dev/null +++ b/assets/doc/server_8h_a67a4d9073b80d8ae1459fb11ddd23675_cgraph.md5 @@ -0,0 +1 @@ +75fe61f2525865347d5da7e63e6590ca \ No newline at end of file diff --git a/assets/doc/server_8h_a67a4d9073b80d8ae1459fb11ddd23675_cgraph.png b/assets/doc/server_8h_a67a4d9073b80d8ae1459fb11ddd23675_cgraph.png new file mode 100644 index 0000000..a3f0d49 Binary files /dev/null and b/assets/doc/server_8h_a67a4d9073b80d8ae1459fb11ddd23675_cgraph.png differ diff --git a/assets/doc/server_8h_a67a4d9073b80d8ae1459fb11ddd23675_icgraph.map b/assets/doc/server_8h_a67a4d9073b80d8ae1459fb11ddd23675_icgraph.map new file mode 100644 index 0000000..5e49436 --- /dev/null +++ b/assets/doc/server_8h_a67a4d9073b80d8ae1459fb11ddd23675_icgraph.map @@ -0,0 +1,3 @@ + + + diff --git a/assets/doc/server_8h_a67a4d9073b80d8ae1459fb11ddd23675_icgraph.md5 b/assets/doc/server_8h_a67a4d9073b80d8ae1459fb11ddd23675_icgraph.md5 new file mode 100644 index 0000000..e177533 --- /dev/null +++ b/assets/doc/server_8h_a67a4d9073b80d8ae1459fb11ddd23675_icgraph.md5 @@ -0,0 +1 @@ +6f7774027ff0d29fd303b173c1c0e677 \ No newline at end of file diff --git a/assets/doc/server_8h_a67a4d9073b80d8ae1459fb11ddd23675_icgraph.png b/assets/doc/server_8h_a67a4d9073b80d8ae1459fb11ddd23675_icgraph.png new file mode 100644 index 0000000..eb08ad7 Binary files /dev/null and b/assets/doc/server_8h_a67a4d9073b80d8ae1459fb11ddd23675_icgraph.png differ diff --git a/assets/doc/session_2add_8c__incl.map b/assets/doc/session_2add_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/session_2add_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/session_2add_8c__incl.md5 b/assets/doc/session_2add_8c__incl.md5 new file mode 100644 index 0000000..cf11d81 --- /dev/null +++ b/assets/doc/session_2add_8c__incl.md5 @@ -0,0 +1 @@ +4cf066f6a069359d4482d4d49eb9599a \ No newline at end of file diff --git a/assets/doc/session_2add_8c__incl.png b/assets/doc/session_2add_8c__incl.png new file mode 100644 index 0000000..79447aa Binary files /dev/null and b/assets/doc/session_2add_8c__incl.png differ diff --git a/assets/doc/session_2add_8c_ac7703e67fe62dc65751db7e76de19ed8_icgraph.map b/assets/doc/session_2add_8c_ac7703e67fe62dc65751db7e76de19ed8_icgraph.map new file mode 100644 index 0000000..b418298 --- /dev/null +++ b/assets/doc/session_2add_8c_ac7703e67fe62dc65751db7e76de19ed8_icgraph.map @@ -0,0 +1,3 @@ + + + diff --git a/assets/doc/session_2add_8c_ac7703e67fe62dc65751db7e76de19ed8_icgraph.md5 b/assets/doc/session_2add_8c_ac7703e67fe62dc65751db7e76de19ed8_icgraph.md5 new file mode 100644 index 0000000..560935f --- /dev/null +++ b/assets/doc/session_2add_8c_ac7703e67fe62dc65751db7e76de19ed8_icgraph.md5 @@ -0,0 +1 @@ +60381001a65bfc8a13da53fbff3cfb7d \ No newline at end of file diff --git a/assets/doc/session_2add_8c_ac7703e67fe62dc65751db7e76de19ed8_icgraph.png b/assets/doc/session_2add_8c_ac7703e67fe62dc65751db7e76de19ed8_icgraph.png new file mode 100644 index 0000000..c74eff6 Binary files /dev/null and b/assets/doc/session_2add_8c_ac7703e67fe62dc65751db7e76de19ed8_icgraph.png differ diff --git a/assets/doc/session_2delete_8c__incl.map b/assets/doc/session_2delete_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/session_2delete_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/session_2delete_8c__incl.md5 b/assets/doc/session_2delete_8c__incl.md5 new file mode 100644 index 0000000..1e7378d --- /dev/null +++ b/assets/doc/session_2delete_8c__incl.md5 @@ -0,0 +1 @@ +85d1fd9de98e4cd688bdbe345b3c8046 \ No newline at end of file diff --git a/assets/doc/session_2delete_8c__incl.png b/assets/doc/session_2delete_8c__incl.png new file mode 100644 index 0000000..1edcf61 Binary files /dev/null and b/assets/doc/session_2delete_8c__incl.png differ diff --git a/assets/doc/session_2delete_8c_a3222996a7243992602f14e02e44ec711_icgraph.map b/assets/doc/session_2delete_8c_a3222996a7243992602f14e02e44ec711_icgraph.map new file mode 100644 index 0000000..c3065c2 --- /dev/null +++ b/assets/doc/session_2delete_8c_a3222996a7243992602f14e02e44ec711_icgraph.map @@ -0,0 +1,3 @@ + + + diff --git a/assets/doc/session_2delete_8c_a3222996a7243992602f14e02e44ec711_icgraph.md5 b/assets/doc/session_2delete_8c_a3222996a7243992602f14e02e44ec711_icgraph.md5 new file mode 100644 index 0000000..6de70b5 --- /dev/null +++ b/assets/doc/session_2delete_8c_a3222996a7243992602f14e02e44ec711_icgraph.md5 @@ -0,0 +1 @@ +8ccc123d6fc41695b4d3179181f55174 \ No newline at end of file diff --git a/assets/doc/session_2delete_8c_a3222996a7243992602f14e02e44ec711_icgraph.png b/assets/doc/session_2delete_8c_a3222996a7243992602f14e02e44ec711_icgraph.png new file mode 100644 index 0000000..9554add Binary files /dev/null and b/assets/doc/session_2delete_8c_a3222996a7243992602f14e02e44ec711_icgraph.png differ diff --git a/assets/doc/session_2get_8c__incl.map b/assets/doc/session_2get_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/session_2get_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/session_2get_8c__incl.md5 b/assets/doc/session_2get_8c__incl.md5 new file mode 100644 index 0000000..da0def3 --- /dev/null +++ b/assets/doc/session_2get_8c__incl.md5 @@ -0,0 +1 @@ +190287ae6f7a397ce23678c15e0490e7 \ No newline at end of file diff --git a/assets/doc/session_2get_8c__incl.png b/assets/doc/session_2get_8c__incl.png new file mode 100644 index 0000000..93b2ec4 Binary files /dev/null and b/assets/doc/session_2get_8c__incl.png differ diff --git a/assets/doc/session_2get_8c_a5b4f83367fa159fd0a596daa1849f5ae_icgraph.map b/assets/doc/session_2get_8c_a5b4f83367fa159fd0a596daa1849f5ae_icgraph.map new file mode 100644 index 0000000..b418298 --- /dev/null +++ b/assets/doc/session_2get_8c_a5b4f83367fa159fd0a596daa1849f5ae_icgraph.map @@ -0,0 +1,3 @@ + + + diff --git a/assets/doc/session_2get_8c_a5b4f83367fa159fd0a596daa1849f5ae_icgraph.md5 b/assets/doc/session_2get_8c_a5b4f83367fa159fd0a596daa1849f5ae_icgraph.md5 new file mode 100644 index 0000000..3e04eaa --- /dev/null +++ b/assets/doc/session_2get_8c_a5b4f83367fa159fd0a596daa1849f5ae_icgraph.md5 @@ -0,0 +1 @@ +86d8f2a471e7a8b7689852aa56e7088f \ No newline at end of file diff --git a/assets/doc/session_2get_8c_a5b4f83367fa159fd0a596daa1849f5ae_icgraph.png b/assets/doc/session_2get_8c_a5b4f83367fa159fd0a596daa1849f5ae_icgraph.png new file mode 100644 index 0000000..614d760 Binary files /dev/null and b/assets/doc/session_2get_8c_a5b4f83367fa159fd0a596daa1849f5ae_icgraph.png differ diff --git a/assets/doc/session_2session_8c__incl.map b/assets/doc/session_2session_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/session_2session_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/session_2session_8c__incl.md5 b/assets/doc/session_2session_8c__incl.md5 new file mode 100644 index 0000000..30a58c4 --- /dev/null +++ b/assets/doc/session_2session_8c__incl.md5 @@ -0,0 +1 @@ +63c17d3c2081b9553056d93bffca73f9 \ No newline at end of file diff --git a/assets/doc/session_2session_8c__incl.png b/assets/doc/session_2session_8c__incl.png new file mode 100644 index 0000000..25cf15e Binary files /dev/null and b/assets/doc/session_2session_8c__incl.png differ diff --git a/assets/doc/session_8h__incl.map b/assets/doc/session_8h__incl.map new file mode 100644 index 0000000..f874994 --- /dev/null +++ b/assets/doc/session_8h__incl.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/assets/doc/session_8h__incl.md5 b/assets/doc/session_8h__incl.md5 new file mode 100644 index 0000000..077ae47 --- /dev/null +++ b/assets/doc/session_8h__incl.md5 @@ -0,0 +1 @@ +a52f43bb1c84b1136ae5ebe83816cc85 \ No newline at end of file diff --git a/assets/doc/session_8h__incl.png b/assets/doc/session_8h__incl.png new file mode 100644 index 0000000..b64abf2 Binary files /dev/null and b/assets/doc/session_8h__incl.png differ diff --git a/assets/doc/session_8h_a1100c55cd86008f7e5931e5e7c517881_icgraph.map b/assets/doc/session_8h_a1100c55cd86008f7e5931e5e7c517881_icgraph.map new file mode 100644 index 0000000..b418298 --- /dev/null +++ b/assets/doc/session_8h_a1100c55cd86008f7e5931e5e7c517881_icgraph.map @@ -0,0 +1,3 @@ + + + diff --git a/assets/doc/session_8h_a1100c55cd86008f7e5931e5e7c517881_icgraph.md5 b/assets/doc/session_8h_a1100c55cd86008f7e5931e5e7c517881_icgraph.md5 new file mode 100644 index 0000000..560935f --- /dev/null +++ b/assets/doc/session_8h_a1100c55cd86008f7e5931e5e7c517881_icgraph.md5 @@ -0,0 +1 @@ +60381001a65bfc8a13da53fbff3cfb7d \ No newline at end of file diff --git a/assets/doc/session_8h_a1100c55cd86008f7e5931e5e7c517881_icgraph.png b/assets/doc/session_8h_a1100c55cd86008f7e5931e5e7c517881_icgraph.png new file mode 100644 index 0000000..c74eff6 Binary files /dev/null and b/assets/doc/session_8h_a1100c55cd86008f7e5931e5e7c517881_icgraph.png differ diff --git a/assets/doc/session_8h_a129f0576e17b0c9deb744fb3a96b3637_icgraph.map b/assets/doc/session_8h_a129f0576e17b0c9deb744fb3a96b3637_icgraph.map new file mode 100644 index 0000000..b418298 --- /dev/null +++ b/assets/doc/session_8h_a129f0576e17b0c9deb744fb3a96b3637_icgraph.map @@ -0,0 +1,3 @@ + + + diff --git a/assets/doc/session_8h_a129f0576e17b0c9deb744fb3a96b3637_icgraph.md5 b/assets/doc/session_8h_a129f0576e17b0c9deb744fb3a96b3637_icgraph.md5 new file mode 100644 index 0000000..3e04eaa --- /dev/null +++ b/assets/doc/session_8h_a129f0576e17b0c9deb744fb3a96b3637_icgraph.md5 @@ -0,0 +1 @@ +86d8f2a471e7a8b7689852aa56e7088f \ No newline at end of file diff --git a/assets/doc/session_8h_a129f0576e17b0c9deb744fb3a96b3637_icgraph.png b/assets/doc/session_8h_a129f0576e17b0c9deb744fb3a96b3637_icgraph.png new file mode 100644 index 0000000..614d760 Binary files /dev/null and b/assets/doc/session_8h_a129f0576e17b0c9deb744fb3a96b3637_icgraph.png differ diff --git a/assets/doc/session_8h_ad14f3c6c8402061b01328d6e95975c8e_icgraph.map b/assets/doc/session_8h_ad14f3c6c8402061b01328d6e95975c8e_icgraph.map new file mode 100644 index 0000000..c3065c2 --- /dev/null +++ b/assets/doc/session_8h_ad14f3c6c8402061b01328d6e95975c8e_icgraph.map @@ -0,0 +1,3 @@ + + + diff --git a/assets/doc/session_8h_ad14f3c6c8402061b01328d6e95975c8e_icgraph.md5 b/assets/doc/session_8h_ad14f3c6c8402061b01328d6e95975c8e_icgraph.md5 new file mode 100644 index 0000000..6de70b5 --- /dev/null +++ b/assets/doc/session_8h_ad14f3c6c8402061b01328d6e95975c8e_icgraph.md5 @@ -0,0 +1 @@ +8ccc123d6fc41695b4d3179181f55174 \ No newline at end of file diff --git a/assets/doc/session_8h_ad14f3c6c8402061b01328d6e95975c8e_icgraph.png b/assets/doc/session_8h_ad14f3c6c8402061b01328d6e95975c8e_icgraph.png new file mode 100644 index 0000000..9554add Binary files /dev/null and b/assets/doc/session_8h_ad14f3c6c8402061b01328d6e95975c8e_icgraph.png differ diff --git a/assets/doc/set__data_8c__incl.map b/assets/doc/set__data_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/set__data_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/set__data_8c__incl.md5 b/assets/doc/set__data_8c__incl.md5 new file mode 100644 index 0000000..98718dc --- /dev/null +++ b/assets/doc/set__data_8c__incl.md5 @@ -0,0 +1 @@ +a366fcf15b6ff439c9e4f7b912e3ea4f \ No newline at end of file diff --git a/assets/doc/set__data_8c__incl.png b/assets/doc/set__data_8c__incl.png new file mode 100644 index 0000000..4ab86f0 Binary files /dev/null and b/assets/doc/set__data_8c__incl.png differ diff --git a/assets/doc/set__data_8c_a36cbbbaa48b1d59925a70d18d0f4f4cd_cgraph.map b/assets/doc/set__data_8c_a36cbbbaa48b1d59925a70d18d0f4f4cd_cgraph.map new file mode 100644 index 0000000..b016a7e --- /dev/null +++ b/assets/doc/set__data_8c_a36cbbbaa48b1d59925a70d18d0f4f4cd_cgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/assets/doc/set__data_8c_a36cbbbaa48b1d59925a70d18d0f4f4cd_cgraph.md5 b/assets/doc/set__data_8c_a36cbbbaa48b1d59925a70d18d0f4f4cd_cgraph.md5 new file mode 100644 index 0000000..5459bc5 --- /dev/null +++ b/assets/doc/set__data_8c_a36cbbbaa48b1d59925a70d18d0f4f4cd_cgraph.md5 @@ -0,0 +1 @@ +2cf52b0aea85c2d46545a66e180595f7 \ No newline at end of file diff --git a/assets/doc/set__data_8c_a36cbbbaa48b1d59925a70d18d0f4f4cd_cgraph.png b/assets/doc/set__data_8c_a36cbbbaa48b1d59925a70d18d0f4f4cd_cgraph.png new file mode 100644 index 0000000..065cdeb Binary files /dev/null and b/assets/doc/set__data_8c_a36cbbbaa48b1d59925a70d18d0f4f4cd_cgraph.png differ diff --git a/assets/doc/set__data_8c_a36cbbbaa48b1d59925a70d18d0f4f4cd_icgraph.map b/assets/doc/set__data_8c_a36cbbbaa48b1d59925a70d18d0f4f4cd_icgraph.map new file mode 100644 index 0000000..cc831e8 --- /dev/null +++ b/assets/doc/set__data_8c_a36cbbbaa48b1d59925a70d18d0f4f4cd_icgraph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/assets/doc/set__data_8c_a36cbbbaa48b1d59925a70d18d0f4f4cd_icgraph.md5 b/assets/doc/set__data_8c_a36cbbbaa48b1d59925a70d18d0f4f4cd_icgraph.md5 new file mode 100644 index 0000000..6c7f17b --- /dev/null +++ b/assets/doc/set__data_8c_a36cbbbaa48b1d59925a70d18d0f4f4cd_icgraph.md5 @@ -0,0 +1 @@ +5c8760e214d7ae956a5aa4ab82458ad7 \ No newline at end of file diff --git a/assets/doc/set__data_8c_a36cbbbaa48b1d59925a70d18d0f4f4cd_icgraph.png b/assets/doc/set__data_8c_a36cbbbaa48b1d59925a70d18d0f4f4cd_icgraph.png new file mode 100644 index 0000000..ee61053 Binary files /dev/null and b/assets/doc/set__data_8c_a36cbbbaa48b1d59925a70d18d0f4f4cd_icgraph.png differ diff --git a/assets/doc/signalHandling_8c__incl.map b/assets/doc/signalHandling_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/signalHandling_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/signalHandling_8c__incl.md5 b/assets/doc/signalHandling_8c__incl.md5 new file mode 100644 index 0000000..dbb3d6c --- /dev/null +++ b/assets/doc/signalHandling_8c__incl.md5 @@ -0,0 +1 @@ +12f21b77a0afde5ec17fc26e08b717a0 \ No newline at end of file diff --git a/assets/doc/signalHandling_8c__incl.png b/assets/doc/signalHandling_8c__incl.png new file mode 100644 index 0000000..6110200 Binary files /dev/null and b/assets/doc/signalHandling_8c__incl.png differ diff --git a/assets/doc/signalHandling_8c_a1de31bdef82f181f8045b94ae0933916_cgraph.map b/assets/doc/signalHandling_8c_a1de31bdef82f181f8045b94ae0933916_cgraph.map new file mode 100644 index 0000000..9709800 --- /dev/null +++ b/assets/doc/signalHandling_8c_a1de31bdef82f181f8045b94ae0933916_cgraph.map @@ -0,0 +1,3 @@ + + + diff --git a/assets/doc/signalHandling_8c_a1de31bdef82f181f8045b94ae0933916_cgraph.md5 b/assets/doc/signalHandling_8c_a1de31bdef82f181f8045b94ae0933916_cgraph.md5 new file mode 100644 index 0000000..dfd9b04 --- /dev/null +++ b/assets/doc/signalHandling_8c_a1de31bdef82f181f8045b94ae0933916_cgraph.md5 @@ -0,0 +1 @@ +64ea50b0262594aadd93ea6a859a3baf \ No newline at end of file diff --git a/assets/doc/signalHandling_8c_a1de31bdef82f181f8045b94ae0933916_cgraph.png b/assets/doc/signalHandling_8c_a1de31bdef82f181f8045b94ae0933916_cgraph.png new file mode 100644 index 0000000..bf6b207 Binary files /dev/null and b/assets/doc/signalHandling_8c_a1de31bdef82f181f8045b94ae0933916_cgraph.png differ diff --git a/assets/doc/signalHandling_8c_a1de31bdef82f181f8045b94ae0933916_icgraph.map b/assets/doc/signalHandling_8c_a1de31bdef82f181f8045b94ae0933916_icgraph.map new file mode 100644 index 0000000..c3e09c4 --- /dev/null +++ b/assets/doc/signalHandling_8c_a1de31bdef82f181f8045b94ae0933916_icgraph.map @@ -0,0 +1,3 @@ + + + diff --git a/assets/doc/signalHandling_8c_a1de31bdef82f181f8045b94ae0933916_icgraph.md5 b/assets/doc/signalHandling_8c_a1de31bdef82f181f8045b94ae0933916_icgraph.md5 new file mode 100644 index 0000000..af9f6b2 --- /dev/null +++ b/assets/doc/signalHandling_8c_a1de31bdef82f181f8045b94ae0933916_icgraph.md5 @@ -0,0 +1 @@ +fce04f35d041bcffa881391dd1ff4f22 \ No newline at end of file diff --git a/assets/doc/signalHandling_8c_a1de31bdef82f181f8045b94ae0933916_icgraph.png b/assets/doc/signalHandling_8c_a1de31bdef82f181f8045b94ae0933916_icgraph.png new file mode 100644 index 0000000..7cfec8c Binary files /dev/null and b/assets/doc/signalHandling_8c_a1de31bdef82f181f8045b94ae0933916_icgraph.png differ diff --git a/assets/doc/signalHandling_8c_a64612b9588ed0fb05d70680db02b3630_icgraph.map b/assets/doc/signalHandling_8c_a64612b9588ed0fb05d70680db02b3630_icgraph.map new file mode 100644 index 0000000..bb38533 --- /dev/null +++ b/assets/doc/signalHandling_8c_a64612b9588ed0fb05d70680db02b3630_icgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/assets/doc/signalHandling_8c_a64612b9588ed0fb05d70680db02b3630_icgraph.md5 b/assets/doc/signalHandling_8c_a64612b9588ed0fb05d70680db02b3630_icgraph.md5 new file mode 100644 index 0000000..3d4b8ae --- /dev/null +++ b/assets/doc/signalHandling_8c_a64612b9588ed0fb05d70680db02b3630_icgraph.md5 @@ -0,0 +1 @@ +89b734f179513af5f8a682eb7e3ee45a \ No newline at end of file diff --git a/assets/doc/signalHandling_8c_a64612b9588ed0fb05d70680db02b3630_icgraph.png b/assets/doc/signalHandling_8c_a64612b9588ed0fb05d70680db02b3630_icgraph.png new file mode 100644 index 0000000..2885cca Binary files /dev/null and b/assets/doc/signalHandling_8c_a64612b9588ed0fb05d70680db02b3630_icgraph.png differ diff --git a/assets/doc/signalHandling_8h_a1de31bdef82f181f8045b94ae0933916_cgraph.map b/assets/doc/signalHandling_8h_a1de31bdef82f181f8045b94ae0933916_cgraph.map new file mode 100644 index 0000000..9709800 --- /dev/null +++ b/assets/doc/signalHandling_8h_a1de31bdef82f181f8045b94ae0933916_cgraph.map @@ -0,0 +1,3 @@ + + + diff --git a/assets/doc/signalHandling_8h_a1de31bdef82f181f8045b94ae0933916_cgraph.md5 b/assets/doc/signalHandling_8h_a1de31bdef82f181f8045b94ae0933916_cgraph.md5 new file mode 100644 index 0000000..dfd9b04 --- /dev/null +++ b/assets/doc/signalHandling_8h_a1de31bdef82f181f8045b94ae0933916_cgraph.md5 @@ -0,0 +1 @@ +64ea50b0262594aadd93ea6a859a3baf \ No newline at end of file diff --git a/assets/doc/signalHandling_8h_a1de31bdef82f181f8045b94ae0933916_cgraph.png b/assets/doc/signalHandling_8h_a1de31bdef82f181f8045b94ae0933916_cgraph.png new file mode 100644 index 0000000..bf6b207 Binary files /dev/null and b/assets/doc/signalHandling_8h_a1de31bdef82f181f8045b94ae0933916_cgraph.png differ diff --git a/assets/doc/signalHandling_8h_a1de31bdef82f181f8045b94ae0933916_icgraph.map b/assets/doc/signalHandling_8h_a1de31bdef82f181f8045b94ae0933916_icgraph.map new file mode 100644 index 0000000..c3e09c4 --- /dev/null +++ b/assets/doc/signalHandling_8h_a1de31bdef82f181f8045b94ae0933916_icgraph.map @@ -0,0 +1,3 @@ + + + diff --git a/assets/doc/signalHandling_8h_a1de31bdef82f181f8045b94ae0933916_icgraph.md5 b/assets/doc/signalHandling_8h_a1de31bdef82f181f8045b94ae0933916_icgraph.md5 new file mode 100644 index 0000000..af9f6b2 --- /dev/null +++ b/assets/doc/signalHandling_8h_a1de31bdef82f181f8045b94ae0933916_icgraph.md5 @@ -0,0 +1 @@ +fce04f35d041bcffa881391dd1ff4f22 \ No newline at end of file diff --git a/assets/doc/signalHandling_8h_a1de31bdef82f181f8045b94ae0933916_icgraph.png b/assets/doc/signalHandling_8h_a1de31bdef82f181f8045b94ae0933916_icgraph.png new file mode 100644 index 0000000..7cfec8c Binary files /dev/null and b/assets/doc/signalHandling_8h_a1de31bdef82f181f8045b94ae0933916_icgraph.png differ diff --git a/assets/doc/signalHandling_8h_a64612b9588ed0fb05d70680db02b3630_icgraph.map b/assets/doc/signalHandling_8h_a64612b9588ed0fb05d70680db02b3630_icgraph.map new file mode 100644 index 0000000..bb38533 --- /dev/null +++ b/assets/doc/signalHandling_8h_a64612b9588ed0fb05d70680db02b3630_icgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/assets/doc/signalHandling_8h_a64612b9588ed0fb05d70680db02b3630_icgraph.md5 b/assets/doc/signalHandling_8h_a64612b9588ed0fb05d70680db02b3630_icgraph.md5 new file mode 100644 index 0000000..3d4b8ae --- /dev/null +++ b/assets/doc/signalHandling_8h_a64612b9588ed0fb05d70680db02b3630_icgraph.md5 @@ -0,0 +1 @@ +89b734f179513af5f8a682eb7e3ee45a \ No newline at end of file diff --git a/assets/doc/signalHandling_8h_a64612b9588ed0fb05d70680db02b3630_icgraph.png b/assets/doc/signalHandling_8h_a64612b9588ed0fb05d70680db02b3630_icgraph.png new file mode 100644 index 0000000..2885cca Binary files /dev/null and b/assets/doc/signalHandling_8h_a64612b9588ed0fb05d70680db02b3630_icgraph.png differ diff --git a/assets/doc/skip__non__alpha_8c__incl.map b/assets/doc/skip__non__alpha_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/skip__non__alpha_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/skip__non__alpha_8c__incl.md5 b/assets/doc/skip__non__alpha_8c__incl.md5 new file mode 100644 index 0000000..5442a6b --- /dev/null +++ b/assets/doc/skip__non__alpha_8c__incl.md5 @@ -0,0 +1 @@ +8b8c74b5a97b70216440584ddf70df7c \ No newline at end of file diff --git a/assets/doc/skip__non__alpha_8c__incl.png b/assets/doc/skip__non__alpha_8c__incl.png new file mode 100644 index 0000000..396d5d7 Binary files /dev/null and b/assets/doc/skip__non__alpha_8c__incl.png differ diff --git a/assets/doc/skip__non__alpha_8c_a1983134b7a26ad2ea077adcd343dca24_cgraph.map b/assets/doc/skip__non__alpha_8c_a1983134b7a26ad2ea077adcd343dca24_cgraph.map new file mode 100644 index 0000000..7dc2d78 --- /dev/null +++ b/assets/doc/skip__non__alpha_8c_a1983134b7a26ad2ea077adcd343dca24_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/assets/doc/skip__non__alpha_8c_a1983134b7a26ad2ea077adcd343dca24_cgraph.md5 b/assets/doc/skip__non__alpha_8c_a1983134b7a26ad2ea077adcd343dca24_cgraph.md5 new file mode 100644 index 0000000..a02bff7 --- /dev/null +++ b/assets/doc/skip__non__alpha_8c_a1983134b7a26ad2ea077adcd343dca24_cgraph.md5 @@ -0,0 +1 @@ +46be1f74aa2a012b38632b09fdd890a8 \ No newline at end of file diff --git a/assets/doc/skip__non__alpha_8c_a1983134b7a26ad2ea077adcd343dca24_cgraph.png b/assets/doc/skip__non__alpha_8c_a1983134b7a26ad2ea077adcd343dca24_cgraph.png new file mode 100644 index 0000000..4fac7aa Binary files /dev/null and b/assets/doc/skip__non__alpha_8c_a1983134b7a26ad2ea077adcd343dca24_cgraph.png differ diff --git a/assets/doc/skip__non__alpha_8c_a1983134b7a26ad2ea077adcd343dca24_icgraph.map b/assets/doc/skip__non__alpha_8c_a1983134b7a26ad2ea077adcd343dca24_icgraph.map new file mode 100644 index 0000000..3f834e4 --- /dev/null +++ b/assets/doc/skip__non__alpha_8c_a1983134b7a26ad2ea077adcd343dca24_icgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/assets/doc/skip__non__alpha_8c_a1983134b7a26ad2ea077adcd343dca24_icgraph.md5 b/assets/doc/skip__non__alpha_8c_a1983134b7a26ad2ea077adcd343dca24_icgraph.md5 new file mode 100644 index 0000000..5ab4633 --- /dev/null +++ b/assets/doc/skip__non__alpha_8c_a1983134b7a26ad2ea077adcd343dca24_icgraph.md5 @@ -0,0 +1 @@ +f69b87c2db222514559bd77c54ea11ef \ No newline at end of file diff --git a/assets/doc/skip__non__alpha_8c_a1983134b7a26ad2ea077adcd343dca24_icgraph.png b/assets/doc/skip__non__alpha_8c_a1983134b7a26ad2ea077adcd343dca24_icgraph.png new file mode 100644 index 0000000..ba4587c Binary files /dev/null and b/assets/doc/skip__non__alpha_8c_a1983134b7a26ad2ea077adcd343dca24_icgraph.png differ diff --git a/assets/doc/socket_8c__incl.map b/assets/doc/socket_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/socket_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/socket_8c__incl.md5 b/assets/doc/socket_8c__incl.md5 new file mode 100644 index 0000000..4bdb4e5 --- /dev/null +++ b/assets/doc/socket_8c__incl.md5 @@ -0,0 +1 @@ +f5af4d6638cfe63c8a76008e15c4b557 \ No newline at end of file diff --git a/assets/doc/socket_8c__incl.png b/assets/doc/socket_8c__incl.png new file mode 100644 index 0000000..ae7825a Binary files /dev/null and b/assets/doc/socket_8c__incl.png differ diff --git a/assets/doc/socket_8h__dep__incl.map b/assets/doc/socket_8h__dep__incl.map new file mode 100644 index 0000000..54b15a3 --- /dev/null +++ b/assets/doc/socket_8h__dep__incl.map @@ -0,0 +1,3 @@ + + + diff --git a/assets/doc/socket_8h__dep__incl.md5 b/assets/doc/socket_8h__dep__incl.md5 new file mode 100644 index 0000000..b436909 --- /dev/null +++ b/assets/doc/socket_8h__dep__incl.md5 @@ -0,0 +1 @@ +20effb8f72c0f50407e141d8ee2593fe \ No newline at end of file diff --git a/assets/doc/socket_8h__dep__incl.png b/assets/doc/socket_8h__dep__incl.png new file mode 100644 index 0000000..bc0ce44 Binary files /dev/null and b/assets/doc/socket_8h__dep__incl.png differ diff --git a/assets/doc/socket_8h__incl.map b/assets/doc/socket_8h__incl.map new file mode 100644 index 0000000..f754139 --- /dev/null +++ b/assets/doc/socket_8h__incl.map @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/assets/doc/socket_8h__incl.md5 b/assets/doc/socket_8h__incl.md5 new file mode 100644 index 0000000..29a0cb2 --- /dev/null +++ b/assets/doc/socket_8h__incl.md5 @@ -0,0 +1 @@ +f2af416f6ecde70c82dc4ba5f45aa9bd \ No newline at end of file diff --git a/assets/doc/socket_8h__incl.png b/assets/doc/socket_8h__incl.png new file mode 100644 index 0000000..3a3f03c Binary files /dev/null and b/assets/doc/socket_8h__incl.png differ diff --git a/assets/doc/socket_8h_a45ec8fbdb035314da3d390fdcd6dc304_cgraph.map b/assets/doc/socket_8h_a45ec8fbdb035314da3d390fdcd6dc304_cgraph.map new file mode 100644 index 0000000..8270608 --- /dev/null +++ b/assets/doc/socket_8h_a45ec8fbdb035314da3d390fdcd6dc304_cgraph.map @@ -0,0 +1,3 @@ + + + diff --git a/assets/doc/socket_8h_a45ec8fbdb035314da3d390fdcd6dc304_cgraph.md5 b/assets/doc/socket_8h_a45ec8fbdb035314da3d390fdcd6dc304_cgraph.md5 new file mode 100644 index 0000000..08888e3 --- /dev/null +++ b/assets/doc/socket_8h_a45ec8fbdb035314da3d390fdcd6dc304_cgraph.md5 @@ -0,0 +1 @@ +1cc1a92d921e57f23edbe408b26a8fe6 \ No newline at end of file diff --git a/assets/doc/socket_8h_a45ec8fbdb035314da3d390fdcd6dc304_cgraph.png b/assets/doc/socket_8h_a45ec8fbdb035314da3d390fdcd6dc304_cgraph.png new file mode 100644 index 0000000..631e47c Binary files /dev/null and b/assets/doc/socket_8h_a45ec8fbdb035314da3d390fdcd6dc304_cgraph.png differ diff --git a/assets/doc/socket_8h_a45ec8fbdb035314da3d390fdcd6dc304_icgraph.map b/assets/doc/socket_8h_a45ec8fbdb035314da3d390fdcd6dc304_icgraph.map new file mode 100644 index 0000000..6b42e03 --- /dev/null +++ b/assets/doc/socket_8h_a45ec8fbdb035314da3d390fdcd6dc304_icgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/assets/doc/socket_8h_a45ec8fbdb035314da3d390fdcd6dc304_icgraph.md5 b/assets/doc/socket_8h_a45ec8fbdb035314da3d390fdcd6dc304_icgraph.md5 new file mode 100644 index 0000000..ddc73c1 --- /dev/null +++ b/assets/doc/socket_8h_a45ec8fbdb035314da3d390fdcd6dc304_icgraph.md5 @@ -0,0 +1 @@ +a30a33dddc16d1e8ea765121b3fad418 \ No newline at end of file diff --git a/assets/doc/socket_8h_a45ec8fbdb035314da3d390fdcd6dc304_icgraph.png b/assets/doc/socket_8h_a45ec8fbdb035314da3d390fdcd6dc304_icgraph.png new file mode 100644 index 0000000..e4e2242 Binary files /dev/null and b/assets/doc/socket_8h_a45ec8fbdb035314da3d390fdcd6dc304_icgraph.png differ diff --git a/assets/doc/socket_8h_a6481f4bbdd2abaf6327f4e5dee9db1b2_cgraph.map b/assets/doc/socket_8h_a6481f4bbdd2abaf6327f4e5dee9db1b2_cgraph.map new file mode 100644 index 0000000..1b9578e --- /dev/null +++ b/assets/doc/socket_8h_a6481f4bbdd2abaf6327f4e5dee9db1b2_cgraph.map @@ -0,0 +1,3 @@ + + + diff --git a/assets/doc/socket_8h_a6481f4bbdd2abaf6327f4e5dee9db1b2_cgraph.md5 b/assets/doc/socket_8h_a6481f4bbdd2abaf6327f4e5dee9db1b2_cgraph.md5 new file mode 100644 index 0000000..23a9d78 --- /dev/null +++ b/assets/doc/socket_8h_a6481f4bbdd2abaf6327f4e5dee9db1b2_cgraph.md5 @@ -0,0 +1 @@ +31d01afe508215f3754328999b15ba4f \ No newline at end of file diff --git a/assets/doc/socket_8h_a6481f4bbdd2abaf6327f4e5dee9db1b2_cgraph.png b/assets/doc/socket_8h_a6481f4bbdd2abaf6327f4e5dee9db1b2_cgraph.png new file mode 100644 index 0000000..17319e9 Binary files /dev/null and b/assets/doc/socket_8h_a6481f4bbdd2abaf6327f4e5dee9db1b2_cgraph.png differ diff --git a/assets/doc/socket_8h_a757c220e9371523ef55b1137a1efed57_cgraph.map b/assets/doc/socket_8h_a757c220e9371523ef55b1137a1efed57_cgraph.map new file mode 100644 index 0000000..f6f476b --- /dev/null +++ b/assets/doc/socket_8h_a757c220e9371523ef55b1137a1efed57_cgraph.map @@ -0,0 +1,3 @@ + + + diff --git a/assets/doc/socket_8h_a757c220e9371523ef55b1137a1efed57_cgraph.md5 b/assets/doc/socket_8h_a757c220e9371523ef55b1137a1efed57_cgraph.md5 new file mode 100644 index 0000000..01395bc --- /dev/null +++ b/assets/doc/socket_8h_a757c220e9371523ef55b1137a1efed57_cgraph.md5 @@ -0,0 +1 @@ +545f7d06b31c87170613528a5e9d473a \ No newline at end of file diff --git a/assets/doc/socket_8h_a757c220e9371523ef55b1137a1efed57_cgraph.png b/assets/doc/socket_8h_a757c220e9371523ef55b1137a1efed57_cgraph.png new file mode 100644 index 0000000..41e24eb Binary files /dev/null and b/assets/doc/socket_8h_a757c220e9371523ef55b1137a1efed57_cgraph.png differ diff --git a/assets/doc/stderr_8c__incl.map b/assets/doc/stderr_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/stderr_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/stderr_8c__incl.md5 b/assets/doc/stderr_8c__incl.md5 new file mode 100644 index 0000000..da11512 --- /dev/null +++ b/assets/doc/stderr_8c__incl.md5 @@ -0,0 +1 @@ +8fddba4e5af7446c77ff13c83b90446f \ No newline at end of file diff --git a/assets/doc/stderr_8c__incl.png b/assets/doc/stderr_8c__incl.png new file mode 100644 index 0000000..6d19507 Binary files /dev/null and b/assets/doc/stderr_8c__incl.png differ diff --git a/assets/doc/stream_2interface_2writer_8c__incl.map b/assets/doc/stream_2interface_2writer_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/stream_2interface_2writer_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/stream_2interface_2writer_8c__incl.md5 b/assets/doc/stream_2interface_2writer_8c__incl.md5 new file mode 100644 index 0000000..ec6666c --- /dev/null +++ b/assets/doc/stream_2interface_2writer_8c__incl.md5 @@ -0,0 +1 @@ +e752681d34a7dfa0ec8f4d528e375e6d \ No newline at end of file diff --git a/assets/doc/stream_2interface_2writer_8c__incl.png b/assets/doc/stream_2interface_2writer_8c__incl.png new file mode 100644 index 0000000..e1c1489 Binary files /dev/null and b/assets/doc/stream_2interface_2writer_8c__incl.png differ diff --git a/assets/doc/stream_2interface_2writer_8c_a4055df88bf5be12bb48dd54ff00f8ccf_icgraph.map b/assets/doc/stream_2interface_2writer_8c_a4055df88bf5be12bb48dd54ff00f8ccf_icgraph.map new file mode 100644 index 0000000..24de362 --- /dev/null +++ b/assets/doc/stream_2interface_2writer_8c_a4055df88bf5be12bb48dd54ff00f8ccf_icgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/assets/doc/stream_2interface_2writer_8c_a4055df88bf5be12bb48dd54ff00f8ccf_icgraph.md5 b/assets/doc/stream_2interface_2writer_8c_a4055df88bf5be12bb48dd54ff00f8ccf_icgraph.md5 new file mode 100644 index 0000000..5bc1859 --- /dev/null +++ b/assets/doc/stream_2interface_2writer_8c_a4055df88bf5be12bb48dd54ff00f8ccf_icgraph.md5 @@ -0,0 +1 @@ +03ca553d80d71de48c99a5cb239d313f \ No newline at end of file diff --git a/assets/doc/stream_2interface_2writer_8c_a4055df88bf5be12bb48dd54ff00f8ccf_icgraph.png b/assets/doc/stream_2interface_2writer_8c_a4055df88bf5be12bb48dd54ff00f8ccf_icgraph.png new file mode 100644 index 0000000..928553f Binary files /dev/null and b/assets/doc/stream_2interface_2writer_8c_a4055df88bf5be12bb48dd54ff00f8ccf_icgraph.png differ diff --git a/assets/doc/stream_2interface_2writer_8h__dep__incl.map b/assets/doc/stream_2interface_2writer_8h__dep__incl.map new file mode 100644 index 0000000..7e74c1e --- /dev/null +++ b/assets/doc/stream_2interface_2writer_8h__dep__incl.map @@ -0,0 +1,5 @@ + + + + + diff --git a/assets/doc/stream_2interface_2writer_8h__dep__incl.md5 b/assets/doc/stream_2interface_2writer_8h__dep__incl.md5 new file mode 100644 index 0000000..e8080c2 --- /dev/null +++ b/assets/doc/stream_2interface_2writer_8h__dep__incl.md5 @@ -0,0 +1 @@ +cff5551bacc1242c6139b6a154a171e7 \ No newline at end of file diff --git a/assets/doc/stream_2interface_2writer_8h__dep__incl.png b/assets/doc/stream_2interface_2writer_8h__dep__incl.png new file mode 100644 index 0000000..e555d61 Binary files /dev/null and b/assets/doc/stream_2interface_2writer_8h__dep__incl.png differ diff --git a/assets/doc/stream_2interface_2writer_8h__incl.map b/assets/doc/stream_2interface_2writer_8h__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/stream_2interface_2writer_8h__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/stream_2interface_2writer_8h__incl.md5 b/assets/doc/stream_2interface_2writer_8h__incl.md5 new file mode 100644 index 0000000..4a97670 --- /dev/null +++ b/assets/doc/stream_2interface_2writer_8h__incl.md5 @@ -0,0 +1 @@ +c9bd2e70291e55ad3a1421f0bdd9b906 \ No newline at end of file diff --git a/assets/doc/stream_2interface_2writer_8h__incl.png b/assets/doc/stream_2interface_2writer_8h__incl.png new file mode 100644 index 0000000..a8572fe Binary files /dev/null and b/assets/doc/stream_2interface_2writer_8h__incl.png differ diff --git a/assets/doc/stream_2interface_2writer_8h_aabe113691016adfe02c4977daee560a0_icgraph.map b/assets/doc/stream_2interface_2writer_8h_aabe113691016adfe02c4977daee560a0_icgraph.map new file mode 100644 index 0000000..24de362 --- /dev/null +++ b/assets/doc/stream_2interface_2writer_8h_aabe113691016adfe02c4977daee560a0_icgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/assets/doc/stream_2interface_2writer_8h_aabe113691016adfe02c4977daee560a0_icgraph.md5 b/assets/doc/stream_2interface_2writer_8h_aabe113691016adfe02c4977daee560a0_icgraph.md5 new file mode 100644 index 0000000..5bc1859 --- /dev/null +++ b/assets/doc/stream_2interface_2writer_8h_aabe113691016adfe02c4977daee560a0_icgraph.md5 @@ -0,0 +1 @@ +03ca553d80d71de48c99a5cb239d313f \ No newline at end of file diff --git a/assets/doc/stream_2interface_2writer_8h_aabe113691016adfe02c4977daee560a0_icgraph.png b/assets/doc/stream_2interface_2writer_8h_aabe113691016adfe02c4977daee560a0_icgraph.png new file mode 100644 index 0000000..928553f Binary files /dev/null and b/assets/doc/stream_2interface_2writer_8h_aabe113691016adfe02c4977daee560a0_icgraph.png differ diff --git a/assets/doc/stream_2read_8c__incl.map b/assets/doc/stream_2read_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/stream_2read_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/stream_2read_8c__incl.md5 b/assets/doc/stream_2read_8c__incl.md5 new file mode 100644 index 0000000..b3ccf35 --- /dev/null +++ b/assets/doc/stream_2read_8c__incl.md5 @@ -0,0 +1 @@ +11ee7864eedfd05e69a34336df07ae8f \ No newline at end of file diff --git a/assets/doc/stream_2read_8c__incl.png b/assets/doc/stream_2read_8c__incl.png new file mode 100644 index 0000000..bca761f Binary files /dev/null and b/assets/doc/stream_2read_8c__incl.png differ diff --git a/assets/doc/stream_2read_8c_a87e6b2f8461723147f431b15967f458d_icgraph.map b/assets/doc/stream_2read_8c_a87e6b2f8461723147f431b15967f458d_icgraph.map new file mode 100644 index 0000000..771d860 --- /dev/null +++ b/assets/doc/stream_2read_8c_a87e6b2f8461723147f431b15967f458d_icgraph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/assets/doc/stream_2read_8c_a87e6b2f8461723147f431b15967f458d_icgraph.md5 b/assets/doc/stream_2read_8c_a87e6b2f8461723147f431b15967f458d_icgraph.md5 new file mode 100644 index 0000000..3d8f159 --- /dev/null +++ b/assets/doc/stream_2read_8c_a87e6b2f8461723147f431b15967f458d_icgraph.md5 @@ -0,0 +1 @@ +3d2b655d511fd9b06b1dba482f0128f8 \ No newline at end of file diff --git a/assets/doc/stream_2read_8c_a87e6b2f8461723147f431b15967f458d_icgraph.png b/assets/doc/stream_2read_8c_a87e6b2f8461723147f431b15967f458d_icgraph.png new file mode 100644 index 0000000..490e98f Binary files /dev/null and b/assets/doc/stream_2read_8c_a87e6b2f8461723147f431b15967f458d_icgraph.png differ diff --git a/assets/doc/stream_2stream_8h__dep__incl.map b/assets/doc/stream_2stream_8h__dep__incl.map new file mode 100644 index 0000000..7e74c1e --- /dev/null +++ b/assets/doc/stream_2stream_8h__dep__incl.map @@ -0,0 +1,5 @@ + + + + + diff --git a/assets/doc/stream_2stream_8h__dep__incl.md5 b/assets/doc/stream_2stream_8h__dep__incl.md5 new file mode 100644 index 0000000..26c5db0 --- /dev/null +++ b/assets/doc/stream_2stream_8h__dep__incl.md5 @@ -0,0 +1 @@ +80f08cfb72c2493318c9912e66364984 \ No newline at end of file diff --git a/assets/doc/stream_2stream_8h__dep__incl.png b/assets/doc/stream_2stream_8h__dep__incl.png new file mode 100644 index 0000000..3b29d00 Binary files /dev/null and b/assets/doc/stream_2stream_8h__dep__incl.png differ diff --git a/assets/doc/stream_2stream_8h__incl.map b/assets/doc/stream_2stream_8h__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/stream_2stream_8h__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/stream_2stream_8h__incl.md5 b/assets/doc/stream_2stream_8h__incl.md5 new file mode 100644 index 0000000..c7cc1c0 --- /dev/null +++ b/assets/doc/stream_2stream_8h__incl.md5 @@ -0,0 +1 @@ +d2ede93aef14c1539df691c15fd273fb \ No newline at end of file diff --git a/assets/doc/stream_2stream_8h__incl.png b/assets/doc/stream_2stream_8h__incl.png new file mode 100644 index 0000000..1d3b137 Binary files /dev/null and b/assets/doc/stream_2stream_8h__incl.png differ diff --git a/assets/doc/stream_2stream_8h_a8201bfbd89d6721bd1e5aac63970e890_icgraph.map b/assets/doc/stream_2stream_8h_a8201bfbd89d6721bd1e5aac63970e890_icgraph.map new file mode 100644 index 0000000..771d860 --- /dev/null +++ b/assets/doc/stream_2stream_8h_a8201bfbd89d6721bd1e5aac63970e890_icgraph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/assets/doc/stream_2stream_8h_a8201bfbd89d6721bd1e5aac63970e890_icgraph.md5 b/assets/doc/stream_2stream_8h_a8201bfbd89d6721bd1e5aac63970e890_icgraph.md5 new file mode 100644 index 0000000..3d8f159 --- /dev/null +++ b/assets/doc/stream_2stream_8h_a8201bfbd89d6721bd1e5aac63970e890_icgraph.md5 @@ -0,0 +1 @@ +3d2b655d511fd9b06b1dba482f0128f8 \ No newline at end of file diff --git a/assets/doc/stream_2stream_8h_a8201bfbd89d6721bd1e5aac63970e890_icgraph.png b/assets/doc/stream_2stream_8h_a8201bfbd89d6721bd1e5aac63970e890_icgraph.png new file mode 100644 index 0000000..490e98f Binary files /dev/null and b/assets/doc/stream_2stream_8h_a8201bfbd89d6721bd1e5aac63970e890_icgraph.png differ diff --git a/assets/doc/stream_2stream_8h_aa06d63428a8a1a7c60680b28e7c51862_icgraph.map b/assets/doc/stream_2stream_8h_aa06d63428a8a1a7c60680b28e7c51862_icgraph.map new file mode 100644 index 0000000..bcdd92b --- /dev/null +++ b/assets/doc/stream_2stream_8h_aa06d63428a8a1a7c60680b28e7c51862_icgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/assets/doc/stream_2stream_8h_aa06d63428a8a1a7c60680b28e7c51862_icgraph.md5 b/assets/doc/stream_2stream_8h_aa06d63428a8a1a7c60680b28e7c51862_icgraph.md5 new file mode 100644 index 0000000..d7fe580 --- /dev/null +++ b/assets/doc/stream_2stream_8h_aa06d63428a8a1a7c60680b28e7c51862_icgraph.md5 @@ -0,0 +1 @@ +8e3c6497b064c086e69e9c91768ef502 \ No newline at end of file diff --git a/assets/doc/stream_2stream_8h_aa06d63428a8a1a7c60680b28e7c51862_icgraph.png b/assets/doc/stream_2stream_8h_aa06d63428a8a1a7c60680b28e7c51862_icgraph.png new file mode 100644 index 0000000..48d82a0 Binary files /dev/null and b/assets/doc/stream_2stream_8h_aa06d63428a8a1a7c60680b28e7c51862_icgraph.png differ diff --git a/assets/doc/stream_2write_8c__incl.map b/assets/doc/stream_2write_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/stream_2write_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/stream_2write_8c__incl.md5 b/assets/doc/stream_2write_8c__incl.md5 new file mode 100644 index 0000000..102935f --- /dev/null +++ b/assets/doc/stream_2write_8c__incl.md5 @@ -0,0 +1 @@ +8f6ac9ab39d199a805a22416e47b3953 \ No newline at end of file diff --git a/assets/doc/stream_2write_8c__incl.png b/assets/doc/stream_2write_8c__incl.png new file mode 100644 index 0000000..4d234f7 Binary files /dev/null and b/assets/doc/stream_2write_8c__incl.png differ diff --git a/assets/doc/stream_2write_8c_a0aa33f356a9dd249d72adc11fb9d08ba_icgraph.map b/assets/doc/stream_2write_8c_a0aa33f356a9dd249d72adc11fb9d08ba_icgraph.map new file mode 100644 index 0000000..bcdd92b --- /dev/null +++ b/assets/doc/stream_2write_8c_a0aa33f356a9dd249d72adc11fb9d08ba_icgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/assets/doc/stream_2write_8c_a0aa33f356a9dd249d72adc11fb9d08ba_icgraph.md5 b/assets/doc/stream_2write_8c_a0aa33f356a9dd249d72adc11fb9d08ba_icgraph.md5 new file mode 100644 index 0000000..d7fe580 --- /dev/null +++ b/assets/doc/stream_2write_8c_a0aa33f356a9dd249d72adc11fb9d08ba_icgraph.md5 @@ -0,0 +1 @@ +8e3c6497b064c086e69e9c91768ef502 \ No newline at end of file diff --git a/assets/doc/stream_2write_8c_a0aa33f356a9dd249d72adc11fb9d08ba_icgraph.png b/assets/doc/stream_2write_8c_a0aa33f356a9dd249d72adc11fb9d08ba_icgraph.png new file mode 100644 index 0000000..48d82a0 Binary files /dev/null and b/assets/doc/stream_2write_8c_a0aa33f356a9dd249d72adc11fb9d08ba_icgraph.png differ diff --git a/assets/doc/stream_8c__incl.map b/assets/doc/stream_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/stream_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/stream_8c__incl.md5 b/assets/doc/stream_8c__incl.md5 new file mode 100644 index 0000000..3d9d697 --- /dev/null +++ b/assets/doc/stream_8c__incl.md5 @@ -0,0 +1 @@ +fa1559711a62c2193b5d75a43e25ef19 \ No newline at end of file diff --git a/assets/doc/stream_8c__incl.png b/assets/doc/stream_8c__incl.png new file mode 100644 index 0000000..f1e3f82 Binary files /dev/null and b/assets/doc/stream_8c__incl.png differ diff --git a/assets/doc/stream_8h__dep__incl.map b/assets/doc/stream_8h__dep__incl.map new file mode 100644 index 0000000..c824d51 --- /dev/null +++ b/assets/doc/stream_8h__dep__incl.map @@ -0,0 +1,4 @@ + + + + diff --git a/assets/doc/stream_8h__dep__incl.md5 b/assets/doc/stream_8h__dep__incl.md5 new file mode 100644 index 0000000..e2c1f4c --- /dev/null +++ b/assets/doc/stream_8h__dep__incl.md5 @@ -0,0 +1 @@ +dcda7dad6b7c5e6d19e638858d7f04c7 \ No newline at end of file diff --git a/assets/doc/stream_8h__dep__incl.png b/assets/doc/stream_8h__dep__incl.png new file mode 100644 index 0000000..035670a Binary files /dev/null and b/assets/doc/stream_8h__dep__incl.png differ diff --git a/assets/doc/stream_8h__incl.map b/assets/doc/stream_8h__incl.map new file mode 100644 index 0000000..32c5c6a --- /dev/null +++ b/assets/doc/stream_8h__incl.map @@ -0,0 +1,5 @@ + + + + + diff --git a/assets/doc/stream_8h__incl.md5 b/assets/doc/stream_8h__incl.md5 new file mode 100644 index 0000000..7a3987e --- /dev/null +++ b/assets/doc/stream_8h__incl.md5 @@ -0,0 +1 @@ +ba3b4efdb9790a09a2c93a2550af2298 \ No newline at end of file diff --git a/assets/doc/stream_8h__incl.png b/assets/doc/stream_8h__incl.png new file mode 100644 index 0000000..f19484a Binary files /dev/null and b/assets/doc/stream_8h__incl.png differ diff --git a/assets/doc/structHttpMessageQueue__coll__graph.map b/assets/doc/structHttpMessageQueue__coll__graph.map new file mode 100644 index 0000000..07ffede --- /dev/null +++ b/assets/doc/structHttpMessageQueue__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/assets/doc/structHttpMessageQueue__coll__graph.md5 b/assets/doc/structHttpMessageQueue__coll__graph.md5 new file mode 100644 index 0000000..5b74358 --- /dev/null +++ b/assets/doc/structHttpMessageQueue__coll__graph.md5 @@ -0,0 +1 @@ +f8d02f9c1f916bb267e3e8da46f6918a \ No newline at end of file diff --git a/assets/doc/structHttpMessageQueue__coll__graph.png b/assets/doc/structHttpMessageQueue__coll__graph.png new file mode 100644 index 0000000..2607cdd Binary files /dev/null and b/assets/doc/structHttpMessageQueue__coll__graph.png differ diff --git a/assets/doc/structHttpMessage__coll__graph.map b/assets/doc/structHttpMessage__coll__graph.map new file mode 100644 index 0000000..71aaf37 --- /dev/null +++ b/assets/doc/structHttpMessage__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/assets/doc/structHttpMessage__coll__graph.md5 b/assets/doc/structHttpMessage__coll__graph.md5 new file mode 100644 index 0000000..e443636 --- /dev/null +++ b/assets/doc/structHttpMessage__coll__graph.md5 @@ -0,0 +1 @@ +64f1e65ff1ac7cc838a0bd4e42639617 \ No newline at end of file diff --git a/assets/doc/structHttpMessage__coll__graph.png b/assets/doc/structHttpMessage__coll__graph.png new file mode 100644 index 0000000..0077fe0 Binary files /dev/null and b/assets/doc/structHttpMessage__coll__graph.png differ diff --git a/assets/doc/structHttpParser__coll__graph.map b/assets/doc/structHttpParser__coll__graph.map new file mode 100644 index 0000000..93f6328 --- /dev/null +++ b/assets/doc/structHttpParser__coll__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/assets/doc/structHttpParser__coll__graph.md5 b/assets/doc/structHttpParser__coll__graph.md5 new file mode 100644 index 0000000..93e7f3f --- /dev/null +++ b/assets/doc/structHttpParser__coll__graph.md5 @@ -0,0 +1 @@ +7064b89ac9b985b2cf78c376550ecfb8 \ No newline at end of file diff --git a/assets/doc/structHttpParser__coll__graph.png b/assets/doc/structHttpParser__coll__graph.png new file mode 100644 index 0000000..86362b8 Binary files /dev/null and b/assets/doc/structHttpParser__coll__graph.png differ diff --git a/assets/doc/structHttpRequest__coll__graph.map b/assets/doc/structHttpRequest__coll__graph.map new file mode 100644 index 0000000..77ee779 --- /dev/null +++ b/assets/doc/structHttpRequest__coll__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/assets/doc/structHttpRequest__coll__graph.md5 b/assets/doc/structHttpRequest__coll__graph.md5 new file mode 100644 index 0000000..410ad9f --- /dev/null +++ b/assets/doc/structHttpRequest__coll__graph.md5 @@ -0,0 +1 @@ +886f7c78848a5adf5e460d26129d2bfa \ No newline at end of file diff --git a/assets/doc/structHttpRequest__coll__graph.png b/assets/doc/structHttpRequest__coll__graph.png new file mode 100644 index 0000000..8f00329 Binary files /dev/null and b/assets/doc/structHttpRequest__coll__graph.png differ diff --git a/assets/doc/structHttpWorker__coll__graph.map b/assets/doc/structHttpWorker__coll__graph.map new file mode 100644 index 0000000..e53bb40 --- /dev/null +++ b/assets/doc/structHttpWorker__coll__graph.map @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/assets/doc/structHttpWorker__coll__graph.md5 b/assets/doc/structHttpWorker__coll__graph.md5 new file mode 100644 index 0000000..db446c6 --- /dev/null +++ b/assets/doc/structHttpWorker__coll__graph.md5 @@ -0,0 +1 @@ +da8d108cbedb777a6e5f75a3235b3502 \ No newline at end of file diff --git a/assets/doc/structHttpWorker__coll__graph.png b/assets/doc/structHttpWorker__coll__graph.png new file mode 100644 index 0000000..f53abeb Binary files /dev/null and b/assets/doc/structHttpWorker__coll__graph.png differ diff --git a/assets/doc/structHttpWriter__coll__graph.map b/assets/doc/structHttpWriter__coll__graph.map new file mode 100644 index 0000000..93f6328 --- /dev/null +++ b/assets/doc/structHttpWriter__coll__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/assets/doc/structHttpWriter__coll__graph.md5 b/assets/doc/structHttpWriter__coll__graph.md5 new file mode 100644 index 0000000..a1397d2 --- /dev/null +++ b/assets/doc/structHttpWriter__coll__graph.md5 @@ -0,0 +1 @@ +720d42cfd37d9697ac900d25d924c80e \ No newline at end of file diff --git a/assets/doc/structHttpWriter__coll__graph.png b/assets/doc/structHttpWriter__coll__graph.png new file mode 100644 index 0000000..d626294 Binary files /dev/null and b/assets/doc/structHttpWriter__coll__graph.png differ diff --git a/assets/doc/structServer__coll__graph.map b/assets/doc/structServer__coll__graph.map new file mode 100644 index 0000000..58ac643 --- /dev/null +++ b/assets/doc/structServer__coll__graph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/assets/doc/structServer__coll__graph.md5 b/assets/doc/structServer__coll__graph.md5 new file mode 100644 index 0000000..c02fd26 --- /dev/null +++ b/assets/doc/structServer__coll__graph.md5 @@ -0,0 +1 @@ +eee453eff22a24e040728978455269de \ No newline at end of file diff --git a/assets/doc/structServer__coll__graph.png b/assets/doc/structServer__coll__graph.png new file mode 100644 index 0000000..1306805 Binary files /dev/null and b/assets/doc/structServer__coll__graph.png differ diff --git a/assets/doc/structSock__coll__graph.map b/assets/doc/structSock__coll__graph.map new file mode 100644 index 0000000..ab12394 --- /dev/null +++ b/assets/doc/structSock__coll__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/assets/doc/structSock__coll__graph.md5 b/assets/doc/structSock__coll__graph.md5 new file mode 100644 index 0000000..fe6f674 --- /dev/null +++ b/assets/doc/structSock__coll__graph.md5 @@ -0,0 +1 @@ +6470cafe03b7c0829d96bf9dd7ebb44f \ No newline at end of file diff --git a/assets/doc/structSock__coll__graph.png b/assets/doc/structSock__coll__graph.png new file mode 100644 index 0000000..1bde024 Binary files /dev/null and b/assets/doc/structSock__coll__graph.png differ diff --git a/assets/doc/structclass__coll__graph.map b/assets/doc/structclass__coll__graph.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/structclass__coll__graph.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/structclass__coll__graph.md5 b/assets/doc/structclass__coll__graph.md5 new file mode 100644 index 0000000..6fb3f5b --- /dev/null +++ b/assets/doc/structclass__coll__graph.md5 @@ -0,0 +1 @@ +3a44e008c446a00c219579e72b32a050 \ No newline at end of file diff --git a/assets/doc/structclass__coll__graph.png b/assets/doc/structclass__coll__graph.png new file mode 100644 index 0000000..853fb60 Binary files /dev/null and b/assets/doc/structclass__coll__graph.png differ diff --git a/assets/doc/structconns__coll__graph.map b/assets/doc/structconns__coll__graph.map new file mode 100644 index 0000000..bea59cd --- /dev/null +++ b/assets/doc/structconns__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/assets/doc/structconns__coll__graph.md5 b/assets/doc/structconns__coll__graph.md5 new file mode 100644 index 0000000..99d9416 --- /dev/null +++ b/assets/doc/structconns__coll__graph.md5 @@ -0,0 +1 @@ +1571d61bd708491fcea9b04d3e1bfe3e \ No newline at end of file diff --git a/assets/doc/structconns__coll__graph.png b/assets/doc/structconns__coll__graph.png new file mode 100644 index 0000000..3b80eed Binary files /dev/null and b/assets/doc/structconns__coll__graph.png differ diff --git a/assets/doc/structi__Auth__coll__graph.map b/assets/doc/structi__Auth__coll__graph.map new file mode 100644 index 0000000..59463b3 --- /dev/null +++ b/assets/doc/structi__Auth__coll__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/assets/doc/structi__Auth__coll__graph.md5 b/assets/doc/structi__Auth__coll__graph.md5 new file mode 100644 index 0000000..08ceb49 --- /dev/null +++ b/assets/doc/structi__Auth__coll__graph.md5 @@ -0,0 +1 @@ +e450a5060869adf468c94d76bad10012 \ No newline at end of file diff --git a/assets/doc/structi__Auth__coll__graph.png b/assets/doc/structi__Auth__coll__graph.png new file mode 100644 index 0000000..ad4f8a2 Binary files /dev/null and b/assets/doc/structi__Auth__coll__graph.png differ diff --git a/assets/doc/structi__Class__coll__graph.map b/assets/doc/structi__Class__coll__graph.map new file mode 100644 index 0000000..20a5b89 --- /dev/null +++ b/assets/doc/structi__Class__coll__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/assets/doc/structi__Class__coll__graph.md5 b/assets/doc/structi__Class__coll__graph.md5 new file mode 100644 index 0000000..5edad58 --- /dev/null +++ b/assets/doc/structi__Class__coll__graph.md5 @@ -0,0 +1 @@ +71dfb0e4a9fbabe8867117a275509a55 \ No newline at end of file diff --git a/assets/doc/structi__Class__coll__graph.png b/assets/doc/structi__Class__coll__graph.png new file mode 100644 index 0000000..c4505ac Binary files /dev/null and b/assets/doc/structi__Class__coll__graph.png differ diff --git a/assets/doc/structi__Hashable__coll__graph.map b/assets/doc/structi__Hashable__coll__graph.map new file mode 100644 index 0000000..3eb7f35 --- /dev/null +++ b/assets/doc/structi__Hashable__coll__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/assets/doc/structi__Hashable__coll__graph.md5 b/assets/doc/structi__Hashable__coll__graph.md5 new file mode 100644 index 0000000..510be5e --- /dev/null +++ b/assets/doc/structi__Hashable__coll__graph.md5 @@ -0,0 +1 @@ +312cc0d8156cc2905169d7d6ac68c7a0 \ No newline at end of file diff --git a/assets/doc/structi__Hashable__coll__graph.png b/assets/doc/structi__Hashable__coll__graph.png new file mode 100644 index 0000000..6efb33f Binary files /dev/null and b/assets/doc/structi__Hashable__coll__graph.png differ diff --git a/assets/doc/structi__HttpIntro__coll__graph.map b/assets/doc/structi__HttpIntro__coll__graph.map new file mode 100644 index 0000000..20a5b89 --- /dev/null +++ b/assets/doc/structi__HttpIntro__coll__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/assets/doc/structi__HttpIntro__coll__graph.md5 b/assets/doc/structi__HttpIntro__coll__graph.md5 new file mode 100644 index 0000000..6be58bb --- /dev/null +++ b/assets/doc/structi__HttpIntro__coll__graph.md5 @@ -0,0 +1 @@ +3ff1b9e39a217580471eff98e9e518bd \ No newline at end of file diff --git a/assets/doc/structi__HttpIntro__coll__graph.png b/assets/doc/structi__HttpIntro__coll__graph.png new file mode 100644 index 0000000..58f4486 Binary files /dev/null and b/assets/doc/structi__HttpIntro__coll__graph.png differ diff --git a/assets/doc/structi__Logger__coll__graph.map b/assets/doc/structi__Logger__coll__graph.map new file mode 100644 index 0000000..20a5b89 --- /dev/null +++ b/assets/doc/structi__Logger__coll__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/assets/doc/structi__Logger__coll__graph.md5 b/assets/doc/structi__Logger__coll__graph.md5 new file mode 100644 index 0000000..8da8ddd --- /dev/null +++ b/assets/doc/structi__Logger__coll__graph.md5 @@ -0,0 +1 @@ +c38324069e4681b971b9142640e73015 \ No newline at end of file diff --git a/assets/doc/structi__Logger__coll__graph.png b/assets/doc/structi__Logger__coll__graph.png new file mode 100644 index 0000000..f63b1a7 Binary files /dev/null and b/assets/doc/structi__Logger__coll__graph.png differ diff --git a/assets/doc/structi__Observer__coll__graph.map b/assets/doc/structi__Observer__coll__graph.map new file mode 100644 index 0000000..20a5b89 --- /dev/null +++ b/assets/doc/structi__Observer__coll__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/assets/doc/structi__Observer__coll__graph.md5 b/assets/doc/structi__Observer__coll__graph.md5 new file mode 100644 index 0000000..17d23b3 --- /dev/null +++ b/assets/doc/structi__Observer__coll__graph.md5 @@ -0,0 +1 @@ +f22fce9be63f59793d42dad925c4b5c1 \ No newline at end of file diff --git a/assets/doc/structi__Observer__coll__graph.png b/assets/doc/structi__Observer__coll__graph.png new file mode 100644 index 0000000..9b8bb12 Binary files /dev/null and b/assets/doc/structi__Observer__coll__graph.png differ diff --git a/assets/doc/structi__StreamReader__coll__graph.map b/assets/doc/structi__StreamReader__coll__graph.map new file mode 100644 index 0000000..1fe8984 --- /dev/null +++ b/assets/doc/structi__StreamReader__coll__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/assets/doc/structi__StreamReader__coll__graph.md5 b/assets/doc/structi__StreamReader__coll__graph.md5 new file mode 100644 index 0000000..4374504 --- /dev/null +++ b/assets/doc/structi__StreamReader__coll__graph.md5 @@ -0,0 +1 @@ +913fb486afb7b429b609ad386b347751 \ No newline at end of file diff --git a/assets/doc/structi__StreamReader__coll__graph.png b/assets/doc/structi__StreamReader__coll__graph.png new file mode 100644 index 0000000..61e7b4b Binary files /dev/null and b/assets/doc/structi__StreamReader__coll__graph.png differ diff --git a/assets/doc/structi__StreamWriter__coll__graph.map b/assets/doc/structi__StreamWriter__coll__graph.map new file mode 100644 index 0000000..ef74644 --- /dev/null +++ b/assets/doc/structi__StreamWriter__coll__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/assets/doc/structi__StreamWriter__coll__graph.md5 b/assets/doc/structi__StreamWriter__coll__graph.md5 new file mode 100644 index 0000000..02b3ed0 --- /dev/null +++ b/assets/doc/structi__StreamWriter__coll__graph.md5 @@ -0,0 +1 @@ +8197f3723872603e4832b39eb4e022b5 \ No newline at end of file diff --git a/assets/doc/structi__StreamWriter__coll__graph.png b/assets/doc/structi__StreamWriter__coll__graph.png new file mode 100644 index 0000000..3d5c4f7 Binary files /dev/null and b/assets/doc/structi__StreamWriter__coll__graph.png differ diff --git a/assets/doc/structi__Subject__coll__graph.map b/assets/doc/structi__Subject__coll__graph.map new file mode 100644 index 0000000..20a5b89 --- /dev/null +++ b/assets/doc/structi__Subject__coll__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/assets/doc/structi__Subject__coll__graph.md5 b/assets/doc/structi__Subject__coll__graph.md5 new file mode 100644 index 0000000..60c2cb9 --- /dev/null +++ b/assets/doc/structi__Subject__coll__graph.md5 @@ -0,0 +1 @@ +8f4dd35c367f24ebb26b7cf533206817 \ No newline at end of file diff --git a/assets/doc/structi__Subject__coll__graph.png b/assets/doc/structi__Subject__coll__graph.png new file mode 100644 index 0000000..a49d70c Binary files /dev/null and b/assets/doc/structi__Subject__coll__graph.png differ diff --git a/assets/doc/subject_8c__incl.map b/assets/doc/subject_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/subject_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/subject_8c__incl.md5 b/assets/doc/subject_8c__incl.md5 new file mode 100644 index 0000000..307558d --- /dev/null +++ b/assets/doc/subject_8c__incl.md5 @@ -0,0 +1 @@ +d6f4e2f26bd7ca8df012044296710044 \ No newline at end of file diff --git a/assets/doc/subject_8c__incl.png b/assets/doc/subject_8c__incl.png new file mode 100644 index 0000000..7905610 Binary files /dev/null and b/assets/doc/subject_8c__incl.png differ diff --git a/assets/doc/syslog_8c__incl.map b/assets/doc/syslog_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/syslog_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/syslog_8c__incl.md5 b/assets/doc/syslog_8c__incl.md5 new file mode 100644 index 0000000..c175d2c --- /dev/null +++ b/assets/doc/syslog_8c__incl.md5 @@ -0,0 +1 @@ +431f3dbbf0ec4ad9e14881709fce060a \ No newline at end of file diff --git a/assets/doc/syslog_8c__incl.png b/assets/doc/syslog_8c__incl.png new file mode 100644 index 0000000..60b7a83 Binary files /dev/null and b/assets/doc/syslog_8c__incl.png differ diff --git a/assets/doc/tab_a.png b/assets/doc/tab_a.png new file mode 100644 index 0000000..2d99ef2 Binary files /dev/null and b/assets/doc/tab_a.png differ diff --git a/assets/doc/tab_b.png b/assets/doc/tab_b.png new file mode 100644 index 0000000..b2c3d2b Binary files /dev/null and b/assets/doc/tab_b.png differ diff --git a/assets/doc/tab_h.png b/assets/doc/tab_h.png new file mode 100644 index 0000000..c11f48f Binary files /dev/null and b/assets/doc/tab_h.png differ diff --git a/assets/doc/tab_s.png b/assets/doc/tab_s.png new file mode 100644 index 0000000..978943a Binary files /dev/null and b/assets/doc/tab_s.png differ diff --git a/assets/doc/tabs.css b/assets/doc/tabs.css new file mode 100644 index 0000000..2192056 --- /dev/null +++ b/assets/doc/tabs.css @@ -0,0 +1,59 @@ +.tabs, .tabs2, .tabs3 { + background-image: url('tab_b.png'); + width: 100%; + z-index: 101; + font-size: 13px; +} + +.tabs2 { + font-size: 10px; +} +.tabs3 { + font-size: 9px; +} + +.tablist { + margin: 0; + padding: 0; + display: table; +} + +.tablist li { + float: left; + display: table-cell; + background-image: url('tab_b.png'); + line-height: 36px; + list-style: none; +} + +.tablist a { + display: block; + padding: 0 20px; + font-weight: bold; + background-image:url('tab_s.png'); + background-repeat:no-repeat; + background-position:right; + color: #283A5D; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + text-decoration: none; + outline: none; +} + +.tabs3 .tablist a { + padding: 0 10px; +} + +.tablist a:hover { + background-image: url('tab_h.png'); + background-repeat:repeat-x; + color: #fff; + text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); + text-decoration: none; +} + +.tablist li.current a { + background-image: url('tab_a.png'); + background-repeat:repeat-x; + color: #fff; + text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +} diff --git a/assets/doc/to__string_8c__incl.map b/assets/doc/to__string_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/to__string_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/to__string_8c__incl.md5 b/assets/doc/to__string_8c__incl.md5 new file mode 100644 index 0000000..f2e3250 --- /dev/null +++ b/assets/doc/to__string_8c__incl.md5 @@ -0,0 +1 @@ +3529545d2bc57dca8fe133988a4cac5f \ No newline at end of file diff --git a/assets/doc/to__string_8c__incl.png b/assets/doc/to__string_8c__incl.png new file mode 100644 index 0000000..f3ea938 Binary files /dev/null and b/assets/doc/to__string_8c__incl.png differ diff --git a/assets/doc/utils_2hash_8c__incl.map b/assets/doc/utils_2hash_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/utils_2hash_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/utils_2hash_8c__incl.md5 b/assets/doc/utils_2hash_8c__incl.md5 new file mode 100644 index 0000000..8c30bd7 --- /dev/null +++ b/assets/doc/utils_2hash_8c__incl.md5 @@ -0,0 +1 @@ +62037682857f7a061fafbab18d949a23 \ No newline at end of file diff --git a/assets/doc/utils_2hash_8c__incl.png b/assets/doc/utils_2hash_8c__incl.png new file mode 100644 index 0000000..ca9fae8 Binary files /dev/null and b/assets/doc/utils_2hash_8c__incl.png differ diff --git a/assets/doc/utils_2hash_8c_ad7fe4fa1908d79c2284724e035e548d6_icgraph.map b/assets/doc/utils_2hash_8c_ad7fe4fa1908d79c2284724e035e548d6_icgraph.map new file mode 100644 index 0000000..89ce9af --- /dev/null +++ b/assets/doc/utils_2hash_8c_ad7fe4fa1908d79c2284724e035e548d6_icgraph.map @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/assets/doc/utils_2hash_8c_ad7fe4fa1908d79c2284724e035e548d6_icgraph.md5 b/assets/doc/utils_2hash_8c_ad7fe4fa1908d79c2284724e035e548d6_icgraph.md5 new file mode 100644 index 0000000..a0565bd --- /dev/null +++ b/assets/doc/utils_2hash_8c_ad7fe4fa1908d79c2284724e035e548d6_icgraph.md5 @@ -0,0 +1 @@ +faea94bde7c7d4f87feec98a623503b9 \ No newline at end of file diff --git a/assets/doc/utils_2hash_8c_ad7fe4fa1908d79c2284724e035e548d6_icgraph.png b/assets/doc/utils_2hash_8c_ad7fe4fa1908d79c2284724e035e548d6_icgraph.png new file mode 100644 index 0000000..adb6657 Binary files /dev/null and b/assets/doc/utils_2hash_8c_ad7fe4fa1908d79c2284724e035e548d6_icgraph.png differ diff --git a/assets/doc/utils_2hash_8h__incl.map b/assets/doc/utils_2hash_8h__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/utils_2hash_8h__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/utils_2hash_8h__incl.md5 b/assets/doc/utils_2hash_8h__incl.md5 new file mode 100644 index 0000000..6cdf374 --- /dev/null +++ b/assets/doc/utils_2hash_8h__incl.md5 @@ -0,0 +1 @@ +da28e5a5493a9c5a9132a0da90ab19cf \ No newline at end of file diff --git a/assets/doc/utils_2hash_8h__incl.png b/assets/doc/utils_2hash_8h__incl.png new file mode 100644 index 0000000..43e4978 Binary files /dev/null and b/assets/doc/utils_2hash_8h__incl.png differ diff --git a/assets/doc/utils_2hash_8h_a4fd82572cce0e6beb14977a4d527dd25_icgraph.map b/assets/doc/utils_2hash_8h_a4fd82572cce0e6beb14977a4d527dd25_icgraph.map new file mode 100644 index 0000000..89ce9af --- /dev/null +++ b/assets/doc/utils_2hash_8h_a4fd82572cce0e6beb14977a4d527dd25_icgraph.map @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/assets/doc/utils_2hash_8h_a4fd82572cce0e6beb14977a4d527dd25_icgraph.md5 b/assets/doc/utils_2hash_8h_a4fd82572cce0e6beb14977a4d527dd25_icgraph.md5 new file mode 100644 index 0000000..a0565bd --- /dev/null +++ b/assets/doc/utils_2hash_8h_a4fd82572cce0e6beb14977a4d527dd25_icgraph.md5 @@ -0,0 +1 @@ +faea94bde7c7d4f87feec98a623503b9 \ No newline at end of file diff --git a/assets/doc/utils_2hash_8h_a4fd82572cce0e6beb14977a4d527dd25_icgraph.png b/assets/doc/utils_2hash_8h_a4fd82572cce0e6beb14977a4d527dd25_icgraph.png new file mode 100644 index 0000000..adb6657 Binary files /dev/null and b/assets/doc/utils_2hash_8h_a4fd82572cce0e6beb14977a4d527dd25_icgraph.png differ diff --git a/assets/doc/utils_2http_8h__incl.map b/assets/doc/utils_2http_8h__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/utils_2http_8h__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/utils_2http_8h__incl.md5 b/assets/doc/utils_2http_8h__incl.md5 new file mode 100644 index 0000000..b25b53d --- /dev/null +++ b/assets/doc/utils_2http_8h__incl.md5 @@ -0,0 +1 @@ +00f8317158b2741b2ed28c8a9ed81b22 \ No newline at end of file diff --git a/assets/doc/utils_2http_8h__incl.png b/assets/doc/utils_2http_8h__incl.png new file mode 100644 index 0000000..ab8ee27 Binary files /dev/null and b/assets/doc/utils_2http_8h__incl.png differ diff --git a/assets/doc/utils_2http_8h_a0761fd0e4914a7f912dd354c63458c1d_icgraph.map b/assets/doc/utils_2http_8h_a0761fd0e4914a7f912dd354c63458c1d_icgraph.map new file mode 100644 index 0000000..f467c01 --- /dev/null +++ b/assets/doc/utils_2http_8h_a0761fd0e4914a7f912dd354c63458c1d_icgraph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/assets/doc/utils_2http_8h_a0761fd0e4914a7f912dd354c63458c1d_icgraph.md5 b/assets/doc/utils_2http_8h_a0761fd0e4914a7f912dd354c63458c1d_icgraph.md5 new file mode 100644 index 0000000..8972329 --- /dev/null +++ b/assets/doc/utils_2http_8h_a0761fd0e4914a7f912dd354c63458c1d_icgraph.md5 @@ -0,0 +1 @@ +57b9f18a282512224318c9faa37a7581 \ No newline at end of file diff --git a/assets/doc/utils_2http_8h_a0761fd0e4914a7f912dd354c63458c1d_icgraph.png b/assets/doc/utils_2http_8h_a0761fd0e4914a7f912dd354c63458c1d_icgraph.png new file mode 100644 index 0000000..9d6dc10 Binary files /dev/null and b/assets/doc/utils_2http_8h_a0761fd0e4914a7f912dd354c63458c1d_icgraph.png differ diff --git a/assets/doc/utils_2http_8h_a8cc0ef803a5d857c0c8a0d78172b61ed_cgraph.map b/assets/doc/utils_2http_8h_a8cc0ef803a5d857c0c8a0d78172b61ed_cgraph.map new file mode 100644 index 0000000..c62792b --- /dev/null +++ b/assets/doc/utils_2http_8h_a8cc0ef803a5d857c0c8a0d78172b61ed_cgraph.map @@ -0,0 +1,3 @@ + + + diff --git a/assets/doc/utils_2http_8h_a8cc0ef803a5d857c0c8a0d78172b61ed_cgraph.md5 b/assets/doc/utils_2http_8h_a8cc0ef803a5d857c0c8a0d78172b61ed_cgraph.md5 new file mode 100644 index 0000000..86b59c4 --- /dev/null +++ b/assets/doc/utils_2http_8h_a8cc0ef803a5d857c0c8a0d78172b61ed_cgraph.md5 @@ -0,0 +1 @@ +a52aaa27b969b10f52f701ab0eedb521 \ No newline at end of file diff --git a/assets/doc/utils_2http_8h_a8cc0ef803a5d857c0c8a0d78172b61ed_cgraph.png b/assets/doc/utils_2http_8h_a8cc0ef803a5d857c0c8a0d78172b61ed_cgraph.png new file mode 100644 index 0000000..cc2fb12 Binary files /dev/null and b/assets/doc/utils_2http_8h_a8cc0ef803a5d857c0c8a0d78172b61ed_cgraph.png differ diff --git a/assets/doc/utils_2http_8h_a8cc0ef803a5d857c0c8a0d78172b61ed_icgraph.map b/assets/doc/utils_2http_8h_a8cc0ef803a5d857c0c8a0d78172b61ed_icgraph.map new file mode 100644 index 0000000..ec3b7ed --- /dev/null +++ b/assets/doc/utils_2http_8h_a8cc0ef803a5d857c0c8a0d78172b61ed_icgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/assets/doc/utils_2http_8h_a8cc0ef803a5d857c0c8a0d78172b61ed_icgraph.md5 b/assets/doc/utils_2http_8h_a8cc0ef803a5d857c0c8a0d78172b61ed_icgraph.md5 new file mode 100644 index 0000000..642a433 --- /dev/null +++ b/assets/doc/utils_2http_8h_a8cc0ef803a5d857c0c8a0d78172b61ed_icgraph.md5 @@ -0,0 +1 @@ +b04e37ff3c13ab6c20b679b73b033b15 \ No newline at end of file diff --git a/assets/doc/utils_2http_8h_a8cc0ef803a5d857c0c8a0d78172b61ed_icgraph.png b/assets/doc/utils_2http_8h_a8cc0ef803a5d857c0c8a0d78172b61ed_icgraph.png new file mode 100644 index 0000000..3a27a0c Binary files /dev/null and b/assets/doc/utils_2http_8h_a8cc0ef803a5d857c0c8a0d78172b61ed_icgraph.png differ diff --git a/assets/doc/value_8c__incl.map b/assets/doc/value_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/value_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/value_8c__incl.md5 b/assets/doc/value_8c__incl.md5 new file mode 100644 index 0000000..c256373 --- /dev/null +++ b/assets/doc/value_8c__incl.md5 @@ -0,0 +1 @@ +7462a3287ba7cdb4400b624a90ae0434 \ No newline at end of file diff --git a/assets/doc/value_8c__incl.png b/assets/doc/value_8c__incl.png new file mode 100644 index 0000000..86c6549 Binary files /dev/null and b/assets/doc/value_8c__incl.png differ diff --git a/assets/doc/value_8h__dep__incl.map b/assets/doc/value_8h__dep__incl.map new file mode 100644 index 0000000..03d6c2f --- /dev/null +++ b/assets/doc/value_8h__dep__incl.map @@ -0,0 +1,3 @@ + + + diff --git a/assets/doc/value_8h__dep__incl.md5 b/assets/doc/value_8h__dep__incl.md5 new file mode 100644 index 0000000..9dded04 --- /dev/null +++ b/assets/doc/value_8h__dep__incl.md5 @@ -0,0 +1 @@ +8d9d23cf73bf1eff8dfb50e6ace6d8a2 \ No newline at end of file diff --git a/assets/doc/value_8h__dep__incl.png b/assets/doc/value_8h__dep__incl.png new file mode 100644 index 0000000..8dfda07 Binary files /dev/null and b/assets/doc/value_8h__dep__incl.png differ diff --git a/assets/doc/value_8h__incl.map b/assets/doc/value_8h__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/value_8h__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/value_8h__incl.md5 b/assets/doc/value_8h__incl.md5 new file mode 100644 index 0000000..01992a2 --- /dev/null +++ b/assets/doc/value_8h__incl.md5 @@ -0,0 +1 @@ +307c49ed2c2d75d3274b20abe5809efb \ No newline at end of file diff --git a/assets/doc/value_8h__incl.png b/assets/doc/value_8h__incl.png new file mode 100644 index 0000000..287bcd6 Binary files /dev/null and b/assets/doc/value_8h__incl.png differ diff --git a/assets/doc/webgameserver_8c__incl.map b/assets/doc/webgameserver_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/webgameserver_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/webgameserver_8c__incl.md5 b/assets/doc/webgameserver_8c__incl.md5 new file mode 100644 index 0000000..e370677 --- /dev/null +++ b/assets/doc/webgameserver_8c__incl.md5 @@ -0,0 +1 @@ +1776e09d55af60c88bb2ab8c1cfd1d72 \ No newline at end of file diff --git a/assets/doc/webgameserver_8c__incl.png b/assets/doc/webgameserver_8c__incl.png new file mode 100644 index 0000000..5ee1c1b Binary files /dev/null and b/assets/doc/webgameserver_8c__incl.png differ diff --git a/assets/doc/webgameserver_8c_a037a87641df20cd07cf7ad9799c502a2_icgraph.map b/assets/doc/webgameserver_8c_a037a87641df20cd07cf7ad9799c502a2_icgraph.map new file mode 100644 index 0000000..c3e09c4 --- /dev/null +++ b/assets/doc/webgameserver_8c_a037a87641df20cd07cf7ad9799c502a2_icgraph.map @@ -0,0 +1,3 @@ + + + diff --git a/assets/doc/webgameserver_8c_a037a87641df20cd07cf7ad9799c502a2_icgraph.md5 b/assets/doc/webgameserver_8c_a037a87641df20cd07cf7ad9799c502a2_icgraph.md5 new file mode 100644 index 0000000..b72e36d --- /dev/null +++ b/assets/doc/webgameserver_8c_a037a87641df20cd07cf7ad9799c502a2_icgraph.md5 @@ -0,0 +1 @@ +02a27cdb509b99edf6d3c9393b45e784 \ No newline at end of file diff --git a/assets/doc/webgameserver_8c_a037a87641df20cd07cf7ad9799c502a2_icgraph.png b/assets/doc/webgameserver_8c_a037a87641df20cd07cf7ad9799c502a2_icgraph.png new file mode 100644 index 0000000..c993718 Binary files /dev/null and b/assets/doc/webgameserver_8c_a037a87641df20cd07cf7ad9799c502a2_icgraph.png differ diff --git a/assets/doc/webgameserver_8c_ae66f6b31b5ad750f1fe042a706a4e3d4_cgraph.map b/assets/doc/webgameserver_8c_ae66f6b31b5ad750f1fe042a706a4e3d4_cgraph.map new file mode 100644 index 0000000..928c242 --- /dev/null +++ b/assets/doc/webgameserver_8c_ae66f6b31b5ad750f1fe042a706a4e3d4_cgraph.map @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/assets/doc/webgameserver_8c_ae66f6b31b5ad750f1fe042a706a4e3d4_cgraph.md5 b/assets/doc/webgameserver_8c_ae66f6b31b5ad750f1fe042a706a4e3d4_cgraph.md5 new file mode 100644 index 0000000..6cea843 --- /dev/null +++ b/assets/doc/webgameserver_8c_ae66f6b31b5ad750f1fe042a706a4e3d4_cgraph.md5 @@ -0,0 +1 @@ +b009f706dbfdc9d894e16aea4135b341 \ No newline at end of file diff --git a/assets/doc/webgameserver_8c_ae66f6b31b5ad750f1fe042a706a4e3d4_cgraph.png b/assets/doc/webgameserver_8c_ae66f6b31b5ad750f1fe042a706a4e3d4_cgraph.png new file mode 100644 index 0000000..136061b Binary files /dev/null and b/assets/doc/webgameserver_8c_ae66f6b31b5ad750f1fe042a706a4e3d4_cgraph.png differ diff --git a/assets/doc/worker_8c__incl.map b/assets/doc/worker_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/worker_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/worker_8c__incl.md5 b/assets/doc/worker_8c__incl.md5 new file mode 100644 index 0000000..5add1a0 --- /dev/null +++ b/assets/doc/worker_8c__incl.md5 @@ -0,0 +1 @@ +c6a5384526372d885aa9304ce7ce8a48 \ No newline at end of file diff --git a/assets/doc/worker_8c__incl.png b/assets/doc/worker_8c__incl.png new file mode 100644 index 0000000..ceb1215 Binary files /dev/null and b/assets/doc/worker_8c__incl.png differ diff --git a/assets/doc/worker_8h__dep__incl.map b/assets/doc/worker_8h__dep__incl.map new file mode 100644 index 0000000..b48140b --- /dev/null +++ b/assets/doc/worker_8h__dep__incl.map @@ -0,0 +1,3 @@ + + + diff --git a/assets/doc/worker_8h__dep__incl.md5 b/assets/doc/worker_8h__dep__incl.md5 new file mode 100644 index 0000000..f733009 --- /dev/null +++ b/assets/doc/worker_8h__dep__incl.md5 @@ -0,0 +1 @@ +556a85df9a793eec502004df08a95e35 \ No newline at end of file diff --git a/assets/doc/worker_8h__dep__incl.png b/assets/doc/worker_8h__dep__incl.png new file mode 100644 index 0000000..2ab85d0 Binary files /dev/null and b/assets/doc/worker_8h__dep__incl.png differ diff --git a/assets/doc/worker_8h__incl.map b/assets/doc/worker_8h__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/assets/doc/worker_8h__incl.map @@ -0,0 +1,2 @@ + + diff --git a/assets/doc/worker_8h__incl.md5 b/assets/doc/worker_8h__incl.md5 new file mode 100644 index 0000000..7a0bc36 --- /dev/null +++ b/assets/doc/worker_8h__incl.md5 @@ -0,0 +1 @@ +05927f449f4c8fe8757bf9ef44f10059 \ No newline at end of file diff --git a/assets/doc/worker_8h__incl.png b/assets/doc/worker_8h__incl.png new file mode 100644 index 0000000..81ba04f Binary files /dev/null and b/assets/doc/worker_8h__incl.png differ diff --git a/assets/html/coverage/home/georg/data/git/server/src/class/index-detail-sort-b.html b/assets/html/coverage/home/georg/data/git/server/src/class/index-detail-sort-b.html new file mode 100644 index 0000000..82e14ba --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/class/index-detail-sort-b.html @@ -0,0 +1,121 @@ + + + + + + + LCOV - Code Coverage/home/georg/data/git/server/src/class + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - /home/georg/data/git/server/src/classHitTotalCoverage
Test:Code CoverageLines:1212100.0 %
Date:2012-03-28Functions:22100.0 %
Legend: Rating: + low: < 75 % + medium: >= 75 % + high: >= 90 % +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Filename Sort by nameLine Coverage ( hide details ) Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
interface.c +
100.0%
+
100.0 %12 / 12100.0 %2 / 2-0 / 0
<unnamed>100.0 %12 / 12100.0 %2 / 2-0 / 0
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/class/index-detail-sort-f.html b/assets/html/coverage/home/georg/data/git/server/src/class/index-detail-sort-f.html new file mode 100644 index 0000000..eabde59 --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/class/index-detail-sort-f.html @@ -0,0 +1,121 @@ + + + + + + + LCOV - Code Coverage/home/georg/data/git/server/src/class + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - /home/georg/data/git/server/src/classHitTotalCoverage
Test:Code CoverageLines:1212100.0 %
Date:2012-03-28Functions:22100.0 %
Legend: Rating: + low: < 75 % + medium: >= 75 % + high: >= 90 % +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Filename Sort by nameLine Coverage ( hide details ) Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
interface.c +
100.0%
+
100.0 %12 / 12100.0 %2 / 2-0 / 0
<unnamed>100.0 %12 / 12100.0 %2 / 2-0 / 0
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/class/index-detail-sort-l.html b/assets/html/coverage/home/georg/data/git/server/src/class/index-detail-sort-l.html new file mode 100644 index 0000000..26e6ab8 --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/class/index-detail-sort-l.html @@ -0,0 +1,121 @@ + + + + + + + LCOV - Code Coverage/home/georg/data/git/server/src/class + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - /home/georg/data/git/server/src/classHitTotalCoverage
Test:Code CoverageLines:1212100.0 %
Date:2012-03-28Functions:22100.0 %
Legend: Rating: + low: < 75 % + medium: >= 75 % + high: >= 90 % +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Filename Sort by nameLine Coverage ( hide details ) Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
interface.c +
100.0%
+
100.0 %12 / 12100.0 %2 / 2-0 / 0
<unnamed>100.0 %12 / 12100.0 %2 / 2-0 / 0
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/class/index-detail.html b/assets/html/coverage/home/georg/data/git/server/src/class/index-detail.html new file mode 100644 index 0000000..146d1dc --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/class/index-detail.html @@ -0,0 +1,121 @@ + + + + + + + LCOV - Code Coverage/home/georg/data/git/server/src/class + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - /home/georg/data/git/server/src/classHitTotalCoverage
Test:Code CoverageLines:1212100.0 %
Date:2012-03-28Functions:22100.0 %
Legend: Rating: + low: < 75 % + medium: >= 75 % + high: >= 90 % +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Filename Sort by nameLine Coverage ( hide details ) Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
interface.c +
100.0%
+
100.0 %12 / 12100.0 %2 / 2-0 / 0
<unnamed>100.0 %12 / 12100.0 %2 / 2-0 / 0
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/class/index-sort-b.html b/assets/html/coverage/home/georg/data/git/server/src/class/index-sort-b.html new file mode 100644 index 0000000..c7b269f --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/class/index-sort-b.html @@ -0,0 +1,111 @@ + + + + + + + LCOV - Code Coverage/home/georg/data/git/server/src/class + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - /home/georg/data/git/server/src/classHitTotalCoverage
Test:Code CoverageLines:1212100.0 %
Date:2012-03-28Functions:22100.0 %
Legend: Rating: + low: < 75 % + medium: >= 75 % + high: >= 90 % +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Filename Sort by nameLine Coverage ( show details ) Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
interface.c +
100.0%
+
100.0 %12 / 12100.0 %2 / 2-0 / 0
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/class/index-sort-f.html b/assets/html/coverage/home/georg/data/git/server/src/class/index-sort-f.html new file mode 100644 index 0000000..3a2c275 --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/class/index-sort-f.html @@ -0,0 +1,111 @@ + + + + + + + LCOV - Code Coverage/home/georg/data/git/server/src/class + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - /home/georg/data/git/server/src/classHitTotalCoverage
Test:Code CoverageLines:1212100.0 %
Date:2012-03-28Functions:22100.0 %
Legend: Rating: + low: < 75 % + medium: >= 75 % + high: >= 90 % +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Filename Sort by nameLine Coverage ( show details ) Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
interface.c +
100.0%
+
100.0 %12 / 12100.0 %2 / 2-0 / 0
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/class/index-sort-l.html b/assets/html/coverage/home/georg/data/git/server/src/class/index-sort-l.html new file mode 100644 index 0000000..e21aa1a --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/class/index-sort-l.html @@ -0,0 +1,111 @@ + + + + + + + LCOV - Code Coverage/home/georg/data/git/server/src/class + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - /home/georg/data/git/server/src/classHitTotalCoverage
Test:Code CoverageLines:1212100.0 %
Date:2012-03-28Functions:22100.0 %
Legend: Rating: + low: < 75 % + medium: >= 75 % + high: >= 90 % +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Filename Sort by nameLine Coverage ( show details ) Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
interface.c +
100.0%
+
100.0 %12 / 12100.0 %2 / 2-0 / 0
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/class/index.html b/assets/html/coverage/home/georg/data/git/server/src/class/index.html new file mode 100644 index 0000000..c5fe701 --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/class/index.html @@ -0,0 +1,111 @@ + + + + + + + LCOV - Code Coverage/home/georg/data/git/server/src/class + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - /home/georg/data/git/server/src/classHitTotalCoverage
Test:Code CoverageLines:1212100.0 %
Date:2012-03-28Functions:22100.0 %
Legend: Rating: + low: < 75 % + medium: >= 75 % + high: >= 90 % +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Filename Sort by nameLine Coverage ( show details ) Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
interface.c +
100.0%
+
100.0 %12 / 12100.0 %2 / 2-0 / 0
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/class/interface.c.func-sort-c.html b/assets/html/coverage/home/georg/data/git/server/src/class/interface.c.func-sort-c.html new file mode 100644 index 0000000..33af3af --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/class/interface.c.func-sort-c.html @@ -0,0 +1,96 @@ + + + + + + + LCOV - Code Coverage - /home/georg/data/git/server/src/class/interface.c - functions + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - home/georg/data/git/server/src/class - interface.c (source / functions)HitTotalCoverage
Test:Code CoverageLines:1212100.0 %
Date:2012-03-28Functions:22100.0 %
Legend: Lines: + hit + not hit + | Branches: + + taken + - not taken + # not executed +Branches:00-
+
+ +
+ + + + + + + + + + + + + + +

Function Name Sort by function nameHit count Sort by hit count
comp2531
interfaceGet1302
+
+
+ + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/class/interface.c.func.html b/assets/html/coverage/home/georg/data/git/server/src/class/interface.c.func.html new file mode 100644 index 0000000..d7b4c6a --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/class/interface.c.func.html @@ -0,0 +1,96 @@ + + + + + + + LCOV - Code Coverage - /home/georg/data/git/server/src/class/interface.c - functions + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - home/georg/data/git/server/src/class - interface.c (source / functions)HitTotalCoverage
Test:Code CoverageLines:1212100.0 %
Date:2012-03-28Functions:22100.0 %
Legend: Lines: + hit + not hit + | Branches: + + taken + - not taken + # not executed +Branches:00-
+
+ +
+ + + + + + + + + + + + + + +

Function Name Sort by function nameHit count Sort by hit count
comp2531
interfaceGet1302
+
+
+ + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/class/interface.c.gcov.html b/assets/html/coverage/home/georg/data/git/server/src/class/interface.c.gcov.html new file mode 100644 index 0000000..adf8b23 --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/class/interface.c.gcov.html @@ -0,0 +1,156 @@ + + + + + + + LCOV - Code Coverage - /home/georg/data/git/server/src/class/interface.c + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - home/georg/data/git/server/src/class - interface.c (source / functions)HitTotalCoverage
Test:Code CoverageLines:1212100.0 %
Date:2012-03-28Functions:22100.0 %
Legend: Lines: + hit + not hit + | Branches: + + taken + - not taken + # not executed +Branches:00-
+
+ + + + + + + + +

+
           Branch data     Line data    Source code
+
+       1                 :            : /**
+       2                 :            :  * \file
+       3                 :            :  *
+       4                 :            :  * \author      Georg Hopp
+       5                 :            :  *
+       6                 :            :  * \copyright
+       7                 :            :  * Copyright © 2012  Georg Hopp
+       8                 :            :  *
+       9                 :            :  * This program is free software: you can redistribute it and/or modify
+      10                 :            :  * it under the terms of the GNU General Public License as published by
+      11                 :            :  * the Free Software Foundation, either version 3 of the License, or
+      12                 :            :  * (at your option) any later version.
+      13                 :            :  *
+      14                 :            :  * This program is distributed in the hope that it will be useful,
+      15                 :            :  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+      16                 :            :  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+      17                 :            :  * GNU General Public License for more details.
+      18                 :            :  *
+      19                 :            :  * You should have received a copy of the GNU General Public License
+      20                 :            :  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+      21                 :            :  */
+      22                 :            : 
+      23                 :            : #include <sys/types.h>
+      24                 :            : #include <stdlib.h>
+      25                 :            : 
+      26                 :            : #include "class/interface.h"
+      27                 :            : #include "commons.h"
+      28                 :            : 
+      29                 :            : static
+      30                 :            : inline
+      31                 :            : int
+      32                 :       2531 : comp(const void * _a, const void * _b)
+      33                 :            : {
+      34                 :       2531 :         const struct interface * a = **(const struct interface ***)_a;
+      35                 :       2531 :         const struct interface * b = **(const struct interface ***)_b;
+      36                 :       2531 :     return ((a)<(b))? -1 : ((a)>(b))? 1 : 0;
+      37                 :            : }
+      38                 :            : 
+      39                 :            : /**
+      40                 :            :  * this one is important in selector functions to get the correct interface
+      41                 :            :  * implementation of a class.
+      42                 :            :  */
+      43                 :            : iface_ptr
+      44                 :       1302 : interfaceGet(iface_impl_ptr iface_impl, const iface_ptr _iface)
+      45                 :            : {
+      46                 :       1302 :         const iface_ptr * iface = &_iface;
+      47                 :            :         iface_ptr *       found;
+      48                 :            : 
+      49                 :       1302 :     if (! iface_impl->simpl) {
+      50                 :         14 :         qsort((void**)(iface_impl->impl), iface_impl->nimpl, sizeof(iface_ptr), comp);
+      51                 :         14 :         iface_impl->simpl=TRUE;
+      52                 :            :     }
+      53                 :            : 
+      54                 :       1302 :     found = bsearch(
+      55                 :            :                         &iface,
+      56                 :       1302 :                         iface_impl->impl,
+      57                 :            :                         iface_impl->nimpl,
+      58                 :            :                         sizeof(iface_ptr),
+      59                 :            :                         comp);
+      60                 :            : 
+      61                 :       1302 :         return found? *found : (iface_ptr)NULL;
+      62                 :            : }
+      63                 :            : 
+      64                 :            : // vim: set ts=4 sw=4:
+
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/class/interface/i_class.c.func-sort-c.html b/assets/html/coverage/home/georg/data/git/server/src/class/interface/i_class.c.func-sort-c.html new file mode 100644 index 0000000..8ea3bdb --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/class/interface/i_class.c.func-sort-c.html @@ -0,0 +1,100 @@ + + + + + + + LCOV - Code Coverage - /home/georg/data/git/server/src/class/interface/i_class.c - functions + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - home/georg/data/git/server/src/class/interface - i_class.c (source / functions)HitTotalCoverage
Test:Code CoverageLines:2323100.0 %
Date:2012-03-28Functions:33100.0 %
Legend: Lines: + hit + not hit + | Branches: + + taken + - not taken + # not executed +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + +

Function Name Sort by function nameHit count Sort by hit count
classDelete31
classNew22
classClone2
+
+
+ + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/class/interface/i_class.c.func.html b/assets/html/coverage/home/georg/data/git/server/src/class/interface/i_class.c.func.html new file mode 100644 index 0000000..da61b5b --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/class/interface/i_class.c.func.html @@ -0,0 +1,100 @@ + + + + + + + LCOV - Code Coverage - /home/georg/data/git/server/src/class/interface/i_class.c - functions + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - home/georg/data/git/server/src/class/interface - i_class.c (source / functions)HitTotalCoverage
Test:Code CoverageLines:2323100.0 %
Date:2012-03-28Functions:33100.0 %
Legend: Lines: + hit + not hit + | Branches: + + taken + - not taken + # not executed +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + +

Function Name Sort by function nameHit count Sort by hit count
classClone2
classDelete31
classNew22
+
+
+ + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/class/interface/i_class.c.gcov.html b/assets/html/coverage/home/georg/data/git/server/src/class/interface/i_class.c.gcov.html new file mode 100644 index 0000000..3f9fe36 --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/class/interface/i_class.c.gcov.html @@ -0,0 +1,175 @@ + + + + + + + LCOV - Code Coverage - /home/georg/data/git/server/src/class/interface/i_class.c + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - home/georg/data/git/server/src/class/interface - i_class.c (source / functions)HitTotalCoverage
Test:Code CoverageLines:2323100.0 %
Date:2012-03-28Functions:33100.0 %
Legend: Lines: + hit + not hit + | Branches: + + taken + - not taken + # not executed +Branches:00-
+
+ + + + + + + + +

+
           Branch data     Line data    Source code
+
+       1                 :            : /**
+       2                 :            :  * \file
+       3                 :            :  *
+       4                 :            :  * \author      Georg Hopp
+       5                 :            :  *
+       6                 :            :  * \copyright
+       7                 :            :  * Copyright © 2012  Georg Hopp
+       8                 :            :  *
+       9                 :            :  * This program is free software: you can redistribute it and/or modify
+      10                 :            :  * it under the terms of the GNU General Public License as published by
+      11                 :            :  * the Free Software Foundation, either version 3 of the License, or
+      12                 :            :  * (at your option) any later version.
+      13                 :            :  *
+      14                 :            :  * This program is distributed in the hope that it will be useful,
+      15                 :            :  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+      16                 :            :  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+      17                 :            :  * GNU General Public License for more details.
+      18                 :            :  *
+      19                 :            :  * You should have received a copy of the GNU General Public License
+      20                 :            :  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+      21                 :            :  */
+      22                 :            : 
+      23                 :            : #include <stdarg.h>
+      24                 :            : #include <stdlib.h>
+      25                 :            : #include <assert.h>
+      26                 :            : 
+      27                 :            : #include "class/class.h"
+      28                 :            : #include "class/interface/class.h"
+      29                 :            : 
+      30                 :            : const
+      31                 :            : struct interface i_Class = {
+      32                 :            :         "class",
+      33                 :            :         3
+      34                 :            : };
+      35                 :            : 
+      36                 :            : void *
+      37                 :         22 : classNew(class_ptr class, ...)
+      38                 :            : {
+      39                 :         22 :         void *  object = calloc(1, class->object_size + sizeof(void*));
+      40                 :            :         va_list params;
+      41                 :            :         int     ret;
+      42                 :            : 
+      43                 :         22 :         * (class_ptr *)object = class;
+      44                 :         22 :         object += sizeof(void*);
+      45                 :            : 
+      46                 :         22 :         va_start(params, class);
+      47                 :         28 :         RETCALL(object, Class, ctor, ret, &params);
+      48                 :         22 :         va_end(params);
+      49                 :            : 
+      50                 :         22 :         if (-1 == ret) {
+      51                 :          1 :                 classDelete(&object);
+      52                 :            :         }
+      53                 :            : 
+      54                 :         22 :         return object;
+      55                 :            : }
+      56                 :            : 
+      57                 :            : void
+      58                 :         31 : classDelete(void ** object)
+      59                 :            : {
+      60                 :         31 :         if (NULL != *object) {
+      61                 :         39 :                 CALL(*object, Class, dtor);
+      62                 :            : 
+      63                 :         31 :                 free(*object - sizeof(void*));
+      64                 :         31 :                 *object = NULL;
+      65                 :            :         }
+      66                 :         31 : }
+      67                 :            : 
+      68                 :            : void *
+      69                 :          2 : classClone(void * _object)
+      70                 :            : {
+      71                 :          2 :         class_ptr class  = GET_CLASS(_object);
+      72                 :          2 :         void *    object = calloc(1, class->object_size + sizeof(void*));
+      73                 :            : 
+      74                 :          2 :         * (class_ptr *)object = class;
+      75                 :          2 :         object += sizeof(void*);
+      76                 :            : 
+      77                 :            : #undef clone
+      78                 :          2 :         CALL(object, Class, clone, _object);
+      79                 :            : 
+      80                 :          2 :         return object;
+      81                 :            : }
+      82                 :            : 
+      83                 :            : // vim: set ts=4 sw=4:
+
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/class/interface/index-detail-sort-b.html b/assets/html/coverage/home/georg/data/git/server/src/class/interface/index-detail-sort-b.html new file mode 100644 index 0000000..78702b8 --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/class/interface/index-detail-sort-b.html @@ -0,0 +1,121 @@ + + + + + + + LCOV - Code Coverage/home/georg/data/git/server/src/class/interface + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - /home/georg/data/git/server/src/class/interfaceHitTotalCoverage
Test:Code CoverageLines:2323100.0 %
Date:2012-03-28Functions:33100.0 %
Legend: Rating: + low: < 75 % + medium: >= 75 % + high: >= 90 % +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Filename Sort by nameLine Coverage ( hide details ) Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
i_class.c +
100.0%
+
100.0 %23 / 23100.0 %3 / 3-0 / 0
<unnamed>100.0 %23 / 23100.0 %3 / 3-0 / 0
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/class/interface/index-detail-sort-f.html b/assets/html/coverage/home/georg/data/git/server/src/class/interface/index-detail-sort-f.html new file mode 100644 index 0000000..fae311b --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/class/interface/index-detail-sort-f.html @@ -0,0 +1,121 @@ + + + + + + + LCOV - Code Coverage/home/georg/data/git/server/src/class/interface + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - /home/georg/data/git/server/src/class/interfaceHitTotalCoverage
Test:Code CoverageLines:2323100.0 %
Date:2012-03-28Functions:33100.0 %
Legend: Rating: + low: < 75 % + medium: >= 75 % + high: >= 90 % +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Filename Sort by nameLine Coverage ( hide details ) Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
i_class.c +
100.0%
+
100.0 %23 / 23100.0 %3 / 3-0 / 0
<unnamed>100.0 %23 / 23100.0 %3 / 3-0 / 0
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/class/interface/index-detail-sort-l.html b/assets/html/coverage/home/georg/data/git/server/src/class/interface/index-detail-sort-l.html new file mode 100644 index 0000000..87d6e44 --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/class/interface/index-detail-sort-l.html @@ -0,0 +1,121 @@ + + + + + + + LCOV - Code Coverage/home/georg/data/git/server/src/class/interface + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - /home/georg/data/git/server/src/class/interfaceHitTotalCoverage
Test:Code CoverageLines:2323100.0 %
Date:2012-03-28Functions:33100.0 %
Legend: Rating: + low: < 75 % + medium: >= 75 % + high: >= 90 % +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Filename Sort by nameLine Coverage ( hide details ) Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
i_class.c +
100.0%
+
100.0 %23 / 23100.0 %3 / 3-0 / 0
<unnamed>100.0 %23 / 23100.0 %3 / 3-0 / 0
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/class/interface/index-detail.html b/assets/html/coverage/home/georg/data/git/server/src/class/interface/index-detail.html new file mode 100644 index 0000000..1bb0dd8 --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/class/interface/index-detail.html @@ -0,0 +1,121 @@ + + + + + + + LCOV - Code Coverage/home/georg/data/git/server/src/class/interface + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - /home/georg/data/git/server/src/class/interfaceHitTotalCoverage
Test:Code CoverageLines:2323100.0 %
Date:2012-03-28Functions:33100.0 %
Legend: Rating: + low: < 75 % + medium: >= 75 % + high: >= 90 % +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Filename Sort by nameLine Coverage ( hide details ) Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
i_class.c +
100.0%
+
100.0 %23 / 23100.0 %3 / 3-0 / 0
<unnamed>100.0 %23 / 23100.0 %3 / 3-0 / 0
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/class/interface/index-sort-b.html b/assets/html/coverage/home/georg/data/git/server/src/class/interface/index-sort-b.html new file mode 100644 index 0000000..eced5fa --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/class/interface/index-sort-b.html @@ -0,0 +1,111 @@ + + + + + + + LCOV - Code Coverage/home/georg/data/git/server/src/class/interface + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - /home/georg/data/git/server/src/class/interfaceHitTotalCoverage
Test:Code CoverageLines:2323100.0 %
Date:2012-03-28Functions:33100.0 %
Legend: Rating: + low: < 75 % + medium: >= 75 % + high: >= 90 % +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Filename Sort by nameLine Coverage ( show details ) Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
i_class.c +
100.0%
+
100.0 %23 / 23100.0 %3 / 3-0 / 0
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/class/interface/index-sort-f.html b/assets/html/coverage/home/georg/data/git/server/src/class/interface/index-sort-f.html new file mode 100644 index 0000000..7cd3d67 --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/class/interface/index-sort-f.html @@ -0,0 +1,111 @@ + + + + + + + LCOV - Code Coverage/home/georg/data/git/server/src/class/interface + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - /home/georg/data/git/server/src/class/interfaceHitTotalCoverage
Test:Code CoverageLines:2323100.0 %
Date:2012-03-28Functions:33100.0 %
Legend: Rating: + low: < 75 % + medium: >= 75 % + high: >= 90 % +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Filename Sort by nameLine Coverage ( show details ) Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
i_class.c +
100.0%
+
100.0 %23 / 23100.0 %3 / 3-0 / 0
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/class/interface/index-sort-l.html b/assets/html/coverage/home/georg/data/git/server/src/class/interface/index-sort-l.html new file mode 100644 index 0000000..a05f2c7 --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/class/interface/index-sort-l.html @@ -0,0 +1,111 @@ + + + + + + + LCOV - Code Coverage/home/georg/data/git/server/src/class/interface + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - /home/georg/data/git/server/src/class/interfaceHitTotalCoverage
Test:Code CoverageLines:2323100.0 %
Date:2012-03-28Functions:33100.0 %
Legend: Rating: + low: < 75 % + medium: >= 75 % + high: >= 90 % +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Filename Sort by nameLine Coverage ( show details ) Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
i_class.c +
100.0%
+
100.0 %23 / 23100.0 %3 / 3-0 / 0
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/class/interface/index.html b/assets/html/coverage/home/georg/data/git/server/src/class/interface/index.html new file mode 100644 index 0000000..21820e4 --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/class/interface/index.html @@ -0,0 +1,111 @@ + + + + + + + LCOV - Code Coverage/home/georg/data/git/server/src/class/interface + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - /home/georg/data/git/server/src/class/interfaceHitTotalCoverage
Test:Code CoverageLines:2323100.0 %
Date:2012-03-28Functions:33100.0 %
Legend: Rating: + low: < 75 % + medium: >= 75 % + high: >= 90 % +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Filename Sort by nameLine Coverage ( show details ) Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
i_class.c +
100.0%
+
100.0 %23 / 23100.0 %3 / 3-0 / 0
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/logger/index-detail-sort-b.html b/assets/html/coverage/home/georg/data/git/server/src/logger/index-detail-sort-b.html new file mode 100644 index 0000000..7aac7b4 --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/logger/index-detail-sort-b.html @@ -0,0 +1,165 @@ + + + + + + + LCOV - Code Coverage/home/georg/data/git/server/src/logger + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - /home/georg/data/git/server/src/loggerHitTotalCoverage
Test:Code CoverageLines:1414100.0 %
Date:2012-03-28Functions:77100.0 %
Legend: Rating: + low: < 75 % + medium: >= 75 % + high: >= 90 % +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Filename Sort by nameLine Coverage ( hide details ) Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
stderr.c +
100.0%
+
100.0 %4 / 4100.0 %2 / 2-0 / 0
<unnamed>100.0 %4 / 4100.0 %2 / 2-0 / 0
logger.c +
100.0%
+
100.0 %6 / 6100.0 %3 / 3-0 / 0
<unnamed>100.0 %6 / 6100.0 %3 / 3-0 / 0
syslog.c +
100.0%
+
100.0 %4 / 4100.0 %2 / 2-0 / 0
<unnamed>100.0 %4 / 4100.0 %2 / 2-0 / 0
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/logger/index-detail-sort-f.html b/assets/html/coverage/home/georg/data/git/server/src/logger/index-detail-sort-f.html new file mode 100644 index 0000000..f5982b3 --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/logger/index-detail-sort-f.html @@ -0,0 +1,165 @@ + + + + + + + LCOV - Code Coverage/home/georg/data/git/server/src/logger + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - /home/georg/data/git/server/src/loggerHitTotalCoverage
Test:Code CoverageLines:1414100.0 %
Date:2012-03-28Functions:77100.0 %
Legend: Rating: + low: < 75 % + medium: >= 75 % + high: >= 90 % +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Filename Sort by nameLine Coverage ( hide details ) Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
stderr.c +
100.0%
+
100.0 %4 / 4100.0 %2 / 2-0 / 0
<unnamed>100.0 %4 / 4100.0 %2 / 2-0 / 0
syslog.c +
100.0%
+
100.0 %4 / 4100.0 %2 / 2-0 / 0
<unnamed>100.0 %4 / 4100.0 %2 / 2-0 / 0
logger.c +
100.0%
+
100.0 %6 / 6100.0 %3 / 3-0 / 0
<unnamed>100.0 %6 / 6100.0 %3 / 3-0 / 0
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/logger/index-detail-sort-l.html b/assets/html/coverage/home/georg/data/git/server/src/logger/index-detail-sort-l.html new file mode 100644 index 0000000..a771e7b --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/logger/index-detail-sort-l.html @@ -0,0 +1,165 @@ + + + + + + + LCOV - Code Coverage/home/georg/data/git/server/src/logger + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - /home/georg/data/git/server/src/loggerHitTotalCoverage
Test:Code CoverageLines:1414100.0 %
Date:2012-03-28Functions:77100.0 %
Legend: Rating: + low: < 75 % + medium: >= 75 % + high: >= 90 % +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Filename Sort by nameLine Coverage ( hide details ) Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
stderr.c +
100.0%
+
100.0 %4 / 4100.0 %2 / 2-0 / 0
<unnamed>100.0 %4 / 4100.0 %2 / 2-0 / 0
syslog.c +
100.0%
+
100.0 %4 / 4100.0 %2 / 2-0 / 0
<unnamed>100.0 %4 / 4100.0 %2 / 2-0 / 0
logger.c +
100.0%
+
100.0 %6 / 6100.0 %3 / 3-0 / 0
<unnamed>100.0 %6 / 6100.0 %3 / 3-0 / 0
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/logger/index-detail.html b/assets/html/coverage/home/georg/data/git/server/src/logger/index-detail.html new file mode 100644 index 0000000..8c12137 --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/logger/index-detail.html @@ -0,0 +1,165 @@ + + + + + + + LCOV - Code Coverage/home/georg/data/git/server/src/logger + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - /home/georg/data/git/server/src/loggerHitTotalCoverage
Test:Code CoverageLines:1414100.0 %
Date:2012-03-28Functions:77100.0 %
Legend: Rating: + low: < 75 % + medium: >= 75 % + high: >= 90 % +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Filename Sort by nameLine Coverage ( hide details ) Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
logger.c +
100.0%
+
100.0 %6 / 6100.0 %3 / 3-0 / 0
<unnamed>100.0 %6 / 6100.0 %3 / 3-0 / 0
stderr.c +
100.0%
+
100.0 %4 / 4100.0 %2 / 2-0 / 0
<unnamed>100.0 %4 / 4100.0 %2 / 2-0 / 0
syslog.c +
100.0%
+
100.0 %4 / 4100.0 %2 / 2-0 / 0
<unnamed>100.0 %4 / 4100.0 %2 / 2-0 / 0
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/logger/index-sort-b.html b/assets/html/coverage/home/georg/data/git/server/src/logger/index-sort-b.html new file mode 100644 index 0000000..0f2be8b --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/logger/index-sort-b.html @@ -0,0 +1,135 @@ + + + + + + + LCOV - Code Coverage/home/georg/data/git/server/src/logger + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - /home/georg/data/git/server/src/loggerHitTotalCoverage
Test:Code CoverageLines:1414100.0 %
Date:2012-03-28Functions:77100.0 %
Legend: Rating: + low: < 75 % + medium: >= 75 % + high: >= 90 % +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Filename Sort by nameLine Coverage ( show details ) Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
stderr.c +
100.0%
+
100.0 %4 / 4100.0 %2 / 2-0 / 0
logger.c +
100.0%
+
100.0 %6 / 6100.0 %3 / 3-0 / 0
syslog.c +
100.0%
+
100.0 %4 / 4100.0 %2 / 2-0 / 0
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/logger/index-sort-f.html b/assets/html/coverage/home/georg/data/git/server/src/logger/index-sort-f.html new file mode 100644 index 0000000..b483c8d --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/logger/index-sort-f.html @@ -0,0 +1,135 @@ + + + + + + + LCOV - Code Coverage/home/georg/data/git/server/src/logger + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - /home/georg/data/git/server/src/loggerHitTotalCoverage
Test:Code CoverageLines:1414100.0 %
Date:2012-03-28Functions:77100.0 %
Legend: Rating: + low: < 75 % + medium: >= 75 % + high: >= 90 % +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Filename Sort by nameLine Coverage ( show details ) Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
stderr.c +
100.0%
+
100.0 %4 / 4100.0 %2 / 2-0 / 0
syslog.c +
100.0%
+
100.0 %4 / 4100.0 %2 / 2-0 / 0
logger.c +
100.0%
+
100.0 %6 / 6100.0 %3 / 3-0 / 0
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/logger/index-sort-l.html b/assets/html/coverage/home/georg/data/git/server/src/logger/index-sort-l.html new file mode 100644 index 0000000..09a0656 --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/logger/index-sort-l.html @@ -0,0 +1,135 @@ + + + + + + + LCOV - Code Coverage/home/georg/data/git/server/src/logger + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - /home/georg/data/git/server/src/loggerHitTotalCoverage
Test:Code CoverageLines:1414100.0 %
Date:2012-03-28Functions:77100.0 %
Legend: Rating: + low: < 75 % + medium: >= 75 % + high: >= 90 % +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Filename Sort by nameLine Coverage ( show details ) Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
stderr.c +
100.0%
+
100.0 %4 / 4100.0 %2 / 2-0 / 0
syslog.c +
100.0%
+
100.0 %4 / 4100.0 %2 / 2-0 / 0
logger.c +
100.0%
+
100.0 %6 / 6100.0 %3 / 3-0 / 0
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/logger/index.html b/assets/html/coverage/home/georg/data/git/server/src/logger/index.html new file mode 100644 index 0000000..4dc6764 --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/logger/index.html @@ -0,0 +1,135 @@ + + + + + + + LCOV - Code Coverage/home/georg/data/git/server/src/logger + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - /home/georg/data/git/server/src/loggerHitTotalCoverage
Test:Code CoverageLines:1414100.0 %
Date:2012-03-28Functions:77100.0 %
Legend: Rating: + low: < 75 % + medium: >= 75 % + high: >= 90 % +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Filename Sort by nameLine Coverage ( show details ) Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
logger.c +
100.0%
+
100.0 %6 / 6100.0 %3 / 3-0 / 0
stderr.c +
100.0%
+
100.0 %4 / 4100.0 %2 / 2-0 / 0
syslog.c +
100.0%
+
100.0 %4 / 4100.0 %2 / 2-0 / 0
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/logger/interface/i_logger.c.func-sort-c.html b/assets/html/coverage/home/georg/data/git/server/src/logger/interface/i_logger.c.func-sort-c.html new file mode 100644 index 0000000..9351deb --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/logger/interface/i_logger.c.func-sort-c.html @@ -0,0 +1,92 @@ + + + + + + + LCOV - Code Coverage - /home/georg/data/git/server/src/logger/interface/i_logger.c - functions + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - home/georg/data/git/server/src/logger/interface - i_logger.c (source / functions)HitTotalCoverage
Test:Code CoverageLines:1515100.0 %
Date:2012-03-28Functions:11100.0 %
Legend: Lines: + hit + not hit + | Branches: + + taken + - not taken + # not executed +Branches:00-
+
+ +
+ + + + + + + + + + +

Function Name Sort by function nameHit count Sort by hit count
loggerLog12
+
+
+ + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/logger/interface/i_logger.c.func.html b/assets/html/coverage/home/georg/data/git/server/src/logger/interface/i_logger.c.func.html new file mode 100644 index 0000000..a7d3125 --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/logger/interface/i_logger.c.func.html @@ -0,0 +1,92 @@ + + + + + + + LCOV - Code Coverage - /home/georg/data/git/server/src/logger/interface/i_logger.c - functions + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - home/georg/data/git/server/src/logger/interface - i_logger.c (source / functions)HitTotalCoverage
Test:Code CoverageLines:1515100.0 %
Date:2012-03-28Functions:11100.0 %
Legend: Lines: + hit + not hit + | Branches: + + taken + - not taken + # not executed +Branches:00-
+
+ +
+ + + + + + + + + + +

Function Name Sort by function nameHit count Sort by hit count
loggerLog12
+
+
+ + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/logger/interface/i_logger.c.gcov.html b/assets/html/coverage/home/georg/data/git/server/src/logger/interface/i_logger.c.gcov.html new file mode 100644 index 0000000..75d807d --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/logger/interface/i_logger.c.gcov.html @@ -0,0 +1,152 @@ + + + + + + + LCOV - Code Coverage - /home/georg/data/git/server/src/logger/interface/i_logger.c + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - home/georg/data/git/server/src/logger/interface - i_logger.c (source / functions)HitTotalCoverage
Test:Code CoverageLines:1515100.0 %
Date:2012-03-28Functions:11100.0 %
Legend: Lines: + hit + not hit + | Branches: + + taken + - not taken + # not executed +Branches:00-
+
+ + + + + + + + +

+
           Branch data     Line data    Source code
+
+       1                 :            : /**
+       2                 :            :  * \file
+       3                 :            :  *
+       4                 :            :  * \author      Georg Hopp
+       5                 :            :  *
+       6                 :            :  * \copyright
+       7                 :            :  * Copyright © 2012  Georg Hopp
+       8                 :            :  *
+       9                 :            :  * This program is free software: you can redistribute it and/or modify
+      10                 :            :  * it under the terms of the GNU General Public License as published by
+      11                 :            :  * the Free Software Foundation, either version 3 of the License, or
+      12                 :            :  * (at your option) any later version.
+      13                 :            :  *
+      14                 :            :  * This program is distributed in the hope that it will be useful,
+      15                 :            :  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+      16                 :            :  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+      17                 :            :  * GNU General Public License for more details.
+      18                 :            :  *
+      19                 :            :  * You should have received a copy of the GNU General Public License
+      20                 :            :  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+      21                 :            :  */
+      22                 :            : 
+      23                 :            : #include <stdlib.h>
+      24                 :            : #include <stdio.h>
+      25                 :            : #include <stdarg.h>
+      26                 :            : 
+      27                 :            : #include "logger/logger.h"
+      28                 :            : #include "logger/interface/logger.h"
+      29                 :            : 
+      30                 :            : const struct interface i_Logger = {
+      31                 :            :         "logger",
+      32                 :            :         1
+      33                 :            : };
+      34                 :            : 
+      35                 :            : void
+      36                 :         12 : loggerLog(void * _object, logger_level level, const char * const fmt, ...) {
+      37                 :         12 :         Logger object = _object;
+      38                 :            : 
+      39                 :         12 :         if (level >= object->min_level) {
+      40                 :         11 :                 char *  msg      = NULL;
+      41                 :         11 :                 size_t  msg_size = 0;
+      42                 :            :                 va_list params;
+      43                 :            : 
+      44                 :         11 :                 va_start(params, fmt);
+      45                 :         11 :                 msg_size = vsnprintf(msg, msg_size, fmt, params);
+      46                 :         11 :                 va_end(params);
+      47                 :            : 
+      48                 :         11 :                 msg = malloc(msg_size + 1);
+      49                 :            : 
+      50                 :         11 :                 va_start(params, fmt);
+      51                 :         11 :                 vsnprintf(msg, msg_size + 1, fmt, params);
+      52                 :         11 :                 va_end(params);
+      53                 :            : 
+      54                 :         11 :                 CALL(_object, Logger, log, level, msg);
+      55                 :            : 
+      56                 :         11 :                 free(msg);
+      57                 :            :         }
+      58                 :         12 : }
+      59                 :            : 
+      60                 :            : // vim: set ts=4 sw=4:
+
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/logger/interface/index-detail-sort-b.html b/assets/html/coverage/home/georg/data/git/server/src/logger/interface/index-detail-sort-b.html new file mode 100644 index 0000000..6ac6e59 --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/logger/interface/index-detail-sort-b.html @@ -0,0 +1,121 @@ + + + + + + + LCOV - Code Coverage/home/georg/data/git/server/src/logger/interface + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - /home/georg/data/git/server/src/logger/interfaceHitTotalCoverage
Test:Code CoverageLines:1515100.0 %
Date:2012-03-28Functions:11100.0 %
Legend: Rating: + low: < 75 % + medium: >= 75 % + high: >= 90 % +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Filename Sort by nameLine Coverage ( hide details ) Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
i_logger.c +
100.0%
+
100.0 %15 / 15100.0 %1 / 1-0 / 0
<unnamed>100.0 %15 / 15100.0 %1 / 1-0 / 0
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/logger/interface/index-detail-sort-f.html b/assets/html/coverage/home/georg/data/git/server/src/logger/interface/index-detail-sort-f.html new file mode 100644 index 0000000..80a7b6d --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/logger/interface/index-detail-sort-f.html @@ -0,0 +1,121 @@ + + + + + + + LCOV - Code Coverage/home/georg/data/git/server/src/logger/interface + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - /home/georg/data/git/server/src/logger/interfaceHitTotalCoverage
Test:Code CoverageLines:1515100.0 %
Date:2012-03-28Functions:11100.0 %
Legend: Rating: + low: < 75 % + medium: >= 75 % + high: >= 90 % +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Filename Sort by nameLine Coverage ( hide details ) Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
i_logger.c +
100.0%
+
100.0 %15 / 15100.0 %1 / 1-0 / 0
<unnamed>100.0 %15 / 15100.0 %1 / 1-0 / 0
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/logger/interface/index-detail-sort-l.html b/assets/html/coverage/home/georg/data/git/server/src/logger/interface/index-detail-sort-l.html new file mode 100644 index 0000000..0a8d4eb --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/logger/interface/index-detail-sort-l.html @@ -0,0 +1,121 @@ + + + + + + + LCOV - Code Coverage/home/georg/data/git/server/src/logger/interface + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - /home/georg/data/git/server/src/logger/interfaceHitTotalCoverage
Test:Code CoverageLines:1515100.0 %
Date:2012-03-28Functions:11100.0 %
Legend: Rating: + low: < 75 % + medium: >= 75 % + high: >= 90 % +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Filename Sort by nameLine Coverage ( hide details ) Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
i_logger.c +
100.0%
+
100.0 %15 / 15100.0 %1 / 1-0 / 0
<unnamed>100.0 %15 / 15100.0 %1 / 1-0 / 0
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/logger/interface/index-detail.html b/assets/html/coverage/home/georg/data/git/server/src/logger/interface/index-detail.html new file mode 100644 index 0000000..00f3b67 --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/logger/interface/index-detail.html @@ -0,0 +1,121 @@ + + + + + + + LCOV - Code Coverage/home/georg/data/git/server/src/logger/interface + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - /home/georg/data/git/server/src/logger/interfaceHitTotalCoverage
Test:Code CoverageLines:1515100.0 %
Date:2012-03-28Functions:11100.0 %
Legend: Rating: + low: < 75 % + medium: >= 75 % + high: >= 90 % +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Filename Sort by nameLine Coverage ( hide details ) Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
i_logger.c +
100.0%
+
100.0 %15 / 15100.0 %1 / 1-0 / 0
<unnamed>100.0 %15 / 15100.0 %1 / 1-0 / 0
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/logger/interface/index-sort-b.html b/assets/html/coverage/home/georg/data/git/server/src/logger/interface/index-sort-b.html new file mode 100644 index 0000000..33d47ba --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/logger/interface/index-sort-b.html @@ -0,0 +1,111 @@ + + + + + + + LCOV - Code Coverage/home/georg/data/git/server/src/logger/interface + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - /home/georg/data/git/server/src/logger/interfaceHitTotalCoverage
Test:Code CoverageLines:1515100.0 %
Date:2012-03-28Functions:11100.0 %
Legend: Rating: + low: < 75 % + medium: >= 75 % + high: >= 90 % +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Filename Sort by nameLine Coverage ( show details ) Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
i_logger.c +
100.0%
+
100.0 %15 / 15100.0 %1 / 1-0 / 0
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/logger/interface/index-sort-f.html b/assets/html/coverage/home/georg/data/git/server/src/logger/interface/index-sort-f.html new file mode 100644 index 0000000..58a4d70 --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/logger/interface/index-sort-f.html @@ -0,0 +1,111 @@ + + + + + + + LCOV - Code Coverage/home/georg/data/git/server/src/logger/interface + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - /home/georg/data/git/server/src/logger/interfaceHitTotalCoverage
Test:Code CoverageLines:1515100.0 %
Date:2012-03-28Functions:11100.0 %
Legend: Rating: + low: < 75 % + medium: >= 75 % + high: >= 90 % +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Filename Sort by nameLine Coverage ( show details ) Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
i_logger.c +
100.0%
+
100.0 %15 / 15100.0 %1 / 1-0 / 0
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/logger/interface/index-sort-l.html b/assets/html/coverage/home/georg/data/git/server/src/logger/interface/index-sort-l.html new file mode 100644 index 0000000..47a81d0 --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/logger/interface/index-sort-l.html @@ -0,0 +1,111 @@ + + + + + + + LCOV - Code Coverage/home/georg/data/git/server/src/logger/interface + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - /home/georg/data/git/server/src/logger/interfaceHitTotalCoverage
Test:Code CoverageLines:1515100.0 %
Date:2012-03-28Functions:11100.0 %
Legend: Rating: + low: < 75 % + medium: >= 75 % + high: >= 90 % +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Filename Sort by nameLine Coverage ( show details ) Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
i_logger.c +
100.0%
+
100.0 %15 / 15100.0 %1 / 1-0 / 0
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/logger/interface/index.html b/assets/html/coverage/home/georg/data/git/server/src/logger/interface/index.html new file mode 100644 index 0000000..2cedcda --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/logger/interface/index.html @@ -0,0 +1,111 @@ + + + + + + + LCOV - Code Coverage/home/georg/data/git/server/src/logger/interface + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - /home/georg/data/git/server/src/logger/interfaceHitTotalCoverage
Test:Code CoverageLines:1515100.0 %
Date:2012-03-28Functions:11100.0 %
Legend: Rating: + low: < 75 % + medium: >= 75 % + high: >= 90 % +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Filename Sort by nameLine Coverage ( show details ) Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
i_logger.c +
100.0%
+
100.0 %15 / 15100.0 %1 / 1-0 / 0
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/logger/logger.c.func-sort-c.html b/assets/html/coverage/home/georg/data/git/server/src/logger/logger.c.func-sort-c.html new file mode 100644 index 0000000..fcf6b76 --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/logger/logger.c.func-sort-c.html @@ -0,0 +1,100 @@ + + + + + + + LCOV - Code Coverage - /home/georg/data/git/server/src/logger/logger.c - functions + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - home/georg/data/git/server/src/logger - logger.c (source / functions)HitTotalCoverage
Test:Code CoverageLines:66100.0 %
Date:2012-03-28Functions:33100.0 %
Legend: Lines: + hit + not hit + | Branches: + + taken + - not taken + # not executed +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + +

Function Name Sort by function nameHit count Sort by hit count
loggerDtor8
loggerCtor6
_classInitLogger_3
+
+
+ + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/logger/logger.c.func.html b/assets/html/coverage/home/georg/data/git/server/src/logger/logger.c.func.html new file mode 100644 index 0000000..c212742 --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/logger/logger.c.func.html @@ -0,0 +1,100 @@ + + + + + + + LCOV - Code Coverage - /home/georg/data/git/server/src/logger/logger.c - functions + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - home/georg/data/git/server/src/logger - logger.c (source / functions)HitTotalCoverage
Test:Code CoverageLines:66100.0 %
Date:2012-03-28Functions:33100.0 %
Legend: Lines: + hit + not hit + | Branches: + + taken + - not taken + # not executed +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + +

Function Name Sort by function nameHit count Sort by hit count
_classInitLogger_3
loggerCtor6
loggerDtor8
+
+
+ + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/logger/logger.c.gcov.html b/assets/html/coverage/home/georg/data/git/server/src/logger/logger.c.gcov.html new file mode 100644 index 0000000..5278725 --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/logger/logger.c.gcov.html @@ -0,0 +1,149 @@ + + + + + + + LCOV - Code Coverage - /home/georg/data/git/server/src/logger/logger.c + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - home/georg/data/git/server/src/logger - logger.c (source / functions)HitTotalCoverage
Test:Code CoverageLines:66100.0 %
Date:2012-03-28Functions:33100.0 %
Legend: Lines: + hit + not hit + | Branches: + + taken + - not taken + # not executed +Branches:00-
+
+ + + + + + + + +

+
           Branch data     Line data    Source code
+
+       1                 :            : /**
+       2                 :            :  * \file
+       3                 :            :  *
+       4                 :            :  * \author      Georg Hopp
+       5                 :            :  *
+       6                 :            :  * \copyright
+       7                 :            :  * Copyright © 2012  Georg Hopp
+       8                 :            :  *
+       9                 :            :  * This program is free software: you can redistribute it and/or modify
+      10                 :            :  * it under the terms of the GNU General Public License as published by
+      11                 :            :  * the Free Software Foundation, either version 3 of the License, or
+      12                 :            :  * (at your option) any later version.
+      13                 :            :  *
+      14                 :            :  * This program is distributed in the hope that it will be useful,
+      15                 :            :  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+      16                 :            :  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+      17                 :            :  * GNU General Public License for more details.
+      18                 :            :  *
+      19                 :            :  * You should have received a copy of the GNU General Public License
+      20                 :            :  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+      21                 :            :  */
+      22                 :            : 
+      23                 :            : #include <stdarg.h>
+      24                 :            : 
+      25                 :            : #include "class.h"
+      26                 :            : #include "logger/logger.h"
+      27                 :            : #include "logger/interface/logger.h"
+      28                 :            : 
+      29                 :            : const
+      30                 :            : char * const
+      31                 :            : logger_level_str[] = {
+      32                 :            :         "DEBUG",
+      33                 :            :         "INFO",
+      34                 :            :         "NOTICE",
+      35                 :            :         "WARNING",
+      36                 :            :         "ERR",
+      37                 :            :         "CRIT",
+      38                 :            :         "ALERT",
+      39                 :            :         "EMERG"
+      40                 :            : };
+      41                 :            : 
+      42                 :            : static
+      43                 :            : int
+      44                 :          6 : loggerCtor(void * _this, va_list * params)
+      45                 :            : {
+      46                 :          6 :         Logger this = _this;
+      47                 :          6 :         this->min_level = va_arg(*params, int);
+      48                 :            : 
+      49                 :          6 :         return 0;
+      50                 :            : }
+      51                 :            : 
+      52                 :          8 : static void loggerDtor(void * _this) {}
+      53                 :            : 
+      54                 :            : INIT_IFACE(Class, loggerCtor, loggerDtor, NULL);
+      55                 :          3 : CREATE_CLASS(Logger, NULL, IFACE(Class));
+      56                 :            : 
+      57                 :            : // vim: set ts=4 sw=4:
+
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/logger/stderr.c.func-sort-c.html b/assets/html/coverage/home/georg/data/git/server/src/logger/stderr.c.func-sort-c.html new file mode 100644 index 0000000..1f40ef1 --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/logger/stderr.c.func-sort-c.html @@ -0,0 +1,96 @@ + + + + + + + LCOV - Code Coverage - /home/georg/data/git/server/src/logger/stderr.c - functions + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - home/georg/data/git/server/src/logger - stderr.c (source / functions)HitTotalCoverage
Test:Code CoverageLines:44100.0 %
Date:2012-03-28Functions:22100.0 %
Legend: Lines: + hit + not hit + | Branches: + + taken + - not taken + # not executed +Branches:00-
+
+ +
+ + + + + + + + + + + + + + +

Function Name Sort by function nameHit count Sort by hit count
_classInitLoggerStderr_1
logStderr1
+
+
+ + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/logger/stderr.c.func.html b/assets/html/coverage/home/georg/data/git/server/src/logger/stderr.c.func.html new file mode 100644 index 0000000..52bbf29 --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/logger/stderr.c.func.html @@ -0,0 +1,96 @@ + + + + + + + LCOV - Code Coverage - /home/georg/data/git/server/src/logger/stderr.c - functions + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - home/georg/data/git/server/src/logger - stderr.c (source / functions)HitTotalCoverage
Test:Code CoverageLines:44100.0 %
Date:2012-03-28Functions:22100.0 %
Legend: Lines: + hit + not hit + | Branches: + + taken + - not taken + # not executed +Branches:00-
+
+ +
+ + + + + + + + + + + + + + +

Function Name Sort by function nameHit count Sort by hit count
_classInitLoggerStderr_1
logStderr1
+
+
+ + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/logger/stderr.c.gcov.html b/assets/html/coverage/home/georg/data/git/server/src/logger/stderr.c.gcov.html new file mode 100644 index 0000000..01851f7 --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/logger/stderr.c.gcov.html @@ -0,0 +1,130 @@ + + + + + + + LCOV - Code Coverage - /home/georg/data/git/server/src/logger/stderr.c + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - home/georg/data/git/server/src/logger - stderr.c (source / functions)HitTotalCoverage
Test:Code CoverageLines:44100.0 %
Date:2012-03-28Functions:22100.0 %
Legend: Lines: + hit + not hit + | Branches: + + taken + - not taken + # not executed +Branches:00-
+
+ + + + + + + + +

+
           Branch data     Line data    Source code
+
+       1                 :            : /**
+       2                 :            :  * \file
+       3                 :            :  *
+       4                 :            :  * \author      Georg Hopp
+       5                 :            :  *
+       6                 :            :  * \copyright
+       7                 :            :  * Copyright © 2012  Georg Hopp
+       8                 :            :  *
+       9                 :            :  * This program is free software: you can redistribute it and/or modify
+      10                 :            :  * it under the terms of the GNU General Public License as published by
+      11                 :            :  * the Free Software Foundation, either version 3 of the License, or
+      12                 :            :  * (at your option) any later version.
+      13                 :            :  *
+      14                 :            :  * This program is distributed in the hope that it will be useful,
+      15                 :            :  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+      16                 :            :  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+      17                 :            :  * GNU General Public License for more details.
+      18                 :            :  *
+      19                 :            :  * You should have received a copy of the GNU General Public License
+      20                 :            :  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+      21                 :            :  */
+      22                 :            : 
+      23                 :            : #include <stdio.h>
+      24                 :            : 
+      25                 :            : #include "logger/logger.h"
+      26                 :            : #include "logger/interface/logger.h"
+      27                 :            : 
+      28                 :            : static
+      29                 :            : void
+      30                 :          1 : logStderr(void * this, logger_level level, const char * const msg)
+      31                 :            : {
+      32                 :          1 :         fprintf(stderr, "[%s] %s\n", logger_level_str[level], msg);
+      33                 :          1 : }
+      34                 :            : 
+      35                 :            : INIT_IFACE(Logger, logStderr);
+      36                 :          1 : CREATE_CLASS(LoggerStderr, Logger, IFACE(Logger));
+      37                 :            : 
+      38                 :            : // vim: set ts=4 sw=4:
+
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/logger/syslog.c.func-sort-c.html b/assets/html/coverage/home/georg/data/git/server/src/logger/syslog.c.func-sort-c.html new file mode 100644 index 0000000..05b3b86 --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/logger/syslog.c.func-sort-c.html @@ -0,0 +1,96 @@ + + + + + + + LCOV - Code Coverage - /home/georg/data/git/server/src/logger/syslog.c - functions + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - home/georg/data/git/server/src/logger - syslog.c (source / functions)HitTotalCoverage
Test:Code CoverageLines:44100.0 %
Date:2012-03-28Functions:22100.0 %
Legend: Lines: + hit + not hit + | Branches: + + taken + - not taken + # not executed +Branches:00-
+
+ +
+ + + + + + + + + + + + + + +

Function Name Sort by function nameHit count Sort by hit count
_classInitLoggerSyslog_1
logSyslog1
+
+
+ + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/logger/syslog.c.func.html b/assets/html/coverage/home/georg/data/git/server/src/logger/syslog.c.func.html new file mode 100644 index 0000000..f795a12 --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/logger/syslog.c.func.html @@ -0,0 +1,96 @@ + + + + + + + LCOV - Code Coverage - /home/georg/data/git/server/src/logger/syslog.c - functions + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - home/georg/data/git/server/src/logger - syslog.c (source / functions)HitTotalCoverage
Test:Code CoverageLines:44100.0 %
Date:2012-03-28Functions:22100.0 %
Legend: Lines: + hit + not hit + | Branches: + + taken + - not taken + # not executed +Branches:00-
+
+ +
+ + + + + + + + + + + + + + +

Function Name Sort by function nameHit count Sort by hit count
_classInitLoggerSyslog_1
logSyslog1
+
+
+ + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/logger/syslog.c.gcov.html b/assets/html/coverage/home/georg/data/git/server/src/logger/syslog.c.gcov.html new file mode 100644 index 0000000..1d25bdd --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/logger/syslog.c.gcov.html @@ -0,0 +1,143 @@ + + + + + + + LCOV - Code Coverage - /home/georg/data/git/server/src/logger/syslog.c + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - home/georg/data/git/server/src/logger - syslog.c (source / functions)HitTotalCoverage
Test:Code CoverageLines:44100.0 %
Date:2012-03-28Functions:22100.0 %
Legend: Lines: + hit + not hit + | Branches: + + taken + - not taken + # not executed +Branches:00-
+
+ + + + + + + + +

+
           Branch data     Line data    Source code
+
+       1                 :            : /**
+       2                 :            :  * \file
+       3                 :            :  *
+       4                 :            :  * \author      Georg Hopp
+       5                 :            :  *
+       6                 :            :  * \copyright
+       7                 :            :  * Copyright © 2012  Georg Hopp
+       8                 :            :  *
+       9                 :            :  * This program is free software: you can redistribute it and/or modify
+      10                 :            :  * it under the terms of the GNU General Public License as published by
+      11                 :            :  * the Free Software Foundation, either version 3 of the License, or
+      12                 :            :  * (at your option) any later version.
+      13                 :            :  *
+      14                 :            :  * This program is distributed in the hope that it will be useful,
+      15                 :            :  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+      16                 :            :  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+      17                 :            :  * GNU General Public License for more details.
+      18                 :            :  *
+      19                 :            :  * You should have received a copy of the GNU General Public License
+      20                 :            :  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+      21                 :            :  */
+      22                 :            : 
+      23                 :            : #include <syslog.h>
+      24                 :            : 
+      25                 :            : #include "logger/logger.h"
+      26                 :            : #include "logger/interface/logger.h"
+      27                 :            : 
+      28                 :            : static
+      29                 :            : const
+      30                 :            : int syslog_priority[] = {
+      31                 :            :     LOG_USER | LOG_DEBUG,
+      32                 :            :     LOG_USER | LOG_INFO,
+      33                 :            :     LOG_USER | LOG_NOTICE,
+      34                 :            :     LOG_USER | LOG_WARNING,
+      35                 :            :     LOG_USER | LOG_ERR,
+      36                 :            :     LOG_USER | LOG_CRIT,
+      37                 :            :     LOG_USER | LOG_ALERT,
+      38                 :            :     LOG_USER | LOG_EMERG
+      39                 :            : };
+      40                 :            : 
+      41                 :            : static
+      42                 :            : void
+      43                 :          1 : logSyslog(void * this, logger_level level, const char * const msg)
+      44                 :            : {
+      45                 :          1 :     syslog(syslog_priority[level], "[%s] %s", logger_level_str[level], msg);
+      46                 :          1 : }
+      47                 :            : 
+      48                 :            : INIT_IFACE(Logger, logSyslog);
+      49                 :          1 : CREATE_CLASS(LoggerSyslog, Logger, IFACE(Logger));
+      50                 :            : 
+      51                 :            : // vim: set ts=4 sw=4:
+
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/server/close_conn.c.func-sort-c.html b/assets/html/coverage/home/georg/data/git/server/src/server/close_conn.c.func-sort-c.html new file mode 100644 index 0000000..4c41988 --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/server/close_conn.c.func-sort-c.html @@ -0,0 +1,92 @@ + + + + + + + LCOV - Code Coverage - /home/georg/data/git/server/src/server/close_conn.c - functions + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - home/georg/data/git/server/src/server - close_conn.c (source / functions)HitTotalCoverage
Test:Code CoverageLines:91181.8 %
Date:2012-03-28Functions:11100.0 %
Legend: Lines: + hit + not hit + | Branches: + + taken + - not taken + # not executed +Branches:00-
+
+ +
+ + + + + + + + + + +

Function Name Sort by function nameHit count Sort by hit count
serverCloseConn1
+
+
+ + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/server/close_conn.c.func.html b/assets/html/coverage/home/georg/data/git/server/src/server/close_conn.c.func.html new file mode 100644 index 0000000..158c557 --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/server/close_conn.c.func.html @@ -0,0 +1,92 @@ + + + + + + + LCOV - Code Coverage - /home/georg/data/git/server/src/server/close_conn.c - functions + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - home/georg/data/git/server/src/server - close_conn.c (source / functions)HitTotalCoverage
Test:Code CoverageLines:91181.8 %
Date:2012-03-28Functions:11100.0 %
Legend: Lines: + hit + not hit + | Branches: + + taken + - not taken + # not executed +Branches:00-
+
+ +
+ + + + + + + + + + +

Function Name Sort by function nameHit count Sort by hit count
serverCloseConn1
+
+
+ + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/server/close_conn.c.gcov.html b/assets/html/coverage/home/georg/data/git/server/src/server/close_conn.c.gcov.html new file mode 100644 index 0000000..72e68f9 --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/server/close_conn.c.gcov.html @@ -0,0 +1,141 @@ + + + + + + + LCOV - Code Coverage - /home/georg/data/git/server/src/server/close_conn.c + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - home/georg/data/git/server/src/server - close_conn.c (source / functions)HitTotalCoverage
Test:Code CoverageLines:91181.8 %
Date:2012-03-28Functions:11100.0 %
Legend: Lines: + hit + not hit + | Branches: + + taken + - not taken + # not executed +Branches:00-
+
+ + + + + + + + +

+
           Branch data     Line data    Source code
+
+       1                 :            : /**
+       2                 :            :  * \file
+       3                 :            :  *
+       4                 :            :  * \author      Georg Hopp
+       5                 :            :  *
+       6                 :            :  * \copyright
+       7                 :            :  * Copyright © 2012  Georg Hopp
+       8                 :            :  *
+       9                 :            :  * This program is free software: you can redistribute it and/or modify
+      10                 :            :  * it under the terms of the GNU General Public License as published by
+      11                 :            :  * the Free Software Foundation, either version 3 of the License, or
+      12                 :            :  * (at your option) any later version.
+      13                 :            :  *
+      14                 :            :  * This program is distributed in the hope that it will be useful,
+      15                 :            :  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+      16                 :            :  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+      17                 :            :  * GNU General Public License for more details.
+      18                 :            :  *
+      19                 :            :  * You should have received a copy of the GNU General Public License
+      20                 :            :  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+      21                 :            :  */
+      22                 :            : 
+      23                 :            : #include <stdlib.h>
+      24                 :            : #include <string.h>
+      25                 :            : 
+      26                 :            : #include "server.h"
+      27                 :            : #include "class.h"
+      28                 :            : #include "stream.h"
+      29                 :            : 
+      30                 :            : void
+      31                 :          1 : serverCloseConn(Server this, unsigned int i)
+      32                 :            : {
+      33                 :          1 :         int    fd = (this->fds)[i].fd;
+      34                 :          1 :         Stream st = (this->conns[fd]).stream;
+      35                 :            : 
+      36                 :          1 :         delete((this->conns)[fd].sock);
+      37                 :          1 :         delete((this->conns)[fd].worker);
+      38                 :            : 
+      39                 :          1 :         if (NULL != st && STREAM_SSL == st->type) {
+      40                 :          0 :                 SSL_shutdown((st->handle).ssl);
+      41                 :          0 :                 SSL_free((st->handle).ssl);
+      42                 :            :         }
+      43                 :            : 
+      44                 :          1 :         delete(st);
+      45                 :            : 
+      46                 :          1 :         memset(&(this->fds[i]), 0, sizeof(struct pollfd));
+      47                 :          1 : }
+      48                 :            : 
+      49                 :            : // vim: set ts=4 sw=4:
+
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/server/handle_accept.c.func-sort-c.html b/assets/html/coverage/home/georg/data/git/server/src/server/handle_accept.c.func-sort-c.html new file mode 100644 index 0000000..e4bd4d2 --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/server/handle_accept.c.func-sort-c.html @@ -0,0 +1,92 @@ + + + + + + + LCOV - Code Coverage - /home/georg/data/git/server/src/server/handle_accept.c - functions + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - home/georg/data/git/server/src/server - handle_accept.c (source / functions)HitTotalCoverage
Test:Code CoverageLines:202969.0 %
Date:2012-03-28Functions:11100.0 %
Legend: Lines: + hit + not hit + | Branches: + + taken + - not taken + # not executed +Branches:00-
+
+ +
+ + + + + + + + + + +

Function Name Sort by function nameHit count Sort by hit count
serverHandleAccept2
+
+
+ + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/server/handle_accept.c.func.html b/assets/html/coverage/home/georg/data/git/server/src/server/handle_accept.c.func.html new file mode 100644 index 0000000..f4df257 --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/server/handle_accept.c.func.html @@ -0,0 +1,92 @@ + + + + + + + LCOV - Code Coverage - /home/georg/data/git/server/src/server/handle_accept.c - functions + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - home/georg/data/git/server/src/server - handle_accept.c (source / functions)HitTotalCoverage
Test:Code CoverageLines:202969.0 %
Date:2012-03-28Functions:11100.0 %
Legend: Lines: + hit + not hit + | Branches: + + taken + - not taken + # not executed +Branches:00-
+
+ +
+ + + + + + + + + + +

Function Name Sort by function nameHit count Sort by hit count
serverHandleAccept2
+
+
+ + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/server/handle_accept.c.gcov.html b/assets/html/coverage/home/georg/data/git/server/src/server/handle_accept.c.gcov.html new file mode 100644 index 0000000..06ffb12 --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/server/handle_accept.c.gcov.html @@ -0,0 +1,192 @@ + + + + + + + LCOV - Code Coverage - /home/georg/data/git/server/src/server/handle_accept.c + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - home/georg/data/git/server/src/server - handle_accept.c (source / functions)HitTotalCoverage
Test:Code CoverageLines:202969.0 %
Date:2012-03-28Functions:11100.0 %
Legend: Lines: + hit + not hit + | Branches: + + taken + - not taken + # not executed +Branches:00-
+
+ + + + + + + + +

+
           Branch data     Line data    Source code
+
+       1                 :            : /**
+       2                 :            :  * \file
+       3                 :            :  *
+       4                 :            :  * \author      Georg Hopp
+       5                 :            :  *
+       6                 :            :  * \copyright
+       7                 :            :  * Copyright © 2012  Georg Hopp
+       8                 :            :  *
+       9                 :            :  * This program is free software: you can redistribute it and/or modify
+      10                 :            :  * it under the terms of the GNU General Public License as published by
+      11                 :            :  * the Free Software Foundation, either version 3 of the License, or
+      12                 :            :  * (at your option) any later version.
+      13                 :            :  *
+      14                 :            :  * This program is distributed in the hope that it will be useful,
+      15                 :            :  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+      16                 :            :  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+      17                 :            :  * GNU General Public License for more details.
+      18                 :            :  *
+      19                 :            :  * You should have received a copy of the GNU General Public License
+      20                 :            :  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+      21                 :            :  */
+      22                 :            : 
+      23                 :            : #include <errno.h>
+      24                 :            : #include <stdio.h>
+      25                 :            : #include <stdlib.h>
+      26                 :            : 
+      27                 :            : #include <openssl/ssl.h>
+      28                 :            : 
+      29                 :            : #include "http/worker.h"
+      30                 :            : #include "server.h"
+      31                 :            : #include "class.h"
+      32                 :            : #include "logger.h"
+      33                 :            : #include "stream.h"
+      34                 :            : 
+      35                 :            : int
+      36                 :          2 : serverHandleAccept(Server this, unsigned int i)
+      37                 :            : {
+      38                 :          2 :         char   remoteAddr[16] = "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0";
+      39                 :          2 :         Sock   acc = NULL;
+      40                 :            :         Stream st;
+      41                 :            : 
+      42                 :          2 :         if (this->nfds >= this->max_fds) {
+      43                 :          0 :                 return -1;
+      44                 :            :         }
+      45                 :            : 
+      46                 :          2 :         acc = socketAccept((0 == i)? this->sock : this->sockSSL, &remoteAddr);
+      47                 :            : 
+      48                 :          2 :         if (-1 != acc->handle) {
+      49                 :          1 :         switch(i) {
+      50                 :            :                 case 0:
+      51                 :            :                         // no SSL
+      52                 :          1 :                         st = new(Stream, STREAM_FD, acc->handle);
+      53                 :          1 :                         break;
+      54                 :            : 
+      55                 :            :                 case 1:
+      56                 :            :                         // SSL
+      57                 :            :                         {
+      58                 :          0 :                                 SSL * ssl = SSL_new(this->ctx);
+      59                 :          0 :                                 SSL_set_fd(ssl, acc->handle);
+      60                 :          0 :                                 SSL_accept(ssl);
+      61                 :          0 :                                 st = new(Stream, STREAM_SSL, ssl);
+      62                 :            :                         }
+      63                 :          0 :                         break;
+      64                 :            : 
+      65                 :            :                 default:
+      66                 :          0 :                         break;
+      67                 :            :         }
+      68                 :            : 
+      69                 :            :                 // save the socket handle
+      70                 :          1 :                 (this->conns)[acc->handle].sock   = acc; 
+      71                 :            : 
+      72                 :            :                 // clone worker
+      73                 :          1 :                 (this->conns)[acc->handle].worker = clone(this->worker);
+      74                 :          1 :                 (this->conns)[acc->handle].stream = st;
+      75                 :            : 
+      76                 :          1 :                 (this->fds)[this->nfds].fd        = acc->handle;
+      77                 :          1 :                 (this->fds)[this->nfds].events    = POLLIN;
+      78                 :          1 :                 this->nfds++;
+      79                 :            :         } else {
+      80                 :          1 :                 delete(acc);
+      81                 :            : 
+      82                 :          1 :                 switch(errno) {
+      83                 :            :                         case EAGAIN:
+      84                 :          1 :                                 loggerLog(this->logger,
+      85                 :            :                                                 LOGGER_DEBUG,
+      86                 :            :                                                 "server accept blocks");
+      87                 :          1 :                                 break;
+      88                 :            : 
+      89                 :            :                         default:
+      90                 :          0 :                                 loggerLog(this->logger,
+      91                 :            :                                                 LOGGER_DEBUG,
+      92                 :            :                                                 "server accept error");
+      93                 :          0 :                                 break;
+      94                 :            :                 }
+      95                 :            :         }
+      96                 :            : 
+      97                 :          2 :         return (acc)? acc->handle : -1;
+      98                 :            : }
+      99                 :            : 
+     100                 :            : // vim: set ts=4 sw=4:
+
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/server/index-detail-sort-b.html b/assets/html/coverage/home/georg/data/git/server/src/server/index-detail-sort-b.html new file mode 100644 index 0000000..d9adfea --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/server/index-detail-sort-b.html @@ -0,0 +1,253 @@ + + + + + + + LCOV - Code Coverage/home/georg/data/git/server/src/server + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - /home/georg/data/git/server/src/serverHitTotalCoverage
Test:Code CoverageLines:12516376.7 %
Date:2012-03-28Functions:99100.0 %
Legend: Rating: + low: < 75 % + medium: >= 75 % + high: >= 90 % +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Filename Sort by nameLine Coverage ( hide details ) Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
run.c +
85.2%85.2%
+
85.2 %23 / 27100.0 %1 / 1-0 / 0
<unnamed>85.2 %23 / 27100.0 %1 / 1-0 / 0
server.c +
97.8%97.8%
+
97.8 %44 / 45100.0 %3 / 3-0 / 0
<unnamed>97.8 %44 / 45100.0 %3 / 3-0 / 0
handle_accept.c +
69.0%69.0%
+
69.0 %20 / 29100.0 %1 / 1-0 / 0
<unnamed>69.0 %20 / 29100.0 %1 / 1-0 / 0
poll.c +
50.0%50.0%
+
50.0 %9 / 18100.0 %1 / 1-0 / 0
<unnamed>50.0 %9 / 18100.0 %1 / 1-0 / 0
write.c +
62.5%62.5%
+
62.5 %10 / 16100.0 %1 / 1-0 / 0
<unnamed>62.5 %10 / 16100.0 %1 / 1-0 / 0
close_conn.c +
81.8%81.8%
+
81.8 %9 / 11100.0 %1 / 1-0 / 0
<unnamed>81.8 %9 / 11100.0 %1 / 1-0 / 0
read.c +
58.8%58.8%
+
58.8 %10 / 17100.0 %1 / 1-0 / 0
<unnamed>58.8 %10 / 17100.0 %1 / 1-0 / 0
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/server/index-detail-sort-f.html b/assets/html/coverage/home/georg/data/git/server/src/server/index-detail-sort-f.html new file mode 100644 index 0000000..0f0fe14 --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/server/index-detail-sort-f.html @@ -0,0 +1,253 @@ + + + + + + + LCOV - Code Coverage/home/georg/data/git/server/src/server + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - /home/georg/data/git/server/src/serverHitTotalCoverage
Test:Code CoverageLines:12516376.7 %
Date:2012-03-28Functions:99100.0 %
Legend: Rating: + low: < 75 % + medium: >= 75 % + high: >= 90 % +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Filename Sort by nameLine Coverage ( hide details ) Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
run.c +
85.2%85.2%
+
85.2 %23 / 27100.0 %1 / 1-0 / 0
<unnamed>85.2 %23 / 27100.0 %1 / 1-0 / 0
handle_accept.c +
69.0%69.0%
+
69.0 %20 / 29100.0 %1 / 1-0 / 0
<unnamed>69.0 %20 / 29100.0 %1 / 1-0 / 0
poll.c +
50.0%50.0%
+
50.0 %9 / 18100.0 %1 / 1-0 / 0
<unnamed>50.0 %9 / 18100.0 %1 / 1-0 / 0
write.c +
62.5%62.5%
+
62.5 %10 / 16100.0 %1 / 1-0 / 0
<unnamed>62.5 %10 / 16100.0 %1 / 1-0 / 0
close_conn.c +
81.8%81.8%
+
81.8 %9 / 11100.0 %1 / 1-0 / 0
<unnamed>81.8 %9 / 11100.0 %1 / 1-0 / 0
read.c +
58.8%58.8%
+
58.8 %10 / 17100.0 %1 / 1-0 / 0
<unnamed>58.8 %10 / 17100.0 %1 / 1-0 / 0
server.c +
97.8%97.8%
+
97.8 %44 / 45100.0 %3 / 3-0 / 0
<unnamed>97.8 %44 / 45100.0 %3 / 3-0 / 0
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/server/index-detail-sort-l.html b/assets/html/coverage/home/georg/data/git/server/src/server/index-detail-sort-l.html new file mode 100644 index 0000000..42efed4 --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/server/index-detail-sort-l.html @@ -0,0 +1,253 @@ + + + + + + + LCOV - Code Coverage/home/georg/data/git/server/src/server + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - /home/georg/data/git/server/src/serverHitTotalCoverage
Test:Code CoverageLines:12516376.7 %
Date:2012-03-28Functions:99100.0 %
Legend: Rating: + low: < 75 % + medium: >= 75 % + high: >= 90 % +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Filename Sort by nameLine Coverage ( hide details ) Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
poll.c +
50.0%50.0%
+
50.0 %9 / 18100.0 %1 / 1-0 / 0
<unnamed>50.0 %9 / 18100.0 %1 / 1-0 / 0
read.c +
58.8%58.8%
+
58.8 %10 / 17100.0 %1 / 1-0 / 0
<unnamed>58.8 %10 / 17100.0 %1 / 1-0 / 0
write.c +
62.5%62.5%
+
62.5 %10 / 16100.0 %1 / 1-0 / 0
<unnamed>62.5 %10 / 16100.0 %1 / 1-0 / 0
handle_accept.c +
69.0%69.0%
+
69.0 %20 / 29100.0 %1 / 1-0 / 0
<unnamed>69.0 %20 / 29100.0 %1 / 1-0 / 0
close_conn.c +
81.8%81.8%
+
81.8 %9 / 11100.0 %1 / 1-0 / 0
<unnamed>81.8 %9 / 11100.0 %1 / 1-0 / 0
run.c +
85.2%85.2%
+
85.2 %23 / 27100.0 %1 / 1-0 / 0
<unnamed>85.2 %23 / 27100.0 %1 / 1-0 / 0
server.c +
97.8%97.8%
+
97.8 %44 / 45100.0 %3 / 3-0 / 0
<unnamed>97.8 %44 / 45100.0 %3 / 3-0 / 0
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/server/index-detail.html b/assets/html/coverage/home/georg/data/git/server/src/server/index-detail.html new file mode 100644 index 0000000..b3e4f39 --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/server/index-detail.html @@ -0,0 +1,253 @@ + + + + + + + LCOV - Code Coverage/home/georg/data/git/server/src/server + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - /home/georg/data/git/server/src/serverHitTotalCoverage
Test:Code CoverageLines:12516376.7 %
Date:2012-03-28Functions:99100.0 %
Legend: Rating: + low: < 75 % + medium: >= 75 % + high: >= 90 % +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Filename Sort by nameLine Coverage ( hide details ) Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
close_conn.c +
81.8%81.8%
+
81.8 %9 / 11100.0 %1 / 1-0 / 0
<unnamed>81.8 %9 / 11100.0 %1 / 1-0 / 0
handle_accept.c +
69.0%69.0%
+
69.0 %20 / 29100.0 %1 / 1-0 / 0
<unnamed>69.0 %20 / 29100.0 %1 / 1-0 / 0
poll.c +
50.0%50.0%
+
50.0 %9 / 18100.0 %1 / 1-0 / 0
<unnamed>50.0 %9 / 18100.0 %1 / 1-0 / 0
read.c +
58.8%58.8%
+
58.8 %10 / 17100.0 %1 / 1-0 / 0
<unnamed>58.8 %10 / 17100.0 %1 / 1-0 / 0
run.c +
85.2%85.2%
+
85.2 %23 / 27100.0 %1 / 1-0 / 0
<unnamed>85.2 %23 / 27100.0 %1 / 1-0 / 0
server.c +
97.8%97.8%
+
97.8 %44 / 45100.0 %3 / 3-0 / 0
<unnamed>97.8 %44 / 45100.0 %3 / 3-0 / 0
write.c +
62.5%62.5%
+
62.5 %10 / 16100.0 %1 / 1-0 / 0
<unnamed>62.5 %10 / 16100.0 %1 / 1-0 / 0
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/server/index-sort-b.html b/assets/html/coverage/home/georg/data/git/server/src/server/index-sort-b.html new file mode 100644 index 0000000..e2e715d --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/server/index-sort-b.html @@ -0,0 +1,183 @@ + + + + + + + LCOV - Code Coverage/home/georg/data/git/server/src/server + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - /home/georg/data/git/server/src/serverHitTotalCoverage
Test:Code CoverageLines:12516376.7 %
Date:2012-03-28Functions:99100.0 %
Legend: Rating: + low: < 75 % + medium: >= 75 % + high: >= 90 % +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Filename Sort by nameLine Coverage ( show details ) Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
run.c +
85.2%85.2%
+
85.2 %23 / 27100.0 %1 / 1-0 / 0
server.c +
97.8%97.8%
+
97.8 %44 / 45100.0 %3 / 3-0 / 0
handle_accept.c +
69.0%69.0%
+
69.0 %20 / 29100.0 %1 / 1-0 / 0
poll.c +
50.0%50.0%
+
50.0 %9 / 18100.0 %1 / 1-0 / 0
write.c +
62.5%62.5%
+
62.5 %10 / 16100.0 %1 / 1-0 / 0
close_conn.c +
81.8%81.8%
+
81.8 %9 / 11100.0 %1 / 1-0 / 0
read.c +
58.8%58.8%
+
58.8 %10 / 17100.0 %1 / 1-0 / 0
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/server/index-sort-f.html b/assets/html/coverage/home/georg/data/git/server/src/server/index-sort-f.html new file mode 100644 index 0000000..da7a0dc --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/server/index-sort-f.html @@ -0,0 +1,183 @@ + + + + + + + LCOV - Code Coverage/home/georg/data/git/server/src/server + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - /home/georg/data/git/server/src/serverHitTotalCoverage
Test:Code CoverageLines:12516376.7 %
Date:2012-03-28Functions:99100.0 %
Legend: Rating: + low: < 75 % + medium: >= 75 % + high: >= 90 % +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Filename Sort by nameLine Coverage ( show details ) Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
run.c +
85.2%85.2%
+
85.2 %23 / 27100.0 %1 / 1-0 / 0
handle_accept.c +
69.0%69.0%
+
69.0 %20 / 29100.0 %1 / 1-0 / 0
poll.c +
50.0%50.0%
+
50.0 %9 / 18100.0 %1 / 1-0 / 0
write.c +
62.5%62.5%
+
62.5 %10 / 16100.0 %1 / 1-0 / 0
close_conn.c +
81.8%81.8%
+
81.8 %9 / 11100.0 %1 / 1-0 / 0
read.c +
58.8%58.8%
+
58.8 %10 / 17100.0 %1 / 1-0 / 0
server.c +
97.8%97.8%
+
97.8 %44 / 45100.0 %3 / 3-0 / 0
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/server/index-sort-l.html b/assets/html/coverage/home/georg/data/git/server/src/server/index-sort-l.html new file mode 100644 index 0000000..b391fab --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/server/index-sort-l.html @@ -0,0 +1,183 @@ + + + + + + + LCOV - Code Coverage/home/georg/data/git/server/src/server + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - /home/georg/data/git/server/src/serverHitTotalCoverage
Test:Code CoverageLines:12516376.7 %
Date:2012-03-28Functions:99100.0 %
Legend: Rating: + low: < 75 % + medium: >= 75 % + high: >= 90 % +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Filename Sort by nameLine Coverage ( show details ) Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
poll.c +
50.0%50.0%
+
50.0 %9 / 18100.0 %1 / 1-0 / 0
read.c +
58.8%58.8%
+
58.8 %10 / 17100.0 %1 / 1-0 / 0
write.c +
62.5%62.5%
+
62.5 %10 / 16100.0 %1 / 1-0 / 0
handle_accept.c +
69.0%69.0%
+
69.0 %20 / 29100.0 %1 / 1-0 / 0
close_conn.c +
81.8%81.8%
+
81.8 %9 / 11100.0 %1 / 1-0 / 0
run.c +
85.2%85.2%
+
85.2 %23 / 27100.0 %1 / 1-0 / 0
server.c +
97.8%97.8%
+
97.8 %44 / 45100.0 %3 / 3-0 / 0
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/server/index.html b/assets/html/coverage/home/georg/data/git/server/src/server/index.html new file mode 100644 index 0000000..39f44ff --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/server/index.html @@ -0,0 +1,183 @@ + + + + + + + LCOV - Code Coverage/home/georg/data/git/server/src/server + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - /home/georg/data/git/server/src/serverHitTotalCoverage
Test:Code CoverageLines:12516376.7 %
Date:2012-03-28Functions:99100.0 %
Legend: Rating: + low: < 75 % + medium: >= 75 % + high: >= 90 % +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Filename Sort by nameLine Coverage ( show details ) Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
close_conn.c +
81.8%81.8%
+
81.8 %9 / 11100.0 %1 / 1-0 / 0
handle_accept.c +
69.0%69.0%
+
69.0 %20 / 29100.0 %1 / 1-0 / 0
poll.c +
50.0%50.0%
+
50.0 %9 / 18100.0 %1 / 1-0 / 0
read.c +
58.8%58.8%
+
58.8 %10 / 17100.0 %1 / 1-0 / 0
run.c +
85.2%85.2%
+
85.2 %23 / 27100.0 %1 / 1-0 / 0
server.c +
97.8%97.8%
+
97.8 %44 / 45100.0 %3 / 3-0 / 0
write.c +
62.5%62.5%
+
62.5 %10 / 16100.0 %1 / 1-0 / 0
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/server/poll.c.func-sort-c.html b/assets/html/coverage/home/georg/data/git/server/src/server/poll.c.func-sort-c.html new file mode 100644 index 0000000..25aab49 --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/server/poll.c.func-sort-c.html @@ -0,0 +1,92 @@ + + + + + + + LCOV - Code Coverage - /home/georg/data/git/server/src/server/poll.c - functions + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - home/georg/data/git/server/src/server - poll.c (source / functions)HitTotalCoverage
Test:Code CoverageLines:91850.0 %
Date:2012-03-28Functions:11100.0 %
Legend: Lines: + hit + not hit + | Branches: + + taken + - not taken + # not executed +Branches:00-
+
+ +
+ + + + + + + + + + +

Function Name Sort by function nameHit count Sort by hit count
serverPoll1223
+
+
+ + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/server/poll.c.func.html b/assets/html/coverage/home/georg/data/git/server/src/server/poll.c.func.html new file mode 100644 index 0000000..86d717e --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/server/poll.c.func.html @@ -0,0 +1,92 @@ + + + + + + + LCOV - Code Coverage - /home/georg/data/git/server/src/server/poll.c - functions + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - home/georg/data/git/server/src/server - poll.c (source / functions)HitTotalCoverage
Test:Code CoverageLines:91850.0 %
Date:2012-03-28Functions:11100.0 %
Legend: Lines: + hit + not hit + | Branches: + + taken + - not taken + # not executed +Branches:00-
+
+ +
+ + + + + + + + + + +

Function Name Sort by function nameHit count Sort by hit count
serverPoll1223
+
+
+ + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/server/poll.c.gcov.html b/assets/html/coverage/home/georg/data/git/server/src/server/poll.c.gcov.html new file mode 100644 index 0000000..c874564 --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/server/poll.c.gcov.html @@ -0,0 +1,172 @@ + + + + + + + LCOV - Code Coverage - /home/georg/data/git/server/src/server/poll.c + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - home/georg/data/git/server/src/server - poll.c (source / functions)HitTotalCoverage
Test:Code CoverageLines:91850.0 %
Date:2012-03-28Functions:11100.0 %
Legend: Lines: + hit + not hit + | Branches: + + taken + - not taken + # not executed +Branches:00-
+
+ + + + + + + + +

+
           Branch data     Line data    Source code
+
+       1                 :            : /**
+       2                 :            :  * \file
+       3                 :            :  *
+       4                 :            :  * \author      Georg Hopp
+       5                 :            :  *
+       6                 :            :  * \copyright
+       7                 :            :  * Copyright © 2012  Georg Hopp
+       8                 :            :  *
+       9                 :            :  * This program is free software: you can redistribute it and/or modify
+      10                 :            :  * it under the terms of the GNU General Public License as published by
+      11                 :            :  * the Free Software Foundation, either version 3 of the License, or
+      12                 :            :  * (at your option) any later version.
+      13                 :            :  *
+      14                 :            :  * This program is distributed in the hope that it will be useful,
+      15                 :            :  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+      16                 :            :  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+      17                 :            :  * GNU General Public License for more details.
+      18                 :            :  *
+      19                 :            :  * You should have received a copy of the GNU General Public License
+      20                 :            :  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+      21                 :            :  */
+      22                 :            : 
+      23                 :            : #include <poll.h>
+      24                 :            : #include <errno.h>
+      25                 :            : 
+      26                 :            : #include "server.h"
+      27                 :            : #include "logger.h"
+      28                 :            : 
+      29                 :            : #include "utils/signalHandling.h"
+      30                 :            : 
+      31                 :            : #define POLLFD(ptr)     ((struct pollfd *)(ptr))
+      32                 :            : 
+      33                 :            : int
+      34                 :       1223 : serverPoll(Server this) {
+      35                 :            :         int events;
+      36                 :            : 
+      37                 :            :         /**
+      38                 :            :          * put all closed fds to end of array in O(this->nfds)
+      39                 :            :          */
+      40                 :       1223 :         struct pollfd * fda = &(this->fds[2]);
+      41                 :       1223 :         struct pollfd * fdb = &(this->fds[this->nfds-1]);
+      42                 :            : 
+      43                 :       2445 :         while (fda <= fdb) {
+      44                 :       1222 :                 while (0 == fdb->fd && fda <= fdb) {
+      45                 :          0 :                         fdb--;
+      46                 :          0 :                         this->nfds--;
+      47                 :            :                 }
+      48                 :            : 
+      49                 :       2444 :                 while (0 != fda->fd && fda <= fdb) fda++;
+      50                 :            : 
+      51                 :       1222 :                 if (fda < fdb) {
+      52                 :          0 :                         memcpy(fda, fdb, sizeof(struct pollfd));
+      53                 :          0 :                         fdb--;
+      54                 :          0 :                         this->nfds--;
+      55                 :            :                 }
+      56                 :            :         }
+      57                 :            : 
+      58                 :            :         /*
+      59                 :            :          * wait for handles to become ready
+      60                 :            :          */
+      61                 :       1223 :         if (-1 == (events = poll(this->fds, this->nfds, -1))) {
+      62                 :          0 :                 switch (errno) {
+      63                 :            :                         default:
+      64                 :            :                         case EBADF:
+      65                 :            :                         case EINVAL:
+      66                 :            :                         case ENOMEM:
+      67                 :          0 :                                 doShutdown = 1;
+      68                 :            :                                 // DROP THROUGH
+      69                 :            : 
+      70                 :            :                         case EINTR:
+      71                 :          0 :                                 loggerLog(this->logger, LOGGER_CRIT,
+      72                 :            :                                                 "poll systemcall failed: [%s] - service terminated",
+      73                 :          0 :                                                 strerror(errno));
+      74                 :            :                 }
+      75                 :            :         }
+      76                 :            : 
+      77                 :       1223 :         return events;
+      78                 :            : }
+      79                 :            : 
+      80                 :            : // vim: set ts=4 sw=4:
+
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/server/read.c.func-sort-c.html b/assets/html/coverage/home/georg/data/git/server/src/server/read.c.func-sort-c.html new file mode 100644 index 0000000..244df6e --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/server/read.c.func-sort-c.html @@ -0,0 +1,92 @@ + + + + + + + LCOV - Code Coverage - /home/georg/data/git/server/src/server/read.c - functions + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - home/georg/data/git/server/src/server - read.c (source / functions)HitTotalCoverage
Test:Code CoverageLines:101758.8 %
Date:2012-03-28Functions:11100.0 %
Legend: Lines: + hit + not hit + | Branches: + + taken + - not taken + # not executed +Branches:00-
+
+ +
+ + + + + + + + + + +

Function Name Sort by function nameHit count Sort by hit count
serverRead1221
+
+
+ + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/server/read.c.func.html b/assets/html/coverage/home/georg/data/git/server/src/server/read.c.func.html new file mode 100644 index 0000000..5a58dbf --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/server/read.c.func.html @@ -0,0 +1,92 @@ + + + + + + + LCOV - Code Coverage - /home/georg/data/git/server/src/server/read.c - functions + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - home/georg/data/git/server/src/server - read.c (source / functions)HitTotalCoverage
Test:Code CoverageLines:101758.8 %
Date:2012-03-28Functions:11100.0 %
Legend: Lines: + hit + not hit + | Branches: + + taken + - not taken + # not executed +Branches:00-
+
+ +
+ + + + + + + + + + +

Function Name Sort by function nameHit count Sort by hit count
serverRead1221
+
+
+ + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/server/read.c.gcov.html b/assets/html/coverage/home/georg/data/git/server/src/server/read.c.gcov.html new file mode 100644 index 0000000..c7f873e --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/server/read.c.gcov.html @@ -0,0 +1,171 @@ + + + + + + + LCOV - Code Coverage - /home/georg/data/git/server/src/server/read.c + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - home/georg/data/git/server/src/server - read.c (source / functions)HitTotalCoverage
Test:Code CoverageLines:101758.8 %
Date:2012-03-28Functions:11100.0 %
Legend: Lines: + hit + not hit + | Branches: + + taken + - not taken + # not executed +Branches:00-
+
+ + + + + + + + +

+
           Branch data     Line data    Source code
+
+       1                 :            : /**
+       2                 :            :  * \file
+       3                 :            :  *
+       4                 :            :  * \author      Georg Hopp
+       5                 :            :  *
+       6                 :            :  * \copyright
+       7                 :            :  * Copyright © 2012  Georg Hopp
+       8                 :            :  *
+       9                 :            :  * This program is free software: you can redistribute it and/or modify
+      10                 :            :  * it under the terms of the GNU General Public License as published by
+      11                 :            :  * the Free Software Foundation, either version 3 of the License, or
+      12                 :            :  * (at your option) any later version.
+      13                 :            :  *
+      14                 :            :  * This program is distributed in the hope that it will be useful,
+      15                 :            :  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+      16                 :            :  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+      17                 :            :  * GNU General Public License for more details.
+      18                 :            :  *
+      19                 :            :  * You should have received a copy of the GNU General Public License
+      20                 :            :  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+      21                 :            :  */
+      22                 :            : 
+      23                 :            : #include "server.h"
+      24                 :            : #include "logger.h"
+      25                 :            : #include "stream.h"
+      26                 :            : 
+      27                 :            : void    serverCloseConn(Server, unsigned int);
+      28                 :            : 
+      29                 :            : ssize_t
+      30                 :       1221 : serverRead(Server this, unsigned int i)
+      31                 :            : {
+      32                 :       1221 :         int     fd = (this->fds)[i].fd;
+      33                 :            :         ssize_t size;
+      34                 :            : 
+      35                 :       1221 :         if (NULL == (this->conns)[fd].worker) {
+      36                 :          0 :                 loggerLog(
+      37                 :          0 :                                 this->logger,
+      38                 :            :                                 LOGGER_INFO,
+      39                 :            :                                 "initialization error: NULL reader");
+      40                 :          0 :                 return -1;
+      41                 :            :         }
+      42                 :            : 
+      43                 :       1221 :         switch ((size = streamReaderRead(
+      44                 :       1221 :                                         (this->conns)[fd].worker,
+      45                 :       1221 :                                         (this->conns)[fd].stream)))
+      46                 :            :         {
+      47                 :            :                 case -2:
+      48                 :            :                         /**
+      49                 :            :                          * normal close: this must be mapped to -2 within the
+      50                 :            :                          * underlying read call.
+      51                 :            :                          *
+      52                 :            :                          * \todo make sure all pending writes will be done before
+      53                 :            :                          * close.
+      54                 :            :                          */
+      55                 :            :                         // DROP-THROUGH
+      56                 :            : 
+      57                 :            :                 case -1: 
+      58                 :            :                         /*
+      59                 :            :                          * read failure / close connection
+      60                 :            :                          */
+      61                 :          0 :                         loggerLog(this->logger, LOGGER_INFO,
+      62                 :            :                                         "connection[%d] closed...%s",
+      63                 :            :                                         fd,
+      64                 :          0 :                                         inet_ntoa((((this->conns)[fd].sock)->addr).sin_addr));
+      65                 :          0 :                         serverCloseConn(this, i);
+      66                 :          0 :                         break;
+      67                 :            : 
+      68                 :            :                 case 0:
+      69                 :       1220 :                         break;
+      70                 :            : 
+      71                 :            :                 default:
+      72                 :          1 :                         (this->fds)[i].events |= POLLOUT;
+      73                 :          1 :                         break;
+      74                 :            :         }
+      75                 :            : 
+      76                 :       1221 :         return size;
+      77                 :            : }
+      78                 :            : 
+      79                 :            : // vim: set ts=4 sw=4:
+
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/server/run.c.func-sort-c.html b/assets/html/coverage/home/georg/data/git/server/src/server/run.c.func-sort-c.html new file mode 100644 index 0000000..5aced67 --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/server/run.c.func-sort-c.html @@ -0,0 +1,92 @@ + + + + + + + LCOV - Code Coverage - /home/georg/data/git/server/src/server/run.c - functions + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - home/georg/data/git/server/src/server - run.c (source / functions)HitTotalCoverage
Test:Code CoverageLines:232785.2 %
Date:2012-03-28Functions:11100.0 %
Legend: Lines: + hit + not hit + | Branches: + + taken + - not taken + # not executed +Branches:00-
+
+ +
+ + + + + + + + + + +

Function Name Sort by function nameHit count Sort by hit count
serverRun1
+
+
+ + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/server/run.c.func.html b/assets/html/coverage/home/georg/data/git/server/src/server/run.c.func.html new file mode 100644 index 0000000..a904c45 --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/server/run.c.func.html @@ -0,0 +1,92 @@ + + + + + + + LCOV - Code Coverage - /home/georg/data/git/server/src/server/run.c - functions + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - home/georg/data/git/server/src/server - run.c (source / functions)HitTotalCoverage
Test:Code CoverageLines:232785.2 %
Date:2012-03-28Functions:11100.0 %
Legend: Lines: + hit + not hit + | Branches: + + taken + - not taken + # not executed +Branches:00-
+
+ +
+ + + + + + + + + + +

Function Name Sort by function nameHit count Sort by hit count
serverRun1
+
+
+ + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/server/run.c.gcov.html b/assets/html/coverage/home/georg/data/git/server/src/server/run.c.gcov.html new file mode 100644 index 0000000..5b9870b --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/server/run.c.gcov.html @@ -0,0 +1,189 @@ + + + + + + + LCOV - Code Coverage - /home/georg/data/git/server/src/server/run.c + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - home/georg/data/git/server/src/server - run.c (source / functions)HitTotalCoverage
Test:Code CoverageLines:232785.2 %
Date:2012-03-28Functions:11100.0 %
Legend: Lines: + hit + not hit + | Branches: + + taken + - not taken + # not executed +Branches:00-
+
+ + + + + + + + +

+
           Branch data     Line data    Source code
+
+       1                 :            : /**
+       2                 :            :  * \file
+       3                 :            :  *
+       4                 :            :  * \author      Georg Hopp
+       5                 :            :  *
+       6                 :            :  * \copyright
+       7                 :            :  * Copyright © 2012  Georg Hopp
+       8                 :            :  *
+       9                 :            :  * This program is free software: you can redistribute it and/or modify
+      10                 :            :  * it under the terms of the GNU General Public License as published by
+      11                 :            :  * the Free Software Foundation, either version 3 of the License, or
+      12                 :            :  * (at your option) any later version.
+      13                 :            :  *
+      14                 :            :  * This program is distributed in the hope that it will be useful,
+      15                 :            :  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+      16                 :            :  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+      17                 :            :  * GNU General Public License for more details.
+      18                 :            :  *
+      19                 :            :  * You should have received a copy of the GNU General Public License
+      20                 :            :  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+      21                 :            :  */
+      22                 :            : 
+      23                 :            : #include "server.h"
+      24                 :            : #include "logger.h"
+      25                 :            : 
+      26                 :            : #include "utils/signalHandling.h"
+      27                 :            : 
+      28                 :            : int     serverPoll(Server);
+      29                 :            : int     serverHandleAccept(Server, unsigned int);
+      30                 :            : void    serverCloseConn(Server, unsigned int);
+      31                 :            : ssize_t serverRead(Server, unsigned int);
+      32                 :            : ssize_t serverWrite(Server, unsigned int);
+      33                 :            : 
+      34                 :            : void
+      35                 :          1 : serverRun(Server this)
+      36                 :            : {
+      37                 :          1 :     loggerLog(this->logger, LOGGER_INFO, "service started");
+      38                 :            : 
+      39                 :       1224 :     while (!doShutdown) //! until error or signal 
+      40                 :            :     {
+      41                 :            :                 int          events;
+      42                 :            :                 unsigned int i;
+      43                 :       1223 :                 int          naccs = 10;
+      44                 :            : 
+      45                 :       1223 :                 events = serverPoll(this);
+      46                 :       1223 :                 if (doShutdown || 0 >= events) break;
+      47                 :            : 
+      48                 :            :                 /**
+      49                 :            :                  * handle accept
+      50                 :            :                  */
+      51                 :       1223 :                 if (0 != ((this->fds)[0].revents & POLLIN)) {
+      52                 :          1 :                         events--;
+      53                 :          2 :                         while(-1 != serverHandleAccept(this, 0) && 0 < naccs) {
+      54                 :          1 :                                 naccs--;
+      55                 :            :                         }
+      56                 :            :                 }
+      57                 :            : 
+      58                 :            :                 /**
+      59                 :            :                  * handle accept SSL
+      60                 :            :                  */
+      61                 :       1223 :                 if (0 != ((this->fds)[1].revents & POLLIN)) {
+      62                 :          0 :                         events--;
+      63                 :          0 :                         while(-1 != serverHandleAccept(this, 1) && 0 < naccs) {
+      64                 :          0 :                                 naccs--;
+      65                 :            :                         }
+      66                 :            :                 }
+      67                 :            : 
+      68                 :       2446 :                 for (i=2; i < this->nfds; i++) {
+      69                 :       1223 :                         int nreads = 10, nwrites = 10;
+      70                 :            : 
+      71                 :            :                         /**
+      72                 :            :                          * handle reads 
+      73                 :            :                          */
+      74                 :       1223 :                         if (0 != ((this->fds)[i].revents & POLLIN) && 0 < nreads) {
+      75                 :       1221 :                                 events--;
+      76                 :       1221 :                                 nreads--;
+      77                 :            : 
+      78                 :       1221 :                                 serverRead(this, i);
+      79                 :            :                         }
+      80                 :            : 
+      81                 :            :                         /**
+      82                 :            :                          * handle writes
+      83                 :            :                          */
+      84                 :       1223 :                         if (0 != ((this->fds)[i].revents & POLLOUT) && 0 < nwrites) {
+      85                 :          1 :                                 events--;
+      86                 :          1 :                                 nwrites--;
+      87                 :            : 
+      88                 :          1 :                                 serverWrite(this, i);
+      89                 :            :                         }
+      90                 :            : 
+      91                 :       1223 :                         if (0 > events)
+      92                 :          0 :                                 break; // no more events to handle
+      93                 :            :                 }
+      94                 :            :     }
+      95                 :          1 : }
+      96                 :            : 
+      97                 :            : // vim: set ts=4 sw=4:
+
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/server/server.c.func-sort-c.html b/assets/html/coverage/home/georg/data/git/server/src/server/server.c.func-sort-c.html new file mode 100644 index 0000000..9576a62 --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/server/server.c.func-sort-c.html @@ -0,0 +1,100 @@ + + + + + + + LCOV - Code Coverage - /home/georg/data/git/server/src/server/server.c - functions + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - home/georg/data/git/server/src/server - server.c (source / functions)HitTotalCoverage
Test:Code CoverageLines:444597.8 %
Date:2012-03-28Functions:33100.0 %
Legend: Lines: + hit + not hit + | Branches: + + taken + - not taken + # not executed +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + +

Function Name Sort by function nameHit count Sort by hit count
serverDtor2
_classInitServer_1
serverCtor1
+
+
+ + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/server/server.c.func.html b/assets/html/coverage/home/georg/data/git/server/src/server/server.c.func.html new file mode 100644 index 0000000..99de5b6 --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/server/server.c.func.html @@ -0,0 +1,100 @@ + + + + + + + LCOV - Code Coverage - /home/georg/data/git/server/src/server/server.c - functions + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - home/georg/data/git/server/src/server - server.c (source / functions)HitTotalCoverage
Test:Code CoverageLines:444597.8 %
Date:2012-03-28Functions:33100.0 %
Legend: Lines: + hit + not hit + | Branches: + + taken + - not taken + # not executed +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + +

Function Name Sort by function nameHit count Sort by hit count
_classInitServer_1
serverCtor1
serverDtor2
+
+
+ + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/server/server.c.gcov.html b/assets/html/coverage/home/georg/data/git/server/src/server/server.c.gcov.html new file mode 100644 index 0000000..a4831aa --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/server/server.c.gcov.html @@ -0,0 +1,219 @@ + + + + + + + LCOV - Code Coverage - /home/georg/data/git/server/src/server/server.c + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - home/georg/data/git/server/src/server - server.c (source / functions)HitTotalCoverage
Test:Code CoverageLines:444597.8 %
Date:2012-03-28Functions:33100.0 %
Legend: Lines: + hit + not hit + | Branches: + + taken + - not taken + # not executed +Branches:00-
+
+ + + + + + + + +

+
           Branch data     Line data    Source code
+
+       1                 :            : /**
+       2                 :            :  * \file
+       3                 :            :  *
+       4                 :            :  * \author      Georg Hopp
+       5                 :            :  *
+       6                 :            :  * \copyright
+       7                 :            :  * Copyright © 2012  Georg Hopp
+       8                 :            :  *
+       9                 :            :  * This program is free software: you can redistribute it and/or modify
+      10                 :            :  * it under the terms of the GNU General Public License as published by
+      11                 :            :  * the Free Software Foundation, either version 3 of the License, or
+      12                 :            :  * (at your option) any later version.
+      13                 :            :  *
+      14                 :            :  * This program is distributed in the hope that it will be useful,
+      15                 :            :  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+      16                 :            :  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+      17                 :            :  * GNU General Public License for more details.
+      18                 :            :  *
+      19                 :            :  * You should have received a copy of the GNU General Public License
+      20                 :            :  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+      21                 :            :  */
+      22                 :            : 
+      23                 :            : #include <fcntl.h>
+      24                 :            : #include <unistd.h>
+      25                 :            : #include <stdlib.h>
+      26                 :            : 
+      27                 :            : #include <openssl/ssl.h>
+      28                 :            : #include <openssl/err.h>
+      29                 :            : 
+      30                 :            : #include "class.h"
+      31                 :            : #include "server.h"
+      32                 :            : #include "socket.h"
+      33                 :            : #include "logger.h"
+      34                 :            : 
+      35                 :            : #include "utils/memory.h"
+      36                 :            : 
+      37                 :            : 
+      38                 :            : void serverCloseConn(Server, unsigned int);
+      39                 :            : 
+      40                 :            : 
+      41                 :            : static
+      42                 :            : int
+      43                 :          1 : serverCtor(void * _this, va_list * params)
+      44                 :            : {
+      45                 :          1 :         Server       this = _this;
+      46                 :            :         in_port_t    port;
+      47                 :            :         unsigned int backlog;
+      48                 :            :         int          flags;
+      49                 :            : 
+      50                 :          1 :         this->max_fds = sysconf(_SC_OPEN_MAX);
+      51                 :          1 :         if (this->max_fds <= 10) {        // reserve 10 handles for internal use.
+      52                 :            :                 /**
+      53                 :            :                  * \todo some logging would be appropriate :)
+      54                 :            :                  */
+      55                 :          0 :                 return -1;
+      56                 :            :         }
+      57                 :          1 :         this->max_fds -= 10;
+      58                 :            : 
+      59                 :          1 :         this->logger = va_arg(* params, Logger);
+      60                 :          1 :         this->worker = va_arg(* params, void *);
+      61                 :          1 :         port         = va_arg(* params, int);
+      62                 :          1 :         backlog      = va_arg(* params, unsigned int);
+      63                 :            : 
+      64                 :          1 :         this->fds     = calloc(sizeof(struct pollfd), this->max_fds);
+      65                 :          1 :         this->conns   = calloc(sizeof(struct conns), this->max_fds);
+      66                 :            : 
+      67                 :          1 :         this->sock    = new(Sock, this->logger, port);
+      68                 :          1 :         flags = fcntl(this->sock->handle, F_GETFL, 0);
+      69                 :          1 :         fcntl(this->sock->handle, F_SETFL, flags | O_NONBLOCK);
+      70                 :            : 
+      71                 :          1 :         this->sockSSL = new(Sock, this->logger, port+1);
+      72                 :          1 :         flags = fcntl(this->sockSSL->handle, F_GETFL, 0);
+      73                 :          1 :         fcntl(this->sockSSL->handle, F_SETFL, flags | O_NONBLOCK);
+      74                 :            : 
+      75                 :          1 :         SSL_library_init();
+      76                 :          1 :         SSL_load_error_strings();
+      77                 :          1 :         this->ctx = SSL_CTX_new(SSLv23_server_method());
+      78                 :          1 :         SSL_CTX_use_certificate_file(
+      79                 :            :                         this->ctx,
+      80                 :            :                         "./certs/server.crt",
+      81                 :            :                         SSL_FILETYPE_PEM);
+      82                 :            : 
+      83                 :          1 :         SSL_CTX_use_RSAPrivateKey_file(
+      84                 :            :                         this->ctx,
+      85                 :            :                         "./certs/server.key",
+      86                 :            :                         SSL_FILETYPE_PEM);
+      87                 :            : 
+      88                 :          1 :         socketListen(this->sock, backlog);
+      89                 :          1 :         socketListen(this->sockSSL, backlog);
+      90                 :            : 
+      91                 :          1 :         (this->fds)[0].fd     = this->sock->handle;
+      92                 :          1 :         (this->fds)[0].events = POLLIN;
+      93                 :          1 :         (this->fds)[1].fd     = this->sockSSL->handle;
+      94                 :          1 :         (this->fds)[1].events = POLLIN;
+      95                 :          1 :         this->nfds = 2;
+      96                 :            : 
+      97                 :          1 :         return 0;
+      98                 :            : }
+      99                 :            : 
+     100                 :            : static
+     101                 :            : void
+     102                 :          2 : serverDtor(void * _this)
+     103                 :            : {
+     104                 :          2 :         Server this = _this;
+     105                 :            :     int    i;
+     106                 :            : 
+     107                 :          7 :     for (i=0; i<this->nfds; i++) {
+     108                 :          5 :                 if (this->sock->handle != (this->fds)[i].fd &&
+     109                 :          3 :                                 this->sockSSL->handle != (this->fds)[i].fd) {
+     110                 :          1 :                         serverCloseConn(this, i);
+     111                 :            :                 }
+     112                 :            :     }
+     113                 :            : 
+     114                 :          2 :         FREE(this->fds);
+     115                 :          2 :         FREE(this->conns);
+     116                 :            : 
+     117                 :          2 :         delete(this->sock);
+     118                 :          2 :         delete(this->sockSSL);
+     119                 :            : 
+     120                 :          2 :         SSL_CTX_free(this->ctx);
+     121                 :          2 :         ERR_free_strings();
+     122                 :          2 : }
+     123                 :            : 
+     124                 :            : INIT_IFACE(Class, serverCtor, serverDtor, NULL);
+     125                 :          1 : CREATE_CLASS(Server, NULL, IFACE(Class));
+     126                 :            : 
+     127                 :            : // vim: set ts=4 sw=4:
+
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/server/write.c.func-sort-c.html b/assets/html/coverage/home/georg/data/git/server/src/server/write.c.func-sort-c.html new file mode 100644 index 0000000..2182923 --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/server/write.c.func-sort-c.html @@ -0,0 +1,92 @@ + + + + + + + LCOV - Code Coverage - /home/georg/data/git/server/src/server/write.c - functions + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - home/georg/data/git/server/src/server - write.c (source / functions)HitTotalCoverage
Test:Code CoverageLines:101662.5 %
Date:2012-03-28Functions:11100.0 %
Legend: Lines: + hit + not hit + | Branches: + + taken + - not taken + # not executed +Branches:00-
+
+ +
+ + + + + + + + + + +

Function Name Sort by function nameHit count Sort by hit count
serverWrite1
+
+
+ + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/server/write.c.func.html b/assets/html/coverage/home/georg/data/git/server/src/server/write.c.func.html new file mode 100644 index 0000000..1c09a8d --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/server/write.c.func.html @@ -0,0 +1,92 @@ + + + + + + + LCOV - Code Coverage - /home/georg/data/git/server/src/server/write.c - functions + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - home/georg/data/git/server/src/server - write.c (source / functions)HitTotalCoverage
Test:Code CoverageLines:101662.5 %
Date:2012-03-28Functions:11100.0 %
Legend: Lines: + hit + not hit + | Branches: + + taken + - not taken + # not executed +Branches:00-
+
+ +
+ + + + + + + + + + +

Function Name Sort by function nameHit count Sort by hit count
serverWrite1
+
+
+ + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/server/write.c.gcov.html b/assets/html/coverage/home/georg/data/git/server/src/server/write.c.gcov.html new file mode 100644 index 0000000..09eaebb --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/server/write.c.gcov.html @@ -0,0 +1,155 @@ + + + + + + + LCOV - Code Coverage - /home/georg/data/git/server/src/server/write.c + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - home/georg/data/git/server/src/server - write.c (source / functions)HitTotalCoverage
Test:Code CoverageLines:101662.5 %
Date:2012-03-28Functions:11100.0 %
Legend: Lines: + hit + not hit + | Branches: + + taken + - not taken + # not executed +Branches:00-
+
+ + + + + + + + +

+
           Branch data     Line data    Source code
+
+       1                 :            : /**
+       2                 :            :  * \file
+       3                 :            :  *
+       4                 :            :  * \author      Georg Hopp
+       5                 :            :  *
+       6                 :            :  * \copyright
+       7                 :            :  * Copyright © 2012  Georg Hopp
+       8                 :            :  *
+       9                 :            :  * This program is free software: you can redistribute it and/or modify
+      10                 :            :  * it under the terms of the GNU General Public License as published by
+      11                 :            :  * the Free Software Foundation, either version 3 of the License, or
+      12                 :            :  * (at your option) any later version.
+      13                 :            :  *
+      14                 :            :  * This program is distributed in the hope that it will be useful,
+      15                 :            :  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+      16                 :            :  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+      17                 :            :  * GNU General Public License for more details.
+      18                 :            :  *
+      19                 :            :  * You should have received a copy of the GNU General Public License
+      20                 :            :  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+      21                 :            :  */
+      22                 :            : 
+      23                 :            : #include "server.h"
+      24                 :            : #include "logger.h"
+      25                 :            : #include "stream.h"
+      26                 :            : 
+      27                 :            : void serverCloseConn(Server, unsigned int);
+      28                 :            : 
+      29                 :            : ssize_t
+      30                 :          1 : serverWrite(Server this, unsigned int i)
+      31                 :            : {
+      32                 :          1 :         int     fd = (this->fds)[i].fd;
+      33                 :            :         ssize_t remaining;
+      34                 :            : 
+      35                 :          1 :         if (NULL == (this->conns)[fd].worker) {
+      36                 :          0 :                 loggerLog(
+      37                 :          0 :                                 this->logger,
+      38                 :            :                                 LOGGER_INFO,
+      39                 :            :                                 "initialization error: NULL worker");
+      40                 :          0 :                 return -1;
+      41                 :            :         }
+      42                 :            : 
+      43                 :          1 :         remaining = streamWriterWrite(
+      44                 :          1 :                         (this->conns)[fd].worker,
+      45                 :          1 :                         (this->conns)[fd].stream);
+      46                 :            : 
+      47                 :          1 :         switch(remaining) {
+      48                 :            :                 case -1:
+      49                 :          0 :                         serverCloseConn(this, i);
+      50                 :          0 :                         break;
+      51                 :            : 
+      52                 :            :                 case 0:
+      53                 :          1 :                         (this->fds)[i].events &= ~POLLOUT;
+      54                 :          1 :                         break;
+      55                 :            : 
+      56                 :            :                 default:
+      57                 :          0 :                         break;
+      58                 :            :         }
+      59                 :            : 
+      60                 :          1 :         return remaining;
+      61                 :            : }
+      62                 :            : 
+      63                 :            : // vim: set ts=4 sw=4:
+
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/socket/accept.c.func-sort-c.html b/assets/html/coverage/home/georg/data/git/server/src/socket/accept.c.func-sort-c.html new file mode 100644 index 0000000..5388998 --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/socket/accept.c.func-sort-c.html @@ -0,0 +1,92 @@ + + + + + + + LCOV - Code Coverage - /home/georg/data/git/server/src/socket/accept.c - functions + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - home/georg/data/git/server/src/socket - accept.c (source / functions)HitTotalCoverage
Test:Code CoverageLines:1010100.0 %
Date:2012-03-28Functions:11100.0 %
Legend: Lines: + hit + not hit + | Branches: + + taken + - not taken + # not executed +Branches:00-
+
+ +
+ + + + + + + + + + +

Function Name Sort by function nameHit count Sort by hit count
socketAccept3
+
+
+ + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/socket/accept.c.func.html b/assets/html/coverage/home/georg/data/git/server/src/socket/accept.c.func.html new file mode 100644 index 0000000..0d7ea55 --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/socket/accept.c.func.html @@ -0,0 +1,92 @@ + + + + + + + LCOV - Code Coverage - /home/georg/data/git/server/src/socket/accept.c - functions + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - home/georg/data/git/server/src/socket - accept.c (source / functions)HitTotalCoverage
Test:Code CoverageLines:1010100.0 %
Date:2012-03-28Functions:11100.0 %
Legend: Lines: + hit + not hit + | Branches: + + taken + - not taken + # not executed +Branches:00-
+
+ +
+ + + + + + + + + + +

Function Name Sort by function nameHit count Sort by hit count
socketAccept3
+
+
+ + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/socket/accept.c.gcov.html b/assets/html/coverage/home/georg/data/git/server/src/socket/accept.c.gcov.html new file mode 100644 index 0000000..e5cbdf7 --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/socket/accept.c.gcov.html @@ -0,0 +1,155 @@ + + + + + + + LCOV - Code Coverage - /home/georg/data/git/server/src/socket/accept.c + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - home/georg/data/git/server/src/socket - accept.c (source / functions)HitTotalCoverage
Test:Code CoverageLines:1010100.0 %
Date:2012-03-28Functions:11100.0 %
Legend: Lines: + hit + not hit + | Branches: + + taken + - not taken + # not executed +Branches:00-
+
+ + + + + + + + +

+
           Branch data     Line data    Source code
+
+       1                 :            : /**
+       2                 :            :  * \file
+       3                 :            :  *
+       4                 :            :  * \author      Georg Hopp
+       5                 :            :  *
+       6                 :            :  * \copyright
+       7                 :            :  * Copyright © 2012  Georg Hopp
+       8                 :            :  *
+       9                 :            :  * This program is free software: you can redistribute it and/or modify
+      10                 :            :  * it under the terms of the GNU General Public License as published by
+      11                 :            :  * the Free Software Foundation, either version 3 of the License, or
+      12                 :            :  * (at your option) any later version.
+      13                 :            :  *
+      14                 :            :  * This program is distributed in the hope that it will be useful,
+      15                 :            :  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+      16                 :            :  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+      17                 :            :  * GNU General Public License for more details.
+      18                 :            :  *
+      19                 :            :  * You should have received a copy of the GNU General Public License
+      20                 :            :  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+      21                 :            :  */
+      22                 :            : 
+      23                 :            : #include <errno.h>      // for errno
+      24                 :            : #include <unistd.h>
+      25                 :            : 
+      26                 :            : #include "socket.h"
+      27                 :            : #include "class.h"
+      28                 :            : #include "logger.h"
+      29                 :            : 
+      30                 :            : Sock
+      31                 :          3 : socketAccept(Sock this, char (*remoteAddr)[16])
+      32                 :            : {
+      33                 :            :     Sock         sock;   // Socket for client
+      34                 :            :     unsigned int len;    // Length of client address data structure
+      35                 :            : 
+      36                 :            :     // Set the size of the in-out parameter
+      37                 :          3 :     len = sizeof(this->addr);
+      38                 :            : 
+      39                 :            :         /**
+      40                 :            :          * \todo Uhh, this is bad. we open a new socket additionally to
+      41                 :            :          * the one we get from the accept call.
+      42                 :            :          * i have to change the socket constructor to be able to create
+      43                 :            :          * the data structure without creation of a socket at all.
+      44                 :            :          * For now i simply close the socket here.... :D
+      45                 :            :          */
+      46                 :          3 :         sock = new(Sock, this->log, -1);
+      47                 :            : 
+      48                 :            :     // Wait for a client to connect
+      49                 :          3 :     sock->handle = accept(this->handle, (struct sockaddr *) &(sock->addr), &len);
+      50                 :          3 :     if (-1 == sock->handle) {
+      51                 :          1 :         loggerLog(this->log, LOGGER_WARNING,
+      52                 :          1 :                 "error accepting connection: %s", strerror(errno));
+      53                 :            :     } else {
+      54                 :          2 :                 strcpy(*remoteAddr, inet_ntoa((sock->addr).sin_addr));
+      55                 :            : 
+      56                 :          2 :         loggerLog(this->log, LOGGER_INFO,
+      57                 :            :                                 "handling client %s\n", inet_ntoa((sock->addr).sin_addr));
+      58                 :            :     }
+      59                 :            : 
+      60                 :          3 :     return sock;
+      61                 :            : }
+      62                 :            : 
+      63                 :            : // vim: set ts=4 sw=4:
+
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/socket/connect.c.func-sort-c.html b/assets/html/coverage/home/georg/data/git/server/src/socket/connect.c.func-sort-c.html new file mode 100644 index 0000000..c2e48c7 --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/socket/connect.c.func-sort-c.html @@ -0,0 +1,92 @@ + + + + + + + LCOV - Code Coverage - /home/georg/data/git/server/src/socket/connect.c - functions + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - home/georg/data/git/server/src/socket - connect.c (source / functions)HitTotalCoverage
Test:Code CoverageLines:91275.0 %
Date:2012-03-28Functions:11100.0 %
Legend: Lines: + hit + not hit + | Branches: + + taken + - not taken + # not executed +Branches:00-
+
+ +
+ + + + + + + + + + +

Function Name Sort by function nameHit count Sort by hit count
socketConnect2
+
+
+ + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/socket/connect.c.func.html b/assets/html/coverage/home/georg/data/git/server/src/socket/connect.c.func.html new file mode 100644 index 0000000..3d63079 --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/socket/connect.c.func.html @@ -0,0 +1,92 @@ + + + + + + + LCOV - Code Coverage - /home/georg/data/git/server/src/socket/connect.c - functions + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - home/georg/data/git/server/src/socket - connect.c (source / functions)HitTotalCoverage
Test:Code CoverageLines:91275.0 %
Date:2012-03-28Functions:11100.0 %
Legend: Lines: + hit + not hit + | Branches: + + taken + - not taken + # not executed +Branches:00-
+
+ +
+ + + + + + + + + + +

Function Name Sort by function nameHit count Sort by hit count
socketConnect2
+
+
+ + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/socket/connect.c.gcov.html b/assets/html/coverage/home/georg/data/git/server/src/socket/connect.c.gcov.html new file mode 100644 index 0000000..eb58d8f --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/socket/connect.c.gcov.html @@ -0,0 +1,147 @@ + + + + + + + LCOV - Code Coverage - /home/georg/data/git/server/src/socket/connect.c + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - home/georg/data/git/server/src/socket - connect.c (source / functions)HitTotalCoverage
Test:Code CoverageLines:91275.0 %
Date:2012-03-28Functions:11100.0 %
Legend: Lines: + hit + not hit + | Branches: + + taken + - not taken + # not executed +Branches:00-
+
+ + + + + + + + +

+
           Branch data     Line data    Source code
+
+       1                 :            : /**
+       2                 :            :  * \file
+       3                 :            :  *
+       4                 :            :  * \author      Georg Hopp
+       5                 :            :  *
+       6                 :            :  * \copyright
+       7                 :            :  * Copyright © 2012  Georg Hopp
+       8                 :            :  *
+       9                 :            :  * This program is free software: you can redistribute it and/or modify
+      10                 :            :  * it under the terms of the GNU General Public License as published by
+      11                 :            :  * the Free Software Foundation, either version 3 of the License, or
+      12                 :            :  * (at your option) any later version.
+      13                 :            :  *
+      14                 :            :  * This program is distributed in the hope that it will be useful,
+      15                 :            :  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+      16                 :            :  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+      17                 :            :  * GNU General Public License for more details.
+      18                 :            :  *
+      19                 :            :  * You should have received a copy of the GNU General Public License
+      20                 :            :  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+      21                 :            :  */
+      22                 :            : 
+      23                 :            : #include <stdlib.h>     // for atoi() and exit()
+      24                 :            : #include <errno.h>      // for errno
+      25                 :            : 
+      26                 :            : #include "socket.h"
+      27                 :            : #include "class.h"
+      28                 :            : #include "logger.h"
+      29                 :            : 
+      30                 :            : 
+      31                 :            : void
+      32                 :          2 : socketConnect(Sock this, const char * addr, char (*remoteAddr)[16])
+      33                 :            : {
+      34                 :          2 :         inet_pton(AF_INET, addr, &((this->addr).sin_addr));
+      35                 :          2 :     (this->addr).sin_family = AF_INET;           // Internet address family
+      36                 :          2 :     (this->addr).sin_port   = htons(this->port); // Local port
+      37                 :            : 
+      38                 :          2 :         if (-1 == connect(
+      39                 :            :                                 this->handle,
+      40                 :          2 :                                 (struct sockaddr*) &(this->addr),
+      41                 :            :                                 sizeof(this->addr)))
+      42                 :            :         {
+      43                 :          0 :         loggerLog(this->log, LOGGER_CRIT,
+      44                 :            :                 "error connection socket: %s - service terminated",
+      45                 :          0 :                 strerror(errno));
+      46                 :          0 :         exit(EXIT_FAILURE);
+      47                 :            :     } else {
+      48                 :          2 :                 strcpy(*remoteAddr, inet_ntoa((this->addr).sin_addr));
+      49                 :            : 
+      50                 :          2 :         loggerLog(this->log, LOGGER_INFO,
+      51                 :            :                                 "handling connection %s\n", inet_ntoa((this->addr).sin_addr));
+      52                 :            :     }
+      53                 :          2 : }
+      54                 :            : 
+      55                 :            : // vim: set ts=4 sw=4:
+
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/socket/index-detail-sort-b.html b/assets/html/coverage/home/georg/data/git/server/src/socket/index-detail-sort-b.html new file mode 100644 index 0000000..83ffe45 --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/socket/index-detail-sort-b.html @@ -0,0 +1,187 @@ + + + + + + + LCOV - Code Coverage/home/georg/data/git/server/src/socket + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - /home/georg/data/git/server/src/socketHitTotalCoverage
Test:Code CoverageLines:445678.6 %
Date:2012-03-28Functions:66100.0 %
Legend: Rating: + low: < 75 % + medium: >= 75 % + high: >= 90 % +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Filename Sort by nameLine Coverage ( hide details ) Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
socket.c +
85.7%85.7%
+
85.7 %18 / 21100.0 %3 / 3-0 / 0
<unnamed>85.7 %18 / 21100.0 %3 / 3-0 / 0
listen.c +
53.8%53.8%
+
53.8 %7 / 13100.0 %1 / 1-0 / 0
<unnamed>53.8 %7 / 13100.0 %1 / 1-0 / 0
accept.c +
100.0%
+
100.0 %10 / 10100.0 %1 / 1-0 / 0
<unnamed>100.0 %10 / 10100.0 %1 / 1-0 / 0
connect.c +
75.0%75.0%
+
75.0 %9 / 12100.0 %1 / 1-0 / 0
<unnamed>75.0 %9 / 12100.0 %1 / 1-0 / 0
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/socket/index-detail-sort-f.html b/assets/html/coverage/home/georg/data/git/server/src/socket/index-detail-sort-f.html new file mode 100644 index 0000000..88de476 --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/socket/index-detail-sort-f.html @@ -0,0 +1,187 @@ + + + + + + + LCOV - Code Coverage/home/georg/data/git/server/src/socket + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - /home/georg/data/git/server/src/socketHitTotalCoverage
Test:Code CoverageLines:445678.6 %
Date:2012-03-28Functions:66100.0 %
Legend: Rating: + low: < 75 % + medium: >= 75 % + high: >= 90 % +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Filename Sort by nameLine Coverage ( hide details ) Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
listen.c +
53.8%53.8%
+
53.8 %7 / 13100.0 %1 / 1-0 / 0
<unnamed>53.8 %7 / 13100.0 %1 / 1-0 / 0
accept.c +
100.0%
+
100.0 %10 / 10100.0 %1 / 1-0 / 0
<unnamed>100.0 %10 / 10100.0 %1 / 1-0 / 0
connect.c +
75.0%75.0%
+
75.0 %9 / 12100.0 %1 / 1-0 / 0
<unnamed>75.0 %9 / 12100.0 %1 / 1-0 / 0
socket.c +
85.7%85.7%
+
85.7 %18 / 21100.0 %3 / 3-0 / 0
<unnamed>85.7 %18 / 21100.0 %3 / 3-0 / 0
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/socket/index-detail-sort-l.html b/assets/html/coverage/home/georg/data/git/server/src/socket/index-detail-sort-l.html new file mode 100644 index 0000000..05d83e5 --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/socket/index-detail-sort-l.html @@ -0,0 +1,187 @@ + + + + + + + LCOV - Code Coverage/home/georg/data/git/server/src/socket + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - /home/georg/data/git/server/src/socketHitTotalCoverage
Test:Code CoverageLines:445678.6 %
Date:2012-03-28Functions:66100.0 %
Legend: Rating: + low: < 75 % + medium: >= 75 % + high: >= 90 % +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Filename Sort by nameLine Coverage ( hide details ) Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
listen.c +
53.8%53.8%
+
53.8 %7 / 13100.0 %1 / 1-0 / 0
<unnamed>53.8 %7 / 13100.0 %1 / 1-0 / 0
connect.c +
75.0%75.0%
+
75.0 %9 / 12100.0 %1 / 1-0 / 0
<unnamed>75.0 %9 / 12100.0 %1 / 1-0 / 0
socket.c +
85.7%85.7%
+
85.7 %18 / 21100.0 %3 / 3-0 / 0
<unnamed>85.7 %18 / 21100.0 %3 / 3-0 / 0
accept.c +
100.0%
+
100.0 %10 / 10100.0 %1 / 1-0 / 0
<unnamed>100.0 %10 / 10100.0 %1 / 1-0 / 0
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/socket/index-detail.html b/assets/html/coverage/home/georg/data/git/server/src/socket/index-detail.html new file mode 100644 index 0000000..2586bd3 --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/socket/index-detail.html @@ -0,0 +1,187 @@ + + + + + + + LCOV - Code Coverage/home/georg/data/git/server/src/socket + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - /home/georg/data/git/server/src/socketHitTotalCoverage
Test:Code CoverageLines:445678.6 %
Date:2012-03-28Functions:66100.0 %
Legend: Rating: + low: < 75 % + medium: >= 75 % + high: >= 90 % +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Filename Sort by nameLine Coverage ( hide details ) Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
accept.c +
100.0%
+
100.0 %10 / 10100.0 %1 / 1-0 / 0
<unnamed>100.0 %10 / 10100.0 %1 / 1-0 / 0
connect.c +
75.0%75.0%
+
75.0 %9 / 12100.0 %1 / 1-0 / 0
<unnamed>75.0 %9 / 12100.0 %1 / 1-0 / 0
listen.c +
53.8%53.8%
+
53.8 %7 / 13100.0 %1 / 1-0 / 0
<unnamed>53.8 %7 / 13100.0 %1 / 1-0 / 0
socket.c +
85.7%85.7%
+
85.7 %18 / 21100.0 %3 / 3-0 / 0
<unnamed>85.7 %18 / 21100.0 %3 / 3-0 / 0
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/socket/index-sort-b.html b/assets/html/coverage/home/georg/data/git/server/src/socket/index-sort-b.html new file mode 100644 index 0000000..9830fed --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/socket/index-sort-b.html @@ -0,0 +1,147 @@ + + + + + + + LCOV - Code Coverage/home/georg/data/git/server/src/socket + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - /home/georg/data/git/server/src/socketHitTotalCoverage
Test:Code CoverageLines:445678.6 %
Date:2012-03-28Functions:66100.0 %
Legend: Rating: + low: < 75 % + medium: >= 75 % + high: >= 90 % +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Filename Sort by nameLine Coverage ( show details ) Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
socket.c +
85.7%85.7%
+
85.7 %18 / 21100.0 %3 / 3-0 / 0
listen.c +
53.8%53.8%
+
53.8 %7 / 13100.0 %1 / 1-0 / 0
accept.c +
100.0%
+
100.0 %10 / 10100.0 %1 / 1-0 / 0
connect.c +
75.0%75.0%
+
75.0 %9 / 12100.0 %1 / 1-0 / 0
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/socket/index-sort-f.html b/assets/html/coverage/home/georg/data/git/server/src/socket/index-sort-f.html new file mode 100644 index 0000000..fee9220 --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/socket/index-sort-f.html @@ -0,0 +1,147 @@ + + + + + + + LCOV - Code Coverage/home/georg/data/git/server/src/socket + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - /home/georg/data/git/server/src/socketHitTotalCoverage
Test:Code CoverageLines:445678.6 %
Date:2012-03-28Functions:66100.0 %
Legend: Rating: + low: < 75 % + medium: >= 75 % + high: >= 90 % +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Filename Sort by nameLine Coverage ( show details ) Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
listen.c +
53.8%53.8%
+
53.8 %7 / 13100.0 %1 / 1-0 / 0
accept.c +
100.0%
+
100.0 %10 / 10100.0 %1 / 1-0 / 0
connect.c +
75.0%75.0%
+
75.0 %9 / 12100.0 %1 / 1-0 / 0
socket.c +
85.7%85.7%
+
85.7 %18 / 21100.0 %3 / 3-0 / 0
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/socket/index-sort-l.html b/assets/html/coverage/home/georg/data/git/server/src/socket/index-sort-l.html new file mode 100644 index 0000000..229d435 --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/socket/index-sort-l.html @@ -0,0 +1,147 @@ + + + + + + + LCOV - Code Coverage/home/georg/data/git/server/src/socket + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - /home/georg/data/git/server/src/socketHitTotalCoverage
Test:Code CoverageLines:445678.6 %
Date:2012-03-28Functions:66100.0 %
Legend: Rating: + low: < 75 % + medium: >= 75 % + high: >= 90 % +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Filename Sort by nameLine Coverage ( show details ) Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
listen.c +
53.8%53.8%
+
53.8 %7 / 13100.0 %1 / 1-0 / 0
connect.c +
75.0%75.0%
+
75.0 %9 / 12100.0 %1 / 1-0 / 0
socket.c +
85.7%85.7%
+
85.7 %18 / 21100.0 %3 / 3-0 / 0
accept.c +
100.0%
+
100.0 %10 / 10100.0 %1 / 1-0 / 0
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/socket/index.html b/assets/html/coverage/home/georg/data/git/server/src/socket/index.html new file mode 100644 index 0000000..3d9b62c --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/socket/index.html @@ -0,0 +1,147 @@ + + + + + + + LCOV - Code Coverage/home/georg/data/git/server/src/socket + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - /home/georg/data/git/server/src/socketHitTotalCoverage
Test:Code CoverageLines:445678.6 %
Date:2012-03-28Functions:66100.0 %
Legend: Rating: + low: < 75 % + medium: >= 75 % + high: >= 90 % +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Filename Sort by nameLine Coverage ( show details ) Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
accept.c +
100.0%
+
100.0 %10 / 10100.0 %1 / 1-0 / 0
connect.c +
75.0%75.0%
+
75.0 %9 / 12100.0 %1 / 1-0 / 0
listen.c +
53.8%53.8%
+
53.8 %7 / 13100.0 %1 / 1-0 / 0
socket.c +
85.7%85.7%
+
85.7 %18 / 21100.0 %3 / 3-0 / 0
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/socket/listen.c.func-sort-c.html b/assets/html/coverage/home/georg/data/git/server/src/socket/listen.c.func-sort-c.html new file mode 100644 index 0000000..770b7fd --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/socket/listen.c.func-sort-c.html @@ -0,0 +1,92 @@ + + + + + + + LCOV - Code Coverage - /home/georg/data/git/server/src/socket/listen.c - functions + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - home/georg/data/git/server/src/socket - listen.c (source / functions)HitTotalCoverage
Test:Code CoverageLines:71353.8 %
Date:2012-03-28Functions:11100.0 %
Legend: Lines: + hit + not hit + | Branches: + + taken + - not taken + # not executed +Branches:00-
+
+ +
+ + + + + + + + + + +

Function Name Sort by function nameHit count Sort by hit count
socketListen4
+
+
+ + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/socket/listen.c.func.html b/assets/html/coverage/home/georg/data/git/server/src/socket/listen.c.func.html new file mode 100644 index 0000000..a3dec5a --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/socket/listen.c.func.html @@ -0,0 +1,92 @@ + + + + + + + LCOV - Code Coverage - /home/georg/data/git/server/src/socket/listen.c - functions + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - home/georg/data/git/server/src/socket - listen.c (source / functions)HitTotalCoverage
Test:Code CoverageLines:71353.8 %
Date:2012-03-28Functions:11100.0 %
Legend: Lines: + hit + not hit + | Branches: + + taken + - not taken + # not executed +Branches:00-
+
+ +
+ + + + + + + + + + +

Function Name Sort by function nameHit count Sort by hit count
socketListen4
+
+
+ + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/socket/listen.c.gcov.html b/assets/html/coverage/home/georg/data/git/server/src/socket/listen.c.gcov.html new file mode 100644 index 0000000..9f6bd54 --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/socket/listen.c.gcov.html @@ -0,0 +1,151 @@ + + + + + + + LCOV - Code Coverage - /home/georg/data/git/server/src/socket/listen.c + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - home/georg/data/git/server/src/socket - listen.c (source / functions)HitTotalCoverage
Test:Code CoverageLines:71353.8 %
Date:2012-03-28Functions:11100.0 %
Legend: Lines: + hit + not hit + | Branches: + + taken + - not taken + # not executed +Branches:00-
+
+ + + + + + + + +

+
           Branch data     Line data    Source code
+
+       1                 :            : /**
+       2                 :            :  * \file
+       3                 :            :  *
+       4                 :            :  * \author      Georg Hopp
+       5                 :            :  *
+       6                 :            :  * \copyright
+       7                 :            :  * Copyright © 2012  Georg Hopp
+       8                 :            :  *
+       9                 :            :  * This program is free software: you can redistribute it and/or modify
+      10                 :            :  * it under the terms of the GNU General Public License as published by
+      11                 :            :  * the Free Software Foundation, either version 3 of the License, or
+      12                 :            :  * (at your option) any later version.
+      13                 :            :  *
+      14                 :            :  * This program is distributed in the hope that it will be useful,
+      15                 :            :  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+      16                 :            :  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+      17                 :            :  * GNU General Public License for more details.
+      18                 :            :  *
+      19                 :            :  * You should have received a copy of the GNU General Public License
+      20                 :            :  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+      21                 :            :  */
+      22                 :            : 
+      23                 :            : #include <stdlib.h>     // for atoi() and exit()
+      24                 :            : #include <errno.h>      // for errno
+      25                 :            : 
+      26                 :            : #include "socket.h"
+      27                 :            : #include "class.h"
+      28                 :            : #include "logger.h"
+      29                 :            : 
+      30                 :            : 
+      31                 :            : void
+      32                 :          4 : socketListen(Sock this, int backlog)
+      33                 :            : {
+      34                 :          4 :     (this->addr).sin_family      = AF_INET;           // Internet address family
+      35                 :          4 :     (this->addr).sin_addr.s_addr = htonl(INADDR_ANY); // Any incoming interface
+      36                 :          4 :     (this->addr).sin_port        = htons(this->port); // Local port
+      37                 :            : 
+      38                 :            :         /**
+      39                 :            :      * Bind to the local address
+      40                 :            :          */
+      41                 :          4 :     if (-1 == bind(this->handle, (struct sockaddr *) &(this->addr), sizeof(this->addr))) {
+      42                 :          0 :         loggerLog(this->log, LOGGER_CRIT,
+      43                 :            :                 "error binding socket: %s - service terminated",
+      44                 :          0 :                 strerror(errno));
+      45                 :          0 :         exit(EXIT_FAILURE);
+      46                 :            :     }
+      47                 :            : 
+      48                 :            :         /**
+      49                 :            :      * Mark the socket so it will listen for incoming connections
+      50                 :            :          */
+      51                 :          4 :     if (-1 == listen(this->handle, backlog)) {
+      52                 :          0 :         loggerLog(this->log, LOGGER_CRIT,
+      53                 :            :                 "error binding socket: %s - service terminated",
+      54                 :          0 :                 strerror(errno));
+      55                 :          0 :         exit(EXIT_FAILURE);
+      56                 :            :     }
+      57                 :          4 : }
+      58                 :            : 
+      59                 :            : // vim: set ts=4 sw=4:
+
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/socket/socket.c.func-sort-c.html b/assets/html/coverage/home/georg/data/git/server/src/socket/socket.c.func-sort-c.html new file mode 100644 index 0000000..b0c7eef --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/socket/socket.c.func-sort-c.html @@ -0,0 +1,100 @@ + + + + + + + LCOV - Code Coverage - /home/georg/data/git/server/src/socket/socket.c - functions + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - home/georg/data/git/server/src/socket - socket.c (source / functions)HitTotalCoverage
Test:Code CoverageLines:182185.7 %
Date:2012-03-28Functions:33100.0 %
Legend: Lines: + hit + not hit + | Branches: + + taken + - not taken + # not executed +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + +

Function Name Sort by function nameHit count Sort by hit count
socketDtor12
socketCtor9
_classInitSock_2
+
+
+ + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/socket/socket.c.func.html b/assets/html/coverage/home/georg/data/git/server/src/socket/socket.c.func.html new file mode 100644 index 0000000..bc2494f --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/socket/socket.c.func.html @@ -0,0 +1,100 @@ + + + + + + + LCOV - Code Coverage - /home/georg/data/git/server/src/socket/socket.c - functions + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - home/georg/data/git/server/src/socket - socket.c (source / functions)HitTotalCoverage
Test:Code CoverageLines:182185.7 %
Date:2012-03-28Functions:33100.0 %
Legend: Lines: + hit + not hit + | Branches: + + taken + - not taken + # not executed +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + +

Function Name Sort by function nameHit count Sort by hit count
_classInitSock_2
socketCtor9
socketDtor12
+
+
+ + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/socket/socket.c.gcov.html b/assets/html/coverage/home/georg/data/git/server/src/socket/socket.c.gcov.html new file mode 100644 index 0000000..2f6e85f --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/socket/socket.c.gcov.html @@ -0,0 +1,170 @@ + + + + + + + LCOV - Code Coverage - /home/georg/data/git/server/src/socket/socket.c + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - home/georg/data/git/server/src/socket - socket.c (source / functions)HitTotalCoverage
Test:Code CoverageLines:182185.7 %
Date:2012-03-28Functions:33100.0 %
Legend: Lines: + hit + not hit + | Branches: + + taken + - not taken + # not executed +Branches:00-
+
+ + + + + + + + +

+
           Branch data     Line data    Source code
+
+       1                 :            : /**
+       2                 :            :  * \file
+       3                 :            :  *
+       4                 :            :  * \author      Georg Hopp
+       5                 :            :  *
+       6                 :            :  * \copyright
+       7                 :            :  * Copyright © 2012  Georg Hopp
+       8                 :            :  *
+       9                 :            :  * This program is free software: you can redistribute it and/or modify
+      10                 :            :  * it under the terms of the GNU General Public License as published by
+      11                 :            :  * the Free Software Foundation, either version 3 of the License, or
+      12                 :            :  * (at your option) any later version.
+      13                 :            :  *
+      14                 :            :  * This program is distributed in the hope that it will be useful,
+      15                 :            :  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+      16                 :            :  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+      17                 :            :  * GNU General Public License for more details.
+      18                 :            :  *
+      19                 :            :  * You should have received a copy of the GNU General Public License
+      20                 :            :  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+      21                 :            :  */
+      22                 :            : 
+      23                 :            : #include <errno.h>
+      24                 :            : #include <stdlib.h>
+      25                 :            : #include <unistd.h>
+      26                 :            : 
+      27                 :            : #include "socket.h"
+      28                 :            : #include "logger.h"
+      29                 :            : #include "class.h"
+      30                 :            : 
+      31                 :            : static
+      32                 :            : int
+      33                 :          9 : socketCtor(void * _this, va_list * params)
+      34                 :            : {
+      35                 :          9 :         Sock this = _this;
+      36                 :          9 :         int reUse   = 1;     //! \todo make this configurable
+      37                 :            :         int port;
+      38                 :            : 
+      39                 :          9 :         this->log  = va_arg(* params, Logger);
+      40                 :          9 :         port       = va_arg(* params, int);
+      41                 :            : 
+      42                 :            :         //! if port is -1 do not initialize the socket. (Used with accept)
+      43                 :          9 :         if (-1 == port) {
+      44                 :          3 :                 return 0;
+      45                 :            :         } else {
+      46                 :          6 :                 this->port = port;
+      47                 :            :         }
+      48                 :            : 
+      49                 :            :         //! Create socket for incoming connections
+      50                 :          6 :         if (-1 == (this->handle = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP))) {
+      51                 :          0 :                 loggerLog(this->log, LOGGER_CRIT,
+      52                 :            :                                 "error opening socket: %s - service terminated",
+      53                 :          0 :                                 strerror(errno));
+      54                 :          0 :                 return -1;
+      55                 :            :         }
+      56                 :            : 
+      57                 :            :         //! Make the socket REUSE a TIME_WAIT socket
+      58                 :          6 :         setsockopt(this->handle, SOL_SOCKET, SO_REUSEADDR, &reUse, sizeof(reUse));
+      59                 :            : 
+      60                 :          9 :         return 0;
+      61                 :            : }
+      62                 :            : 
+      63                 :            : static
+      64                 :            : void
+      65                 :         12 : socketDtor(void * _this)
+      66                 :            : {
+      67                 :         12 :         Sock this = _this;
+      68                 :            : 
+      69                 :         12 :         if (STDERR_FILENO < this->handle) {
+      70                 :         11 :                 shutdown(this->handle, SHUT_RDWR);
+      71                 :         11 :                 close(this->handle);
+      72                 :            :         }
+      73                 :         12 : }
+      74                 :            : 
+      75                 :            : INIT_IFACE(Class, socketCtor, socketDtor, NULL);
+      76                 :          2 : CREATE_CLASS(Sock, NULL, IFACE(Class));
+      77                 :            : 
+      78                 :            : // vim: set ts=4 sw=4:
+
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/stream/index-detail-sort-b.html b/assets/html/coverage/home/georg/data/git/server/src/stream/index-detail-sort-b.html new file mode 100644 index 0000000..5a5a318 --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/stream/index-detail-sort-b.html @@ -0,0 +1,145 @@ + + + + + + + LCOV - Code Coverage/home/georg/data/git/server/src/stream + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - /home/georg/data/git/server/src/streamHitTotalCoverage
Test:Code CoverageLines:102934.5 %
Date:2012-03-28Functions:3560.0 %
Legend: Rating: + low: < 75 % + medium: >= 75 % + high: >= 90 % +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Filename Sort by nameLine Coverage ( hide details ) Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
stream.c +
76.9%76.9%
+
76.9 %10 / 13100.0 %3 / 3-0 / 0
<unnamed>76.9 %10 / 13100.0 %3 / 3-0 / 0
write.c +
0.0%
+
0.0 %0 / 80.0 %0 / 1-0 / 0
read.c +
0.0%
+
0.0 %0 / 80.0 %0 / 1-0 / 0
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/stream/index-detail-sort-f.html b/assets/html/coverage/home/georg/data/git/server/src/stream/index-detail-sort-f.html new file mode 100644 index 0000000..828a1ae --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/stream/index-detail-sort-f.html @@ -0,0 +1,145 @@ + + + + + + + LCOV - Code Coverage/home/georg/data/git/server/src/stream + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - /home/georg/data/git/server/src/streamHitTotalCoverage
Test:Code CoverageLines:102934.5 %
Date:2012-03-28Functions:3560.0 %
Legend: Rating: + low: < 75 % + medium: >= 75 % + high: >= 90 % +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Filename Sort by nameLine Coverage ( hide details ) Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
write.c +
0.0%
+
0.0 %0 / 80.0 %0 / 1-0 / 0
read.c +
0.0%
+
0.0 %0 / 80.0 %0 / 1-0 / 0
stream.c +
76.9%76.9%
+
76.9 %10 / 13100.0 %3 / 3-0 / 0
<unnamed>76.9 %10 / 13100.0 %3 / 3-0 / 0
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/stream/index-detail-sort-l.html b/assets/html/coverage/home/georg/data/git/server/src/stream/index-detail-sort-l.html new file mode 100644 index 0000000..5646dde --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/stream/index-detail-sort-l.html @@ -0,0 +1,145 @@ + + + + + + + LCOV - Code Coverage/home/georg/data/git/server/src/stream + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - /home/georg/data/git/server/src/streamHitTotalCoverage
Test:Code CoverageLines:102934.5 %
Date:2012-03-28Functions:3560.0 %
Legend: Rating: + low: < 75 % + medium: >= 75 % + high: >= 90 % +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Filename Sort by nameLine Coverage ( hide details ) Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
write.c +
0.0%
+
0.0 %0 / 80.0 %0 / 1-0 / 0
read.c +
0.0%
+
0.0 %0 / 80.0 %0 / 1-0 / 0
stream.c +
76.9%76.9%
+
76.9 %10 / 13100.0 %3 / 3-0 / 0
<unnamed>76.9 %10 / 13100.0 %3 / 3-0 / 0
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/stream/index-detail.html b/assets/html/coverage/home/georg/data/git/server/src/stream/index-detail.html new file mode 100644 index 0000000..1f317fb --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/stream/index-detail.html @@ -0,0 +1,145 @@ + + + + + + + LCOV - Code Coverage/home/georg/data/git/server/src/stream + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - /home/georg/data/git/server/src/streamHitTotalCoverage
Test:Code CoverageLines:102934.5 %
Date:2012-03-28Functions:3560.0 %
Legend: Rating: + low: < 75 % + medium: >= 75 % + high: >= 90 % +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Filename Sort by nameLine Coverage ( hide details ) Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
read.c +
0.0%
+
0.0 %0 / 80.0 %0 / 1-0 / 0
stream.c +
76.9%76.9%
+
76.9 %10 / 13100.0 %3 / 3-0 / 0
<unnamed>76.9 %10 / 13100.0 %3 / 3-0 / 0
write.c +
0.0%
+
0.0 %0 / 80.0 %0 / 1-0 / 0
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/stream/index-sort-b.html b/assets/html/coverage/home/georg/data/git/server/src/stream/index-sort-b.html new file mode 100644 index 0000000..7d4254f --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/stream/index-sort-b.html @@ -0,0 +1,135 @@ + + + + + + + LCOV - Code Coverage/home/georg/data/git/server/src/stream + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - /home/georg/data/git/server/src/streamHitTotalCoverage
Test:Code CoverageLines:102934.5 %
Date:2012-03-28Functions:3560.0 %
Legend: Rating: + low: < 75 % + medium: >= 75 % + high: >= 90 % +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Filename Sort by nameLine Coverage ( show details ) Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
stream.c +
76.9%76.9%
+
76.9 %10 / 13100.0 %3 / 3-0 / 0
write.c +
0.0%
+
0.0 %0 / 80.0 %0 / 1-0 / 0
read.c +
0.0%
+
0.0 %0 / 80.0 %0 / 1-0 / 0
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/stream/index-sort-f.html b/assets/html/coverage/home/georg/data/git/server/src/stream/index-sort-f.html new file mode 100644 index 0000000..10ea846 --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/stream/index-sort-f.html @@ -0,0 +1,135 @@ + + + + + + + LCOV - Code Coverage/home/georg/data/git/server/src/stream + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - /home/georg/data/git/server/src/streamHitTotalCoverage
Test:Code CoverageLines:102934.5 %
Date:2012-03-28Functions:3560.0 %
Legend: Rating: + low: < 75 % + medium: >= 75 % + high: >= 90 % +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Filename Sort by nameLine Coverage ( show details ) Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
write.c +
0.0%
+
0.0 %0 / 80.0 %0 / 1-0 / 0
read.c +
0.0%
+
0.0 %0 / 80.0 %0 / 1-0 / 0
stream.c +
76.9%76.9%
+
76.9 %10 / 13100.0 %3 / 3-0 / 0
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/stream/index-sort-l.html b/assets/html/coverage/home/georg/data/git/server/src/stream/index-sort-l.html new file mode 100644 index 0000000..9adb704 --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/stream/index-sort-l.html @@ -0,0 +1,135 @@ + + + + + + + LCOV - Code Coverage/home/georg/data/git/server/src/stream + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - /home/georg/data/git/server/src/streamHitTotalCoverage
Test:Code CoverageLines:102934.5 %
Date:2012-03-28Functions:3560.0 %
Legend: Rating: + low: < 75 % + medium: >= 75 % + high: >= 90 % +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Filename Sort by nameLine Coverage ( show details ) Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
write.c +
0.0%
+
0.0 %0 / 80.0 %0 / 1-0 / 0
read.c +
0.0%
+
0.0 %0 / 80.0 %0 / 1-0 / 0
stream.c +
76.9%76.9%
+
76.9 %10 / 13100.0 %3 / 3-0 / 0
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/stream/index.html b/assets/html/coverage/home/georg/data/git/server/src/stream/index.html new file mode 100644 index 0000000..b2f177c --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/stream/index.html @@ -0,0 +1,135 @@ + + + + + + + LCOV - Code Coverage/home/georg/data/git/server/src/stream + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - /home/georg/data/git/server/src/streamHitTotalCoverage
Test:Code CoverageLines:102934.5 %
Date:2012-03-28Functions:3560.0 %
Legend: Rating: + low: < 75 % + medium: >= 75 % + high: >= 90 % +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Filename Sort by nameLine Coverage ( show details ) Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
read.c +
0.0%
+
0.0 %0 / 80.0 %0 / 1-0 / 0
stream.c +
76.9%76.9%
+
76.9 %10 / 13100.0 %3 / 3-0 / 0
write.c +
0.0%
+
0.0 %0 / 80.0 %0 / 1-0 / 0
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/stream/interface/index-detail-sort-b.html b/assets/html/coverage/home/georg/data/git/server/src/stream/interface/index-detail-sort-b.html new file mode 100644 index 0000000..0308b0c --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/stream/interface/index-detail-sort-b.html @@ -0,0 +1,143 @@ + + + + + + + LCOV - Code Coverage/home/georg/data/git/server/src/stream/interface + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - /home/georg/data/git/server/src/stream/interfaceHitTotalCoverage
Test:Code CoverageLines:66100.0 %
Date:2012-03-28Functions:22100.0 %
Legend: Rating: + low: < 75 % + medium: >= 75 % + high: >= 90 % +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Filename Sort by nameLine Coverage ( hide details ) Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
reader.c +
100.0%
+
100.0 %3 / 3100.0 %1 / 1-0 / 0
<unnamed>100.0 %3 / 3100.0 %1 / 1-0 / 0
writer.c +
100.0%
+
100.0 %3 / 3100.0 %1 / 1-0 / 0
<unnamed>100.0 %3 / 3100.0 %1 / 1-0 / 0
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/stream/interface/index-detail-sort-f.html b/assets/html/coverage/home/georg/data/git/server/src/stream/interface/index-detail-sort-f.html new file mode 100644 index 0000000..0b7130a --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/stream/interface/index-detail-sort-f.html @@ -0,0 +1,143 @@ + + + + + + + LCOV - Code Coverage/home/georg/data/git/server/src/stream/interface + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - /home/georg/data/git/server/src/stream/interfaceHitTotalCoverage
Test:Code CoverageLines:66100.0 %
Date:2012-03-28Functions:22100.0 %
Legend: Rating: + low: < 75 % + medium: >= 75 % + high: >= 90 % +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Filename Sort by nameLine Coverage ( hide details ) Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
reader.c +
100.0%
+
100.0 %3 / 3100.0 %1 / 1-0 / 0
<unnamed>100.0 %3 / 3100.0 %1 / 1-0 / 0
writer.c +
100.0%
+
100.0 %3 / 3100.0 %1 / 1-0 / 0
<unnamed>100.0 %3 / 3100.0 %1 / 1-0 / 0
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/stream/interface/index-detail-sort-l.html b/assets/html/coverage/home/georg/data/git/server/src/stream/interface/index-detail-sort-l.html new file mode 100644 index 0000000..d5deffd --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/stream/interface/index-detail-sort-l.html @@ -0,0 +1,143 @@ + + + + + + + LCOV - Code Coverage/home/georg/data/git/server/src/stream/interface + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - /home/georg/data/git/server/src/stream/interfaceHitTotalCoverage
Test:Code CoverageLines:66100.0 %
Date:2012-03-28Functions:22100.0 %
Legend: Rating: + low: < 75 % + medium: >= 75 % + high: >= 90 % +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Filename Sort by nameLine Coverage ( hide details ) Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
reader.c +
100.0%
+
100.0 %3 / 3100.0 %1 / 1-0 / 0
<unnamed>100.0 %3 / 3100.0 %1 / 1-0 / 0
writer.c +
100.0%
+
100.0 %3 / 3100.0 %1 / 1-0 / 0
<unnamed>100.0 %3 / 3100.0 %1 / 1-0 / 0
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/stream/interface/index-detail.html b/assets/html/coverage/home/georg/data/git/server/src/stream/interface/index-detail.html new file mode 100644 index 0000000..ea15e6f --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/stream/interface/index-detail.html @@ -0,0 +1,143 @@ + + + + + + + LCOV - Code Coverage/home/georg/data/git/server/src/stream/interface + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - /home/georg/data/git/server/src/stream/interfaceHitTotalCoverage
Test:Code CoverageLines:66100.0 %
Date:2012-03-28Functions:22100.0 %
Legend: Rating: + low: < 75 % + medium: >= 75 % + high: >= 90 % +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Filename Sort by nameLine Coverage ( hide details ) Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
reader.c +
100.0%
+
100.0 %3 / 3100.0 %1 / 1-0 / 0
<unnamed>100.0 %3 / 3100.0 %1 / 1-0 / 0
writer.c +
100.0%
+
100.0 %3 / 3100.0 %1 / 1-0 / 0
<unnamed>100.0 %3 / 3100.0 %1 / 1-0 / 0
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/stream/interface/index-sort-b.html b/assets/html/coverage/home/georg/data/git/server/src/stream/interface/index-sort-b.html new file mode 100644 index 0000000..def37d8 --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/stream/interface/index-sort-b.html @@ -0,0 +1,123 @@ + + + + + + + LCOV - Code Coverage/home/georg/data/git/server/src/stream/interface + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - /home/georg/data/git/server/src/stream/interfaceHitTotalCoverage
Test:Code CoverageLines:66100.0 %
Date:2012-03-28Functions:22100.0 %
Legend: Rating: + low: < 75 % + medium: >= 75 % + high: >= 90 % +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Filename Sort by nameLine Coverage ( show details ) Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
reader.c +
100.0%
+
100.0 %3 / 3100.0 %1 / 1-0 / 0
writer.c +
100.0%
+
100.0 %3 / 3100.0 %1 / 1-0 / 0
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/stream/interface/index-sort-f.html b/assets/html/coverage/home/georg/data/git/server/src/stream/interface/index-sort-f.html new file mode 100644 index 0000000..64a29c7 --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/stream/interface/index-sort-f.html @@ -0,0 +1,123 @@ + + + + + + + LCOV - Code Coverage/home/georg/data/git/server/src/stream/interface + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - /home/georg/data/git/server/src/stream/interfaceHitTotalCoverage
Test:Code CoverageLines:66100.0 %
Date:2012-03-28Functions:22100.0 %
Legend: Rating: + low: < 75 % + medium: >= 75 % + high: >= 90 % +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Filename Sort by nameLine Coverage ( show details ) Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
reader.c +
100.0%
+
100.0 %3 / 3100.0 %1 / 1-0 / 0
writer.c +
100.0%
+
100.0 %3 / 3100.0 %1 / 1-0 / 0
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/stream/interface/index-sort-l.html b/assets/html/coverage/home/georg/data/git/server/src/stream/interface/index-sort-l.html new file mode 100644 index 0000000..875908b --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/stream/interface/index-sort-l.html @@ -0,0 +1,123 @@ + + + + + + + LCOV - Code Coverage/home/georg/data/git/server/src/stream/interface + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - /home/georg/data/git/server/src/stream/interfaceHitTotalCoverage
Test:Code CoverageLines:66100.0 %
Date:2012-03-28Functions:22100.0 %
Legend: Rating: + low: < 75 % + medium: >= 75 % + high: >= 90 % +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Filename Sort by nameLine Coverage ( show details ) Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
reader.c +
100.0%
+
100.0 %3 / 3100.0 %1 / 1-0 / 0
writer.c +
100.0%
+
100.0 %3 / 3100.0 %1 / 1-0 / 0
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/stream/interface/index.html b/assets/html/coverage/home/georg/data/git/server/src/stream/interface/index.html new file mode 100644 index 0000000..9fcbd09 --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/stream/interface/index.html @@ -0,0 +1,123 @@ + + + + + + + LCOV - Code Coverage/home/georg/data/git/server/src/stream/interface + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - /home/georg/data/git/server/src/stream/interfaceHitTotalCoverage
Test:Code CoverageLines:66100.0 %
Date:2012-03-28Functions:22100.0 %
Legend: Rating: + low: < 75 % + medium: >= 75 % + high: >= 90 % +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Filename Sort by nameLine Coverage ( show details ) Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
reader.c +
100.0%
+
100.0 %3 / 3100.0 %1 / 1-0 / 0
writer.c +
100.0%
+
100.0 %3 / 3100.0 %1 / 1-0 / 0
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/stream/interface/reader.c.func-sort-c.html b/assets/html/coverage/home/georg/data/git/server/src/stream/interface/reader.c.func-sort-c.html new file mode 100644 index 0000000..39dd3da --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/stream/interface/reader.c.func-sort-c.html @@ -0,0 +1,92 @@ + + + + + + + LCOV - Code Coverage - /home/georg/data/git/server/src/stream/interface/reader.c - functions + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - home/georg/data/git/server/src/stream/interface - reader.c (source / functions)HitTotalCoverage
Test:Code CoverageLines:33100.0 %
Date:2012-03-28Functions:11100.0 %
Legend: Lines: + hit + not hit + | Branches: + + taken + - not taken + # not executed +Branches:00-
+
+ +
+ + + + + + + + + + +

Function Name Sort by function nameHit count Sort by hit count
streamReaderRead1221
+
+
+ + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/stream/interface/reader.c.func.html b/assets/html/coverage/home/georg/data/git/server/src/stream/interface/reader.c.func.html new file mode 100644 index 0000000..29f5bdf --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/stream/interface/reader.c.func.html @@ -0,0 +1,92 @@ + + + + + + + LCOV - Code Coverage - /home/georg/data/git/server/src/stream/interface/reader.c - functions + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - home/georg/data/git/server/src/stream/interface - reader.c (source / functions)HitTotalCoverage
Test:Code CoverageLines:33100.0 %
Date:2012-03-28Functions:11100.0 %
Legend: Lines: + hit + not hit + | Branches: + + taken + - not taken + # not executed +Branches:00-
+
+ +
+ + + + + + + + + + +

Function Name Sort by function nameHit count Sort by hit count
streamReaderRead1221
+
+
+ + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/stream/interface/reader.c.gcov.html b/assets/html/coverage/home/georg/data/git/server/src/stream/interface/reader.c.gcov.html new file mode 100644 index 0000000..5c779fe --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/stream/interface/reader.c.gcov.html @@ -0,0 +1,135 @@ + + + + + + + LCOV - Code Coverage - /home/georg/data/git/server/src/stream/interface/reader.c + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - home/georg/data/git/server/src/stream/interface - reader.c (source / functions)HitTotalCoverage
Test:Code CoverageLines:33100.0 %
Date:2012-03-28Functions:11100.0 %
Legend: Lines: + hit + not hit + | Branches: + + taken + - not taken + # not executed +Branches:00-
+
+ + + + + + + + +

+
           Branch data     Line data    Source code
+
+       1                 :            : /**
+       2                 :            :  * \file
+       3                 :            :  *
+       4                 :            :  * \author      Georg Hopp
+       5                 :            :  *
+       6                 :            :  * \copyright
+       7                 :            :  * Copyright © 2012  Georg Hopp
+       8                 :            :  *
+       9                 :            :  * This program is free software: you can redistribute it and/or modify
+      10                 :            :  * it under the terms of the GNU General Public License as published by
+      11                 :            :  * the Free Software Foundation, either version 3 of the License, or
+      12                 :            :  * (at your option) any later version.
+      13                 :            :  *
+      14                 :            :  * This program is distributed in the hope that it will be useful,
+      15                 :            :  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+      16                 :            :  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+      17                 :            :  * GNU General Public License for more details.
+      18                 :            :  *
+      19                 :            :  * You should have received a copy of the GNU General Public License
+      20                 :            :  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+      21                 :            :  */
+      22                 :            : 
+      23                 :            : #include "class.h"
+      24                 :            : 
+      25                 :            : #include "stream/stream.h"
+      26                 :            : #include "stream/interface/reader.h"
+      27                 :            : 
+      28                 :            : const struct interface i_StreamReader = {
+      29                 :            :         "streamReader",
+      30                 :            :         1
+      31                 :            : };
+      32                 :            : 
+      33                 :            : ssize_t
+      34                 :       1221 : streamReaderRead(void * object, Stream st)
+      35                 :            : {
+      36                 :            :         ssize_t ret;
+      37                 :            : 
+      38                 :       1221 :         RETCALL(object, StreamReader, read, ret, st);
+      39                 :            : 
+      40                 :       1221 :         return ret;
+      41                 :            : }
+      42                 :            : 
+      43                 :            : // vim: set ts=4 sw=4:
+
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/stream/interface/writer.c.func-sort-c.html b/assets/html/coverage/home/georg/data/git/server/src/stream/interface/writer.c.func-sort-c.html new file mode 100644 index 0000000..72efd82 --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/stream/interface/writer.c.func-sort-c.html @@ -0,0 +1,92 @@ + + + + + + + LCOV - Code Coverage - /home/georg/data/git/server/src/stream/interface/writer.c - functions + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - home/georg/data/git/server/src/stream/interface - writer.c (source / functions)HitTotalCoverage
Test:Code CoverageLines:33100.0 %
Date:2012-03-28Functions:11100.0 %
Legend: Lines: + hit + not hit + | Branches: + + taken + - not taken + # not executed +Branches:00-
+
+ +
+ + + + + + + + + + +

Function Name Sort by function nameHit count Sort by hit count
streamWriterWrite1
+
+
+ + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/stream/interface/writer.c.func.html b/assets/html/coverage/home/georg/data/git/server/src/stream/interface/writer.c.func.html new file mode 100644 index 0000000..25ee9fd --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/stream/interface/writer.c.func.html @@ -0,0 +1,92 @@ + + + + + + + LCOV - Code Coverage - /home/georg/data/git/server/src/stream/interface/writer.c - functions + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - home/georg/data/git/server/src/stream/interface - writer.c (source / functions)HitTotalCoverage
Test:Code CoverageLines:33100.0 %
Date:2012-03-28Functions:11100.0 %
Legend: Lines: + hit + not hit + | Branches: + + taken + - not taken + # not executed +Branches:00-
+
+ +
+ + + + + + + + + + +

Function Name Sort by function nameHit count Sort by hit count
streamWriterWrite1
+
+
+ + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/stream/interface/writer.c.gcov.html b/assets/html/coverage/home/georg/data/git/server/src/stream/interface/writer.c.gcov.html new file mode 100644 index 0000000..3d9e306 --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/stream/interface/writer.c.gcov.html @@ -0,0 +1,135 @@ + + + + + + + LCOV - Code Coverage - /home/georg/data/git/server/src/stream/interface/writer.c + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - home/georg/data/git/server/src/stream/interface - writer.c (source / functions)HitTotalCoverage
Test:Code CoverageLines:33100.0 %
Date:2012-03-28Functions:11100.0 %
Legend: Lines: + hit + not hit + | Branches: + + taken + - not taken + # not executed +Branches:00-
+
+ + + + + + + + +

+
           Branch data     Line data    Source code
+
+       1                 :            : /**
+       2                 :            :  * \file
+       3                 :            :  *
+       4                 :            :  * \author      Georg Hopp
+       5                 :            :  *
+       6                 :            :  * \copyright
+       7                 :            :  * Copyright © 2012  Georg Hopp
+       8                 :            :  *
+       9                 :            :  * This program is free software: you can redistribute it and/or modify
+      10                 :            :  * it under the terms of the GNU General Public License as published by
+      11                 :            :  * the Free Software Foundation, either version 3 of the License, or
+      12                 :            :  * (at your option) any later version.
+      13                 :            :  *
+      14                 :            :  * This program is distributed in the hope that it will be useful,
+      15                 :            :  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+      16                 :            :  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+      17                 :            :  * GNU General Public License for more details.
+      18                 :            :  *
+      19                 :            :  * You should have received a copy of the GNU General Public License
+      20                 :            :  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+      21                 :            :  */
+      22                 :            : 
+      23                 :            : #include "class.h"
+      24                 :            : 
+      25                 :            : #include "stream/stream.h"
+      26                 :            : #include "stream/interface/writer.h"
+      27                 :            : 
+      28                 :            : const struct interface i_StreamWriter = {
+      29                 :            :         "streamWriter",
+      30                 :            :         1
+      31                 :            : };
+      32                 :            : 
+      33                 :            : ssize_t
+      34                 :          1 : streamWriterWrite(void * object, Stream st)
+      35                 :            : {
+      36                 :            :         ssize_t ret;
+      37                 :            : 
+      38                 :          1 :         RETCALL(object, StreamWriter, write, ret, st);
+      39                 :            : 
+      40                 :          1 :         return ret;
+      41                 :            : }
+      42                 :            : 
+      43                 :            : // vim: set ts=4 sw=4:
+
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/stream/read.c.func-sort-c.html b/assets/html/coverage/home/georg/data/git/server/src/stream/read.c.func-sort-c.html new file mode 100644 index 0000000..2d1fd7f --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/stream/read.c.func-sort-c.html @@ -0,0 +1,92 @@ + + + + + + + LCOV - Code Coverage - /home/georg/data/git/server/src/stream/read.c - functions + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - home/georg/data/git/server/src/stream - read.c (source / functions)HitTotalCoverage
Test:Code CoverageLines:080.0 %
Date:2012-03-28Functions:010.0 %
Legend: Lines: + hit + not hit + | Branches: + + taken + - not taken + # not executed +Branches:00-
+
+ +
+ + + + + + + + + + +

Function Name Sort by function nameHit count Sort by hit count
streamRead0
+
+
+ + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/stream/read.c.func.html b/assets/html/coverage/home/georg/data/git/server/src/stream/read.c.func.html new file mode 100644 index 0000000..36eccfc --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/stream/read.c.func.html @@ -0,0 +1,92 @@ + + + + + + + LCOV - Code Coverage - /home/georg/data/git/server/src/stream/read.c - functions + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - home/georg/data/git/server/src/stream - read.c (source / functions)HitTotalCoverage
Test:Code CoverageLines:080.0 %
Date:2012-03-28Functions:010.0 %
Legend: Lines: + hit + not hit + | Branches: + + taken + - not taken + # not executed +Branches:00-
+
+ +
+ + + + + + + + + + +

Function Name Sort by function nameHit count Sort by hit count
streamRead0
+
+
+ + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/stream/read.c.gcov.html b/assets/html/coverage/home/georg/data/git/server/src/stream/read.c.gcov.html new file mode 100644 index 0000000..b4b5acd --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/stream/read.c.gcov.html @@ -0,0 +1,141 @@ + + + + + + + LCOV - Code Coverage - /home/georg/data/git/server/src/stream/read.c + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - home/georg/data/git/server/src/stream - read.c (source / functions)HitTotalCoverage
Test:Code CoverageLines:080.0 %
Date:2012-03-28Functions:010.0 %
Legend: Lines: + hit + not hit + | Branches: + + taken + - not taken + # not executed +Branches:00-
+
+ + + + + + + + +

+
           Branch data     Line data    Source code
+
+       1                 :            : /**
+       2                 :            :  * \file
+       3                 :            :  *
+       4                 :            :  * \author      Georg Hopp
+       5                 :            :  *
+       6                 :            :  * \copyright
+       7                 :            :  * Copyright © 2012  Georg Hopp
+       8                 :            :  *
+       9                 :            :  * This program is free software: you can redistribute it and/or modify
+      10                 :            :  * it under the terms of the GNU General Public License as published by
+      11                 :            :  * the Free Software Foundation, either version 3 of the License, or
+      12                 :            :  * (at your option) any later version.
+      13                 :            :  *
+      14                 :            :  * This program is distributed in the hope that it will be useful,
+      15                 :            :  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+      16                 :            :  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+      17                 :            :  * GNU General Public License for more details.
+      18                 :            :  *
+      19                 :            :  * You should have received a copy of the GNU General Public License
+      20                 :            :  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+      21                 :            :  */
+      22                 :            : 
+      23                 :            : #include <openssl/ssl.h>
+      24                 :            : #include <unistd.h>
+      25                 :            : 
+      26                 :            : #include "stream.h"
+      27                 :            : 
+      28                 :            : ssize_t
+      29                 :          0 : streamRead(Stream this, void * buf, size_t count)
+      30                 :            : {
+      31                 :            :         ssize_t done;
+      32                 :            : 
+      33                 :          0 :         switch(this->type) {
+      34                 :            :                 case STREAM_FD:
+      35                 :          0 :                         done = read((this->handle).fd, buf, count);
+      36                 :          0 :                         break;
+      37                 :            : 
+      38                 :            :                 case STREAM_SSL:
+      39                 :          0 :                         done = SSL_read((this->handle).ssl, buf, count);
+      40                 :          0 :                         break;
+      41                 :            : 
+      42                 :            :                 default:
+      43                 :          0 :                         break;
+      44                 :            :         }
+      45                 :            : 
+      46                 :          0 :         return done;
+      47                 :            : }
+      48                 :            : 
+      49                 :            : // vim: set ts=4 sw=4:
+
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/stream/stream.c.func-sort-c.html b/assets/html/coverage/home/georg/data/git/server/src/stream/stream.c.func-sort-c.html new file mode 100644 index 0000000..a1ecb8a --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/stream/stream.c.func-sort-c.html @@ -0,0 +1,100 @@ + + + + + + + LCOV - Code Coverage - /home/georg/data/git/server/src/stream/stream.c - functions + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - home/georg/data/git/server/src/stream - stream.c (source / functions)HitTotalCoverage
Test:Code CoverageLines:101376.9 %
Date:2012-03-28Functions:33100.0 %
Legend: Lines: + hit + not hit + | Branches: + + taken + - not taken + # not executed +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + +

Function Name Sort by function nameHit count Sort by hit count
streamDtor1
streamCtor1
_classInitStream_1
+
+
+ + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/stream/stream.c.func.html b/assets/html/coverage/home/georg/data/git/server/src/stream/stream.c.func.html new file mode 100644 index 0000000..6de9411 --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/stream/stream.c.func.html @@ -0,0 +1,100 @@ + + + + + + + LCOV - Code Coverage - /home/georg/data/git/server/src/stream/stream.c - functions + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - home/georg/data/git/server/src/stream - stream.c (source / functions)HitTotalCoverage
Test:Code CoverageLines:101376.9 %
Date:2012-03-28Functions:33100.0 %
Legend: Lines: + hit + not hit + | Branches: + + taken + - not taken + # not executed +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + +

Function Name Sort by function nameHit count Sort by hit count
_classInitStream_1
streamCtor1
streamDtor1
+
+
+ + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/stream/stream.c.gcov.html b/assets/html/coverage/home/georg/data/git/server/src/stream/stream.c.gcov.html new file mode 100644 index 0000000..092d551 --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/stream/stream.c.gcov.html @@ -0,0 +1,154 @@ + + + + + + + LCOV - Code Coverage - /home/georg/data/git/server/src/stream/stream.c + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - home/georg/data/git/server/src/stream - stream.c (source / functions)HitTotalCoverage
Test:Code CoverageLines:101376.9 %
Date:2012-03-28Functions:33100.0 %
Legend: Lines: + hit + not hit + | Branches: + + taken + - not taken + # not executed +Branches:00-
+
+ + + + + + + + +

+
           Branch data     Line data    Source code
+
+       1                 :            : /**
+       2                 :            :  * \file
+       3                 :            :  *
+       4                 :            :  * \author      Georg Hopp
+       5                 :            :  *
+       6                 :            :  * \copyright
+       7                 :            :  * Copyright © 2012  Georg Hopp
+       8                 :            :  *
+       9                 :            :  * This program is free software: you can redistribute it and/or modify
+      10                 :            :  * it under the terms of the GNU General Public License as published by
+      11                 :            :  * the Free Software Foundation, either version 3 of the License, or
+      12                 :            :  * (at your option) any later version.
+      13                 :            :  *
+      14                 :            :  * This program is distributed in the hope that it will be useful,
+      15                 :            :  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+      16                 :            :  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+      17                 :            :  * GNU General Public License for more details.
+      18                 :            :  *
+      19                 :            :  * You should have received a copy of the GNU General Public License
+      20                 :            :  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+      21                 :            :  */
+      22                 :            : 
+      23                 :            : #include <stdarg.h>
+      24                 :            : #include <openssl/ssl.h>
+      25                 :            : 
+      26                 :            : #include "class.h"
+      27                 :            : #include "stream/stream.h"
+      28                 :            : 
+      29                 :            : 
+      30                 :            : static
+      31                 :            : int
+      32                 :          1 : streamCtor(void * _this, va_list * params)
+      33                 :            : {
+      34                 :          1 :         Stream this = _this;
+      35                 :          1 :         this->type  = va_arg(* params, StreamHandleType);
+      36                 :            : 
+      37                 :          1 :         switch(this->type) {
+      38                 :            :                 case STREAM_FD:
+      39                 :          1 :                         (this->handle).fd = va_arg(* params, int);
+      40                 :          1 :                         break;
+      41                 :            : 
+      42                 :            :                 case STREAM_SSL:
+      43                 :          0 :                         (this->handle).ssl = va_arg(* params, SSL*);
+      44                 :          0 :                         break;
+      45                 :            : 
+      46                 :            :                 default:
+      47                 :          0 :                         return -1;
+      48                 :            :         }
+      49                 :            : 
+      50                 :          1 :         return 0;
+      51                 :            : }
+      52                 :            : 
+      53                 :            : static
+      54                 :            : void
+      55                 :          1 : streamDtor(void * _this)
+      56                 :            : {
+      57                 :          1 : }
+      58                 :            : 
+      59                 :            : INIT_IFACE(Class, streamCtor, streamDtor, NULL);
+      60                 :          1 : CREATE_CLASS(Stream, NULL, IFACE(Class));
+      61                 :            : 
+      62                 :            : // vim: set ts=4 sw=4:
+
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/stream/write.c.func-sort-c.html b/assets/html/coverage/home/georg/data/git/server/src/stream/write.c.func-sort-c.html new file mode 100644 index 0000000..5fc0c93 --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/stream/write.c.func-sort-c.html @@ -0,0 +1,92 @@ + + + + + + + LCOV - Code Coverage - /home/georg/data/git/server/src/stream/write.c - functions + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - home/georg/data/git/server/src/stream - write.c (source / functions)HitTotalCoverage
Test:Code CoverageLines:080.0 %
Date:2012-03-28Functions:010.0 %
Legend: Lines: + hit + not hit + | Branches: + + taken + - not taken + # not executed +Branches:00-
+
+ +
+ + + + + + + + + + +

Function Name Sort by function nameHit count Sort by hit count
streamWrite0
+
+
+ + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/stream/write.c.func.html b/assets/html/coverage/home/georg/data/git/server/src/stream/write.c.func.html new file mode 100644 index 0000000..8835c0a --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/stream/write.c.func.html @@ -0,0 +1,92 @@ + + + + + + + LCOV - Code Coverage - /home/georg/data/git/server/src/stream/write.c - functions + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - home/georg/data/git/server/src/stream - write.c (source / functions)HitTotalCoverage
Test:Code CoverageLines:080.0 %
Date:2012-03-28Functions:010.0 %
Legend: Lines: + hit + not hit + | Branches: + + taken + - not taken + # not executed +Branches:00-
+
+ +
+ + + + + + + + + + +

Function Name Sort by function nameHit count Sort by hit count
streamWrite0
+
+
+ + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/stream/write.c.gcov.html b/assets/html/coverage/home/georg/data/git/server/src/stream/write.c.gcov.html new file mode 100644 index 0000000..b100bc5 --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/stream/write.c.gcov.html @@ -0,0 +1,141 @@ + + + + + + + LCOV - Code Coverage - /home/georg/data/git/server/src/stream/write.c + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - home/georg/data/git/server/src/stream - write.c (source / functions)HitTotalCoverage
Test:Code CoverageLines:080.0 %
Date:2012-03-28Functions:010.0 %
Legend: Lines: + hit + not hit + | Branches: + + taken + - not taken + # not executed +Branches:00-
+
+ + + + + + + + +

+
           Branch data     Line data    Source code
+
+       1                 :            : /**
+       2                 :            :  * \file
+       3                 :            :  *
+       4                 :            :  * \author      Georg Hopp
+       5                 :            :  *
+       6                 :            :  * \copyright
+       7                 :            :  * Copyright © 2012  Georg Hopp
+       8                 :            :  *
+       9                 :            :  * This program is free software: you can redistribute it and/or modify
+      10                 :            :  * it under the terms of the GNU General Public License as published by
+      11                 :            :  * the Free Software Foundation, either version 3 of the License, or
+      12                 :            :  * (at your option) any later version.
+      13                 :            :  *
+      14                 :            :  * This program is distributed in the hope that it will be useful,
+      15                 :            :  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+      16                 :            :  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+      17                 :            :  * GNU General Public License for more details.
+      18                 :            :  *
+      19                 :            :  * You should have received a copy of the GNU General Public License
+      20                 :            :  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+      21                 :            :  */
+      22                 :            : 
+      23                 :            : #include <openssl/ssl.h>
+      24                 :            : #include <unistd.h>
+      25                 :            : 
+      26                 :            : #include "stream.h"
+      27                 :            : 
+      28                 :            : ssize_t
+      29                 :          0 : streamWrite(Stream this, void * buf, size_t count)
+      30                 :            : {
+      31                 :            :         ssize_t done;
+      32                 :            : 
+      33                 :          0 :         switch(this->type) {
+      34                 :            :                 case STREAM_FD:
+      35                 :          0 :                         done = write((this->handle).fd, buf, count);
+      36                 :          0 :                         break;
+      37                 :            : 
+      38                 :            :                 case STREAM_SSL:
+      39                 :          0 :                         done = SSL_write((this->handle).ssl, buf, count);
+      40                 :          0 :                         break;
+      41                 :            : 
+      42                 :            :                 default:
+      43                 :          0 :                         break;
+      44                 :            :         }
+      45                 :            : 
+      46                 :          0 :         return done;
+      47                 :            : }
+      48                 :            : 
+      49                 :            : // vim: set ts=4 sw=4:
+
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/utils/index-detail-sort-b.html b/assets/html/coverage/home/georg/data/git/server/src/utils/index-detail-sort-b.html new file mode 100644 index 0000000..2eef3f3 --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/utils/index-detail-sort-b.html @@ -0,0 +1,143 @@ + + + + + + + LCOV - Code Coverage/home/georg/data/git/server/src/utils + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - /home/georg/data/git/server/src/utilsHitTotalCoverage
Test:Code CoverageLines:1919100.0 %
Date:2012-03-28Functions:33100.0 %
Legend: Rating: + low: < 75 % + medium: >= 75 % + high: >= 90 % +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Filename Sort by nameLine Coverage ( hide details ) Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
memory.c +
100.0%
+
100.0 %5 / 5100.0 %1 / 1-0 / 0
<unnamed>100.0 %5 / 5100.0 %1 / 1-0 / 0
signalHandling.c +
100.0%
+
100.0 %14 / 14100.0 %2 / 2-0 / 0
<unnamed>100.0 %14 / 14100.0 %2 / 2-0 / 0
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/utils/index-detail-sort-f.html b/assets/html/coverage/home/georg/data/git/server/src/utils/index-detail-sort-f.html new file mode 100644 index 0000000..31bd96b --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/utils/index-detail-sort-f.html @@ -0,0 +1,143 @@ + + + + + + + LCOV - Code Coverage/home/georg/data/git/server/src/utils + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - /home/georg/data/git/server/src/utilsHitTotalCoverage
Test:Code CoverageLines:1919100.0 %
Date:2012-03-28Functions:33100.0 %
Legend: Rating: + low: < 75 % + medium: >= 75 % + high: >= 90 % +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Filename Sort by nameLine Coverage ( hide details ) Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
memory.c +
100.0%
+
100.0 %5 / 5100.0 %1 / 1-0 / 0
<unnamed>100.0 %5 / 5100.0 %1 / 1-0 / 0
signalHandling.c +
100.0%
+
100.0 %14 / 14100.0 %2 / 2-0 / 0
<unnamed>100.0 %14 / 14100.0 %2 / 2-0 / 0
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/utils/index-detail-sort-l.html b/assets/html/coverage/home/georg/data/git/server/src/utils/index-detail-sort-l.html new file mode 100644 index 0000000..2b9dc48 --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/utils/index-detail-sort-l.html @@ -0,0 +1,143 @@ + + + + + + + LCOV - Code Coverage/home/georg/data/git/server/src/utils + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - /home/georg/data/git/server/src/utilsHitTotalCoverage
Test:Code CoverageLines:1919100.0 %
Date:2012-03-28Functions:33100.0 %
Legend: Rating: + low: < 75 % + medium: >= 75 % + high: >= 90 % +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Filename Sort by nameLine Coverage ( hide details ) Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
memory.c +
100.0%
+
100.0 %5 / 5100.0 %1 / 1-0 / 0
<unnamed>100.0 %5 / 5100.0 %1 / 1-0 / 0
signalHandling.c +
100.0%
+
100.0 %14 / 14100.0 %2 / 2-0 / 0
<unnamed>100.0 %14 / 14100.0 %2 / 2-0 / 0
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/utils/index-detail.html b/assets/html/coverage/home/georg/data/git/server/src/utils/index-detail.html new file mode 100644 index 0000000..6b4bb89 --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/utils/index-detail.html @@ -0,0 +1,143 @@ + + + + + + + LCOV - Code Coverage/home/georg/data/git/server/src/utils + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - /home/georg/data/git/server/src/utilsHitTotalCoverage
Test:Code CoverageLines:1919100.0 %
Date:2012-03-28Functions:33100.0 %
Legend: Rating: + low: < 75 % + medium: >= 75 % + high: >= 90 % +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Filename Sort by nameLine Coverage ( hide details ) Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
memory.c +
100.0%
+
100.0 %5 / 5100.0 %1 / 1-0 / 0
<unnamed>100.0 %5 / 5100.0 %1 / 1-0 / 0
signalHandling.c +
100.0%
+
100.0 %14 / 14100.0 %2 / 2-0 / 0
<unnamed>100.0 %14 / 14100.0 %2 / 2-0 / 0
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/utils/index-sort-b.html b/assets/html/coverage/home/georg/data/git/server/src/utils/index-sort-b.html new file mode 100644 index 0000000..1105982 --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/utils/index-sort-b.html @@ -0,0 +1,123 @@ + + + + + + + LCOV - Code Coverage/home/georg/data/git/server/src/utils + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - /home/georg/data/git/server/src/utilsHitTotalCoverage
Test:Code CoverageLines:1919100.0 %
Date:2012-03-28Functions:33100.0 %
Legend: Rating: + low: < 75 % + medium: >= 75 % + high: >= 90 % +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Filename Sort by nameLine Coverage ( show details ) Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
memory.c +
100.0%
+
100.0 %5 / 5100.0 %1 / 1-0 / 0
signalHandling.c +
100.0%
+
100.0 %14 / 14100.0 %2 / 2-0 / 0
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/utils/index-sort-f.html b/assets/html/coverage/home/georg/data/git/server/src/utils/index-sort-f.html new file mode 100644 index 0000000..1fa6236 --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/utils/index-sort-f.html @@ -0,0 +1,123 @@ + + + + + + + LCOV - Code Coverage/home/georg/data/git/server/src/utils + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - /home/georg/data/git/server/src/utilsHitTotalCoverage
Test:Code CoverageLines:1919100.0 %
Date:2012-03-28Functions:33100.0 %
Legend: Rating: + low: < 75 % + medium: >= 75 % + high: >= 90 % +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Filename Sort by nameLine Coverage ( show details ) Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
memory.c +
100.0%
+
100.0 %5 / 5100.0 %1 / 1-0 / 0
signalHandling.c +
100.0%
+
100.0 %14 / 14100.0 %2 / 2-0 / 0
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/utils/index-sort-l.html b/assets/html/coverage/home/georg/data/git/server/src/utils/index-sort-l.html new file mode 100644 index 0000000..7724a4a --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/utils/index-sort-l.html @@ -0,0 +1,123 @@ + + + + + + + LCOV - Code Coverage/home/georg/data/git/server/src/utils + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - /home/georg/data/git/server/src/utilsHitTotalCoverage
Test:Code CoverageLines:1919100.0 %
Date:2012-03-28Functions:33100.0 %
Legend: Rating: + low: < 75 % + medium: >= 75 % + high: >= 90 % +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Filename Sort by nameLine Coverage ( show details ) Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
memory.c +
100.0%
+
100.0 %5 / 5100.0 %1 / 1-0 / 0
signalHandling.c +
100.0%
+
100.0 %14 / 14100.0 %2 / 2-0 / 0
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/utils/index.html b/assets/html/coverage/home/georg/data/git/server/src/utils/index.html new file mode 100644 index 0000000..2cea521 --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/utils/index.html @@ -0,0 +1,123 @@ + + + + + + + LCOV - Code Coverage/home/georg/data/git/server/src/utils + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - /home/georg/data/git/server/src/utilsHitTotalCoverage
Test:Code CoverageLines:1919100.0 %
Date:2012-03-28Functions:33100.0 %
Legend: Rating: + low: < 75 % + medium: >= 75 % + high: >= 90 % +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Filename Sort by nameLine Coverage ( show details ) Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
memory.c +
100.0%
+
100.0 %5 / 5100.0 %1 / 1-0 / 0
signalHandling.c +
100.0%
+
100.0 %14 / 14100.0 %2 / 2-0 / 0
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/utils/memory.c.func-sort-c.html b/assets/html/coverage/home/georg/data/git/server/src/utils/memory.c.func-sort-c.html new file mode 100644 index 0000000..ee1f730 --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/utils/memory.c.func-sort-c.html @@ -0,0 +1,92 @@ + + + + + + + LCOV - Code Coverage - /home/georg/data/git/server/src/utils/memory.c - functions + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - home/georg/data/git/server/src/utils - memory.c (source / functions)HitTotalCoverage
Test:Code CoverageLines:55100.0 %
Date:2012-03-28Functions:11100.0 %
Legend: Lines: + hit + not hit + | Branches: + + taken + - not taken + # not executed +Branches:00-
+
+ +
+ + + + + + + + + + +

Function Name Sort by function nameHit count Sort by hit count
ffree4
+
+
+ + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/utils/memory.c.func.html b/assets/html/coverage/home/georg/data/git/server/src/utils/memory.c.func.html new file mode 100644 index 0000000..2f34090 --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/utils/memory.c.func.html @@ -0,0 +1,92 @@ + + + + + + + LCOV - Code Coverage - /home/georg/data/git/server/src/utils/memory.c - functions + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - home/georg/data/git/server/src/utils - memory.c (source / functions)HitTotalCoverage
Test:Code CoverageLines:55100.0 %
Date:2012-03-28Functions:11100.0 %
Legend: Lines: + hit + not hit + | Branches: + + taken + - not taken + # not executed +Branches:00-
+
+ +
+ + + + + + + + + + +

Function Name Sort by function nameHit count Sort by hit count
ffree4
+
+
+ + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/utils/memory.c.gcov.html b/assets/html/coverage/home/georg/data/git/server/src/utils/memory.c.gcov.html new file mode 100644 index 0000000..0f68c51 --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/utils/memory.c.gcov.html @@ -0,0 +1,128 @@ + + + + + + + LCOV - Code Coverage - /home/georg/data/git/server/src/utils/memory.c + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - home/georg/data/git/server/src/utils - memory.c (source / functions)HitTotalCoverage
Test:Code CoverageLines:55100.0 %
Date:2012-03-28Functions:11100.0 %
Legend: Lines: + hit + not hit + | Branches: + + taken + - not taken + # not executed +Branches:00-
+
+ + + + + + + + +

+
           Branch data     Line data    Source code
+
+       1                 :            : /**
+       2                 :            :  * \file
+       3                 :            :  *
+       4                 :            :  * \author      Georg Hopp
+       5                 :            :  *
+       6                 :            :  * \copyright
+       7                 :            :  * Copyright © 2012  Georg Hopp
+       8                 :            :  *
+       9                 :            :  * This program is free software: you can redistribute it and/or modify
+      10                 :            :  * it under the terms of the GNU General Public License as published by
+      11                 :            :  * the Free Software Foundation, either version 3 of the License, or
+      12                 :            :  * (at your option) any later version.
+      13                 :            :  *
+      14                 :            :  * This program is distributed in the hope that it will be useful,
+      15                 :            :  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+      16                 :            :  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+      17                 :            :  * GNU General Public License for more details.
+      18                 :            :  *
+      19                 :            :  * You should have received a copy of the GNU General Public License
+      20                 :            :  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+      21                 :            :  */
+      22                 :            : 
+      23                 :            : #include <stdlib.h>
+      24                 :            : 
+      25                 :            : #include "utils/memory.h"
+      26                 :            : 
+      27                 :            : void
+      28                 :          4 : ffree(void ** data)
+      29                 :            : {
+      30                 :          4 :         if (NULL != *data) {
+      31                 :          4 :                 free(*data);
+      32                 :          4 :                 *data = NULL;
+      33                 :            :         }
+      34                 :          4 : }   
+      35                 :            : 
+      36                 :            : // vim: set ts=4 sw=4:
+
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/utils/signalHandling.c.func-sort-c.html b/assets/html/coverage/home/georg/data/git/server/src/utils/signalHandling.c.func-sort-c.html new file mode 100644 index 0000000..1b81300 --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/utils/signalHandling.c.func-sort-c.html @@ -0,0 +1,96 @@ + + + + + + + LCOV - Code Coverage - /home/georg/data/git/server/src/utils/signalHandling.c - functions + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - home/georg/data/git/server/src/utils - signalHandling.c (source / functions)HitTotalCoverage
Test:Code CoverageLines:1414100.0 %
Date:2012-03-28Functions:22100.0 %
Legend: Lines: + hit + not hit + | Branches: + + taken + - not taken + # not executed +Branches:00-
+
+ +
+ + + + + + + + + + + + + + +

Function Name Sort by function nameHit count Sort by hit count
init_signals1
terminate1
+
+
+ + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/utils/signalHandling.c.func.html b/assets/html/coverage/home/georg/data/git/server/src/utils/signalHandling.c.func.html new file mode 100644 index 0000000..cba4c9c --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/utils/signalHandling.c.func.html @@ -0,0 +1,96 @@ + + + + + + + LCOV - Code Coverage - /home/georg/data/git/server/src/utils/signalHandling.c - functions + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - home/georg/data/git/server/src/utils - signalHandling.c (source / functions)HitTotalCoverage
Test:Code CoverageLines:1414100.0 %
Date:2012-03-28Functions:22100.0 %
Legend: Lines: + hit + not hit + | Branches: + + taken + - not taken + # not executed +Branches:00-
+
+ +
+ + + + + + + + + + + + + + +

Function Name Sort by function nameHit count Sort by hit count
init_signals1
terminate1
+
+
+ + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/src/utils/signalHandling.c.gcov.html b/assets/html/coverage/home/georg/data/git/server/src/utils/signalHandling.c.gcov.html new file mode 100644 index 0000000..f802232 --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/src/utils/signalHandling.c.gcov.html @@ -0,0 +1,139 @@ + + + + + + + LCOV - Code Coverage - /home/georg/data/git/server/src/utils/signalHandling.c + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - home/georg/data/git/server/src/utils - signalHandling.c (source / functions)HitTotalCoverage
Test:Code CoverageLines:1414100.0 %
Date:2012-03-28Functions:22100.0 %
Legend: Lines: + hit + not hit + | Branches: + + taken + - not taken + # not executed +Branches:00-
+
+ + + + + + + + +

+
           Branch data     Line data    Source code
+
+       1                 :            : /**
+       2                 :            :  * \file
+       3                 :            :  *
+       4                 :            :  * \author      Georg Hopp
+       5                 :            :  *
+       6                 :            :  * \copyright
+       7                 :            :  * Copyright © 2012  Georg Hopp
+       8                 :            :  *
+       9                 :            :  * This program is free software: you can redistribute it and/or modify
+      10                 :            :  * it under the terms of the GNU General Public License as published by
+      11                 :            :  * the Free Software Foundation, either version 3 of the License, or
+      12                 :            :  * (at your option) any later version.
+      13                 :            :  *
+      14                 :            :  * This program is distributed in the hope that it will be useful,
+      15                 :            :  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+      16                 :            :  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+      17                 :            :  * GNU General Public License for more details.
+      18                 :            :  *
+      19                 :            :  * You should have received a copy of the GNU General Public License
+      20                 :            :  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+      21                 :            :  */
+      22                 :            : 
+      23                 :            : #include <signal.h>     // for signal() and signal names
+      24                 :            : 
+      25                 :            : volatile int doShutdown;
+      26                 :            : 
+      27                 :          1 : void terminate(int signum)
+      28                 :            : {
+      29                 :          1 :     signal(signum, SIG_IGN);
+      30                 :            :     /*
+      31                 :            :      * \todo do logging here
+      32                 :            :      */
+      33                 :          1 :     doShutdown = 1;
+      34                 :          1 : }
+      35                 :            : 
+      36                 :          1 : void init_signals(void)
+      37                 :            : {
+      38                 :          1 :     signal(SIGTERM, terminate);
+      39                 :          1 :     signal(SIGHUP, SIG_IGN);
+      40                 :          1 :     signal(SIGINT, terminate);
+      41                 :          1 :     signal(SIGQUIT, terminate);
+      42                 :          1 :     signal(SIGABRT, terminate);
+      43                 :          1 :     signal(SIGALRM, SIG_IGN);
+      44                 :          1 :     signal(SIGURG, SIG_IGN);
+      45                 :            : 
+      46                 :          1 :     signal(SIGPIPE, SIG_IGN);
+      47                 :          1 : }
+
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/tests/classTest.c.func-sort-c.html b/assets/html/coverage/home/georg/data/git/server/tests/classTest.c.func-sort-c.html new file mode 100644 index 0000000..5bbe758 --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/tests/classTest.c.func-sort-c.html @@ -0,0 +1,112 @@ + + + + + + + LCOV - Code Coverage - /home/georg/data/git/server/tests/classTest.c - functions + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - home/georg/data/git/server/tests - classTest.c (source / functions)HitTotalCoverage
Test:Code CoverageLines:3434100.0 %
Date:2012-03-28Functions:66100.0 %
Legend: Lines: + hit + not hit + | Branches: + + taken + - not taken + # not executed +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Function Name Sort by function nameHit count Sort by hit count
__tearDown4
__setUp4
testClone1
testNewFail1
testDelete1
testNew1
+
+
+ + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/tests/classTest.c.func.html b/assets/html/coverage/home/georg/data/git/server/tests/classTest.c.func.html new file mode 100644 index 0000000..1323e0f --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/tests/classTest.c.func.html @@ -0,0 +1,112 @@ + + + + + + + LCOV - Code Coverage - /home/georg/data/git/server/tests/classTest.c - functions + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - home/georg/data/git/server/tests - classTest.c (source / functions)HitTotalCoverage
Test:Code CoverageLines:3434100.0 %
Date:2012-03-28Functions:66100.0 %
Legend: Lines: + hit + not hit + | Branches: + + taken + - not taken + # not executed +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Function Name Sort by function nameHit count Sort by hit count
__setUp4
__tearDown4
testClone1
testDelete1
testNew1
testNewFail1
+
+
+ + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/tests/classTest.c.gcov.html b/assets/html/coverage/home/georg/data/git/server/tests/classTest.c.gcov.html new file mode 100644 index 0000000..3a61744 --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/tests/classTest.c.gcov.html @@ -0,0 +1,213 @@ + + + + + + + LCOV - Code Coverage - /home/georg/data/git/server/tests/classTest.c + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - home/georg/data/git/server/tests - classTest.c (source / functions)HitTotalCoverage
Test:Code CoverageLines:3434100.0 %
Date:2012-03-28Functions:66100.0 %
Legend: Lines: + hit + not hit + | Branches: + + taken + - not taken + # not executed +Branches:00-
+
+ + + + + + + + +

+
           Branch data     Line data    Source code
+
+       1                 :            : /**
+       2                 :            :  * \file
+       3                 :            :  * cclassTest.c: tests for my oop C stuff
+       4                 :            :  * Copyright (C) 2011  Georg Hopp
+       5                 :            :  *
+       6                 :            :  * This program is free software: you can redistribute it and/or modify
+       7                 :            :  * it under the terms of the GNU General Public License as published by
+       8                 :            :  * the Free Software Foundation, either version 3 of the License, or
+       9                 :            :  * (at your option) any later version.
+      10                 :            :  *
+      11                 :            :  * This program is distributed in the hope that it will be useful,
+      12                 :            :  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+      13                 :            :  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+      14                 :            :  * GNU General Public License for more details.
+      15                 :            :  *
+      16                 :            :  * You should have received a copy of the GNU General Public License
+      17                 :            :  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+      18                 :            :  */
+      19                 :            : #include <stdio.h>
+      20                 :            : #include <sys/types.h>
+      21                 :            : 
+      22                 :            : #include "runtest.h"
+      23                 :            : #include "mock/mock_class.h"
+      24                 :            : 
+      25                 :            : #include "class.h"
+      26                 :            : 
+      27                 :            : const char testname[] = "cclassTest";
+      28                 :            : 
+      29                 :            : MockClass mock = NULL;
+      30                 :            : 
+      31                 :            : static
+      32                 :            : int
+      33                 :          4 : __setUp()
+      34                 :            : {
+      35                 :          4 :     mock = NULL;
+      36                 :          4 :     _reset();
+      37                 :            : 
+      38                 :          4 :     return TEST_OK;
+      39                 :            : }
+      40                 :            : int (* const setUp)() = __setUp;
+      41                 :            : 
+      42                 :            : static
+      43                 :            : int
+      44                 :          4 : __tearDown()
+      45                 :            : {
+      46                 :          4 :     if (NULL != mock) {
+      47                 :          2 :         ASSERT_OBJECT(mock);
+      48                 :          2 :         delete(mock);
+      49                 :            :     }
+      50                 :            : 
+      51                 :          4 :     return TEST_OK;
+      52                 :            : }
+      53                 :            : int (* const tearDown)() = __tearDown;
+      54                 :            : 
+      55                 :            : static
+      56                 :            : int
+      57                 :          1 : testNew(void)
+      58                 :            : {
+      59                 :          1 :     mock = new(MockClass, 123);
+      60                 :            : 
+      61                 :          1 :     ASSERT_OBJECT_NOT_NULL(mock);
+      62                 :          1 :     ASSERT_EQUAL(1, _called);
+      63                 :          1 :     ASSERT_EQUAL(123, mock->value);
+      64                 :            : 
+      65                 :          1 :     return TEST_OK;
+      66                 :            : }
+      67                 :            : 
+      68                 :            : static
+      69                 :            : int
+      70                 :          1 : testNewFail(void)
+      71                 :            : {
+      72                 :          1 :     mock = new(MockClass, 321);
+      73                 :            : 
+      74                 :          1 :     ASSERT_NULL(mock);
+      75                 :            : 
+      76                 :          1 :     return TEST_OK;
+      77                 :            : }
+      78                 :            : 
+      79                 :            : static
+      80                 :            : int
+      81                 :          1 : testDelete(void)
+      82                 :            : {
+      83                 :          1 :     mock = new(MockClass, 123);
+      84                 :            : 
+      85                 :          1 :     ASSERT_NOT_NULL(mock);
+      86                 :            : 
+      87                 :          1 :     _reset();
+      88                 :          1 :     delete(mock);
+      89                 :            : 
+      90                 :          1 :     ASSERT_NULL(mock);
+      91                 :          1 :     ASSERT_EQUAL(1, _called);
+      92                 :            : 
+      93                 :          1 :     return TEST_OK;
+      94                 :            : }
+      95                 :            : 
+      96                 :            : static
+      97                 :            : int
+      98                 :          1 : testClone(void)
+      99                 :            : {
+     100                 :            :     MockClass clone;
+     101                 :            : 
+     102                 :          1 :     mock  = new(MockClass, 123);
+     103                 :          1 :     clone = clone(mock);
+     104                 :            : 
+     105                 :          1 :     ASSERT_INSTANCE_OF(MockClass, clone);
+     106                 :          1 :     ASSERT_EQUAL(mock->value, clone->value);
+     107                 :            : 
+     108                 :          1 :     delete(clone);
+     109                 :            : 
+     110                 :          1 :     return TEST_OK;
+     111                 :            : }
+     112                 :            : 
+     113                 :            : const testfunc tests[] = {
+     114                 :            :     testNew,
+     115                 :            :     testNewFail,
+     116                 :            :     testDelete,
+     117                 :            :     testClone
+     118                 :            : };
+     119                 :            : const size_t count = FUNCS_COUNT(tests);
+     120                 :            : 
+     121                 :            : // vim: set et ts=4 sw=4:
+
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/tests/index-detail-sort-b.html b/assets/html/coverage/home/georg/data/git/server/tests/index-detail-sort-b.html new file mode 100644 index 0000000..aaef4aa --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/tests/index-detail-sort-b.html @@ -0,0 +1,209 @@ + + + + + + + LCOV - Code Coverage/home/georg/data/git/server/tests + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - /home/georg/data/git/server/testsHitTotalCoverage
Test:Code CoverageLines:16417295.3 %
Date:2012-03-28Functions:2121100.0 %
Legend: Rating: + low: < 75 % + medium: >= 75 % + high: >= 90 % +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Filename Sort by nameLine Coverage ( hide details ) Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
serverTest.c +
97.4%97.4%
+
97.4 %38 / 39100.0 %3 / 3-0 / 0
<unnamed>97.4 %38 / 39100.0 %3 / 3-0 / 0
loggerTest.c +
100.0%
+
100.0 %28 / 28100.0 %5 / 5-0 / 0
<unnamed>100.0 %28 / 28100.0 %5 / 5-0 / 0
classTest.c +
100.0%
+
100.0 %34 / 34100.0 %6 / 6-0 / 0
<unnamed>100.0 %34 / 34100.0 %6 / 6-0 / 0
socketTest.c +
97.1%97.1%
+
97.1 %34 / 35100.0 %4 / 4-0 / 0
<unnamed>97.1 %34 / 35100.0 %4 / 4-0 / 0
runtest.c +
83.3%83.3%
+
83.3 %30 / 36100.0 %3 / 3-0 / 0
<unnamed>83.3 %30 / 36100.0 %3 / 3-0 / 0
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/tests/index-detail-sort-f.html b/assets/html/coverage/home/georg/data/git/server/tests/index-detail-sort-f.html new file mode 100644 index 0000000..0255319 --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/tests/index-detail-sort-f.html @@ -0,0 +1,209 @@ + + + + + + + LCOV - Code Coverage/home/georg/data/git/server/tests + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - /home/georg/data/git/server/testsHitTotalCoverage
Test:Code CoverageLines:16417295.3 %
Date:2012-03-28Functions:2121100.0 %
Legend: Rating: + low: < 75 % + medium: >= 75 % + high: >= 90 % +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Filename Sort by nameLine Coverage ( hide details ) Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
serverTest.c +
97.4%97.4%
+
97.4 %38 / 39100.0 %3 / 3-0 / 0
<unnamed>97.4 %38 / 39100.0 %3 / 3-0 / 0
runtest.c +
83.3%83.3%
+
83.3 %30 / 36100.0 %3 / 3-0 / 0
<unnamed>83.3 %30 / 36100.0 %3 / 3-0 / 0
socketTest.c +
97.1%97.1%
+
97.1 %34 / 35100.0 %4 / 4-0 / 0
<unnamed>97.1 %34 / 35100.0 %4 / 4-0 / 0
loggerTest.c +
100.0%
+
100.0 %28 / 28100.0 %5 / 5-0 / 0
<unnamed>100.0 %28 / 28100.0 %5 / 5-0 / 0
classTest.c +
100.0%
+
100.0 %34 / 34100.0 %6 / 6-0 / 0
<unnamed>100.0 %34 / 34100.0 %6 / 6-0 / 0
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/tests/index-detail-sort-l.html b/assets/html/coverage/home/georg/data/git/server/tests/index-detail-sort-l.html new file mode 100644 index 0000000..477e983 --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/tests/index-detail-sort-l.html @@ -0,0 +1,209 @@ + + + + + + + LCOV - Code Coverage/home/georg/data/git/server/tests + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - /home/georg/data/git/server/testsHitTotalCoverage
Test:Code CoverageLines:16417295.3 %
Date:2012-03-28Functions:2121100.0 %
Legend: Rating: + low: < 75 % + medium: >= 75 % + high: >= 90 % +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Filename Sort by nameLine Coverage ( hide details ) Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
runtest.c +
83.3%83.3%
+
83.3 %30 / 36100.0 %3 / 3-0 / 0
<unnamed>83.3 %30 / 36100.0 %3 / 3-0 / 0
socketTest.c +
97.1%97.1%
+
97.1 %34 / 35100.0 %4 / 4-0 / 0
<unnamed>97.1 %34 / 35100.0 %4 / 4-0 / 0
serverTest.c +
97.4%97.4%
+
97.4 %38 / 39100.0 %3 / 3-0 / 0
<unnamed>97.4 %38 / 39100.0 %3 / 3-0 / 0
loggerTest.c +
100.0%
+
100.0 %28 / 28100.0 %5 / 5-0 / 0
<unnamed>100.0 %28 / 28100.0 %5 / 5-0 / 0
classTest.c +
100.0%
+
100.0 %34 / 34100.0 %6 / 6-0 / 0
<unnamed>100.0 %34 / 34100.0 %6 / 6-0 / 0
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/tests/index-detail.html b/assets/html/coverage/home/georg/data/git/server/tests/index-detail.html new file mode 100644 index 0000000..c2534c2 --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/tests/index-detail.html @@ -0,0 +1,209 @@ + + + + + + + LCOV - Code Coverage/home/georg/data/git/server/tests + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - /home/georg/data/git/server/testsHitTotalCoverage
Test:Code CoverageLines:16417295.3 %
Date:2012-03-28Functions:2121100.0 %
Legend: Rating: + low: < 75 % + medium: >= 75 % + high: >= 90 % +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Filename Sort by nameLine Coverage ( hide details ) Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
classTest.c +
100.0%
+
100.0 %34 / 34100.0 %6 / 6-0 / 0
<unnamed>100.0 %34 / 34100.0 %6 / 6-0 / 0
loggerTest.c +
100.0%
+
100.0 %28 / 28100.0 %5 / 5-0 / 0
<unnamed>100.0 %28 / 28100.0 %5 / 5-0 / 0
runtest.c +
83.3%83.3%
+
83.3 %30 / 36100.0 %3 / 3-0 / 0
<unnamed>83.3 %30 / 36100.0 %3 / 3-0 / 0
serverTest.c +
97.4%97.4%
+
97.4 %38 / 39100.0 %3 / 3-0 / 0
<unnamed>97.4 %38 / 39100.0 %3 / 3-0 / 0
socketTest.c +
97.1%97.1%
+
97.1 %34 / 35100.0 %4 / 4-0 / 0
<unnamed>97.1 %34 / 35100.0 %4 / 4-0 / 0
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/tests/index-sort-b.html b/assets/html/coverage/home/georg/data/git/server/tests/index-sort-b.html new file mode 100644 index 0000000..587275f --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/tests/index-sort-b.html @@ -0,0 +1,159 @@ + + + + + + + LCOV - Code Coverage/home/georg/data/git/server/tests + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - /home/georg/data/git/server/testsHitTotalCoverage
Test:Code CoverageLines:16417295.3 %
Date:2012-03-28Functions:2121100.0 %
Legend: Rating: + low: < 75 % + medium: >= 75 % + high: >= 90 % +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Filename Sort by nameLine Coverage ( show details ) Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
serverTest.c +
97.4%97.4%
+
97.4 %38 / 39100.0 %3 / 3-0 / 0
loggerTest.c +
100.0%
+
100.0 %28 / 28100.0 %5 / 5-0 / 0
classTest.c +
100.0%
+
100.0 %34 / 34100.0 %6 / 6-0 / 0
socketTest.c +
97.1%97.1%
+
97.1 %34 / 35100.0 %4 / 4-0 / 0
runtest.c +
83.3%83.3%
+
83.3 %30 / 36100.0 %3 / 3-0 / 0
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/tests/index-sort-f.html b/assets/html/coverage/home/georg/data/git/server/tests/index-sort-f.html new file mode 100644 index 0000000..0435f4f --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/tests/index-sort-f.html @@ -0,0 +1,159 @@ + + + + + + + LCOV - Code Coverage/home/georg/data/git/server/tests + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - /home/georg/data/git/server/testsHitTotalCoverage
Test:Code CoverageLines:16417295.3 %
Date:2012-03-28Functions:2121100.0 %
Legend: Rating: + low: < 75 % + medium: >= 75 % + high: >= 90 % +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Filename Sort by nameLine Coverage ( show details ) Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
serverTest.c +
97.4%97.4%
+
97.4 %38 / 39100.0 %3 / 3-0 / 0
runtest.c +
83.3%83.3%
+
83.3 %30 / 36100.0 %3 / 3-0 / 0
socketTest.c +
97.1%97.1%
+
97.1 %34 / 35100.0 %4 / 4-0 / 0
loggerTest.c +
100.0%
+
100.0 %28 / 28100.0 %5 / 5-0 / 0
classTest.c +
100.0%
+
100.0 %34 / 34100.0 %6 / 6-0 / 0
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/tests/index-sort-l.html b/assets/html/coverage/home/georg/data/git/server/tests/index-sort-l.html new file mode 100644 index 0000000..46eff8a --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/tests/index-sort-l.html @@ -0,0 +1,159 @@ + + + + + + + LCOV - Code Coverage/home/georg/data/git/server/tests + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - /home/georg/data/git/server/testsHitTotalCoverage
Test:Code CoverageLines:16417295.3 %
Date:2012-03-28Functions:2121100.0 %
Legend: Rating: + low: < 75 % + medium: >= 75 % + high: >= 90 % +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Filename Sort by nameLine Coverage ( show details ) Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
runtest.c +
83.3%83.3%
+
83.3 %30 / 36100.0 %3 / 3-0 / 0
socketTest.c +
97.1%97.1%
+
97.1 %34 / 35100.0 %4 / 4-0 / 0
serverTest.c +
97.4%97.4%
+
97.4 %38 / 39100.0 %3 / 3-0 / 0
loggerTest.c +
100.0%
+
100.0 %28 / 28100.0 %5 / 5-0 / 0
classTest.c +
100.0%
+
100.0 %34 / 34100.0 %6 / 6-0 / 0
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/tests/index.html b/assets/html/coverage/home/georg/data/git/server/tests/index.html new file mode 100644 index 0000000..74a7fe1 --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/tests/index.html @@ -0,0 +1,159 @@ + + + + + + + LCOV - Code Coverage/home/georg/data/git/server/tests + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - /home/georg/data/git/server/testsHitTotalCoverage
Test:Code CoverageLines:16417295.3 %
Date:2012-03-28Functions:2121100.0 %
Legend: Rating: + low: < 75 % + medium: >= 75 % + high: >= 90 % +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Filename Sort by nameLine Coverage ( show details ) Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
classTest.c +
100.0%
+
100.0 %34 / 34100.0 %6 / 6-0 / 0
loggerTest.c +
100.0%
+
100.0 %28 / 28100.0 %5 / 5-0 / 0
runtest.c +
83.3%83.3%
+
83.3 %30 / 36100.0 %3 / 3-0 / 0
serverTest.c +
97.4%97.4%
+
97.4 %38 / 39100.0 %3 / 3-0 / 0
socketTest.c +
97.1%97.1%
+
97.1 %34 / 35100.0 %4 / 4-0 / 0
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/tests/loggerTest.c.func-sort-c.html b/assets/html/coverage/home/georg/data/git/server/tests/loggerTest.c.func-sort-c.html new file mode 100644 index 0000000..ca38fa3 --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/tests/loggerTest.c.func-sort-c.html @@ -0,0 +1,108 @@ + + + + + + + LCOV - Code Coverage - /home/georg/data/git/server/tests/loggerTest.c - functions + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - home/georg/data/git/server/tests - loggerTest.c (source / functions)HitTotalCoverage
Test:Code CoverageLines:2828100.0 %
Date:2012-03-28Functions:55100.0 %
Legend: Lines: + hit + not hit + | Branches: + + taken + - not taken + # not executed +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

Function Name Sort by function nameHit count Sort by hit count
__tearDown3
__setUp3
testLoggerSyslog1
testLoggerStderr1
testLoggerLevel1
+
+
+ + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/tests/loggerTest.c.func.html b/assets/html/coverage/home/georg/data/git/server/tests/loggerTest.c.func.html new file mode 100644 index 0000000..89973bc --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/tests/loggerTest.c.func.html @@ -0,0 +1,108 @@ + + + + + + + LCOV - Code Coverage - /home/georg/data/git/server/tests/loggerTest.c - functions + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - home/georg/data/git/server/tests - loggerTest.c (source / functions)HitTotalCoverage
Test:Code CoverageLines:2828100.0 %
Date:2012-03-28Functions:55100.0 %
Legend: Lines: + hit + not hit + | Branches: + + taken + - not taken + # not executed +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

Function Name Sort by function nameHit count Sort by hit count
__setUp3
__tearDown3
testLoggerLevel1
testLoggerStderr1
testLoggerSyslog1
+
+
+ + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/tests/loggerTest.c.gcov.html b/assets/html/coverage/home/georg/data/git/server/tests/loggerTest.c.gcov.html new file mode 100644 index 0000000..443e3b6 --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/tests/loggerTest.c.gcov.html @@ -0,0 +1,207 @@ + + + + + + + LCOV - Code Coverage - /home/georg/data/git/server/tests/loggerTest.c + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - home/georg/data/git/server/tests - loggerTest.c (source / functions)HitTotalCoverage
Test:Code CoverageLines:2828100.0 %
Date:2012-03-28Functions:55100.0 %
Legend: Lines: + hit + not hit + | Branches: + + taken + - not taken + # not executed +Branches:00-
+
+ + + + + + + + +

+
           Branch data     Line data    Source code
+
+       1                 :            : /**
+       2                 :            :  * \file
+       3                 :            :  * loggerTest.c: tests for my logger class
+       4                 :            :  * Copyright (C) 2012  Georg Hopp
+       5                 :            :  *
+       6                 :            :  * This program is free software: you can redistribute it and/or modify
+       7                 :            :  * it under the terms of the GNU General Public License as published by
+       8                 :            :  * the Free Software Foundation, either version 3 of the License, or
+       9                 :            :  * (at your option) any later version.
+      10                 :            :  *
+      11                 :            :  * This program is distributed in the hope that it will be useful,
+      12                 :            :  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+      13                 :            :  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+      14                 :            :  * GNU General Public License for more details.
+      15                 :            :  *
+      16                 :            :  * You should have received a copy of the GNU General Public License
+      17                 :            :  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+      18                 :            :  */
+      19                 :            : 
+      20                 :            : #include <stdio.h>
+      21                 :            : #include <stdlib.h>
+      22                 :            : 
+      23                 :            : #include "runtest.h"
+      24                 :            : #include "class.h"
+      25                 :            : #include "logger.h"
+      26                 :            : #include "mock/mock_logger.h"
+      27                 :            : 
+      28                 :            : 
+      29                 :            : const char testname[] = "loggerTest";
+      30                 :            : Logger logger = NULL;
+      31                 :            : 
+      32                 :            : 
+      33                 :            : static
+      34                 :            : int
+      35                 :          3 : __setUp()
+      36                 :            : {
+      37                 :          3 :     return TEST_OK;
+      38                 :            : }
+      39                 :            : int (* const setUp)() = __setUp;
+      40                 :            : 
+      41                 :            : static
+      42                 :            : int
+      43                 :          3 : __tearDown()
+      44                 :            : {
+      45                 :          3 :     if (NULL != logger) {
+      46                 :          3 :         ASSERT_OBJECT(logger);
+      47                 :          3 :         delete(logger);
+      48                 :            :     }
+      49                 :            : 
+      50                 :          3 :     return TEST_OK;
+      51                 :            : }
+      52                 :            : int (* const tearDown)() = __tearDown;
+      53                 :            : 
+      54                 :            : static
+      55                 :            : int
+      56                 :          1 : testLoggerLevel()
+      57                 :            : {
+      58                 :          1 :     logger = new(MockLogger, LOGGER_ERR);
+      59                 :            : 
+      60                 :          1 :     ASSERT_INSTANCE_OF(MockLogger, logger);
+      61                 :          1 :     ASSERT_EQUAL(LOGGER_ERR, logger->min_level);
+      62                 :            : 
+      63                 :          1 :     loggerLog(logger, LOGGER_WARNING, "foo %d %s", 123, "bar");
+      64                 :            : 
+      65                 :          1 :     ASSERT_STRING_EQUAL("", ((MockLogger)logger)->message);
+      66                 :            : 
+      67                 :          1 :     loggerLog(logger, LOGGER_ERR, "foo %d %s", 123, "bar");
+      68                 :          1 :     ASSERT_STRING_EQUAL("[ERR] foo 123 bar", ((MockLogger)logger)->message);
+      69                 :            : 
+      70                 :          1 :     mockLoggerCleanMsg((MockLogger)logger);
+      71                 :          1 :     loggerLog(logger, LOGGER_CRIT, "foo %d %s", 123, "bar");
+      72                 :          1 :     ASSERT_STRING_EQUAL("[CRIT] foo 123 bar", ((MockLogger)logger)->message);
+      73                 :            : 
+      74                 :          1 :     return TEST_OK;
+      75                 :            : }
+      76                 :            : 
+      77                 :            : static
+      78                 :            : int
+      79                 :          1 : testLoggerStderr()
+      80                 :            : {
+      81                 :          1 :     logger = new(LoggerStderr, LOGGER_ERR);
+      82                 :            : 
+      83                 :          1 :     freopen("/dev/null", "w", stderr);
+      84                 :          1 :     loggerLog(logger, LOGGER_ERR, "foo %d %s", 123, "bar");
+      85                 :            : 
+      86                 :            :     /**
+      87                 :            :      * \todo think about a way to assert something here
+      88                 :            :      */
+      89                 :            : 
+      90                 :          1 :     return TEST_OK;
+      91                 :            : }
+      92                 :            : 
+      93                 :            : static
+      94                 :            : int
+      95                 :          1 : testLoggerSyslog()
+      96                 :            : {
+      97                 :          1 :     logger = new(LoggerSyslog, LOGGER_ERR);
+      98                 :            : 
+      99                 :          1 :     loggerLog(logger, LOGGER_ERR, "foo %d %s", 123, "bar");
+     100                 :            : 
+     101                 :            :     /**
+     102                 :            :      * \todo think about a way to assert something here
+     103                 :            :      */
+     104                 :            : 
+     105                 :          1 :     return TEST_OK;
+     106                 :            : }
+     107                 :            : 
+     108                 :            : const testfunc tests[] = {
+     109                 :            :     testLoggerLevel,
+     110                 :            :     testLoggerStderr,
+     111                 :            :     testLoggerSyslog
+     112                 :            : };
+     113                 :            : const size_t count = FUNCS_COUNT(tests);
+     114                 :            : 
+     115                 :            : // vim: set et ts=4 sw=4:
+
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/tests/mock/index-detail-sort-b.html b/assets/html/coverage/home/georg/data/git/server/tests/mock/index-detail-sort-b.html new file mode 100644 index 0000000..22caf52 --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/tests/mock/index-detail-sort-b.html @@ -0,0 +1,165 @@ + + + + + + + LCOV - Code Coverage/home/georg/data/git/server/tests/mock + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - /home/georg/data/git/server/tests/mockHitTotalCoverage
Test:Code CoverageLines:4848100.0 %
Date:2012-03-28Functions:1414100.0 %
Legend: Rating: + low: < 75 % + medium: >= 75 % + high: >= 90 % +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Filename Sort by nameLine Coverage ( hide details ) Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
mock_logger.c +
100.0%
+
100.0 %8 / 8100.0 %3 / 3-0 / 0
<unnamed>100.0 %8 / 8100.0 %3 / 3-0 / 0
mock_class.c +
100.0%
+
100.0 %19 / 19100.0 %5 / 5-0 / 0
<unnamed>100.0 %19 / 19100.0 %5 / 5-0 / 0
mock_worker.c +
100.0%
+
100.0 %21 / 21100.0 %6 / 6-0 / 0
<unnamed>100.0 %21 / 21100.0 %6 / 6-0 / 0
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/tests/mock/index-detail-sort-f.html b/assets/html/coverage/home/georg/data/git/server/tests/mock/index-detail-sort-f.html new file mode 100644 index 0000000..c409f06 --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/tests/mock/index-detail-sort-f.html @@ -0,0 +1,165 @@ + + + + + + + LCOV - Code Coverage/home/georg/data/git/server/tests/mock + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - /home/georg/data/git/server/tests/mockHitTotalCoverage
Test:Code CoverageLines:4848100.0 %
Date:2012-03-28Functions:1414100.0 %
Legend: Rating: + low: < 75 % + medium: >= 75 % + high: >= 90 % +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Filename Sort by nameLine Coverage ( hide details ) Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
mock_logger.c +
100.0%
+
100.0 %8 / 8100.0 %3 / 3-0 / 0
<unnamed>100.0 %8 / 8100.0 %3 / 3-0 / 0
mock_class.c +
100.0%
+
100.0 %19 / 19100.0 %5 / 5-0 / 0
<unnamed>100.0 %19 / 19100.0 %5 / 5-0 / 0
mock_worker.c +
100.0%
+
100.0 %21 / 21100.0 %6 / 6-0 / 0
<unnamed>100.0 %21 / 21100.0 %6 / 6-0 / 0
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/tests/mock/index-detail-sort-l.html b/assets/html/coverage/home/georg/data/git/server/tests/mock/index-detail-sort-l.html new file mode 100644 index 0000000..25c6e93 --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/tests/mock/index-detail-sort-l.html @@ -0,0 +1,165 @@ + + + + + + + LCOV - Code Coverage/home/georg/data/git/server/tests/mock + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - /home/georg/data/git/server/tests/mockHitTotalCoverage
Test:Code CoverageLines:4848100.0 %
Date:2012-03-28Functions:1414100.0 %
Legend: Rating: + low: < 75 % + medium: >= 75 % + high: >= 90 % +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Filename Sort by nameLine Coverage ( hide details ) Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
mock_logger.c +
100.0%
+
100.0 %8 / 8100.0 %3 / 3-0 / 0
<unnamed>100.0 %8 / 8100.0 %3 / 3-0 / 0
mock_class.c +
100.0%
+
100.0 %19 / 19100.0 %5 / 5-0 / 0
<unnamed>100.0 %19 / 19100.0 %5 / 5-0 / 0
mock_worker.c +
100.0%
+
100.0 %21 / 21100.0 %6 / 6-0 / 0
<unnamed>100.0 %21 / 21100.0 %6 / 6-0 / 0
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/tests/mock/index-detail.html b/assets/html/coverage/home/georg/data/git/server/tests/mock/index-detail.html new file mode 100644 index 0000000..088e064 --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/tests/mock/index-detail.html @@ -0,0 +1,165 @@ + + + + + + + LCOV - Code Coverage/home/georg/data/git/server/tests/mock + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - /home/georg/data/git/server/tests/mockHitTotalCoverage
Test:Code CoverageLines:4848100.0 %
Date:2012-03-28Functions:1414100.0 %
Legend: Rating: + low: < 75 % + medium: >= 75 % + high: >= 90 % +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Filename Sort by nameLine Coverage ( hide details ) Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
mock_class.c +
100.0%
+
100.0 %19 / 19100.0 %5 / 5-0 / 0
<unnamed>100.0 %19 / 19100.0 %5 / 5-0 / 0
mock_logger.c +
100.0%
+
100.0 %8 / 8100.0 %3 / 3-0 / 0
<unnamed>100.0 %8 / 8100.0 %3 / 3-0 / 0
mock_worker.c +
100.0%
+
100.0 %21 / 21100.0 %6 / 6-0 / 0
<unnamed>100.0 %21 / 21100.0 %6 / 6-0 / 0
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/tests/mock/index-sort-b.html b/assets/html/coverage/home/georg/data/git/server/tests/mock/index-sort-b.html new file mode 100644 index 0000000..26ffdf6 --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/tests/mock/index-sort-b.html @@ -0,0 +1,135 @@ + + + + + + + LCOV - Code Coverage/home/georg/data/git/server/tests/mock + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - /home/georg/data/git/server/tests/mockHitTotalCoverage
Test:Code CoverageLines:4848100.0 %
Date:2012-03-28Functions:1414100.0 %
Legend: Rating: + low: < 75 % + medium: >= 75 % + high: >= 90 % +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Filename Sort by nameLine Coverage ( show details ) Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
mock_logger.c +
100.0%
+
100.0 %8 / 8100.0 %3 / 3-0 / 0
mock_class.c +
100.0%
+
100.0 %19 / 19100.0 %5 / 5-0 / 0
mock_worker.c +
100.0%
+
100.0 %21 / 21100.0 %6 / 6-0 / 0
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/tests/mock/index-sort-f.html b/assets/html/coverage/home/georg/data/git/server/tests/mock/index-sort-f.html new file mode 100644 index 0000000..9e9f9c7 --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/tests/mock/index-sort-f.html @@ -0,0 +1,135 @@ + + + + + + + LCOV - Code Coverage/home/georg/data/git/server/tests/mock + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - /home/georg/data/git/server/tests/mockHitTotalCoverage
Test:Code CoverageLines:4848100.0 %
Date:2012-03-28Functions:1414100.0 %
Legend: Rating: + low: < 75 % + medium: >= 75 % + high: >= 90 % +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Filename Sort by nameLine Coverage ( show details ) Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
mock_logger.c +
100.0%
+
100.0 %8 / 8100.0 %3 / 3-0 / 0
mock_class.c +
100.0%
+
100.0 %19 / 19100.0 %5 / 5-0 / 0
mock_worker.c +
100.0%
+
100.0 %21 / 21100.0 %6 / 6-0 / 0
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/tests/mock/index-sort-l.html b/assets/html/coverage/home/georg/data/git/server/tests/mock/index-sort-l.html new file mode 100644 index 0000000..66c969a --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/tests/mock/index-sort-l.html @@ -0,0 +1,135 @@ + + + + + + + LCOV - Code Coverage/home/georg/data/git/server/tests/mock + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - /home/georg/data/git/server/tests/mockHitTotalCoverage
Test:Code CoverageLines:4848100.0 %
Date:2012-03-28Functions:1414100.0 %
Legend: Rating: + low: < 75 % + medium: >= 75 % + high: >= 90 % +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Filename Sort by nameLine Coverage ( show details ) Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
mock_logger.c +
100.0%
+
100.0 %8 / 8100.0 %3 / 3-0 / 0
mock_class.c +
100.0%
+
100.0 %19 / 19100.0 %5 / 5-0 / 0
mock_worker.c +
100.0%
+
100.0 %21 / 21100.0 %6 / 6-0 / 0
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/tests/mock/index.html b/assets/html/coverage/home/georg/data/git/server/tests/mock/index.html new file mode 100644 index 0000000..a48cf04 --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/tests/mock/index.html @@ -0,0 +1,135 @@ + + + + + + + LCOV - Code Coverage/home/georg/data/git/server/tests/mock + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - /home/georg/data/git/server/tests/mockHitTotalCoverage
Test:Code CoverageLines:4848100.0 %
Date:2012-03-28Functions:1414100.0 %
Legend: Rating: + low: < 75 % + medium: >= 75 % + high: >= 90 % +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Filename Sort by nameLine Coverage ( show details ) Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
mock_class.c +
100.0%
+
100.0 %19 / 19100.0 %5 / 5-0 / 0
mock_logger.c +
100.0%
+
100.0 %8 / 8100.0 %3 / 3-0 / 0
mock_worker.c +
100.0%
+
100.0 %21 / 21100.0 %6 / 6-0 / 0
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/tests/mock/mock_class.c.func-sort-c.html b/assets/html/coverage/home/georg/data/git/server/tests/mock/mock_class.c.func-sort-c.html new file mode 100644 index 0000000..68c6335 --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/tests/mock/mock_class.c.func-sort-c.html @@ -0,0 +1,108 @@ + + + + + + + LCOV - Code Coverage - /home/georg/data/git/server/tests/mock/mock_class.c - functions + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - home/georg/data/git/server/tests/mock - mock_class.c (source / functions)HitTotalCoverage
Test:Code CoverageLines:1919100.0 %
Date:2012-03-28Functions:55100.0 %
Legend: Lines: + hit + not hit + | Branches: + + taken + - not taken + # not executed +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

Function Name Sort by function nameHit count Sort by hit count
_reset5
mockDtor5
mockCtor4
_classInitMockClass_1
mockClone1
+
+
+ + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/tests/mock/mock_class.c.func.html b/assets/html/coverage/home/georg/data/git/server/tests/mock/mock_class.c.func.html new file mode 100644 index 0000000..3b860cf --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/tests/mock/mock_class.c.func.html @@ -0,0 +1,108 @@ + + + + + + + LCOV - Code Coverage - /home/georg/data/git/server/tests/mock/mock_class.c - functions + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - home/georg/data/git/server/tests/mock - mock_class.c (source / functions)HitTotalCoverage
Test:Code CoverageLines:1919100.0 %
Date:2012-03-28Functions:55100.0 %
Legend: Lines: + hit + not hit + | Branches: + + taken + - not taken + # not executed +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

Function Name Sort by function nameHit count Sort by hit count
_classInitMockClass_1
_reset5
mockClone1
mockCtor4
mockDtor5
+
+
+ + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/tests/mock/mock_class.c.gcov.html b/assets/html/coverage/home/georg/data/git/server/tests/mock/mock_class.c.gcov.html new file mode 100644 index 0000000..ed12f2b --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/tests/mock/mock_class.c.gcov.html @@ -0,0 +1,164 @@ + + + + + + + LCOV - Code Coverage - /home/georg/data/git/server/tests/mock/mock_class.c + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - home/georg/data/git/server/tests/mock - mock_class.c (source / functions)HitTotalCoverage
Test:Code CoverageLines:1919100.0 %
Date:2012-03-28Functions:55100.0 %
Legend: Lines: + hit + not hit + | Branches: + + taken + - not taken + # not executed +Branches:00-
+
+ + + + + + + + +

+
           Branch data     Line data    Source code
+
+       1                 :            : /**
+       2                 :            :  * \file
+       3                 :            :  * mock/class.c: a mock to test my oop stuff
+       4                 :            :  * Copyright (C) 2011  Georg Hopp
+       5                 :            :  *
+       6                 :            :  * This program is free software: you can redistribute it and/or modify
+       7                 :            :  * it under the terms of the GNU General Public License as published by
+       8                 :            :  * the Free Software Foundation, either version 3 of the License, or
+       9                 :            :  * (at your option) any later version.
+      10                 :            :  *
+      11                 :            :  * This program is distributed in the hope that it will be useful,
+      12                 :            :  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+      13                 :            :  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+      14                 :            :  * GNU General Public License for more details.
+      15                 :            :  *
+      16                 :            :  * You should have received a copy of the GNU General Public License
+      17                 :            :  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+      18                 :            :  */
+      19                 :            : 
+      20                 :            : #include <assert.h>
+      21                 :            : #include <stdarg.h>
+      22                 :            : 
+      23                 :            : #include "class.h"
+      24                 :            : #include "mock_class.h"
+      25                 :            : 
+      26                 :            : char _called;
+      27                 :            : 
+      28                 :            : void
+      29                 :          5 : _reset()
+      30                 :            : {
+      31                 :          5 :     _called = 0;
+      32                 :          5 : }
+      33                 :            : 
+      34                 :            : static
+      35                 :            : inline
+      36                 :            : int
+      37                 :          4 : mockCtor(void * _this, va_list * params)
+      38                 :            : {
+      39                 :          4 :     MockClass this = _this;
+      40                 :            : 
+      41                 :          4 :     _called = 1;
+      42                 :          4 :     this->value = va_arg(* params, int);
+      43                 :            : 
+      44                 :          4 :     if (321 == this->value)
+      45                 :          1 :         return -1;
+      46                 :            : 
+      47                 :          4 :     return 0;
+      48                 :            : }
+      49                 :            : 
+      50                 :            : static
+      51                 :            : inline
+      52                 :            : void
+      53                 :          5 : mockDtor(void * _this)
+      54                 :            : {
+      55                 :          5 :     _called = 1;
+      56                 :          5 : }
+      57                 :            : 
+      58                 :            : static
+      59                 :            : inline
+      60                 :            : void
+      61                 :          1 : mockClone(void * _this, void * _base)
+      62                 :            : {
+      63                 :          1 :     MockClass this = _this;
+      64                 :          1 :     MockClass base = _base;
+      65                 :            : 
+      66                 :          1 :     this->value = base->value;
+      67                 :          1 : }
+      68                 :            : 
+      69                 :            : INIT_IFACE(Class, mockCtor, mockDtor, mockClone);
+      70                 :          1 : CREATE_CLASS(MockClass, NULL, IFACE(Class));
+      71                 :            : 
+      72                 :            : // vim: set et ts=4 sw=4:
+
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/tests/mock/mock_logger.c.func-sort-c.html b/assets/html/coverage/home/georg/data/git/server/tests/mock/mock_logger.c.func-sort-c.html new file mode 100644 index 0000000..b423cc8 --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/tests/mock/mock_logger.c.func-sort-c.html @@ -0,0 +1,100 @@ + + + + + + + LCOV - Code Coverage - /home/georg/data/git/server/tests/mock/mock_logger.c - functions + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - home/georg/data/git/server/tests/mock - mock_logger.c (source / functions)HitTotalCoverage
Test:Code CoverageLines:88100.0 %
Date:2012-03-28Functions:33100.0 %
Legend: Lines: + hit + not hit + | Branches: + + taken + - not taken + # not executed +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + +

Function Name Sort by function nameHit count Sort by hit count
logMock9
_classInitMockLogger_3
mockLoggerCleanMsg1
+
+
+ + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/tests/mock/mock_logger.c.func.html b/assets/html/coverage/home/georg/data/git/server/tests/mock/mock_logger.c.func.html new file mode 100644 index 0000000..7e18586 --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/tests/mock/mock_logger.c.func.html @@ -0,0 +1,100 @@ + + + + + + + LCOV - Code Coverage - /home/georg/data/git/server/tests/mock/mock_logger.c - functions + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - home/georg/data/git/server/tests/mock - mock_logger.c (source / functions)HitTotalCoverage
Test:Code CoverageLines:88100.0 %
Date:2012-03-28Functions:33100.0 %
Legend: Lines: + hit + not hit + | Branches: + + taken + - not taken + # not executed +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + +

Function Name Sort by function nameHit count Sort by hit count
_classInitMockLogger_3
logMock9
mockLoggerCleanMsg1
+
+
+ + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/tests/mock/mock_logger.c.gcov.html b/assets/html/coverage/home/georg/data/git/server/tests/mock/mock_logger.c.gcov.html new file mode 100644 index 0000000..d1dff4b --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/tests/mock/mock_logger.c.gcov.html @@ -0,0 +1,121 @@ + + + + + + + LCOV - Code Coverage - /home/georg/data/git/server/tests/mock/mock_logger.c + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - home/georg/data/git/server/tests/mock - mock_logger.c (source / functions)HitTotalCoverage
Test:Code CoverageLines:88100.0 %
Date:2012-03-28Functions:33100.0 %
Legend: Lines: + hit + not hit + | Branches: + + taken + - not taken + # not executed +Branches:00-
+
+ + + + + + + + +

+
           Branch data     Line data    Source code
+
+       1                 :            : #include <stdio.h>
+       2                 :            : 
+       3                 :            : #include "class.h"
+       4                 :            : #include "logger.h"
+       5                 :            : #include "mock/mock_logger.h"
+       6                 :            : 
+       7                 :            : static
+       8                 :            : void
+       9                 :          9 : logMock(void * _this, logger_level level, const char * const msg)
+      10                 :            : {
+      11                 :          9 :         MockLogger this = _this;
+      12                 :            : 
+      13                 :          9 :         snprintf(this->message,
+      14                 :            :                         MOCK_MESSAGE_MAX - 1,
+      15                 :            :                         "[%s] %s",
+      16                 :            :                         logger_level_str[level],
+      17                 :            :                         msg);
+      18                 :          9 : }
+      19                 :            : 
+      20                 :            : void
+      21                 :          1 : mockLoggerCleanMsg(MockLogger this)
+      22                 :            : {
+      23                 :          1 :         this->message[0] = 0;
+      24                 :          1 : }
+      25                 :            : 
+      26                 :            : INIT_IFACE(Logger, logMock);
+      27                 :          3 : CREATE_CLASS(MockLogger, Logger, IFACE(Logger));
+      28                 :            : 
+      29                 :            : // vim: set ts=4 sw=4:
+
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/tests/mock/mock_worker.c.func-sort-c.html b/assets/html/coverage/home/georg/data/git/server/tests/mock/mock_worker.c.func-sort-c.html new file mode 100644 index 0000000..b021fe2 --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/tests/mock/mock_worker.c.func-sort-c.html @@ -0,0 +1,112 @@ + + + + + + + LCOV - Code Coverage - /home/georg/data/git/server/tests/mock/mock_worker.c - functions + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - home/georg/data/git/server/tests/mock - mock_worker.c (source / functions)HitTotalCoverage
Test:Code CoverageLines:2121100.0 %
Date:2012-03-28Functions:66100.0 %
Legend: Lines: + hit + not hit + | Branches: + + taken + - not taken + # not executed +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Function Name Sort by function nameHit count Sort by hit count
mockWorkerRead1221
mockWorkerDtor3
mockWorkerWrite1
mockWorkerClone1
_classInitMockWorker_1
mockWorkerCtor1
+
+
+ + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/tests/mock/mock_worker.c.func.html b/assets/html/coverage/home/georg/data/git/server/tests/mock/mock_worker.c.func.html new file mode 100644 index 0000000..d44e2ac --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/tests/mock/mock_worker.c.func.html @@ -0,0 +1,112 @@ + + + + + + + LCOV - Code Coverage - /home/georg/data/git/server/tests/mock/mock_worker.c - functions + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - home/georg/data/git/server/tests/mock - mock_worker.c (source / functions)HitTotalCoverage
Test:Code CoverageLines:2121100.0 %
Date:2012-03-28Functions:66100.0 %
Legend: Lines: + hit + not hit + | Branches: + + taken + - not taken + # not executed +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Function Name Sort by function nameHit count Sort by hit count
_classInitMockWorker_1
mockWorkerClone1
mockWorkerCtor1
mockWorkerDtor3
mockWorkerRead1221
mockWorkerWrite1
+
+
+ + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/tests/mock/mock_worker.c.gcov.html b/assets/html/coverage/home/georg/data/git/server/tests/mock/mock_worker.c.gcov.html new file mode 100644 index 0000000..cf52b88 --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/tests/mock/mock_worker.c.gcov.html @@ -0,0 +1,160 @@ + + + + + + + LCOV - Code Coverage - /home/georg/data/git/server/tests/mock/mock_worker.c + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - home/georg/data/git/server/tests/mock - mock_worker.c (source / functions)HitTotalCoverage
Test:Code CoverageLines:2121100.0 %
Date:2012-03-28Functions:66100.0 %
Legend: Lines: + hit + not hit + | Branches: + + taken + - not taken + # not executed +Branches:00-
+
+ + + + + + + + +

+
           Branch data     Line data    Source code
+
+       1                 :            : #include <stdarg.h>
+       2                 :            : #include <stdlib.h>
+       3                 :            : #include <unistd.h>
+       4                 :            : #include <sys/types.h>
+       5                 :            : 
+       6                 :            : #include "class.h"
+       7                 :            : #include "stream.h"
+       8                 :            : #include "mock_worker.h"
+       9                 :            : 
+      10                 :            : static
+      11                 :            : int
+      12                 :          1 : mockWorkerCtor(void * _this, va_list * params)
+      13                 :            : {
+      14                 :          1 :         MockWorker this = _this;
+      15                 :            : 
+      16                 :          1 :         this->rbuf = &(this->_rbuf[0]);
+      17                 :          1 :         this->wbuf = &(this->_wbuf[0]);
+      18                 :            : 
+      19                 :          1 :         return 0;
+      20                 :            : }
+      21                 :            : 
+      22                 :            : static
+      23                 :            : void
+      24                 :          3 : mockWorkerDtor(void * _this)
+      25                 :            : {
+      26                 :          3 : }
+      27                 :            : 
+      28                 :            : static
+      29                 :            : void
+      30                 :          1 : mockWorkerClone(void * _this, void * _base)
+      31                 :            : {
+      32                 :          1 :         MockWorker this = _this;
+      33                 :          1 :         MockWorker base = _base;
+      34                 :            : 
+      35                 :          1 :         this->rbuf = &(base->_rbuf[0]);
+      36                 :          1 :         this->wbuf = &(base->_wbuf[0]);
+      37                 :          1 : }
+      38                 :            : 
+      39                 :            : static
+      40                 :            : ssize_t
+      41                 :       1221 : mockWorkerRead(void * _this, Stream st)
+      42                 :            : {
+      43                 :       1221 :         MockWorker this = _this;
+      44                 :            :         size_t size;
+      45                 :            : 
+      46                 :       1221 :         size = read((st->handle).fd, this->rbuf, 1024);
+      47                 :            : 
+      48                 :       1221 :         return size;
+      49                 :            : }
+      50                 :            : 
+      51                 :            : static
+      52                 :            : ssize_t
+      53                 :          1 : mockWorkerWrite(void * _this, Stream st)
+      54                 :            : {
+      55                 :          1 :         return 0;
+      56                 :            : }
+      57                 :            : 
+      58                 :            : INIT_IFACE(Class, mockWorkerCtor, mockWorkerDtor, mockWorkerClone);
+      59                 :            : INIT_IFACE(StreamReader, mockWorkerRead);
+      60                 :            : INIT_IFACE(StreamWriter, mockWorkerWrite);
+      61                 :          1 : CREATE_CLASS(
+      62                 :            :                 MockWorker,
+      63                 :            :                 NULL,
+      64                 :            :                 IFACE(Class),
+      65                 :            :                 IFACE(StreamReader),
+      66                 :          1 :                 IFACE(StreamWriter));
+      67                 :            : 
+      68                 :            : // vim: set ts=4 sw=4:
+
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/tests/runtest.c.func-sort-c.html b/assets/html/coverage/home/georg/data/git/server/tests/runtest.c.func-sort-c.html new file mode 100644 index 0000000..2a94d1f --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/tests/runtest.c.func-sort-c.html @@ -0,0 +1,100 @@ + + + + + + + LCOV - Code Coverage - /home/georg/data/git/server/tests/runtest.c - functions + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - home/georg/data/git/server/tests - runtest.c (source / functions)HitTotalCoverage
Test:Code CoverageLines:303683.3 %
Date:2012-03-28Functions:33100.0 %
Legend: Lines: + hit + not hit + | Branches: + + taken + - not taken + # not executed +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + +

Function Name Sort by function nameHit count Sort by hit count
main4
isMemNull1
isObjectNull1
+
+
+ + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/tests/runtest.c.func.html b/assets/html/coverage/home/georg/data/git/server/tests/runtest.c.func.html new file mode 100644 index 0000000..c6914b9 --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/tests/runtest.c.func.html @@ -0,0 +1,100 @@ + + + + + + + LCOV - Code Coverage - /home/georg/data/git/server/tests/runtest.c - functions + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - home/georg/data/git/server/tests - runtest.c (source / functions)HitTotalCoverage
Test:Code CoverageLines:303683.3 %
Date:2012-03-28Functions:33100.0 %
Legend: Lines: + hit + not hit + | Branches: + + taken + - not taken + # not executed +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + +

Function Name Sort by function nameHit count Sort by hit count
isMemNull1
isObjectNull1
main4
+
+
+ + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/tests/runtest.c.gcov.html b/assets/html/coverage/home/georg/data/git/server/tests/runtest.c.gcov.html new file mode 100644 index 0000000..fc94929 --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/tests/runtest.c.gcov.html @@ -0,0 +1,213 @@ + + + + + + + LCOV - Code Coverage - /home/georg/data/git/server/tests/runtest.c + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - home/georg/data/git/server/tests - runtest.c (source / functions)HitTotalCoverage
Test:Code CoverageLines:303683.3 %
Date:2012-03-28Functions:33100.0 %
Legend: Lines: + hit + not hit + | Branches: + + taken + - not taken + # not executed +Branches:00-
+
+ + + + + + + + +

+
           Branch data     Line data    Source code
+
+       1                 :            : /**
+       2                 :            :  * \file
+       3                 :            :  * runtest.c: the main runner for my tests
+       4                 :            :  * Copyright (C) 2011  Georg Hopp
+       5                 :            :  *
+       6                 :            :  * This program is free software: you can redistribute it and/or modify
+       7                 :            :  * it under the terms of the GNU General Public License as published by
+       8                 :            :  * the Free Software Foundation, either version 3 of the License, or
+       9                 :            :  * (at your option) any later version.
+      10                 :            :  *
+      11                 :            :  * This program is distributed in the hope that it will be useful,
+      12                 :            :  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+      13                 :            :  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+      14                 :            :  * GNU General Public License for more details.
+      15                 :            :  *
+      16                 :            :  * You should have received a copy of the GNU General Public License
+      17                 :            :  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+      18                 :            :  */
+      19                 :            : #include <stdio.h>
+      20                 :            : #include <stdlib.h>
+      21                 :            : #include <string.h>
+      22                 :            : #include <sys/types.h>
+      23                 :            : 
+      24                 :            : #include "runtest.h"
+      25                 :            : #include "class.h"
+      26                 :            : 
+      27                 :            : 
+      28                 :            : #define TEST_OK_CHAR            '.'
+      29                 :            : #define TEST_FAILED_CHAR        'F'
+      30                 :            : #define TEST_ERROR_CHAR         'E'
+      31                 :            : 
+      32                 :            : 
+      33                 :            : const char results[3] = {
+      34                 :            :     TEST_OK_CHAR,
+      35                 :            :     TEST_FAILED_CHAR,
+      36                 :            :     TEST_ERROR_CHAR
+      37                 :            : };
+      38                 :            : 
+      39                 :            : int
+      40                 :          1 : isObjectNull(void * object)
+      41                 :            : {
+      42                 :          1 :     class_ptr class = GET_CLASS(object);
+      43                 :            : 
+      44                 :          1 :     if (! IS_OBJECT(object)) {
+      45                 :          0 :         return 0;
+      46                 :            :     }
+      47                 :            : 
+      48                 :          1 :     return isMemNull(object, class->object_size);
+      49                 :            : }
+      50                 :            : 
+      51                 :            : int
+      52                 :          1 : isMemNull(void * _mem, size_t size)
+      53                 :            : {
+      54                 :            :     size_t index;
+      55                 :            : 
+      56                 :          1 :     if (NULL == _mem) {
+      57                 :          0 :         return 0;
+      58                 :            :     }
+      59                 :            : 
+      60                 :          1 :     for(index=0; index<size && 0 == ((char *)_mem)[index]; index++);
+      61                 :            : 
+      62                 :          1 :     return (size == index);
+      63                 :            : }
+      64                 :            : 
+      65                 :            : int
+      66                 :          4 : main(int argc, char * argv[])
+      67                 :            : {
+      68                 :          4 :     size_t errors     = 0;
+      69                 :          4 :     size_t failures   = 0;
+      70                 :            :     // size_t assertions = 0;   // @TODO find a way to count assertions
+      71                 :            : 
+      72                 :            :     size_t index;
+      73                 :            : 
+      74                 :          4 :     printf("running tests for %s\n", testname);
+      75                 :            : 
+      76                 :         14 :     for (index=0; index<count; index++) {
+      77                 :         10 :         int result = TEST_ERROR, _setUp = 0;  // initialize setup to false
+      78                 :            : 
+      79                 :         10 :         if (NULL != setUp) {
+      80                 :         10 :             if (TEST_OK == (result = setUp())) {
+      81                 :         10 :                 _setUp = 1;  // we successfully set up the test
+      82                 :            :             }
+      83                 :            :         }
+      84                 :            : 
+      85                 :         10 :         if (_setUp) {
+      86                 :         10 :             result = tests[index]();
+      87                 :            :         }
+      88                 :            : 
+      89                 :         10 :         if (_setUp && NULL != tearDown) {
+      90                 :         10 :             int _tearDown = tearDown();
+      91                 :            : 
+      92                 :         10 :             if ((! TEST_OK == _tearDown) && TEST_OK == result) {
+      93                 :          0 :                 result = _tearDown;
+      94                 :            :             }
+      95                 :            :         }
+      96                 :            : 
+      97                 :         10 :         switch (result) {
+      98                 :          0 :             case TEST_FAILED: failures++; break;
+      99                 :          0 :             case TEST_ERROR:  errors++; break;
+     100                 :            :         }
+     101                 :            : 
+     102                 :         10 :         putchar(results[result]);
+     103                 :            : 
+     104                 :         10 :         if (79 == index%80) {
+     105                 :          0 :             putchar('\n');
+     106                 :            :         }
+     107                 :            : 
+     108                 :         10 :         fflush(stdout);
+     109                 :            :     }
+     110                 :          4 :     puts("\n");
+     111                 :            : 
+     112                 :          4 :     printf("running %lu tests: %lu - OK, %lu - FAILED, %lu - ERRORS\n",
+     113                 :            :             count,
+     114                 :          4 :             count - errors - failures,
+     115                 :            :             failures,
+     116                 :            :             errors);
+     117                 :            : 
+     118                 :          4 :     return failures + errors;
+     119                 :            : }
+     120                 :            : 
+     121                 :            : // vim: set et ts=4 sw=4:
+
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/tests/serverTest.c.func-sort-c.html b/assets/html/coverage/home/georg/data/git/server/tests/serverTest.c.func-sort-c.html new file mode 100644 index 0000000..265497a --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/tests/serverTest.c.func-sort-c.html @@ -0,0 +1,100 @@ + + + + + + + LCOV - Code Coverage - /home/georg/data/git/server/tests/serverTest.c - functions + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - home/georg/data/git/server/tests - serverTest.c (source / functions)HitTotalCoverage
Test:Code CoverageLines:383997.4 %
Date:2012-03-28Functions:33100.0 %
Legend: Lines: + hit + not hit + | Branches: + + taken + - not taken + # not executed +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + +

Function Name Sort by function nameHit count Sort by hit count
__tearDown2
testDummy1
__setUp1
+
+
+ + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/tests/serverTest.c.func.html b/assets/html/coverage/home/georg/data/git/server/tests/serverTest.c.func.html new file mode 100644 index 0000000..db9459e --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/tests/serverTest.c.func.html @@ -0,0 +1,100 @@ + + + + + + + LCOV - Code Coverage - /home/georg/data/git/server/tests/serverTest.c - functions + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - home/georg/data/git/server/tests - serverTest.c (source / functions)HitTotalCoverage
Test:Code CoverageLines:383997.4 %
Date:2012-03-28Functions:33100.0 %
Legend: Lines: + hit + not hit + | Branches: + + taken + - not taken + # not executed +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + +

Function Name Sort by function nameHit count Sort by hit count
__setUp1
__tearDown2
testDummy1
+
+
+ + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/tests/serverTest.c.gcov.html b/assets/html/coverage/home/georg/data/git/server/tests/serverTest.c.gcov.html new file mode 100644 index 0000000..92a9927 --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/tests/serverTest.c.gcov.html @@ -0,0 +1,204 @@ + + + + + + + LCOV - Code Coverage - /home/georg/data/git/server/tests/serverTest.c + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - home/georg/data/git/server/tests - serverTest.c (source / functions)HitTotalCoverage
Test:Code CoverageLines:383997.4 %
Date:2012-03-28Functions:33100.0 %
Legend: Lines: + hit + not hit + | Branches: + + taken + - not taken + # not executed +Branches:00-
+
+ + + + + + + + +

+
           Branch data     Line data    Source code
+
+       1                 :            : #include <stdio.h>
+       2                 :            : #include <stdlib.h>
+       3                 :            : #include <unistd.h>
+       4                 :            : #include <signal.h>
+       5                 :            : #include <socket.h>
+       6                 :            : #include <sys/types.h>
+       7                 :            : 
+       8                 :            : #include "runtest.h"
+       9                 :            : #include "logger.h"
+      10                 :            : #include "class.h"
+      11                 :            : #include "server.h"
+      12                 :            : #include "utils/signalHandling.h"
+      13                 :            : #include "mock/mock_logger.h"
+      14                 :            : #include "mock/mock_worker.h"
+      15                 :            : 
+      16                 :            : 
+      17                 :            : #define TEST_PORT       11212
+      18                 :            : #define TEST_DATA       "test"
+      19                 :            : 
+      20                 :            : 
+      21                 :            : char buffer[1025];
+      22                 :            : 
+      23                 :            : const char testname[] = "serverTest";
+      24                 :            : 
+      25                 :            : MockLogger logger = NULL;
+      26                 :            : MockWorker worker = NULL;
+      27                 :            : Server     server = NULL;
+      28                 :            : 
+      29                 :            : static
+      30                 :            : int
+      31                 :          1 : __setUp()
+      32                 :            : {
+      33                 :          1 :         logger = new(MockLogger, LOGGER_DEBUG);
+      34                 :          1 :         worker = new(MockWorker);
+      35                 :            : 
+      36                 :          1 :         server = new(Server, logger, worker, TEST_PORT, SOMAXCONN);
+      37                 :            : 
+      38                 :          1 :         ASSERT_INSTANCE_OF(Server, server);
+      39                 :          1 :         ASSERT_INSTANCE_OF(MockLogger, server->logger);
+      40                 :          1 :         ASSERT_INSTANCE_OF(MockWorker, server->worker);
+      41                 :          1 :         ASSERT_INSTANCE_OF(Sock, server->sock);
+      42                 :          1 :         ASSERT_EQUAL(TEST_PORT, server->sock->port);
+      43                 :            : 
+      44                 :          1 :         return TEST_OK;
+      45                 :            : }
+      46                 :            : int (* const setUp)() = __setUp;
+      47                 :            : 
+      48                 :            : static
+      49                 :            : int
+      50                 :          2 : __tearDown()
+      51                 :            : {
+      52                 :          2 :     if (NULL != server) {
+      53                 :          2 :         ASSERT_OBJECT(server);
+      54                 :          2 :         delete(server);
+      55                 :            :     }
+      56                 :            : 
+      57                 :          2 :     if (NULL != worker) {
+      58                 :          2 :         ASSERT_OBJECT(worker);
+      59                 :          2 :         delete(worker);
+      60                 :            :     }
+      61                 :            : 
+      62                 :          2 :     if (NULL != logger) {
+      63                 :          2 :         ASSERT_OBJECT(logger);
+      64                 :          2 :         delete(logger);
+      65                 :            :     }
+      66                 :            : 
+      67                 :          2 :     return TEST_OK;
+      68                 :            : }
+      69                 :            : int (* const tearDown)() = __tearDown;
+      70                 :            : 
+      71                 :            : static
+      72                 :            : int
+      73                 :          1 : testDummy()
+      74                 :            : {
+      75                 :            :         Sock con;
+      76                 :            :         pid_t pid, ppid;
+      77                 :            :         char addr[16];
+      78                 :            : 
+      79                 :          1 :         ppid = getpid();
+      80                 :          1 :         pid  = fork();
+      81                 :            : 
+      82                 :          2 :         switch(pid) {
+      83                 :            :                 case 0:
+      84                 :          1 :                         con = new(Sock, logger, TEST_PORT);
+      85                 :          1 :                         sleep(1);
+      86                 :          1 :                         socketConnect(con, "127.0.0.1", &addr);
+      87                 :          1 :                         write(con->handle, TEST_DATA, strlen(TEST_DATA)+1);
+      88                 :          1 :                         sleep(1);
+      89                 :          1 :                         delete(con);
+      90                 :          1 :                         __tearDown();
+      91                 :          1 :                         kill(ppid, SIGINT);
+      92                 :          1 :                         exit(EXIT_SUCCESS);
+      93                 :            : 
+      94                 :            :                 case -1:
+      95                 :          0 :                         return TEST_FAILED;
+      96                 :            : 
+      97                 :            :                 default:
+      98                 :          1 :                         init_signals();
+      99                 :          1 :                         serverRun(server);
+     100                 :            :         }
+     101                 :            : 
+     102                 :          1 :         ASSERT_STRING_EQUAL(TEST_DATA, worker->rbuf);
+     103                 :            : 
+     104                 :          1 :         return TEST_OK;
+     105                 :            : }
+     106                 :            : 
+     107                 :            : const testfunc tests[] = {
+     108                 :            :     testDummy
+     109                 :            : };
+     110                 :            : const size_t count = FUNCS_COUNT(tests);
+     111                 :            : 
+     112                 :            : // vim: set ts=4 sw=4:
+
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/tests/socketTest.c.func-sort-c.html b/assets/html/coverage/home/georg/data/git/server/tests/socketTest.c.func-sort-c.html new file mode 100644 index 0000000..77ead99 --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/tests/socketTest.c.func-sort-c.html @@ -0,0 +1,104 @@ + + + + + + + LCOV - Code Coverage - /home/georg/data/git/server/tests/socketTest.c - functions + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - home/georg/data/git/server/tests - socketTest.c (source / functions)HitTotalCoverage
Test:Code CoverageLines:343597.1 %
Date:2012-03-28Functions:44100.0 %
Legend: Lines: + hit + not hit + | Branches: + + taken + - not taken + # not executed +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + +

Function Name Sort by function nameHit count Sort by hit count
__tearDown3
__setUp2
testListen1
testAcceptConnect1
+
+
+ + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/tests/socketTest.c.func.html b/assets/html/coverage/home/georg/data/git/server/tests/socketTest.c.func.html new file mode 100644 index 0000000..dccd4c7 --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/tests/socketTest.c.func.html @@ -0,0 +1,104 @@ + + + + + + + LCOV - Code Coverage - /home/georg/data/git/server/tests/socketTest.c - functions + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - home/georg/data/git/server/tests - socketTest.c (source / functions)HitTotalCoverage
Test:Code CoverageLines:343597.1 %
Date:2012-03-28Functions:44100.0 %
Legend: Lines: + hit + not hit + | Branches: + + taken + - not taken + # not executed +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + +

Function Name Sort by function nameHit count Sort by hit count
__setUp2
__tearDown3
testAcceptConnect1
testListen1
+
+
+ + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/home/georg/data/git/server/tests/socketTest.c.gcov.html b/assets/html/coverage/home/georg/data/git/server/tests/socketTest.c.gcov.html new file mode 100644 index 0000000..0173691 --- /dev/null +++ b/assets/html/coverage/home/georg/data/git/server/tests/socketTest.c.gcov.html @@ -0,0 +1,198 @@ + + + + + + + LCOV - Code Coverage - /home/georg/data/git/server/tests/socketTest.c + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - home/georg/data/git/server/tests - socketTest.c (source / functions)HitTotalCoverage
Test:Code CoverageLines:343597.1 %
Date:2012-03-28Functions:44100.0 %
Legend: Lines: + hit + not hit + | Branches: + + taken + - not taken + # not executed +Branches:00-
+
+ + + + + + + + +

+
           Branch data     Line data    Source code
+
+       1                 :            : #include <stdio.h>
+       2                 :            : #include <stdlib.h>
+       3                 :            : #include <unistd.h>
+       4                 :            : 
+       5                 :            : #include "runtest.h"
+       6                 :            : #include "class.h"
+       7                 :            : #include "socket.h"
+       8                 :            : #include "logger.h"
+       9                 :            : #include "mock/mock_logger.h"
+      10                 :            : 
+      11                 :            : 
+      12                 :            : #define TEST_PORT       11212
+      13                 :            : 
+      14                 :            : 
+      15                 :            : const char testname[] = "socketTest";
+      16                 :            : 
+      17                 :            : MockLogger logger = NULL;
+      18                 :            : Sock       sock   = NULL;
+      19                 :            : 
+      20                 :            : static
+      21                 :            : int
+      22                 :          2 : __setUp()
+      23                 :            : {
+      24                 :          2 :         logger = new(MockLogger, LOGGER_DEBUG);
+      25                 :            : 
+      26                 :          2 :         sock = new(Sock, logger, TEST_PORT);
+      27                 :            : 
+      28                 :          2 :         ASSERT_INSTANCE_OF(Sock, sock);
+      29                 :          2 :         ASSERT_INSTANCE_OF(MockLogger, sock->log);
+      30                 :          2 :         ASSERT_EQUAL(TEST_PORT, sock->port);
+      31                 :          2 :         ASSERT_NOT_EQUAL(0, sock->handle);
+      32                 :            : 
+      33                 :          2 :         return TEST_OK;
+      34                 :            : }
+      35                 :            : int (* const setUp)() = __setUp;
+      36                 :            : 
+      37                 :            : static
+      38                 :            : int
+      39                 :          3 : __tearDown()
+      40                 :            : {
+      41                 :          3 :     if (NULL != logger) {
+      42                 :          3 :         ASSERT_OBJECT(logger);
+      43                 :          3 :         delete(logger);
+      44                 :            :     }
+      45                 :            : 
+      46                 :          3 :     if (NULL != sock) {
+      47                 :          3 :         ASSERT_OBJECT(sock);
+      48                 :          3 :         delete(sock);
+      49                 :            :     }
+      50                 :            : 
+      51                 :          3 :     return TEST_OK;
+      52                 :            : }
+      53                 :            : int (* const tearDown)() = __tearDown;
+      54                 :            : 
+      55                 :            : static
+      56                 :            : int
+      57                 :          1 : testListen()
+      58                 :            : {
+      59                 :          1 :         socketListen(sock, 10);
+      60                 :            : 
+      61                 :          1 :         return TEST_OK;
+      62                 :            : }
+      63                 :            : 
+      64                 :            : static
+      65                 :            : int
+      66                 :          1 : testAcceptConnect()
+      67                 :            : {
+      68                 :            :         Sock acc, con;
+      69                 :            :         char addr[16];
+      70                 :            :         pid_t pid;
+      71                 :            : 
+      72                 :          1 :         socketListen(sock, 10);
+      73                 :            : 
+      74                 :          1 :         pid = fork();
+      75                 :            : 
+      76                 :          2 :         switch(pid) {
+      77                 :            :                 case 0:
+      78                 :          1 :                         con = new(Sock, logger, TEST_PORT);
+      79                 :          1 :                         sleep(1);
+      80                 :          1 :                         socketConnect(con, "127.0.0.1", &addr);
+      81                 :          1 :                         delete(con);
+      82                 :          1 :                         __tearDown();
+      83                 :          1 :                         exit(EXIT_SUCCESS);
+      84                 :            : 
+      85                 :            :                 case -1:
+      86                 :          0 :                         return TEST_FAILED;
+      87                 :            : 
+      88                 :            :                 default:
+      89                 :          1 :                         acc = socketAccept(sock, &addr);
+      90                 :            :         }
+      91                 :            : 
+      92                 :          1 :     if (NULL != acc) {
+      93                 :          1 :         ASSERT_OBJECT(acc);
+      94                 :          1 :         delete(acc);
+      95                 :            :     }
+      96                 :            : 
+      97                 :          1 :         return TEST_OK;
+      98                 :            : }
+      99                 :            : 
+     100                 :            : const testfunc tests[] = {
+     101                 :            :     testListen,
+     102                 :            :         testAcceptConnect
+     103                 :            : };
+     104                 :            : const size_t count = FUNCS_COUNT(tests);
+     105                 :            : 
+     106                 :            : // vim: set ts=4 sw=4:
+
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/index-sort-b.html b/assets/html/coverage/index-sort-b.html new file mode 100644 index 0000000..2328fff --- /dev/null +++ b/assets/html/coverage/index-sort-b.html @@ -0,0 +1,231 @@ + + + + + + + LCOV - Code Coverage + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top levelHitTotalCoverage
Test:Code CoverageLines:48055786.2 %
Date:2012-03-28Functions:717397.3 %
Legend: Rating: + low: < 75 % + medium: >= 75 % + high: >= 90 % +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Directory Sort by nameLine Coverage Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
/home/georg/data/git/server/src/server +
76.7%76.7%
+
76.7 %125 / 163100.0 %9 / 9-0 / 0
/home/georg/data/git/server/tests/mock +
100.0%
+
100.0 %48 / 48100.0 %14 / 14-0 / 0
/home/georg/data/git/server/src/stream +
34.5%34.5%
+
34.5 %10 / 2960.0 %3 / 5-0 / 0
/home/georg/data/git/server/src/class +
100.0%
+
100.0 %12 / 12100.0 %2 / 2-0 / 0
/home/georg/data/git/server/src/logger/interface +
100.0%
+
100.0 %15 / 15100.0 %1 / 1-0 / 0
/home/georg/data/git/server/src/socket +
78.6%78.6%
+
78.6 %44 / 56100.0 %6 / 6-0 / 0
/home/georg/data/git/server/tests +
95.3%95.3%
+
95.3 %164 / 172100.0 %21 / 21-0 / 0
/home/georg/data/git/server/src/utils +
100.0%
+
100.0 %19 / 19100.0 %3 / 3-0 / 0
/home/georg/data/git/server/src/class/interface +
100.0%
+
100.0 %23 / 23100.0 %3 / 3-0 / 0
/home/georg/data/git/server/src/stream/interface +
100.0%
+
100.0 %6 / 6100.0 %2 / 2-0 / 0
/home/georg/data/git/server/src/logger +
100.0%
+
100.0 %14 / 14100.0 %7 / 7-0 / 0
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/index-sort-f.html b/assets/html/coverage/index-sort-f.html new file mode 100644 index 0000000..a4fc710 --- /dev/null +++ b/assets/html/coverage/index-sort-f.html @@ -0,0 +1,231 @@ + + + + + + + LCOV - Code Coverage + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top levelHitTotalCoverage
Test:Code CoverageLines:48055786.2 %
Date:2012-03-28Functions:717397.3 %
Legend: Rating: + low: < 75 % + medium: >= 75 % + high: >= 90 % +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Directory Sort by nameLine Coverage Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
/home/georg/data/git/server/src/stream +
34.5%34.5%
+
34.5 %10 / 2960.0 %3 / 5-0 / 0
/home/georg/data/git/server/src/logger/interface +
100.0%
+
100.0 %15 / 15100.0 %1 / 1-0 / 0
/home/georg/data/git/server/src/class +
100.0%
+
100.0 %12 / 12100.0 %2 / 2-0 / 0
/home/georg/data/git/server/src/stream/interface +
100.0%
+
100.0 %6 / 6100.0 %2 / 2-0 / 0
/home/georg/data/git/server/src/utils +
100.0%
+
100.0 %19 / 19100.0 %3 / 3-0 / 0
/home/georg/data/git/server/src/class/interface +
100.0%
+
100.0 %23 / 23100.0 %3 / 3-0 / 0
/home/georg/data/git/server/src/socket +
78.6%78.6%
+
78.6 %44 / 56100.0 %6 / 6-0 / 0
/home/georg/data/git/server/src/logger +
100.0%
+
100.0 %14 / 14100.0 %7 / 7-0 / 0
/home/georg/data/git/server/src/server +
76.7%76.7%
+
76.7 %125 / 163100.0 %9 / 9-0 / 0
/home/georg/data/git/server/tests/mock +
100.0%
+
100.0 %48 / 48100.0 %14 / 14-0 / 0
/home/georg/data/git/server/tests +
95.3%95.3%
+
95.3 %164 / 172100.0 %21 / 21-0 / 0
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/index-sort-l.html b/assets/html/coverage/index-sort-l.html new file mode 100644 index 0000000..873ac2a --- /dev/null +++ b/assets/html/coverage/index-sort-l.html @@ -0,0 +1,231 @@ + + + + + + + LCOV - Code Coverage + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top levelHitTotalCoverage
Test:Code CoverageLines:48055786.2 %
Date:2012-03-28Functions:717397.3 %
Legend: Rating: + low: < 75 % + medium: >= 75 % + high: >= 90 % +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Directory Sort by nameLine Coverage Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
/home/georg/data/git/server/src/stream +
34.5%34.5%
+
34.5 %10 / 2960.0 %3 / 5-0 / 0
/home/georg/data/git/server/src/server +
76.7%76.7%
+
76.7 %125 / 163100.0 %9 / 9-0 / 0
/home/georg/data/git/server/src/socket +
78.6%78.6%
+
78.6 %44 / 56100.0 %6 / 6-0 / 0
/home/georg/data/git/server/tests +
95.3%95.3%
+
95.3 %164 / 172100.0 %21 / 21-0 / 0
/home/georg/data/git/server/src/stream/interface +
100.0%
+
100.0 %6 / 6100.0 %2 / 2-0 / 0
/home/georg/data/git/server/src/class +
100.0%
+
100.0 %12 / 12100.0 %2 / 2-0 / 0
/home/georg/data/git/server/src/logger +
100.0%
+
100.0 %14 / 14100.0 %7 / 7-0 / 0
/home/georg/data/git/server/src/logger/interface +
100.0%
+
100.0 %15 / 15100.0 %1 / 1-0 / 0
/home/georg/data/git/server/src/utils +
100.0%
+
100.0 %19 / 19100.0 %3 / 3-0 / 0
/home/georg/data/git/server/src/class/interface +
100.0%
+
100.0 %23 / 23100.0 %3 / 3-0 / 0
/home/georg/data/git/server/tests/mock +
100.0%
+
100.0 %48 / 48100.0 %14 / 14-0 / 0
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/coverage/index.html b/assets/html/coverage/index.html new file mode 100644 index 0000000..24d22a1 --- /dev/null +++ b/assets/html/coverage/index.html @@ -0,0 +1,231 @@ + + + + + + + LCOV - Code Coverage + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top levelHitTotalCoverage
Test:Code CoverageLines:48055786.2 %
Date:2012-03-28Functions:717397.3 %
Legend: Rating: + low: < 75 % + medium: >= 75 % + high: >= 90 % +Branches:00-
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Directory Sort by nameLine Coverage Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
/home/georg/data/git/server/src/class +
100.0%
+
100.0 %12 / 12100.0 %2 / 2-0 / 0
/home/georg/data/git/server/src/class/interface +
100.0%
+
100.0 %23 / 23100.0 %3 / 3-0 / 0
/home/georg/data/git/server/src/logger +
100.0%
+
100.0 %14 / 14100.0 %7 / 7-0 / 0
/home/georg/data/git/server/src/logger/interface +
100.0%
+
100.0 %15 / 15100.0 %1 / 1-0 / 0
/home/georg/data/git/server/src/server +
76.7%76.7%
+
76.7 %125 / 163100.0 %9 / 9-0 / 0
/home/georg/data/git/server/src/socket +
78.6%78.6%
+
78.6 %44 / 56100.0 %6 / 6-0 / 0
/home/georg/data/git/server/src/stream +
34.5%34.5%
+
34.5 %10 / 2960.0 %3 / 5-0 / 0
/home/georg/data/git/server/src/stream/interface +
100.0%
+
100.0 %6 / 6100.0 %2 / 2-0 / 0
/home/georg/data/git/server/src/utils +
100.0%
+
100.0 %19 / 19100.0 %3 / 3-0 / 0
/home/georg/data/git/server/tests +
95.3%95.3%
+
95.3 %164 / 172100.0 %21 / 21-0 / 0
/home/georg/data/git/server/tests/mock +
100.0%
+
100.0 %48 / 48100.0 %14 / 14-0 / 0
+
+
+ + + + +
Generated by: LCOV version 1.9
+
+ + + diff --git a/assets/html/doc/304_8c.html b/assets/html/doc/304_8c.html new file mode 100644 index 0000000..269be54 --- /dev/null +++ b/assets/html/doc/304_8c.html @@ -0,0 +1,234 @@ + + + + +Server: src/http/response/304.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/http/response/304.c File Reference

+
+
+
#include <sys/types.h>
+#include "class.h"
+#include "http/response.h"
+#include "http/message.h"
+#include "http/header.h"
+#include "utils/memory.h"
+#include "hash.h"
+
+Include dependency graph for 304.c:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + +

+Functions

HttpResponse httpResponse304 (const char *mime, size_t nmime, const char *etag, size_t netag, const char *mtime, size_t nmtime)
+

Detailed Description

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file 304.c.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
HttpResponse httpResponse304 (const char * mime,
size_t nmime,
const char * etag,
size_t netag,
const char * mtime,
size_t nmtime 
)
+
+
+ +

Definition at line 35 of file 304.c.

+
{
+        HttpResponse response;
+        HttpMessage  message;
+
+        response = new(HttpResponse, "HTTP/1.1", 304, "Not Modified");
+        message  = (HttpMessage)response;
+
+        message->type  = HTTP_MESSAGE_BUFFERED;
+        message->nbody = 0;
+        message->body  = NULL;
+
+        hashAdd(message->header,
+                        new(HttpHeader, CSTRA("Content-Type"), mime, nmime));
+        hashAdd(message->header,
+                        new(HttpHeader, CSTRA("ETag"), etag, netag));
+        hashAdd(message->header,
+                        new(HttpHeader, CSTRA("Last-Modified"), mtime, nmtime));
+
+        return response;
+}
+
+

+Here is the call graph for this function:
+
+
+ + +
+

+ +

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/304_8c_source.html b/assets/html/doc/304_8c_source.html new file mode 100644 index 0000000..b97e824 --- /dev/null +++ b/assets/html/doc/304_8c_source.html @@ -0,0 +1,150 @@ + + + + +Server: src/http/response/304.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/http/response/304.c

+
+
+Go to the documentation of this file.
00001 
+00023 #include <sys/types.h>
+00024 
+00025 #include "class.h"
+00026 
+00027 #include "http/response.h"
+00028 #include "http/message.h"
+00029 #include "http/header.h"
+00030 
+00031 #include "utils/memory.h"
+00032 #include "hash.h"
+00033 
+00034 HttpResponse
+00035 httpResponse304(
+00036                 const char * mime, size_t nmime,
+00037                 const char * etag, size_t netag,
+00038                 const char * mtime, size_t nmtime)
+00039 {
+00040         HttpResponse response;
+00041         HttpMessage  message;
+00042 
+00043         response = new(HttpResponse, "HTTP/1.1", 304, "Not Modified");
+00044         message  = (HttpMessage)response;
+00045 
+00046         message->type  = HTTP_MESSAGE_BUFFERED;
+00047         message->nbody = 0;
+00048         message->body  = NULL;
+00049 
+00050         hashAdd(message->header,
+00051                         new(HttpHeader, CSTRA("Content-Type"), mime, nmime));
+00052         hashAdd(message->header,
+00053                         new(HttpHeader, CSTRA("ETag"), etag, netag));
+00054         hashAdd(message->header,
+00055                         new(HttpHeader, CSTRA("Last-Modified"), mtime, nmtime));
+00056 
+00057         return response;
+00058 }
+00059 
+00060 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/403_8c.html b/assets/html/doc/403_8c.html new file mode 100644 index 0000000..d7f83a4 --- /dev/null +++ b/assets/html/doc/403_8c.html @@ -0,0 +1,184 @@ + + + + +Server: src/http/response/403.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/http/response/403.c File Reference

+
+
+
#include <stdlib.h>
+#include <string.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include "class.h"
+#include "http/response.h"
+#include "http/message.h"
+#include "http/header.h"
+
+Include dependency graph for 403.c:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + +

+Functions

HttpResponse httpResponse403 ()
+

Detailed Description

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file 403.c.

+

Function Documentation

+ +
+
+ + + + + + + +
HttpResponse httpResponse403 ()
+
+
+ +

Definition at line 36 of file 403.c.

+
{
+        HttpResponse response;
+        HttpMessage  message;
+
+        response = new(HttpResponse, "HTTP/1.1", 403, "Forbidden");
+        message  = (HttpMessage)response;
+
+        message->type  = HTTP_MESSAGE_BUFFERED;
+        message->nbody = 0;
+        message->body  = NULL;
+
+        return response;
+}
+
+

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/403_8c_source.html b/assets/html/doc/403_8c_source.html new file mode 100644 index 0000000..489d210 --- /dev/null +++ b/assets/html/doc/403_8c_source.html @@ -0,0 +1,141 @@ + + + + +Server: src/http/response/403.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/http/response/403.c

+
+
+Go to the documentation of this file.
00001 
+00023 #include <stdlib.h>
+00024 #include <string.h>
+00025 #include <stdio.h>
+00026 #include <sys/types.h>
+00027 
+00028 #include "class.h"
+00029 
+00030 #include "http/response.h"
+00031 #include "http/message.h"
+00032 #include "http/header.h"
+00033 
+00034 
+00035 HttpResponse
+00036 httpResponse403()
+00037 {
+00038         HttpResponse response;
+00039         HttpMessage  message;
+00040 
+00041         response = new(HttpResponse, "HTTP/1.1", 403, "Forbidden");
+00042         message  = (HttpMessage)response;
+00043 
+00044         message->type  = HTTP_MESSAGE_BUFFERED;
+00045         message->nbody = 0;
+00046         message->body  = NULL;
+00047 
+00048         return response;
+00049 }
+00050 
+00051 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/404_8c.html b/assets/html/doc/404_8c.html new file mode 100644 index 0000000..2cc047e --- /dev/null +++ b/assets/html/doc/404_8c.html @@ -0,0 +1,226 @@ + + + + +Server: src/http/response/404.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/http/response/404.c File Reference

+
+
+
#include <stdlib.h>
+#include <string.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include "class.h"
+#include "http/response.h"
+#include "http/message.h"
+#include "http/header.h"
+#include "utils/memory.h"
+#include "hash.h"
+
+Include dependency graph for 404.c:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + + + +

+Defines

#define RESP_DATA

+Functions

HttpResponse httpResponse404 ()
+

Detailed Description

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file 404.c.

+

Define Documentation

+ +
+
+ + + + +
#define RESP_DATA
+
+
+Value:
"<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n" \
+        "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n" \
+        " \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n" \
+        "<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\">\n" \
+        "<head><title>404 - Not Found</title></head>" \
+        "<body><h1>404 - Not Found</h1></body>" \
+        "</html>"
+
+

Definition at line 37 of file 404.c.

+ +
+
+

Function Documentation

+ +
+
+ + + + + + + +
HttpResponse httpResponse404 ()
+
+
+ +

Definition at line 47 of file 404.c.

+
{
+        HttpResponse response;
+        HttpMessage  message;
+
+        response = new(HttpResponse, "HTTP/1.1", 404, "Not Found");
+        message  = (HttpMessage)response;
+
+        hashAdd(message->header,
+                        new(HttpHeader, CSTRA("Content-Type"), CSTRA("text/html")));
+
+        message->type  = HTTP_MESSAGE_BUFFERED;
+        message->nbody = sizeof(RESP_DATA) - 1;
+        message->body  = malloc(sizeof(RESP_DATA));
+        memcpy(message->body, RESP_DATA, sizeof(RESP_DATA));
+
+        return response;
+}
+
+

+Here is the call graph for this function:
+
+
+ + +
+

+ +

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/404_8c_source.html b/assets/html/doc/404_8c_source.html new file mode 100644 index 0000000..f3ffd5f --- /dev/null +++ b/assets/html/doc/404_8c_source.html @@ -0,0 +1,156 @@ + + + + +Server: src/http/response/404.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/http/response/404.c

+
+
+Go to the documentation of this file.
00001 
+00023 #include <stdlib.h>
+00024 #include <string.h>
+00025 #include <stdio.h>
+00026 #include <sys/types.h>
+00027 
+00028 #include "class.h"
+00029 
+00030 #include "http/response.h"
+00031 #include "http/message.h"
+00032 #include "http/header.h"
+00033 
+00034 #include "utils/memory.h"
+00035 #include "hash.h"
+00036 
+00037 #define RESP_DATA "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n" \
+00038         "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n" \
+00039         " \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n" \
+00040         "<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\">\n" \
+00041         "<head><title>404 - Not Found</title></head>" \
+00042         "<body><h1>404 - Not Found</h1></body>" \
+00043         "</html>"
+00044 
+00045 
+00046 HttpResponse
+00047 httpResponse404()
+00048 {
+00049         HttpResponse response;
+00050         HttpMessage  message;
+00051 
+00052         response = new(HttpResponse, "HTTP/1.1", 404, "Not Found");
+00053         message  = (HttpMessage)response;
+00054 
+00055         hashAdd(message->header,
+00056                         new(HttpHeader, CSTRA("Content-Type"), CSTRA("text/html")));
+00057 
+00058         message->type  = HTTP_MESSAGE_BUFFERED;
+00059         message->nbody = sizeof(RESP_DATA) - 1;
+00060         message->body  = malloc(sizeof(RESP_DATA));
+00061         memcpy(message->body, RESP_DATA, sizeof(RESP_DATA));
+00062 
+00063         return response;
+00064 }
+00065 
+00066 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/accept_8c.html b/assets/html/doc/accept_8c.html new file mode 100644 index 0000000..5cfbcba --- /dev/null +++ b/assets/html/doc/accept_8c.html @@ -0,0 +1,214 @@ + + + + +Server: src/socket/accept.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/socket/accept.c File Reference

+
+
+
#include <errno.h>
+#include <unistd.h>
+#include "socket.h"
+#include "class.h"
+#include "logger.h"
+
+Include dependency graph for accept.c:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + +

+Functions

Sock socketAccept (Sock this, char(*remoteAddr)[16])
+

Detailed Description

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file accept.c.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
Sock socketAccept (Sock this,
char(*) remoteAddr[16] 
)
+
+
+ +

Todo:
Uhh, this is bad. we open a new socket additionally to the one we get from the accept call. i have to change the socket constructor to be able to create the data structure without creation of a socket at all. For now i simply close the socket here.... :D
+

+ +

Definition at line 31 of file accept.c.

+
{
+    Sock         sock;   // Socket for client
+    unsigned int len;    // Length of client address data structure
+
+    // Set the size of the in-out parameter
+    len = sizeof(this->addr);
+
+        sock = new(Sock, this->log, -1);
+
+    // Wait for a client to connect
+    sock->handle = accept(this->handle, (struct sockaddr *) &(sock->addr), &len);
+    if (-1 == sock->handle) {
+        loggerLog(this->log, LOGGER_WARNING,
+                "error accepting connection: %s", strerror(errno));
+    } else {
+                strcpy(*remoteAddr, inet_ntoa((sock->addr).sin_addr));
+
+        loggerLog(this->log, LOGGER_INFO,
+                                "handling client %s\n", inet_ntoa((sock->addr).sin_addr));
+    }
+
+    return sock;
+}
+
+

+Here is the call graph for this function:
+
+
+ + +
+

+ +

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/accept_8c_source.html b/assets/html/doc/accept_8c_source.html new file mode 100644 index 0000000..e7c69bd --- /dev/null +++ b/assets/html/doc/accept_8c_source.html @@ -0,0 +1,146 @@ + + + + +Server: src/socket/accept.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/socket/accept.c

+
+
+Go to the documentation of this file.
00001 
+00023 #include <errno.h>      // for errno
+00024 #include <unistd.h>
+00025 
+00026 #include "socket.h"
+00027 #include "class.h"
+00028 #include "logger.h"
+00029 
+00030 Sock
+00031 socketAccept(Sock this, char (*remoteAddr)[16])
+00032 {
+00033     Sock         sock;   // Socket for client
+00034     unsigned int len;    // Length of client address data structure
+00035 
+00036     // Set the size of the in-out parameter
+00037     len = sizeof(this->addr);
+00038 
+00046         sock = new(Sock, this->log, -1);
+00047 
+00048     // Wait for a client to connect
+00049     sock->handle = accept(this->handle, (struct sockaddr *) &(sock->addr), &len);
+00050     if (-1 == sock->handle) {
+00051         loggerLog(this->log, LOGGER_WARNING,
+00052                 "error accepting connection: %s", strerror(errno));
+00053     } else {
+00054                 strcpy(*remoteAddr, inet_ntoa((sock->addr).sin_addr));
+00055 
+00056         loggerLog(this->log, LOGGER_INFO,
+00057                                 "handling client %s\n", inet_ntoa((sock->addr).sin_addr));
+00058     }
+00059 
+00060     return sock;
+00061 }
+00062 
+00063 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/add__common__header_8c.html b/assets/html/doc/add__common__header_8c.html new file mode 100644 index 0000000..b8b8cb9 --- /dev/null +++ b/assets/html/doc/add__common__header_8c.html @@ -0,0 +1,225 @@ + + + + +Server: src/http/worker/add_common_header.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/http/worker/add_common_header.c File Reference

+
+
+
#include <time.h>
+#include <sys/types.h>
+#include "class.h"
+#include "http/message.h"
+#include "http/header.h"
+#include "http/response.h"
+#include "utils/memory.h"
+#include "hash.h"
+
+Include dependency graph for add_common_header.c:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + +

+Functions

void httpWorkerAddCommonHeader (HttpMessage request, HttpMessage response)
+

Detailed Description

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file add_common_header.c.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
void httpWorkerAddCommonHeader (HttpMessage request,
HttpMessage response 
)
+
+
+ +

Definition at line 36 of file add_common_header.c.

+
{
+        time_t       t;
+        struct tm *  tmp;
+        char         buffer[200];
+        size_t       nbuf;
+
+        if (httpMessageHasKeepAlive(request)) {
+                hashAdd(response->header,
+                                new(HttpHeader, CSTRA("Connection"), CSTRA("Keep-Alive")));
+        }
+        else {
+                hashAdd(response->header,
+                                new(HttpHeader, CSTRA("Connection"), CSTRA("Close")));
+        }
+
+        hashAdd(response->header,
+                        new(HttpHeader, CSTRA("Server"), CSTRA("testserver")));
+
+        switch(((HttpResponse)response)->status) {
+                case 304:
+                        break;
+
+                default:
+                        nbuf = sprintf(buffer, "%d", response->nbody);
+                        hashAdd(response->header,
+                                        new(HttpHeader, CSTRA("Content-Length"), buffer, nbuf));
+        }
+
+        t    = time(NULL);
+        tmp  = localtime(&t);
+        nbuf = strftime(buffer, sizeof(buffer), "%a, %d %b %Y %T %Z", tmp);
+        hashAdd(response->header,
+                        new(HttpHeader, CSTRA("Date"), buffer, nbuf));
+}
+
+

+Here is the call graph for this function:
+
+
+ + +
+

+ +

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/add__common__header_8c_source.html b/assets/html/doc/add__common__header_8c_source.html new file mode 100644 index 0000000..3f67fe8 --- /dev/null +++ b/assets/html/doc/add__common__header_8c_source.html @@ -0,0 +1,162 @@ + + + + +Server: src/http/worker/add_common_header.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/http/worker/add_common_header.c

+
+
+Go to the documentation of this file.
00001 
+00023 #include <time.h>
+00024 #include <sys/types.h>
+00025 
+00026 #include "class.h"
+00027 
+00028 #include "http/message.h"
+00029 #include "http/header.h"
+00030 #include "http/response.h"
+00031 
+00032 #include "utils/memory.h"
+00033 #include "hash.h"
+00034 
+00035 void
+00036 httpWorkerAddCommonHeader(HttpMessage request, HttpMessage response)
+00037 {
+00038         time_t       t;
+00039         struct tm *  tmp;
+00040         char         buffer[200];
+00041         size_t       nbuf;
+00042 
+00043         if (httpMessageHasKeepAlive(request)) {
+00044                 hashAdd(response->header,
+00045                                 new(HttpHeader, CSTRA("Connection"), CSTRA("Keep-Alive")));
+00046         }
+00047         else {
+00048                 hashAdd(response->header,
+00049                                 new(HttpHeader, CSTRA("Connection"), CSTRA("Close")));
+00050         }
+00051 
+00052         hashAdd(response->header,
+00053                         new(HttpHeader, CSTRA("Server"), CSTRA("testserver")));
+00054 
+00055         switch(((HttpResponse)response)->status) {
+00056                 case 304:
+00057                         break;
+00058 
+00059                 default:
+00060                         nbuf = sprintf(buffer, "%d", response->nbody);
+00061                         hashAdd(response->header,
+00062                                         new(HttpHeader, CSTRA("Content-Length"), buffer, nbuf));
+00063         }
+00064 
+00065         t    = time(NULL);
+00066         tmp  = localtime(&t);
+00067         nbuf = strftime(buffer, sizeof(buffer), "%a, %d %b %Y %T %Z", tmp);
+00068         hashAdd(response->header,
+00069                         new(HttpHeader, CSTRA("Date"), buffer, nbuf));
+00070 }
+00071 
+00072 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/addr__index_8c.html b/assets/html/doc/addr__index_8c.html new file mode 100644 index 0000000..1247575 --- /dev/null +++ b/assets/html/doc/addr__index_8c.html @@ -0,0 +1,188 @@ + + + + +Server: src/cbuf/addr_index.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/cbuf/addr_index.c File Reference

+
+
+
#include <sys/types.h>
+#include "cbuf.h"
+
+Include dependency graph for addr_index.c:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + +

+Functions

size_t cbufAddrIndex (Cbuf this, const void *c)
+

Detailed Description

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file addr_index.c.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
size_t cbufAddrIndex (Cbuf this,
const void * c 
)
+
+
+ +

Definition at line 28 of file addr_index.c.

+
{
+        return c - (const void *)cbufGetRead(this);
+}
+
+

+Here is the call graph for this function:
+
+
+ + +
+

+ +

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/addr__index_8c_source.html b/assets/html/doc/addr__index_8c_source.html new file mode 100644 index 0000000..41ef17d --- /dev/null +++ b/assets/html/doc/addr__index_8c_source.html @@ -0,0 +1,123 @@ + + + + +Server: src/cbuf/addr_index.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/cbuf/addr_index.c

+
+
+Go to the documentation of this file.
00001 
+00023 #include <sys/types.h>
+00024 
+00025 #include "cbuf.h"
+00026 
+00027 size_t
+00028 cbufAddrIndex(Cbuf this, const void * c)
+00029 {
+00030         return c - (const void *)cbufGetRead(this);
+00031 }
+00032 
+00033 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/annotated.html b/assets/html/doc/annotated.html new file mode 100644 index 0000000..d83bf78 --- /dev/null +++ b/assets/html/doc/annotated.html @@ -0,0 +1,149 @@ + + + + +Server: Data Structures + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ + + + + + + +
+ +
+ + + + diff --git a/assets/html/doc/answer_8c.html b/assets/html/doc/answer_8c.html new file mode 100644 index 0000000..b081973 --- /dev/null +++ b/assets/html/doc/answer_8c.html @@ -0,0 +1,181 @@ + + + + +Server: src/http/worker/answer.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/http/worker/answer.c File Reference

+
+
+
#include <sys/types.h>
+#include "http/worker.h"
+#include "http/writer.h"
+#include "stream.h"
+
+Include dependency graph for answer.c:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + +

+Functions

ssize_t httpWorkerWrite (HttpWorker this, Stream st)
+

Detailed Description

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file answer.c.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
ssize_t httpWorkerWrite (HttpWorker this,
Stream st 
)
+
+
+ +

Definition at line 30 of file answer.c.

+
{
+        return httpWriterWrite(this->writer, st);
+}
+
+

+Here is the call graph for this function:
+
+
+ + +
+

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/answer_8c_source.html b/assets/html/doc/answer_8c_source.html new file mode 100644 index 0000000..60e25a2 --- /dev/null +++ b/assets/html/doc/answer_8c_source.html @@ -0,0 +1,125 @@ + + + + +Server: src/http/worker/answer.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/http/worker/answer.c

+
+
+Go to the documentation of this file.
00001 
+00023 #include <sys/types.h>
+00024 
+00025 #include "http/worker.h"
+00026 #include "http/writer.h"
+00027 #include "stream.h"
+00028 
+00029 ssize_t
+00030 httpWorkerWrite(HttpWorker this, Stream st)
+00031 {
+00032         return httpWriterWrite(this->writer, st);
+00033 }
+00034 
+00035 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/asset_8c.html b/assets/html/doc/asset_8c.html new file mode 100644 index 0000000..058af79 --- /dev/null +++ b/assets/html/doc/asset_8c.html @@ -0,0 +1,252 @@ + + + + +Server: src/http/response/asset.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/http/response/asset.c File Reference

+
+
+
#include <stdio.h>
+#include <time.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <string.h>
+#include <sys/types.h>
+#include "class.h"
+#include "stream.h"
+#include "http/response.h"
+#include "http/message.h"
+#include "http/header.h"
+#include "utils/memory.h"
+#include "hash.h"
+
+Include dependency graph for asset.c:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + +

+Functions

HttpResponse httpResponseAsset (const char *fname, const char *mime, size_t nmime, const char *match, size_t nmatch)
+

Detailed Description

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file asset.c.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
HttpResponse httpResponseAsset (const char * fname,
const char * mime,
size_t nmime,
const char * match,
size_t nmatch 
)
+
+
+ +

Definition at line 41 of file asset.c.

+
{
+        struct tm *  tmp;
+        char         etag[200];
+        size_t       netag;
+        char         mtime[200];
+        size_t       nmtime;
+        struct stat  st;
+        HttpResponse response;
+        HttpMessage  message;
+        int          handle;
+
+        handle = open(fname, O_RDONLY);
+        fstat(handle, &st);
+
+        tmp    = localtime(&(st.st_mtime));
+        netag  = strftime(etag, sizeof(etag), "%s", tmp);
+        nmtime = strftime(mtime, sizeof(mtime), "%a, %d %b %Y %T %Z", tmp);
+
+        if (netag == nmatch && 0 == memcmp(etag, match, netag)) {
+                return httpResponse304(mime, nmime, etag, netag, mtime, nmtime);
+        }
+
+        response = new(HttpResponse, "HTTP/1.1", 200, "OK");
+        message  = (HttpMessage)response;
+
+        message->type   = HTTP_MESSAGE_PIPED;
+        message->handle = new(Stream, STREAM_FD, handle);
+        message->nbody  = st.st_size;
+
+        hashAdd(message->header,
+                        new(HttpHeader, CSTRA("Content-Type"), mime, nmime));
+        hashAdd(message->header,
+                        new(HttpHeader, CSTRA("ETag"), etag, netag));
+        hashAdd(message->header,
+                        new(HttpHeader, CSTRA("Last-Modified"), mtime, nmtime));
+
+        return response;
+}
+
+

+Here is the call graph for this function:
+
+
+ + +
+

+ +

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/asset_8c_source.html b/assets/html/doc/asset_8c_source.html new file mode 100644 index 0000000..194e5d5 --- /dev/null +++ b/assets/html/doc/asset_8c_source.html @@ -0,0 +1,176 @@ + + + + +Server: src/http/response/asset.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/http/response/asset.c

+
+
+Go to the documentation of this file.
00001 
+00023 #include <stdio.h>
+00024 #include <time.h>
+00025 #include <sys/stat.h>
+00026 #include <fcntl.h>
+00027 #include <string.h>
+00028 #include <sys/types.h>
+00029 
+00030 #include "class.h"
+00031 #include "stream.h"
+00032 
+00033 #include "http/response.h"
+00034 #include "http/message.h"
+00035 #include "http/header.h"
+00036 
+00037 #include "utils/memory.h"
+00038 #include "hash.h"
+00039 
+00040 HttpResponse
+00041 httpResponseAsset(
+00042                 const char * fname,
+00043                 const char * mime,
+00044                 size_t       nmime,
+00045                 const char * match,
+00046                 size_t       nmatch)
+00047 {
+00048         struct tm *  tmp;
+00049         char         etag[200];
+00050         size_t       netag;
+00051         char         mtime[200];
+00052         size_t       nmtime;
+00053         struct stat  st;
+00054         HttpResponse response;
+00055         HttpMessage  message;
+00056         int          handle;
+00057 
+00058         handle = open(fname, O_RDONLY);
+00059         fstat(handle, &st);
+00060 
+00061         tmp    = localtime(&(st.st_mtime));
+00062         netag  = strftime(etag, sizeof(etag), "%s", tmp);
+00063         nmtime = strftime(mtime, sizeof(mtime), "%a, %d %b %Y %T %Z", tmp);
+00064 
+00065         if (netag == nmatch && 0 == memcmp(etag, match, netag)) {
+00066                 return httpResponse304(mime, nmime, etag, netag, mtime, nmtime);
+00067         }
+00068 
+00069         response = new(HttpResponse, "HTTP/1.1", 200, "OK");
+00070         message  = (HttpMessage)response;
+00071 
+00072         message->type   = HTTP_MESSAGE_PIPED;
+00073         message->handle = new(Stream, STREAM_FD, handle);
+00074         message->nbody  = st.st_size;
+00075 
+00076         hashAdd(message->header,
+00077                         new(HttpHeader, CSTRA("Content-Type"), mime, nmime));
+00078         hashAdd(message->header,
+00079                         new(HttpHeader, CSTRA("ETag"), etag, netag));
+00080         hashAdd(message->header,
+00081                         new(HttpHeader, CSTRA("Last-Modified"), mtime, nmtime));
+00082 
+00083         return response;
+00084 }
+00085 
+00086 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/auth_2auth_8h.html b/assets/html/doc/auth_2auth_8h.html new file mode 100644 index 0000000..2aa6dfc --- /dev/null +++ b/assets/html/doc/auth_2auth_8h.html @@ -0,0 +1,244 @@ + + + + +Server: include/auth/auth.h File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

include/auth/auth.h File Reference

+
+
+
#include "class.h"
+#include "auth/ldap.h"
+
+Include dependency graph for auth.h:
+
+
+ + +
+
+This graph shows which files directly or indirectly include this file:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + + + + + + + + +

+Data Structures

struct  Auth

+Typedefs

typedef enum e_AuthModule AuthModule

+Enumerations

enum  e_AuthModule { AUTH_LDAP = 0 + }

+Functions

void * authCreateById (Auth, int)
AuthLdap authCreateLdap (Auth)
+

Detailed Description

+

Authenticatio module factory

+

A factory to get a specific authentication module. An authentication module is a class that implement the Auth interface.

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file auth.h.

+

Typedef Documentation

+ +
+
+ + + + +
typedef enum e_AuthModule AuthModule
+
+
+ +
+
+

Enumeration Type Documentation

+ +
+
+ + + + +
enum e_AuthModule
+
+
+
Enumerator:
+ +
AUTH_LDAP  +
+
+
+ +

Definition at line 33 of file auth.h.

+
                          {
+        AUTH_LDAP = 0
+} AuthModule;
+
+
+
+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
void* authCreateById (Auth ,
int  
)
+
+
+ +
+
+ +
+
+ + + + + + + + +
AuthLdap authCreateLdap (Auth )
+
+
+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/auth_2auth_8h_source.html b/assets/html/doc/auth_2auth_8h_source.html new file mode 100644 index 0000000..b7e8571 --- /dev/null +++ b/assets/html/doc/auth_2auth_8h_source.html @@ -0,0 +1,131 @@ + + + + +Server: include/auth/auth.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

include/auth/auth.h

+
+
+Go to the documentation of this file.
00001 
+00027 #ifndef __AUTH_AUTH_H__
+00028 #define __AUTH_AUTH_H__
+00029 
+00030 #include "class.h"
+00031 #include "auth/ldap.h"
+00032 
+00033 typedef enum e_AuthModule {
+00034         AUTH_LDAP = 0
+00035 } AuthModule;
+00036 
+00037 CLASS(Auth) {
+00038 };
+00039 
+00040 void *   authCreateById(Auth, int);
+00041 AuthLdap authCreateLdap(Auth);
+00042 
+00043 #endif // __AUTH_AUTH_H__
+00044 
+00045 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/auth_2interface_2auth_8h.html b/assets/html/doc/auth_2interface_2auth_8h.html new file mode 100644 index 0000000..d0ff1a3 --- /dev/null +++ b/assets/html/doc/auth_2interface_2auth_8h.html @@ -0,0 +1,226 @@ + + + + +Server: include/auth/interface/auth.h File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

include/auth/interface/auth.h File Reference

+
+
+
#include <stdarg.h>
+#include "class.h"
+#include "auth/credential.h"
+
+Include dependency graph for auth.h:
+
+
+ + +
+
+This graph shows which files directly or indirectly include this file:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + + + + + +

+Data Structures

struct  i_Auth

+Typedefs

typedef int(* fptr_authenticate )(void *, Credential)

+Functions

int authenticate (void *, Credential)
+

Detailed Description

+

The authentication interface.

+

This is the authentication interface. It's only pupose is to authenticate someone or somewhat. It is called AUTH. The concrete access rights are managed within a class called ACL.

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file auth.h.

+

Typedef Documentation

+ +
+
+ + + + +
typedef int(* fptr_authenticate)(void *, Credential)
+
+
+ +

Definition at line 36 of file auth.h.

+ +
+
+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
int authenticate (void * ,
Credential  
)
+
+
+ +

Definition at line 33 of file auth.c.

+
{
+        int ret;
+
+        RETCALL(auth, Auth, authenticate, ret, cred);
+
+        return ret;
+}
+
+

+Here is the call graph for this function:
+
+
+ + +
+

+ +

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/auth_2interface_2auth_8h_source.html b/assets/html/doc/auth_2interface_2auth_8h_source.html new file mode 100644 index 0000000..b4f1f03 --- /dev/null +++ b/assets/html/doc/auth_2interface_2auth_8h_source.html @@ -0,0 +1,134 @@ + + + + +Server: include/auth/interface/auth.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

include/auth/interface/auth.h

+
+
+Go to the documentation of this file.
00001 
+00028 #ifndef __AUTH_INTERFACE_AUTH_H__
+00029 #define __AUTH_INTERFACE_AUTH_H__
+00030 
+00031 #include <stdarg.h>
+00032 
+00033 #include "class.h"
+00034 #include "auth/credential.h"
+00035 
+00036 typedef int (* fptr_authenticate)(void *, Credential);
+00037 
+00038 extern const struct interface i_Auth;
+00039 
+00040 struct i_Auth {
+00041         const struct interface * const _;
+00042         fptr_authenticate              authenticate;
+00043 };
+00044 
+00045 extern int authenticate(void *, Credential);
+00046 
+00047 #endif // __AUTH_INTERFACE_AUTH_H__
+00048 
+00049 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/auth_8c.html b/assets/html/doc/auth_8c.html new file mode 100644 index 0000000..066c3bd --- /dev/null +++ b/assets/html/doc/auth_8c.html @@ -0,0 +1,193 @@ + + + + +Server: src/auth/interface/auth.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/auth/interface/auth.c File Reference

+
+
+
#include "auth/auth.h"
+#include "auth/credential.h"
+#include "auth/interface/auth.h"
+
+Include dependency graph for auth.c:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + +

+Functions

int authenticate (void *auth, Credential cred)
+

Detailed Description

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file auth.c.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
int authenticate (void * auth,
Credential cred 
)
+
+
+ +

Definition at line 33 of file auth.c.

+
{
+        int ret;
+
+        RETCALL(auth, Auth, authenticate, ret, cred);
+
+        return ret;
+}
+
+

+Here is the call graph for this function:
+
+
+ + +
+

+ +

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/auth_8c_source.html b/assets/html/doc/auth_8c_source.html new file mode 100644 index 0000000..83844a3 --- /dev/null +++ b/assets/html/doc/auth_8c_source.html @@ -0,0 +1,132 @@ + + + + +Server: src/auth/interface/auth.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/auth/interface/auth.c

+
+
+Go to the documentation of this file.
00001 
+00023 #include "auth/auth.h"
+00024 #include "auth/credential.h"
+00025 #include "auth/interface/auth.h"
+00026 
+00027 const struct interface i_Auth = {
+00028         "auth",
+00029         1
+00030 };
+00031 
+00032 int
+00033 authenticate(void * auth, Credential cred)
+00034 {
+00035         int ret;
+00036 
+00037         RETCALL(auth, Auth, authenticate, ret, cred);
+00038 
+00039         return ret;
+00040 }
+00041 
+00042 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/auth_8h.html b/assets/html/doc/auth_8h.html new file mode 100644 index 0000000..90cbeff --- /dev/null +++ b/assets/html/doc/auth_8h.html @@ -0,0 +1,126 @@ + + + + +Server: include/auth.h File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

include/auth.h File Reference

+
+
+
#include "auth/auth.h"
+#include "auth/ldap.h"
+#include "auth/credential.h"
+#include "auth/interface/auth.h"
+
+Include dependency graph for auth.h:
+
+
+ + +
+
+

Go to the source code of this file.

+ +
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/auth_8h_source.html b/assets/html/doc/auth_8h_source.html new file mode 100644 index 0000000..92fc969 --- /dev/null +++ b/assets/html/doc/auth_8h_source.html @@ -0,0 +1,122 @@ + + + + +Server: include/auth.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

include/auth.h

+
+
+Go to the documentation of this file.
00001 #ifndef __AUTH_H__
+00002 #define __AUTH_H__
+00003 
+00004 #include "auth/auth.h"
+00005 #include "auth/ldap.h"
+00006 #include "auth/credential.h"
+00007 #include "auth/interface/auth.h"
+00008 
+00009 #endif // __AUTH_H__
+00010 
+00011 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/cbuf_2read_8c.html b/assets/html/doc/cbuf_2read_8c.html new file mode 100644 index 0000000..2fb1e7e --- /dev/null +++ b/assets/html/doc/cbuf_2read_8c.html @@ -0,0 +1,214 @@ + + + + +Server: src/cbuf/read.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/cbuf/read.c File Reference

+
+
+
#include <sys/types.h>
+#include <unistd.h>
+#include <errno.h>
+#include "cbuf.h"
+#include "stream.h"
+
+Include dependency graph for read.c:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + +

+Functions

ssize_t cbufRead (Cbuf this, Stream st)
+

Detailed Description

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file read.c.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
ssize_t cbufRead (Cbuf this,
Stream st 
)
+
+
+ +

Definition at line 32 of file read.c.

+
{
+        ssize_t rrsize = 0;
+        size_t  rsize  = cbufGetFree(this);
+
+        if (0 == rsize) {
+                errno = ECBUFOVFL;
+                return -1;
+        }
+
+        rrsize = streamRead(st, cbufGetWrite(this), rsize);
+
+        switch (rrsize) {
+                case  0:
+                        rrsize = -2;
+                        // DROP THROUGH
+
+                case -1:
+                        break;
+
+                default:
+                        cbufIncWrite(this, rrsize);
+                        break;
+        }
+
+        return rrsize;
+}
+
+

+Here is the call graph for this function:
+
+
+ + +
+

+ +

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/cbuf_2read_8c_source.html b/assets/html/doc/cbuf_2read_8c_source.html new file mode 100644 index 0000000..89c0dcd --- /dev/null +++ b/assets/html/doc/cbuf_2read_8c_source.html @@ -0,0 +1,150 @@ + + + + +Server: src/cbuf/read.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/cbuf/read.c

+
+
+Go to the documentation of this file.
00001 
+00023 #include <sys/types.h>
+00024 #include <unistd.h>
+00025 #include <errno.h>
+00026 
+00027 #include "cbuf.h"
+00028 #include "stream.h"
+00029 
+00030 
+00031 ssize_t
+00032 cbufRead(Cbuf this, Stream st)
+00033 {
+00034         ssize_t rrsize = 0;
+00035         size_t  rsize  = cbufGetFree(this);
+00036 
+00037         if (0 == rsize) {
+00038                 errno = ECBUFOVFL;
+00039                 return -1;
+00040         }
+00041 
+00042         rrsize = streamRead(st, cbufGetWrite(this), rsize);
+00043 
+00044         switch (rrsize) {
+00045                 case  0:
+00046                         rrsize = -2;
+00047                         // DROP THROUGH
+00048 
+00049                 case -1:
+00050                         break;
+00051 
+00052                 default:
+00053                         cbufIncWrite(this, rrsize);
+00054                         break;
+00055         }
+00056 
+00057         return rrsize;
+00058 }
+00059 
+00060 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/cbuf_2write_8c.html b/assets/html/doc/cbuf_2write_8c.html new file mode 100644 index 0000000..6db7007 --- /dev/null +++ b/assets/html/doc/cbuf_2write_8c.html @@ -0,0 +1,206 @@ + + + + +Server: src/cbuf/write.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/cbuf/write.c File Reference

+
+
+
#include <sys/types.h>
+#include <unistd.h>
+#include "cbuf.h"
+#include "stream.h"
+
+Include dependency graph for write.c:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + +

+Functions

ssize_t cbufWrite (Cbuf this, Stream st)
+

Detailed Description

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file write.c.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
ssize_t cbufWrite (Cbuf this,
Stream st 
)
+
+
+ +

Definition at line 31 of file write.c.

+
{
+        ssize_t wwsize = 0;
+        size_t  wsize  = this->bused;
+
+        if (0 == wsize) return 0;
+
+        wwsize = streamWrite(st, cbufGetRead(this), wsize);
+
+        switch (wwsize) {
+                case -1:
+                        break;
+
+                default:
+                        cbufIncRead(this, wwsize);
+                        break;
+        }
+
+        return wwsize;
+}
+
+

+Here is the call graph for this function:
+
+
+ + +
+

+ +

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/cbuf_2write_8c_source.html b/assets/html/doc/cbuf_2write_8c_source.html new file mode 100644 index 0000000..4fa62bb --- /dev/null +++ b/assets/html/doc/cbuf_2write_8c_source.html @@ -0,0 +1,142 @@ + + + + +Server: src/cbuf/write.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/cbuf/write.c

+
+
+Go to the documentation of this file.
00001 
+00023 #include <sys/types.h>
+00024 #include <unistd.h>
+00025 
+00026 #include "cbuf.h"
+00027 #include "stream.h"
+00028 
+00029 
+00030 ssize_t
+00031 cbufWrite(Cbuf this, Stream st)
+00032 {
+00033         ssize_t wwsize = 0;
+00034         size_t  wsize  = this->bused;
+00035 
+00036         if (0 == wsize) return 0;
+00037 
+00038         wwsize = streamWrite(st, cbufGetRead(this), wsize);
+00039 
+00040         switch (wwsize) {
+00041                 case -1:
+00042                         break;
+00043 
+00044                 default:
+00045                         cbufIncRead(this, wwsize);
+00046                         break;
+00047         }
+00048 
+00049         return wwsize;
+00050 }
+00051 
+00052 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/cbuf_8c.html b/assets/html/doc/cbuf_8c.html new file mode 100644 index 0000000..0de2b6a --- /dev/null +++ b/assets/html/doc/cbuf_8c.html @@ -0,0 +1,272 @@ + + + + +Server: src/cbuf/cbuf.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/cbuf/cbuf.c File Reference

+
+
+
#include <sys/types.h>
+#include <sys/stat.h>
+#include <sys/mman.h>
+#include <stdarg.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include "class.h"
+#include "utils/memory.h"
+#include "cbuf.h"
+
+Include dependency graph for cbuf.c:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + + + + + + +

+Defines

#define _POSIX_SOURCE
#define _POSIX_C_SOURCE   200112L
#define _GNU_SOURCE

+Functions

 INIT_IFACE (Class, cbufCtor, cbufDtor, NULL)
 CREATE_CLASS (Cbuf, NULL, IFACE(Class))
+

Detailed Description

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file cbuf.c.

+

Define Documentation

+ +
+
+ + + + +
#define _GNU_SOURCE
+
+
+ +

Definition at line 25 of file cbuf.c.

+ +
+
+ +
+
+ + + + +
#define _POSIX_C_SOURCE   200112L
+
+
+ +

Definition at line 24 of file cbuf.c.

+ +
+
+ +
+
+ + + + +
#define _POSIX_SOURCE
+
+
+ +

Definition at line 23 of file cbuf.c.

+ +
+
+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
CREATE_CLASS (Cbuf ,
NULL ,
IFACE(Class)  
)
+
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
INIT_IFACE (Class ,
cbufCtor ,
cbufDtor ,
NULL  
)
+
+
+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/cbuf_8c_source.html b/assets/html/doc/cbuf_8c_source.html new file mode 100644 index 0000000..22c51ad --- /dev/null +++ b/assets/html/doc/cbuf_8c_source.html @@ -0,0 +1,211 @@ + + + + +Server: src/cbuf/cbuf.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/cbuf/cbuf.c

+
+
+Go to the documentation of this file.
00001 
+00023 #define _POSIX_SOURCE
+00024 #define _POSIX_C_SOURCE 200112L
+00025 #define _GNU_SOURCE
+00026 
+00027 #include <sys/types.h>
+00028 #include <sys/stat.h>
+00029 #include <sys/mman.h>
+00030 #include <stdarg.h>
+00031 #include <stdlib.h>
+00032 #include <stdio.h>
+00033 #include <unistd.h>
+00034 #include <fcntl.h>
+00035 
+00036 #include "class.h"
+00037 #include "utils/memory.h"
+00038 
+00039 #include "cbuf.h"
+00040 
+00041 
+00042 static void cbufDtor(void*);
+00043 
+00044 static
+00045 int
+00046 cbufCtor(void * _this, va_list * params)
+00047 {
+00048         Cbuf   this     = _this;
+00049         char   state    = -1;
+00050         char * shm_name = va_arg(*params, char*);
+00051         long   psize    = sysconf(_SC_PAGESIZE);
+00052         size_t size;
+00053         int    shm;
+00054         char * data;
+00055 
+00056         this->shm_name = malloc(strlen(shm_name) + 7 + 2);
+00057         sprintf(this->shm_name, "/%06d_%s", getpid(), shm_name);
+00058 
+00063         size        = va_arg(*params, size_t);
+00064         size        = (0 >= size)? 1 : (0 != size%psize)? (size/psize)+1 : size/psize;
+00065         this->bsize = psize * size;
+00066 
+00067         while (-1 == state) {
+00068                 shm = shm_open(this->shm_name, O_RDWR|O_CREAT|O_EXCL, S_IRWXU);
+00069                 if (-1 == shm) {
+00070                         break;
+00071                 }
+00072 
+00073                 if (-1 == ftruncate(shm, this->bsize)) {
+00074                         break;
+00075                 }
+00076 
+00077                 this->data = mmap (0, this->bsize << 1,
+00078                                 PROT_NONE, MAP_ANONYMOUS|MAP_PRIVATE, -1, 0);
+00079                 if (this->data == MAP_FAILED) {
+00080                         this->data = NULL;
+00081                         break;
+00082                 }   
+00083 
+00084                 data = mmap (this->data, this->bsize,
+00085                                 PROT_READ|PROT_WRITE, MAP_FIXED|MAP_SHARED, shm, 0);
+00086                 if (data != this->data) {
+00087                         break;
+00088                 }   
+00089 
+00090                 data = mmap (this->data + this->bsize, this->bsize,
+00091                                 PROT_READ|PROT_WRITE, MAP_FIXED|MAP_SHARED, shm, 0);
+00092                 if (data != this->data + this->bsize) {
+00093                         break;
+00094                 }   
+00095 
+00096                 state = 0;
+00097         }
+00098 
+00099         if (-1 != shm) {
+00100                 shm_unlink(this->shm_name);
+00101                 close(shm);
+00102         }
+00103 
+00104         return state;
+00105 }
+00106 
+00107 static
+00108 void
+00109 cbufDtor(void * _this)
+00110 {
+00111         Cbuf this = _this;
+00112 
+00113         FREE(this->shm_name);
+00114 
+00115         if (NULL != this->data && MAP_FAILED != this->data) {
+00116                 munmap(this->data, this->bsize << 1);
+00117         }
+00118 
+00119         this->data = NULL;
+00120 }
+00121 
+00122 INIT_IFACE(Class, cbufCtor, cbufDtor, NULL);
+00123 CREATE_CLASS(Cbuf, NULL, IFACE(Class));
+00124 
+00125 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/cbuf_8h.html b/assets/html/doc/cbuf_8h.html new file mode 100644 index 0000000..c9f003b --- /dev/null +++ b/assets/html/doc/cbuf_8h.html @@ -0,0 +1,979 @@ + + + + +Server: include/cbuf.h File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

include/cbuf.h File Reference

+
+
+
#include <ctype.h>
+#include <string.h>
+#include <sys/types.h>
+#include "class.h"
+#include "stream.h"
+#include "commons.h"
+
+Include dependency graph for cbuf.h:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + +

+Data Structures

struct  Cbuf

+Defines

#define ECBUFOVFL   100

+Functions

ssize_t cbufRead (Cbuf, Stream)
ssize_t cbufWrite (Cbuf, Stream)
char * cbufGetLine (Cbuf, char **)
char * cbufGetData (Cbuf, size_t)
char * cbufSetData (Cbuf, const void *, size_t)
void cbufEmpty (Cbuf)
char * cbufGetRead (Cbuf this)
char * cbufGetWrite (Cbuf this)
char * cbufMemchr (Cbuf this, int c)
size_t cbufAddrIndex (Cbuf this, const void *c)
void cbufIncRead (Cbuf this, size_t n)
void cbufIncWrite (Cbuf this, size_t n)
size_t cbufGetFree (Cbuf this)
char cbufIsEmpty (Cbuf this)
void cbufSkipNonAlpha (Cbuf this)
Bool cbufIsLocked (Cbuf this)
void cbufLock (Cbuf this)
void cbufRelease (Cbuf this)
+

Detailed Description

+

My implementation of a ringbuffer. It maps a shared memory object twice directly following thus make it possible to read and write from any position within the buffer without the nasty wrap calculations. This is achived because the same memory region is mapped at the two addresses.

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file cbuf.h.

+

Define Documentation

+ +
+
+ + + + +
#define ECBUFOVFL   100
+
+
+ +

Definition at line 42 of file cbuf.h.

+ +
+
+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
size_t cbufAddrIndex (Cbuf this,
const void * c 
)
+
+
+ +

Definition at line 28 of file addr_index.c.

+
{
+        return c - (const void *)cbufGetRead(this);
+}
+
+

+Here is the call graph for this function:
+
+
+ + +
+

+ +

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+ +
+
+ + + + + + + + +
void cbufEmpty (Cbuf )
+
+
+ +

Definition at line 26 of file empty.c.

+
{
+        this->bused = 0;
+        this->read  = this->write;
+}
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
char* cbufGetData (Cbuf ,
size_t  
)
+
+
+ +

Definition at line 29 of file get_data.c.

+
{
+        char * ret = cbufGetRead(this);
+
+        if (n > this->bused) {
+                return (char *)-1;
+        }
+
+        cbufIncRead(this, n);
+        return ret;
+}
+
+

+Here is the call graph for this function:
+
+
+ + +
+

+ +

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+ +
+
+ + + + + + + + +
size_t cbufGetFree (Cbuf this)
+
+
+ +

Definition at line 28 of file get_free.c.

+
{
+        return this->bsize - this->bused;
+}
+
+

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
char* cbufGetLine (Cbuf ,
char **  
)
+
+
+ +

Definition at line 30 of file get_line.c.

+
{
+        char * nl  = cbufMemchr(this, '\n');
+        char * ret = NULL;
+
+        if (NULL != nl) {
+                size_t len = cbufAddrIndex(this, nl) + 1;
+
+                *line_end = nl - 1;
+                *nl       = 0;
+                *(nl-1)   = ('\r' == *(nl-1))? 0 : *(nl-1);
+
+                ret = cbufGetRead(this);
+                cbufIncRead(this, len);
+        }
+
+        return ret;
+}
+
+

+Here is the call graph for this function:
+
+
+ + +
+

+ +

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+ +
+
+ + + + + + + + +
char* cbufGetRead (Cbuf this)
+
+
+ +

Definition at line 26 of file get_read.c.

+
{
+        return this->data + this->read;
+}
+
+

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+ +
+
+ + + + + + + + +
char* cbufGetWrite (Cbuf this)
+
+
+ +

Definition at line 26 of file get_write.c.

+
{
+        return this->data + this->write;
+}
+
+

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
void cbufIncRead (Cbuf this,
size_t n 
)
+
+
+ +

Definition at line 28 of file inc_read.c.

+
{
+        this->read  += n;
+        this->read   = (this->read >= this->bsize)?
+                this->read - this->bsize : this->read;
+        this->bused -= n;
+}
+
+

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
void cbufIncWrite (Cbuf this,
size_t n 
)
+
+
+ +

Definition at line 28 of file inc_write.c.

+
{
+        this->write += n;
+        this->write  = (this->write >= this->bsize)?
+                this->write - this->bsize : this->write;
+        this->bused += n;
+}
+
+

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+ +
+
+ + + + + + + + +
char cbufIsEmpty (Cbuf this)
+
+
+ +

Definition at line 26 of file is_empty.c.

+
{
+        return (0 == this->bused);
+}
+
+

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+ +
+
+ + + + + + + + +
Bool cbufIsLocked (Cbuf this)
+
+
+ +

Definition at line 28 of file is_locked.c.

+
{
+        return this->lock;
+}
+
+

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+ +
+
+ + + + + + + + +
void cbufLock (Cbuf this)
+
+
+ +

Definition at line 26 of file lock.c.

+
{
+        this->lock = TRUE;
+}
+
+

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
char* cbufMemchr (Cbuf this,
int c 
)
+
+
+ +

Definition at line 28 of file memchr.c.

+
{
+        return memchr(cbufGetRead(this), c, this->bused);
+}
+
+

+Here is the call graph for this function:
+
+
+ + +
+

+ +

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
ssize_t cbufRead (Cbuf ,
Stream  
)
+
+
+ +

Definition at line 32 of file read.c.

+
{
+        ssize_t rrsize = 0;
+        size_t  rsize  = cbufGetFree(this);
+
+        if (0 == rsize) {
+                errno = ECBUFOVFL;
+                return -1;
+        }
+
+        rrsize = streamRead(st, cbufGetWrite(this), rsize);
+
+        switch (rrsize) {
+                case  0:
+                        rrsize = -2;
+                        // DROP THROUGH
+
+                case -1:
+                        break;
+
+                default:
+                        cbufIncWrite(this, rrsize);
+                        break;
+        }
+
+        return rrsize;
+}
+
+

+Here is the call graph for this function:
+
+
+ + +
+

+ +

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+ +
+
+ + + + + + + + +
void cbufRelease (Cbuf this)
+
+
+ +

Definition at line 26 of file release.c.

+
{
+        this->lock = FALSE;
+}
+
+

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
char* cbufSetData (Cbuf ,
const void * ,
size_t  
)
+
+
+ +

Definition at line 30 of file set_data.c.

+
{
+        char * addr;
+
+        if (n > cbufGetFree(this)) {
+                errno = ECBUFOVFL;
+                return (char *)-1;
+        }
+
+        addr = memcpy(cbufGetWrite(this), src, n);
+        cbufIncWrite(this, n);
+
+        return addr;
+}
+
+

+Here is the call graph for this function:
+
+
+ + +
+

+ +

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+ +
+
+ + + + + + + + +
void cbufSkipNonAlpha (Cbuf this)
+
+
+ +

Definition at line 28 of file skip_non_alpha.c.

+
{
+        while(0 < this->bused && !isalpha(*cbufGetRead(this)))
+                cbufIncRead(this, 1);
+}
+
+

+Here is the call graph for this function:
+
+
+ + +
+

+ +

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
ssize_t cbufWrite (Cbuf ,
Stream  
)
+
+
+ +

Definition at line 31 of file write.c.

+
{
+        ssize_t wwsize = 0;
+        size_t  wsize  = this->bused;
+
+        if (0 == wsize) return 0;
+
+        wwsize = streamWrite(st, cbufGetRead(this), wsize);
+
+        switch (wwsize) {
+                case -1:
+                        break;
+
+                default:
+                        cbufIncRead(this, wwsize);
+                        break;
+        }
+
+        return wwsize;
+}
+
+

+Here is the call graph for this function:
+
+
+ + +
+

+ +

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/cbuf_8h_source.html b/assets/html/doc/cbuf_8h_source.html new file mode 100644 index 0000000..4a00292 --- /dev/null +++ b/assets/html/doc/cbuf_8h_source.html @@ -0,0 +1,164 @@ + + + + +Server: include/cbuf.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

include/cbuf.h

+
+
+Go to the documentation of this file.
00001 
+00030 #ifndef __CBUF_H__
+00031 #define __CBUF_H__
+00032 
+00033 #include <ctype.h>
+00034 #include <string.h>
+00035 #include <sys/types.h>
+00036 
+00037 #include "class.h"
+00038 #include "stream.h"
+00039 
+00040 #include "commons.h"
+00041 
+00042 #define ECBUFOVFL               100
+00043 
+00044 
+00045 CLASS(Cbuf) {
+00046         char * shm_name;  // shared memory identifier
+00047 
+00048         char * data;
+00049         Bool   lock;
+00050 
+00051         size_t bsize;
+00052         size_t bused;
+00053 
+00054         size_t write;
+00055         size_t read;
+00056 };
+00057 
+00058 ssize_t cbufRead(Cbuf,  Stream);
+00059 ssize_t cbufWrite(Cbuf, Stream);
+00060 
+00061 char *  cbufGetLine(Cbuf, char **);
+00062 char *  cbufGetData(Cbuf, size_t);
+00063 char *  cbufSetData(Cbuf, const void *, size_t);
+00064 void    cbufEmpty(Cbuf);
+00065 
+00066 char *  cbufGetRead(Cbuf this);
+00067 char *  cbufGetWrite(Cbuf this);
+00068 char *  cbufMemchr(Cbuf this, int c);
+00069 size_t  cbufAddrIndex(Cbuf this, const void * c);
+00070 void    cbufIncRead(Cbuf this, size_t n);
+00071 void    cbufIncWrite(Cbuf this, size_t n);
+00072 size_t  cbufGetFree(Cbuf this);
+00073 char    cbufIsEmpty(Cbuf this);
+00074 void    cbufSkipNonAlpha(Cbuf this);
+00075 Bool    cbufIsLocked(Cbuf this);
+00076 void    cbufLock(Cbuf this);
+00077 void    cbufRelease(Cbuf this);
+00078 
+00079 #endif // __CBUF_H__
+00080 
+00081 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/class_2class_8h.html b/assets/html/doc/class_2class_8h.html new file mode 100644 index 0000000..66f443d --- /dev/null +++ b/assets/html/doc/class_2class_8h.html @@ -0,0 +1,670 @@ + + + + +Server: include/class/class.h File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

include/class/class.h File Reference

+
+
+
#include <stdarg.h>
+#include <sys/types.h>
+#include <string.h>
+#include <assert.h>
+#include "class/interface.h"
+
+Include dependency graph for class.h:
+
+
+ + +
+
+This graph shows which files directly or indirectly include this file:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + +

+Data Structures

struct  class

+Defines

#define _ISOC99_SOURCE
#define CLASS_MAGIC   0xFEFE
#define CLASS(name)
#define EXTENDS(parent)   const char _[sizeof(struct c_##parent)]
#define _NULL   NULL
#define CREATE_CLASS(name, _parent,...)
#define INIT_CLASS(class)   ((class)->init? (class)->init() : (class))
#define GET_CLASS(object)   (INIT_CLASS(*(class_ptr *)((void*)(object) - sizeof(void*))))
#define IFACE_GET(class, iface)   (interfaceGet(&((class)->impl),(iface)))
#define HAS_PARENT(class)   (NULL != ((class)->parent) && INIT_CLASS((class)->parent))
#define IS_OBJECT(obj)   ((GET_CLASS((obj)))->magic == CLASS_MAGIC)
#define INSTANCE_OF(class, obj)   ((GET_CLASS((obj))) == _##class)
#define _CALL(_class, _iface, method,...)
#define CALL(object, _iface, method,...)
#define RETCALL(object, _iface, method, ret,...)
#define PARENTCALL(object, _iface, method,...)

+Typedefs

typedef struct classclass_ptr
typedef class_ptr(* fptr_classInit )(void)
+

Detailed Description

+

My own class implementation for C. It combines a data structure with a set of dynamically linked methods defined by an interface. A dynamically linked method will be called via a selector method which in turn gets the implementation stored in the class.

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file class.h.

+

Define Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#define _CALL( _class,
 _iface,
 method,
 ... 
)
+
+
+Value:
do {                                                                        \
+                class_ptr class = _class;                                               \
+                iface = (struct i_##_iface *)IFACE_GET(class, &i_##_iface);             \
+                while ((NULL == iface || NULL == iface->method) && HAS_PARENT(class)) { \
+                        class = class->parent;                                              \
+                        iface = (struct i_##_iface *)IFACE_GET(class, &i_##_iface);         \
+                }                                                                       \
+                assert(NULL != iface->method);                                          \
+        } while(0)
+
Todo:
actually i use gcc feature ## for variadoc... think about a way to make this standard.
+ +

Definition at line 80 of file class.h.

+ +
+
+ +
+
+ + + + +
#define _ISOC99_SOURCE
+
+
+ +

Definition at line 38 of file class.h.

+ +
+
+ +
+
+ + + + +
#define _NULL   NULL
+
+
+ +

Definition at line 52 of file class.h.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#define CALL( object,
 _iface,
 method,
 ... 
)
+
+
+Value:
do {                                                         \
+                struct i_##_iface * iface;                               \
+                _CALL(GET_CLASS(object), _iface, method, ##__VA_ARGS__); \
+                iface->method(object, ##__VA_ARGS__);                    \
+        } while(0)
+
+

Definition at line 91 of file class.h.

+ +
+
+ +
+
+ + + + + + + + +
#define CLASS( name)
+
+
+Value:
struct c_##name;                     \
+        typedef struct c_##name * name;      \
+        extern struct class * const _##name; \
+        struct c_##name
+
+

Definition at line 43 of file class.h.

+ +
+
+ +
+
+ + + + +
#define CLASS_MAGIC   0xFEFE
+
+
+ +

Definition at line 41 of file class.h.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
#define CREATE_CLASS( name,
 _parent,
 ... 
)
+
+
+Value:
static struct class c_##name;                   \
+        static class_ptr _classInit##name##_(void) {    \
+                c_##name.parent = _##_parent;               \
+                c_##name.init   = NULL;                     \
+                return &c_##name;                           \
+        }                                               \
+        static struct class c_##name = {                \
+                CLASS_MAGIC,                                \
+                NULL,                                       \
+                sizeof(struct c_##name),                    \
+                _classInit##name##_,                        \
+                INIT_IFACE_IMPL(__VA_ARGS__)                \
+        }; struct class * const _##name = &c_##name
+
+

Definition at line 53 of file class.h.

+ +
+
+ +
+
+ + + + + + + + +
#define EXTENDS( parent)   const char _[sizeof(struct c_##parent)]
+
+
+ +

Definition at line 49 of file class.h.

+ +
+
+ +
+
+ + + + + + + + +
#define GET_CLASS( object)   (INIT_CLASS(*(class_ptr *)((void*)(object) - sizeof(void*))))
+
+
+ +

Definition at line 69 of file class.h.

+ +
+
+ +
+
+ + + + + + + + +
#define HAS_PARENT( class)   (NULL != ((class)->parent) && INIT_CLASS((class)->parent))
+
+
+ +

Definition at line 71 of file class.h.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
#define IFACE_GET( class,
 iface 
)   (interfaceGet(&((class)->impl),(iface)))
+
+
+ +

Definition at line 70 of file class.h.

+ +
+
+ +
+
+ + + + + + + + +
#define INIT_CLASS( class)   ((class)->init? (class)->init() : (class))
+
+
+ +

Definition at line 68 of file class.h.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
#define INSTANCE_OF( class,
 obj 
)   ((GET_CLASS((obj))) == _##class)
+
+
+ +

Definition at line 74 of file class.h.

+ +
+
+ +
+
+ + + + + + + + +
#define IS_OBJECT( obj)   ((GET_CLASS((obj)))->magic == CLASS_MAGIC)
+
+
+ +

Definition at line 73 of file class.h.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#define PARENTCALL( object,
 _iface,
 method,
 ... 
)
+
+
+Value:
do {                                                        \
+                struct i_##_iface * iface;                              \
+                class_ptr pc_class = GET_CLASS((object));               \
+                assert(HAS_PARENT(pc_class));                           \
+                _CALL(pc_class->parent, _iface, method, ##__VA_ARGS__); \
+                iface->method(object, ##__VA_ARGS__);                   \
+        } while(0)
+
+

Definition at line 105 of file class.h.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#define RETCALL( object,
 _iface,
 method,
 ret,
 ... 
)
+
+
+Value:
do {                                                         \
+                struct i_##_iface * iface;                               \
+                _CALL(GET_CLASS(object), _iface, method, ##__VA_ARGS__); \
+                ret = iface->method(object, ##__VA_ARGS__);              \
+        } while(0)
+
+

Definition at line 98 of file class.h.

+ +
+
+

Typedef Documentation

+ +
+
+ + + + +
typedef struct class* class_ptr
+
+
+ +

Definition at line 116 of file class.h.

+ +
+
+ +
+
+ + + + +
typedef class_ptr(* fptr_classInit)(void)
+
+
+ +

Definition at line 117 of file class.h.

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/class_2class_8h_source.html b/assets/html/doc/class_2class_8h_source.html new file mode 100644 index 0000000..997fb51 --- /dev/null +++ b/assets/html/doc/class_2class_8h_source.html @@ -0,0 +1,210 @@ + + + + +Server: include/class/class.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

include/class/class.h

+
+
+Go to the documentation of this file.
00001 
+00027 #ifndef __CLASS_CLASS_H__
+00028 #define __CLASS_CLASS_H__
+00029 
+00030 #include <stdarg.h>
+00031 #include <sys/types.h>
+00032 #include <string.h>
+00033 #include <assert.h>
+00034 
+00035 #include "class/interface.h"
+00036 
+00037 #ifndef _ISOC99_SOURCE
+00038 #define _ISOC99_SOURCE
+00039 #endif
+00040 
+00041 #define CLASS_MAGIC    0xFEFE
+00042 
+00043 #define CLASS(name)                      \
+00044         struct c_##name;                     \
+00045         typedef struct c_##name * name;      \
+00046         extern struct class * const _##name; \
+00047         struct c_##name
+00048 
+00049 #define EXTENDS(parent) \
+00050         const char _[sizeof(struct c_##parent)]
+00051 
+00052 #define _NULL   NULL
+00053 #define CREATE_CLASS(name,_parent,...)              \
+00054         static struct class c_##name;                   \
+00055         static class_ptr _classInit##name##_(void) {    \
+00056                 c_##name.parent = _##_parent;               \
+00057                 c_##name.init   = NULL;                     \
+00058                 return &c_##name;                           \
+00059         }                                               \
+00060         static struct class c_##name = {                \
+00061                 CLASS_MAGIC,                                \
+00062                 NULL,                                       \
+00063                 sizeof(struct c_##name),                    \
+00064                 _classInit##name##_,                        \
+00065                 INIT_IFACE_IMPL(__VA_ARGS__)                \
+00066         }; struct class * const _##name = &c_##name
+00067 
+00068 #define INIT_CLASS(class)                       ((class)->init? (class)->init() : (class))
+00069 #define GET_CLASS(object)                       (INIT_CLASS(*(class_ptr *)((void*)(object) - sizeof(void*))))
+00070 #define IFACE_GET(class,iface)          (interfaceGet(&((class)->impl),(iface)))
+00071 #define HAS_PARENT(class)                       (NULL != ((class)->parent) &&  INIT_CLASS((class)->parent))
+00072 
+00073 #define IS_OBJECT(obj)                          ((GET_CLASS((obj)))->magic == CLASS_MAGIC)
+00074 #define INSTANCE_OF(class,obj)          ((GET_CLASS((obj))) == _##class)
+00075 
+00080 #define _CALL(_class,_iface,method,...)                                         \
+00081         do {                                                                        \
+00082                 class_ptr class = _class;                                               \
+00083                 iface = (struct i_##_iface *)IFACE_GET(class, &i_##_iface);             \
+00084                 while ((NULL == iface || NULL == iface->method) && HAS_PARENT(class)) { \
+00085                         class = class->parent;                                              \
+00086                         iface = (struct i_##_iface *)IFACE_GET(class, &i_##_iface);         \
+00087                 }                                                                       \
+00088                 assert(NULL != iface->method);                                          \
+00089         } while(0)
+00090 
+00091 #define CALL(object,_iface,method,...)                           \
+00092         do {                                                         \
+00093                 struct i_##_iface * iface;                               \
+00094                 _CALL(GET_CLASS(object), _iface, method, ##__VA_ARGS__); \
+00095                 iface->method(object, ##__VA_ARGS__);                    \
+00096         } while(0)
+00097 
+00098 #define RETCALL(object,_iface,method,ret,...)                    \
+00099         do {                                                         \
+00100                 struct i_##_iface * iface;                               \
+00101                 _CALL(GET_CLASS(object), _iface, method, ##__VA_ARGS__); \
+00102                 ret = iface->method(object, ##__VA_ARGS__);              \
+00103         } while(0)
+00104 
+00105 #define PARENTCALL(object,_iface,method,...)                    \
+00106         do {                                                        \
+00107                 struct i_##_iface * iface;                              \
+00108                 class_ptr pc_class = GET_CLASS((object));               \
+00109                 assert(HAS_PARENT(pc_class));                           \
+00110                 _CALL(pc_class->parent, _iface, method, ##__VA_ARGS__); \
+00111                 iface->method(object, ##__VA_ARGS__);                   \
+00112         } while(0)
+00113 
+00114 
+00115 struct class;
+00116 typedef struct class * class_ptr;
+00117 typedef class_ptr (* fptr_classInit)(void);
+00118 struct class {
+00119         const int         magic;
+00120         class_ptr         parent;
+00121         size_t            object_size;
+00122         fptr_classInit    init;
+00123         struct iface_impl impl;
+00124 };
+00125 
+00126 #endif // __CLASS_CLASS_H__
+00127 
+00128 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/class_2interface_2class_8h.html b/assets/html/doc/class_2interface_2class_8h.html new file mode 100644 index 0000000..8645f1b --- /dev/null +++ b/assets/html/doc/class_2interface_2class_8h.html @@ -0,0 +1,402 @@ + + + + +Server: include/class/interface/class.h File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

include/class/interface/class.h File Reference

+
+
+
#include <stdarg.h>
+#include "class/class.h"
+#include "class/interface.h"
+
+Include dependency graph for class.h:
+
+
+ + +
+
+This graph shows which files directly or indirectly include this file:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + + + + + + + + + + + + + +

+Data Structures

struct  i_Class

+Defines

#define new(class,...)   classNew(_##class, ##__VA_ARGS__)
#define delete(object)   classDelete((void **)&(object))
#define clone(object)   classClone((void *)(object))

+Typedefs

typedef int(* fptr_ctor )(void *, va_list *)
typedef void(* fptr_dtor )(void *)
typedef void(* fptr_clone )(void *, void *const)

+Functions

void * classNew (class_ptr,...)
void classDelete (void **)
void * classClone (void *)
+

Detailed Description

+

Interface for class handling. Defines new, delete and clone selectors which in turn use the ctor, dtor and clone implementation from the class implementation.

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file class.h.

+

Define Documentation

+ +
+
+ + + + + + + + +
#define clone( object)   classClone((void *)(object))
+
+
+ +

Definition at line 53 of file class.h.

+ +
+
+ +
+
+ + + + + + + + +
#define delete( object)   classDelete((void **)&(object))
+
+
+ +

Definition at line 52 of file class.h.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
#define new( class,
 ... 
)   classNew(_##class, ##__VA_ARGS__)
+
+
+ +

Definition at line 51 of file class.h.

+ +
+
+

Typedef Documentation

+ +
+
+ + + + +
typedef void(* fptr_clone)(void *, void *const)
+
+
+ +

Definition at line 36 of file class.h.

+ +
+
+ +
+
+ + + + +
typedef int(* fptr_ctor)(void *, va_list *)
+
+
+ +

Definition at line 34 of file class.h.

+ +
+
+ +
+
+ + + + +
typedef void(* fptr_dtor)(void *)
+
+
+ +

Definition at line 35 of file class.h.

+ +
+
+

Function Documentation

+ +
+
+ + + + + + + + +
void* classClone (void * )
+
+
+ +

Definition at line 69 of file i_class.c.

+
{
+        class_ptr class  = GET_CLASS(_object);
+        void *    object = calloc(1, class->object_size + sizeof(void*));
+
+        * (class_ptr *)object = class;
+        object += sizeof(void*);
+
+#undef clone
+        CALL(object, Class, clone, _object);
+
+        return object;
+}
+
+
+
+ +
+
+ + + + + + + + +
void classDelete (void ** )
+
+
+ +

Definition at line 58 of file i_class.c.

+
{
+        if (NULL != *object) {
+                CALL(*object, Class, dtor);
+
+                free(*object - sizeof(void*));
+                *object = NULL;
+        }
+}
+
+

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
void* classNew (class_ptr ,
 ... 
)
+
+
+ +

Definition at line 37 of file i_class.c.

+
{
+        void *  object = calloc(1, class->object_size + sizeof(void*));
+        va_list params;
+        int     ret;
+
+        * (class_ptr *)object = class;
+        object += sizeof(void*);
+
+        va_start(params, class);
+        RETCALL(object, Class, ctor, ret, &params);
+        va_end(params);
+
+        if (-1 == ret) {
+                classDelete(&object);
+        }
+
+        return object;
+}
+
+

+Here is the call graph for this function:
+
+
+ + +
+

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/class_2interface_2class_8h_source.html b/assets/html/doc/class_2interface_2class_8h_source.html new file mode 100644 index 0000000..5b2bfff --- /dev/null +++ b/assets/html/doc/class_2interface_2class_8h_source.html @@ -0,0 +1,144 @@ + + + + +Server: include/class/interface/class.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

include/class/interface/class.h

+
+
+Go to the documentation of this file.
00001 
+00026 #ifndef __CLASS_INTERFACE_CLASS_H__
+00027 #define __CLASS_INTERFACE_CLASS_H__
+00028 
+00029 #include <stdarg.h>
+00030 
+00031 #include "class/class.h"
+00032 #include "class/interface.h"
+00033 
+00034 typedef int  (* fptr_ctor)(void *, va_list *);
+00035 typedef void (* fptr_dtor)(void *);
+00036 typedef void (* fptr_clone)(void *, void * const);
+00037 
+00038 extern const struct interface i_Class;
+00039 
+00040 struct i_Class {
+00041         const struct interface * const _;
+00042         fptr_ctor                      ctor;
+00043         fptr_dtor                      dtor;
+00044         fptr_clone                     clone;
+00045 };
+00046 
+00047 extern void * classNew(class_ptr, ...);
+00048 extern void   classDelete(void **);
+00049 extern void * classClone(void *);
+00050 
+00051 #define new(class,...)          classNew(_##class, ##__VA_ARGS__)
+00052 #define delete(object)          classDelete((void **)&(object))
+00053 #define clone(object)           classClone((void *)(object))
+00054 
+00055 #endif // __CLASS_INTERFACE_CLASS_H__
+00056 
+00057 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/class_8h.html b/assets/html/doc/class_8h.html new file mode 100644 index 0000000..6fe3819 --- /dev/null +++ b/assets/html/doc/class_8h.html @@ -0,0 +1,132 @@ + + + + +Server: include/class.h File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

include/class.h File Reference

+
+
+
#include "class/class.h"
+#include "class/interface.h"
+#include "class/interface/class.h"
+
+Include dependency graph for class.h:
+
+
+ + +
+
+This graph shows which files directly or indirectly include this file:
+
+
+ + +
+
+

Go to the source code of this file.

+ +
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/class_8h_source.html b/assets/html/doc/class_8h_source.html new file mode 100644 index 0000000..e76019d --- /dev/null +++ b/assets/html/doc/class_8h_source.html @@ -0,0 +1,121 @@ + + + + +Server: include/class.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

include/class.h

+
+
+Go to the documentation of this file.
00001 #ifndef __CLASS_H__
+00002 #define __CLASS_H__
+00003 
+00004 #include "class/class.h"
+00005 #include "class/interface.h"
+00006 #include "class/interface/class.h"
+00007 
+00008 #endif // __CLASS_H__
+00009 
+00010 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/classes.html b/assets/html/doc/classes.html new file mode 100644 index 0000000..1b173e6 --- /dev/null +++ b/assets/html/doc/classes.html @@ -0,0 +1,121 @@ + + + + +Server: Data Structure Index + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

Data Structure Index

+
+
+
A | C | H | I | L | R | S
+ +
  A  
+
Hash   HttpWorker   i_StreamReader   LoggerSyslog   
Auth   HashValue   HttpWriter   i_StreamWriter   
  R  
+
AuthLdap   HttpCookie   
  I  
+
i_Subject   randval   
  C  
+
HttpHeader   i_Auth   iface_impl   
  S  
+
Cbuf   HttpMessage   i_Class   interface   Server   
class   HttpMessageQueue   i_Hashable   
  L  
+
Session   
conns   HttpParser   i_HttpIntro   Logger   Sock   
Credential   HttpRequest   i_Logger   LoggerStderr   Stream   
  H  
+
HttpResponse   i_Observer   
A | C | H | I | L | R | S
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/close__conn_8c.html b/assets/html/doc/close__conn_8c.html new file mode 100644 index 0000000..f3bd30b --- /dev/null +++ b/assets/html/doc/close__conn_8c.html @@ -0,0 +1,195 @@ + + + + +Server: src/server/close_conn.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/server/close_conn.c File Reference

+
+
+
#include <stdlib.h>
+#include <string.h>
+#include "server.h"
+#include "class.h"
+#include "stream.h"
+
+Include dependency graph for close_conn.c:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + +

+Functions

void serverCloseConn (Server this, unsigned int i)
+

Detailed Description

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file close_conn.c.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
void serverCloseConn (Server this,
unsigned int i 
)
+
+
+ +

Definition at line 31 of file close_conn.c.

+
{
+        int    fd = (this->fds)[i].fd;
+        Stream st = (this->conns[fd]).stream;
+
+        delete((this->conns)[fd].sock);
+        delete((this->conns)[fd].worker);
+
+        if (NULL != st && STREAM_SSL == st->type) {
+                SSL_shutdown((st->handle).ssl);
+                SSL_free((st->handle).ssl);
+        }
+
+        delete(st);
+
+        memset(&(this->fds[i]), 0, sizeof(struct pollfd));
+}
+
+

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/close__conn_8c_source.html b/assets/html/doc/close__conn_8c_source.html new file mode 100644 index 0000000..e95da1a --- /dev/null +++ b/assets/html/doc/close__conn_8c_source.html @@ -0,0 +1,139 @@ + + + + +Server: src/server/close_conn.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/server/close_conn.c

+
+
+Go to the documentation of this file.
00001 
+00023 #include <stdlib.h>
+00024 #include <string.h>
+00025 
+00026 #include "server.h"
+00027 #include "class.h"
+00028 #include "stream.h"
+00029 
+00030 void
+00031 serverCloseConn(Server this, unsigned int i)
+00032 {
+00033         int    fd = (this->fds)[i].fd;
+00034         Stream st = (this->conns[fd]).stream;
+00035 
+00036         delete((this->conns)[fd].sock);
+00037         delete((this->conns)[fd].worker);
+00038 
+00039         if (NULL != st && STREAM_SSL == st->type) {
+00040                 SSL_shutdown((st->handle).ssl);
+00041                 SSL_free((st->handle).ssl);
+00042         }
+00043 
+00044         delete(st);
+00045 
+00046         memset(&(this->fds[i]), 0, sizeof(struct pollfd));
+00047 }
+00048 
+00049 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/commons_8h.html b/assets/html/doc/commons_8h.html new file mode 100644 index 0000000..4cb6c24 --- /dev/null +++ b/assets/html/doc/commons_8h.html @@ -0,0 +1,314 @@ + + + + +Server: include/commons.h File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

include/commons.h File Reference

+
+
+
+This graph shows which files directly or indirectly include this file:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + + + + + + + +

+Defines

#define Bool   char
#define TRUE   1
#define FALSE   0
#define MAX(a, b)   ((a)>(b)? (a) : (b))
#define MIN(a, b)   ((a)<(b)? (a) : (b))
#define SWAP_FUN(a, b)   ((a)^=(b),(b)^=(a),(a)^=(b))
#define SWAP(type, a, b)
+

Detailed Description

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file commons.h.

+

Define Documentation

+ +
+
+ + + + +
#define Bool   char
+
+
+ +

Definition at line 26 of file commons.h.

+ +
+
+ +
+
+ + + + +
#define FALSE   0
+
+
+ +

Definition at line 28 of file commons.h.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
#define MAX( a,
 
)   ((a)>(b)? (a) : (b))
+
+
+ +

Definition at line 31 of file commons.h.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
#define MIN( a,
 
)   ((a)<(b)? (a) : (b))
+
+
+ +

Definition at line 35 of file commons.h.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
#define SWAP( type,
 a,
 
)
+
+
+Value:
do { \
+        type tmp = (a);           \
+        (a) = (b);                \
+        (b) = tmp;                \
+} while(0);
+
+

Definition at line 40 of file commons.h.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
#define SWAP_FUN( a,
 
)   ((a)^=(b),(b)^=(a),(a)^=(b))
+
+
+ +

Definition at line 38 of file commons.h.

+ +
+
+ +
+
+ + + + +
#define TRUE   1
+
+
+ +

Definition at line 27 of file commons.h.

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/commons_8h_source.html b/assets/html/doc/commons_8h_source.html new file mode 100644 index 0000000..21d2faf --- /dev/null +++ b/assets/html/doc/commons_8h_source.html @@ -0,0 +1,138 @@ + + + + +Server: include/commons.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

include/commons.h

+
+
+Go to the documentation of this file.
00001 
+00023 #ifndef __COMMONS_H__
+00024 #define __COMMONS_H__
+00025 
+00026 #define Bool    char
+00027 #define TRUE    1
+00028 #define FALSE   0
+00029 
+00030 #ifndef MAX
+00031 #       define MAX(a,b) ((a)>(b)? (a) : (b))
+00032 #endif
+00033 
+00034 #ifndef MIN
+00035 #       define MIN(a,b) ((a)<(b)? (a) : (b))
+00036 #endif 
+00037 
+00038 #define SWAP_FUN(a, b)  ((a)^=(b),(b)^=(a),(a)^=(b))
+00039 
+00040 #define SWAP(type, a, b) do { \
+00041         type tmp = (a);           \
+00042         (a) = (b);                \
+00043         (b) = tmp;                \
+00044 } while(0);
+00045 
+00046 #endif // __COMMONS_H__
+00047 
+00048 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/config_8h.html b/assets/html/doc/config_8h.html new file mode 100644 index 0000000..31aa44d --- /dev/null +++ b/assets/html/doc/config_8h.html @@ -0,0 +1,568 @@ + + + + +Server: config.h File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

config.h File Reference

+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Defines

#define HAVE_DLFCN_H   1
#define HAVE_INTTYPES_H   1
#define HAVE_JSON_JSON_H   1
#define HAVE_LIBSSL   1
#define HAVE_MEMORY_H   1
#define HAVE_MEMSET   1
#define HAVE_STDARG_H   1
#define HAVE_STDBOOL_H   1
#define HAVE_STDINT_H   1
#define HAVE_STDIO_H   1
#define HAVE_STDLIB_H   1
#define HAVE_STRINGS_H   1
#define HAVE_STRING_H   1
#define HAVE_SYSLOG_H   1
#define HAVE_SYS_STAT_H   1
#define HAVE_SYS_TYPES_H   1
#define HAVE_UNISTD_H   1
#define HAVE__BOOL   1
#define LT_OBJDIR   ".libs/"
#define PACKAGE   "webgameserver"
#define PACKAGE_BUGREPORT   "Georg Hopp <georg@steffers.org>"
#define PACKAGE_NAME   "webgameserver"
#define PACKAGE_STRING   "webgameserver 0.0.2"
#define PACKAGE_TARNAME   "webgameserver"
#define PACKAGE_URL   ""
#define PACKAGE_VERSION   "0.0.2"
#define STDC_HEADERS   1
#define VERSION   "0.0.2"
+

Define Documentation

+ +
+
+ + + + +
#define HAVE__BOOL   1
+
+
+ +

Definition at line 56 of file config.h.

+ +
+
+ +
+
+ + + + +
#define HAVE_DLFCN_H   1
+
+
+ +

Definition at line 5 of file config.h.

+ +
+
+ +
+
+ + + + +
#define HAVE_INTTYPES_H   1
+
+
+ +

Definition at line 8 of file config.h.

+ +
+
+ +
+
+ + + + +
#define HAVE_JSON_JSON_H   1
+
+
+ +

Definition at line 11 of file config.h.

+ +
+
+ +
+
+ + + + +
#define HAVE_LIBSSL   1
+
+
+ +

Definition at line 14 of file config.h.

+ +
+
+ +
+
+ + + + +
#define HAVE_MEMORY_H   1
+
+
+ +

Definition at line 17 of file config.h.

+ +
+
+ +
+
+ + + + +
#define HAVE_MEMSET   1
+
+
+ +

Definition at line 20 of file config.h.

+ +
+
+ +
+
+ + + + +
#define HAVE_STDARG_H   1
+
+
+ +

Definition at line 23 of file config.h.

+ +
+
+ +
+
+ + + + +
#define HAVE_STDBOOL_H   1
+
+
+ +

Definition at line 26 of file config.h.

+ +
+
+ +
+
+ + + + +
#define HAVE_STDINT_H   1
+
+
+ +

Definition at line 29 of file config.h.

+ +
+
+ +
+
+ + + + +
#define HAVE_STDIO_H   1
+
+
+ +

Definition at line 32 of file config.h.

+ +
+
+ +
+
+ + + + +
#define HAVE_STDLIB_H   1
+
+
+ +

Definition at line 35 of file config.h.

+ +
+
+ +
+
+ + + + +
#define HAVE_STRING_H   1
+
+
+ +

Definition at line 41 of file config.h.

+ +
+
+ +
+
+ + + + +
#define HAVE_STRINGS_H   1
+
+
+ +

Definition at line 38 of file config.h.

+ +
+
+ +
+
+ + + + +
#define HAVE_SYS_STAT_H   1
+
+
+ +

Definition at line 47 of file config.h.

+ +
+
+ +
+
+ + + + +
#define HAVE_SYS_TYPES_H   1
+
+
+ +

Definition at line 50 of file config.h.

+ +
+
+ +
+
+ + + + +
#define HAVE_SYSLOG_H   1
+
+
+ +

Definition at line 44 of file config.h.

+ +
+
+ +
+
+ + + + +
#define HAVE_UNISTD_H   1
+
+
+ +

Definition at line 53 of file config.h.

+ +
+
+ +
+
+ + + + +
#define LT_OBJDIR   ".libs/"
+
+
+ +

Definition at line 60 of file config.h.

+ +
+
+ +
+
+ + + + +
#define PACKAGE   "webgameserver"
+
+
+ +

Definition at line 66 of file config.h.

+ +
+
+ +
+
+ + + + +
#define PACKAGE_BUGREPORT   "Georg Hopp <georg@steffers.org>"
+
+
+ +

Definition at line 69 of file config.h.

+ +
+
+ +
+
+ + + + +
#define PACKAGE_NAME   "webgameserver"
+
+
+ +

Definition at line 72 of file config.h.

+ +
+
+ +
+
+ + + + +
#define PACKAGE_STRING   "webgameserver 0.0.2"
+
+
+ +

Definition at line 75 of file config.h.

+ +
+
+ +
+
+ + + + +
#define PACKAGE_TARNAME   "webgameserver"
+
+
+ +

Definition at line 78 of file config.h.

+ +
+
+ +
+
+ + + + +
#define PACKAGE_URL   ""
+
+
+ +

Definition at line 81 of file config.h.

+ +
+
+ +
+
+ + + + +
#define PACKAGE_VERSION   "0.0.2"
+
+
+ +

Definition at line 84 of file config.h.

+ +
+
+ +
+
+ + + + +
#define STDC_HEADERS   1
+
+
+ +

Definition at line 87 of file config.h.

+ +
+
+ +
+
+ + + + +
#define VERSION   "0.0.2"
+
+
+ +

Definition at line 90 of file config.h.

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/config_8h_source.html b/assets/html/doc/config_8h_source.html new file mode 100644 index 0000000..999833c --- /dev/null +++ b/assets/html/doc/config_8h_source.html @@ -0,0 +1,213 @@ + + + + +Server: config.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

config.h

+
+
+Go to the documentation of this file.
00001 /* config.h.  Generated from config.h.in by configure.  */
+00002 /* config.h.in.  Generated from configure.ac by autoheader.  */
+00003 
+00004 /* Define to 1 if you have the <dlfcn.h> header file. */
+00005 #define HAVE_DLFCN_H 1
+00006 
+00007 /* Define to 1 if you have the <inttypes.h> header file. */
+00008 #define HAVE_INTTYPES_H 1
+00009 
+00010 /* Define to 1 if you have the <json/json.h> header file. */
+00011 #define HAVE_JSON_JSON_H 1
+00012 
+00013 /* Define to 1 if you have the `ssl' library (-lssl). */
+00014 #define HAVE_LIBSSL 1
+00015 
+00016 /* Define to 1 if you have the <memory.h> header file. */
+00017 #define HAVE_MEMORY_H 1
+00018 
+00019 /* Define to 1 if you have the `memset' function. */
+00020 #define HAVE_MEMSET 1
+00021 
+00022 /* Define to 1 if you have the <stdarg.h> header file. */
+00023 #define HAVE_STDARG_H 1
+00024 
+00025 /* Define to 1 if stdbool.h conforms to C99. */
+00026 #define HAVE_STDBOOL_H 1
+00027 
+00028 /* Define to 1 if you have the <stdint.h> header file. */
+00029 #define HAVE_STDINT_H 1
+00030 
+00031 /* Define to 1 if you have the <stdio.h> header file. */
+00032 #define HAVE_STDIO_H 1
+00033 
+00034 /* Define to 1 if you have the <stdlib.h> header file. */
+00035 #define HAVE_STDLIB_H 1
+00036 
+00037 /* Define to 1 if you have the <strings.h> header file. */
+00038 #define HAVE_STRINGS_H 1
+00039 
+00040 /* Define to 1 if you have the <string.h> header file. */
+00041 #define HAVE_STRING_H 1
+00042 
+00043 /* Define to 1 if you have the <syslog.h> header file. */
+00044 #define HAVE_SYSLOG_H 1
+00045 
+00046 /* Define to 1 if you have the <sys/stat.h> header file. */
+00047 #define HAVE_SYS_STAT_H 1
+00048 
+00049 /* Define to 1 if you have the <sys/types.h> header file. */
+00050 #define HAVE_SYS_TYPES_H 1
+00051 
+00052 /* Define to 1 if you have the <unistd.h> header file. */
+00053 #define HAVE_UNISTD_H 1
+00054 
+00055 /* Define to 1 if the system has the type `_Bool'. */
+00056 #define HAVE__BOOL 1
+00057 
+00058 /* Define to the sub-directory in which libtool stores uninstalled libraries.
+00059    */
+00060 #define LT_OBJDIR ".libs/"
+00061 
+00062 /* Define to 1 if your C compiler doesn't accept -c and -o together. */
+00063 /* #undef NO_MINUS_C_MINUS_O */
+00064 
+00065 /* Name of package */
+00066 #define PACKAGE "webgameserver"
+00067 
+00068 /* Define to the address where bug reports for this package should be sent. */
+00069 #define PACKAGE_BUGREPORT "Georg Hopp <georg@steffers.org>"
+00070 
+00071 /* Define to the full name of this package. */
+00072 #define PACKAGE_NAME "webgameserver"
+00073 
+00074 /* Define to the full name and version of this package. */
+00075 #define PACKAGE_STRING "webgameserver 0.0.2"
+00076 
+00077 /* Define to the one symbol short name of this package. */
+00078 #define PACKAGE_TARNAME "webgameserver"
+00079 
+00080 /* Define to the home page for this package. */
+00081 #define PACKAGE_URL ""
+00082 
+00083 /* Define to the version of this package. */
+00084 #define PACKAGE_VERSION "0.0.2"
+00085 
+00086 /* Define to 1 if you have the ANSI C header files. */
+00087 #define STDC_HEADERS 1
+00088 
+00089 /* Version number of package */
+00090 #define VERSION "0.0.2"
+00091 
+00092 /* Define to `__inline__' or `__inline' if that's what the C compiler
+00093    calls it, or to nothing if 'inline' is not supported under any name.  */
+00094 #ifndef __cplusplus
+00095 /* #undef inline */
+00096 #endif
+00097 
+00098 /* Define to `int' if <sys/types.h> does not define. */
+00099 /* #undef pid_t */
+00100 
+00101 /* Define to `unsigned int' if <sys/types.h> does not define. */
+00102 /* #undef size_t */
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/connect_8c.html b/assets/html/doc/connect_8c.html new file mode 100644 index 0000000..70e215d --- /dev/null +++ b/assets/html/doc/connect_8c.html @@ -0,0 +1,206 @@ + + + + +Server: src/socket/connect.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/socket/connect.c File Reference

+
+
+
#include <stdlib.h>
+#include <errno.h>
+#include "socket.h"
+#include "class.h"
+#include "logger.h"
+
+Include dependency graph for connect.c:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + +

+Functions

void socketConnect (Sock this, const char *addr, char(*remoteAddr)[16])
+

Detailed Description

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file connect.c.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void socketConnect (Sock this,
const char * addr,
char(*) remoteAddr[16] 
)
+
+
+ +

Definition at line 32 of file connect.c.

+
{
+        inet_pton(AF_INET, addr, &((this->addr).sin_addr));
+    (this->addr).sin_family = AF_INET;           // Internet address family
+    (this->addr).sin_port   = htons(this->port); // Local port
+
+        if (-1 == connect(
+                                this->handle,
+                                (struct sockaddr*) &(this->addr),
+                                sizeof(this->addr)))
+        {
+        loggerLog(this->log, LOGGER_CRIT,
+                "error connection socket: %s - service terminated",
+                strerror(errno));
+        exit(EXIT_FAILURE);
+    } else {
+                strcpy(*remoteAddr, inet_ntoa((this->addr).sin_addr));
+
+        loggerLog(this->log, LOGGER_INFO,
+                                "handling connection %s\n", inet_ntoa((this->addr).sin_addr));
+    }
+}
+
+

+Here is the call graph for this function:
+
+
+ + +
+

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/connect_8c_source.html b/assets/html/doc/connect_8c_source.html new file mode 100644 index 0000000..3ad495c --- /dev/null +++ b/assets/html/doc/connect_8c_source.html @@ -0,0 +1,145 @@ + + + + +Server: src/socket/connect.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/socket/connect.c

+
+
+Go to the documentation of this file.
00001 
+00023 #include <stdlib.h>     // for atoi() and exit()
+00024 #include <errno.h>      // for errno
+00025 
+00026 #include "socket.h"
+00027 #include "class.h"
+00028 #include "logger.h"
+00029 
+00030 
+00031 void
+00032 socketConnect(Sock this, const char * addr, char (*remoteAddr)[16])
+00033 {
+00034         inet_pton(AF_INET, addr, &((this->addr).sin_addr));
+00035     (this->addr).sin_family = AF_INET;           // Internet address family
+00036     (this->addr).sin_port   = htons(this->port); // Local port
+00037 
+00038         if (-1 == connect(
+00039                                 this->handle,
+00040                                 (struct sockaddr*) &(this->addr),
+00041                                 sizeof(this->addr)))
+00042         {
+00043         loggerLog(this->log, LOGGER_CRIT,
+00044                 "error connection socket: %s - service terminated",
+00045                 strerror(errno));
+00046         exit(EXIT_FAILURE);
+00047     } else {
+00048                 strcpy(*remoteAddr, inet_ntoa((this->addr).sin_addr));
+00049 
+00050         loggerLog(this->log, LOGGER_INFO,
+00051                                 "handling connection %s\n", inet_ntoa((this->addr).sin_addr));
+00052     }
+00053 }
+00054 
+00055 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/cookie_8c.html b/assets/html/doc/cookie_8c.html new file mode 100644 index 0000000..5ad163c --- /dev/null +++ b/assets/html/doc/cookie_8c.html @@ -0,0 +1,259 @@ + + + + +Server: src/http/cookie.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/http/cookie.c File Reference

+
+
+
#include <stdlib.h>
+#include <string.h>
+#include <stdarg.h>
+#include <sys/types.h>
+#include "class.h"
+#include "hash.h"
+#include "http/cookie.h"
+#include "utils/hash.h"
+#include "utils/memory.h"
+#include "commons.h"
+
+Include dependency graph for cookie.c:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + + + +

+Functions

 INIT_IFACE (Class, httpCookieCtor, httpCookieDtor, NULL)
 INIT_IFACE (Hashable, httpCookieGetHash, httpCookieHandleDouble)
 CREATE_CLASS (HttpCookie, NULL, IFACE(Class), IFACE(Hashable))
+

Detailed Description

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file cookie.c.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CREATE_CLASS (HttpCookie ,
NULL ,
IFACE(Class) ,
IFACE(Hashable)  
)
+
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
INIT_IFACE (Class ,
httpCookieCtor ,
httpCookieDtor ,
NULL  
)
+
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
INIT_IFACE (Hashable ,
httpCookieGetHash ,
httpCookieHandleDouble  
)
+
+
+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/cookie_8c_source.html b/assets/html/doc/cookie_8c_source.html new file mode 100644 index 0000000..91f5ad7 --- /dev/null +++ b/assets/html/doc/cookie_8c_source.html @@ -0,0 +1,194 @@ + + + + +Server: src/http/cookie.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/http/cookie.c

+
+
+Go to the documentation of this file.
00001 
+00023 #include <stdlib.h>
+00024 #include <string.h>
+00025 #include <stdarg.h>
+00026 #include <sys/types.h>
+00027 
+00028 #include "class.h"
+00029 #include "hash.h"
+00030 #include "http/cookie.h"
+00031 
+00032 #include "utils/hash.h"
+00033 #include "utils/memory.h"
+00034 #include "commons.h"
+00035 
+00036 
+00037 static
+00038 int
+00039 httpCookieCtor(void * _this, va_list * params)
+00040 {
+00041         HttpCookie this   = _this;
+00042         char *     key    = va_arg(* params, char*);
+00043         char *     value;
+00044 
+00045         this->nkey   = va_arg(* params, size_t);
+00046         value        = va_arg(* params, char*);
+00047         this->nvalue = va_arg(* params, size_t);
+00048 
+00049         this->key = malloc(this->nkey + 1);
+00050         this->key[this->nkey] = 0;
+00051         memcpy(this->key, key, this->nkey);
+00052 
+00053         this->value = malloc(this->nvalue + 1);
+00054         this->value[this->nvalue] = 0;
+00055         memcpy(this->value, value, this->nvalue);
+00056 
+00057         this->hash = sdbm((unsigned char *)key, nkey);
+00058 
+00059         return 0;
+00060 }
+00061 
+00062 static
+00063 void
+00064 httpCookieDtor(void * _this, va_list * params)
+00065 {
+00066         HttpCookie this = _this;
+00067 
+00068         FREE(this->key);
+00069         FREE(this->value);
+00070         FREE(this->domain);
+00071         FREE(this->path);
+00072 }
+00073 
+00074 static
+00075 unsigned long
+00076 httpCookieGetHash(void * _this)
+00077 {
+00078         HttpCookie this = _this;
+00079 
+00080         return this->hash;
+00081 }
+00082 
+00083 static
+00084 void
+00085 httpCookieHandleDouble(void * _this, void * _double)
+00086 {
+00087         HttpCookie this = _this;
+00088         HttpCookie doub = _double;
+00089 
+00090         SWAP(char*, this->key, doub->key);
+00091         SWAP(char*, this->value, doub->value);
+00092         SWAP(char*, this->domain, doub->domain);
+00093         SWAP(char*, this->path, doub->path);
+00094 
+00095         SWAP(char*, this->nkey, doub->nkey);
+00096         SWAP(char*, this->nvalue, doub->nvalue);
+00097 }
+00098 
+00099 
+00100 INIT_IFACE(Class, httpCookieCtor, httpCookieDtor, NULL);
+00101 INIT_IFACE(Hashable, httpCookieGetHash, httpCookieHandleDouble);
+00102 CREATE_CLASS(HttpCookie, NULL, IFACE(Class), IFACE(Hashable));
+00103 
+00104 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/cookie_8h.html b/assets/html/doc/cookie_8h.html new file mode 100644 index 0000000..76c60e7 --- /dev/null +++ b/assets/html/doc/cookie_8h.html @@ -0,0 +1,185 @@ + + + + +Server: include/http/cookie.h File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

include/http/cookie.h File Reference

+
+
+
#include <time.h>
+#include <sys/types.h>
+#include "class.h"
+
+Include dependency graph for cookie.h:
+
+
+ + +
+
+This graph shows which files directly or indirectly include this file:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + + + + +

+Data Structures

struct  HttpCookie

+Functions

char * httpCookieToString (HttpCookie)
HttpCookie httpStringToCookie (const char *)
+

Detailed Description

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file cookie.h.

+

Function Documentation

+ +
+
+ + + + + + + + +
char* httpCookieToString (HttpCookie )
+
+
+ +
+
+ +
+
+ + + + + + + + +
HttpCookie httpStringToCookie (const char * )
+
+
+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/cookie_8h_source.html b/assets/html/doc/cookie_8h_source.html new file mode 100644 index 0000000..aa69358 --- /dev/null +++ b/assets/html/doc/cookie_8h_source.html @@ -0,0 +1,141 @@ + + + + +Server: include/http/cookie.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

include/http/cookie.h

+
+
+Go to the documentation of this file.
00001 
+00023 #ifndef __HTTP_COOKIE_H__
+00024 #define __HTTP_COOKIE_H__
+00025 
+00026 #include <time.h>
+00027 #include <sys/types.h>
+00028 
+00029 #include "class.h"
+00030 
+00031 CLASS(HttpCookie) {
+00032         unsigned long hash;
+00033 
+00034         char *        key;
+00035         char *        value;
+00036         char *        domain;
+00037         char *        path;
+00038 
+00039         time_t        expires;
+00040         time_t        max_age;
+00041 
+00042         size_t        nkey;
+00043         size_t        nvalue;
+00044 };
+00045 
+00046 char * httpCookieToString(HttpCookie);
+00047 HttpCookie httpStringToCookie(const char *);
+00048 
+00049 #endif // __HTTP_COOKIE_H__
+00050 
+00051 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/credential_8c.html b/assets/html/doc/credential_8c.html new file mode 100644 index 0000000..a1feb30 --- /dev/null +++ b/assets/html/doc/credential_8c.html @@ -0,0 +1,216 @@ + + + + +Server: src/auth/credential.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/auth/credential.c File Reference

+
+
+
#include <stdarg.h>
+#include <sys/types.h>
+#include <stdlib.h>
+#include <string.h>
+#include "class.h"
+#include "utils/memory.h"
+#include "auth/credential.h"
+
+Include dependency graph for credential.c:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + + +

+Functions

 INIT_IFACE (Class, credentialCtor, credentialDtor, NULL)
 CREATE_CLASS (Credential, NULL, IFACE(Class))
+

Detailed Description

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file credential.c.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
CREATE_CLASS (Credential ,
NULL ,
IFACE(Class)  
)
+
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
INIT_IFACE (Class ,
credentialCtor ,
credentialDtor ,
NULL  
)
+
+
+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/credential_8c_source.html b/assets/html/doc/credential_8c_source.html new file mode 100644 index 0000000..79d9fbd --- /dev/null +++ b/assets/html/doc/credential_8c_source.html @@ -0,0 +1,175 @@ + + + + +Server: src/auth/credential.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/auth/credential.c

+
+
+Go to the documentation of this file.
00001 
+00023 #include <stdarg.h>
+00024 #include <sys/types.h>
+00025 #include <stdlib.h>
+00026 #include <string.h>
+00027 
+00028 #include "class.h"
+00029 #include "utils/memory.h"
+00030 
+00031 #include "auth/credential.h"
+00032 
+00033 static
+00034 int
+00035 credentialCtor(void * _this, va_list * params)
+00036 {
+00037         Credential this = _this;
+00038         
+00039         this->type = va_arg(* params, CredentialType);
+00040 
+00041         switch(this->type) {
+00042                 case CRED_PASSWORD:
+00043                         {
+00044                                 char * user, *pass;
+00045 
+00046                                 user                 = va_arg(* params, char*);
+00047                                 CRED_PWD(this).nuser = va_arg(* params, size_t);
+00048                                 pass                 = va_arg(* params, char*);
+00049                                 CRED_PWD(this).npass = va_arg(* params, size_t);
+00050 
+00051                                 CRED_PWD(this).user  = malloc(CRED_PWD(this).nuser + 1);
+00052                                 CRED_PWD(this).user[CRED_PWD(this).nuser] = 0;
+00053                                 memcpy(CRED_PWD(this).user, user, CRED_PWD(this).nuser);
+00054 
+00055                                 CRED_PWD(this).pass  = malloc(CRED_PWD(this).npass + 1);
+00056                                 CRED_PWD(this).pass[CRED_PWD(this).npass] = 0;
+00057                                 memcpy(CRED_PWD(this).pass, pass, CRED_PWD(this).npass);
+00058                         }
+00059                         break;
+00060 
+00061                 default:
+00062                         return -1;
+00063         }
+00064 
+00065         return 0;
+00066 }
+00067 
+00068 static
+00069 void
+00070 credentialDtor(void * _this)
+00071 {
+00072         Credential this = _this;
+00073 
+00074         switch(this->type) {
+00075                 case CRED_PASSWORD:
+00076                         FREE(CRED_PWD(this).user);
+00077                         FREE(CRED_PWD(this).pass);
+00078                         break;
+00079         }
+00080 }
+00081 
+00082 INIT_IFACE(Class, credentialCtor, credentialDtor, NULL);
+00083 CREATE_CLASS(Credential, NULL, IFACE(Class));
+00084 
+00085 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/credential_8h.html b/assets/html/doc/credential_8h.html new file mode 100644 index 0000000..0fb282b --- /dev/null +++ b/assets/html/doc/credential_8h.html @@ -0,0 +1,216 @@ + + + + +Server: include/auth/credential.h File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

include/auth/credential.h File Reference

+
+
+
#include <sys/types.h>
+#include "class.h"
+
+Include dependency graph for credential.h:
+
+
+ + +
+
+This graph shows which files directly or indirectly include this file:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + + + + + + + +

+Data Structures

struct  Credential

+Defines

#define CRED_PWD(c)   (((c)->cred).pwd)

+Typedefs

typedef enum e_CredentialType CredentialType

+Enumerations

enum  e_CredentialType { CRED_PASSWORD = 0 + }
+

Detailed Description

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file credential.h.

+

Define Documentation

+ +
+
+ + + + + + + + +
#define CRED_PWD( c)   (((c)->cred).pwd)
+
+
+ +

Definition at line 30 of file credential.h.

+ +
+
+

Typedef Documentation

+ +
+
+ + + + +
typedef enum e_CredentialType CredentialType
+
+
+ +
+
+

Enumeration Type Documentation

+ +
+
+ + + + +
enum e_CredentialType
+
+
+
Enumerator:
+ +
CRED_PASSWORD  +
+
+
+ +

Definition at line 32 of file credential.h.

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/credential_8h_source.html b/assets/html/doc/credential_8h_source.html new file mode 100644 index 0000000..b873e71 --- /dev/null +++ b/assets/html/doc/credential_8h_source.html @@ -0,0 +1,144 @@ + + + + +Server: include/auth/credential.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

include/auth/credential.h

+
+
+Go to the documentation of this file.
00001 
+00023 #ifndef __AUTH_CREDENTIAL_H__
+00024 #define __AUTH_CREDENTIAL_H__
+00025 
+00026 #include <sys/types.h>
+00027 
+00028 #include "class.h"
+00029 
+00030 #define CRED_PWD(c)             (((c)->cred).pwd)
+00031 
+00032 typedef enum e_CredentialType {
+00033         CRED_PASSWORD = 0
+00034 } CredentialType;
+00035 
+00036 
+00037 CLASS(Credential) {
+00038         CredentialType type;
+00039 
+00040         union {
+00041 
+00042                 struct {
+00043                         char * user;
+00044                         size_t nuser;
+00045                         char * pass;
+00046                         size_t npass;
+00047                 } pwd;
+00048 
+00049         } cred;
+00050 };
+00051 
+00052 #endif // __AUTH_CREDENTIAL_H__
+00053 
+00054 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/daemonize_8c.html b/assets/html/doc/daemonize_8c.html new file mode 100644 index 0000000..6bf1b53 --- /dev/null +++ b/assets/html/doc/daemonize_8c.html @@ -0,0 +1,177 @@ + + + + +Server: src/utils/daemonize.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/utils/daemonize.c File Reference

+
+
+
#include <stdio.h>
+#include <unistd.h>
+#include <stdlib.h>
+
+Include dependency graph for daemonize.c:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + +

+Functions

void daemonize (void)
+

Detailed Description

+

Disconnect from parent process and let all standard file handles point to /dev/null.

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file daemonize.c.

+

Function Documentation

+ +
+
+ + + + + + + + +
void daemonize (void )
+
+
+ +

Definition at line 30 of file daemonize.c.

+
                     {
+    pid_t pid;
+
+    if (0 > ((pid = fork()))) {
+        perror("deamoinze[fork]");
+        exit(EXIT_FAILURE);
+    } else if (0 != pid) {
+        exit(EXIT_SUCCESS);
+    }
+
+    // make new child session leader
+    setsid();
+
+    // connect all standard streams to /dev/null
+    stderr = freopen("/dev/null", "w", stderr);
+    stdin  = freopen("/dev/null", "r", stdin);
+    stdout = freopen("/dev/null", "w", stdout);
+}
+
+
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/daemonize_8c_source.html b/assets/html/doc/daemonize_8c_source.html new file mode 100644 index 0000000..dad207d --- /dev/null +++ b/assets/html/doc/daemonize_8c_source.html @@ -0,0 +1,135 @@ + + + + +Server: src/utils/daemonize.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/utils/daemonize.c

+
+
+Go to the documentation of this file.
00001 
+00025 #include <stdio.h>      // for printf() and fprintf()
+00026 #include <unistd.h>     // for getopt
+00027 #include <stdlib.h>
+00028 
+00029 
+00030 void daemonize(void) {
+00031     pid_t pid;
+00032 
+00033     if (0 > ((pid = fork()))) {
+00034         perror("deamoinze[fork]");
+00035         exit(EXIT_FAILURE);
+00036     } else if (0 != pid) {
+00037         exit(EXIT_SUCCESS);
+00038     }
+00039 
+00040     // make new child session leader
+00041     setsid();
+00042 
+00043     // connect all standard streams to /dev/null
+00044     stderr = freopen("/dev/null", "w", stderr);
+00045     stdin  = freopen("/dev/null", "r", stdin);
+00046     stdout = freopen("/dev/null", "w", stdout);
+00047 }
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/each_8c.html b/assets/html/doc/each_8c.html new file mode 100644 index 0000000..3f0f30a --- /dev/null +++ b/assets/html/doc/each_8c.html @@ -0,0 +1,181 @@ + + + + +Server: src/hash/each.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/hash/each.c File Reference

+
+
+
#include <search.h>
+#include "hash.h"
+
+Include dependency graph for each.c:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + +

+Functions

void hashEach (Hash this, void(*callback)(const void *))
+

Detailed Description

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file each.c.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
void hashEach (Hash this,
void(*)(const void *) callback 
)
+
+
+ +

Definition at line 40 of file each.c.

+
{
+        cb = callback;
+
+        twalk(this->root, walk);
+}
+
+

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/each_8c_source.html b/assets/html/doc/each_8c_source.html new file mode 100644 index 0000000..f904d10 --- /dev/null +++ b/assets/html/doc/each_8c_source.html @@ -0,0 +1,137 @@ + + + + +Server: src/hash/each.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/hash/each.c

+
+
+Go to the documentation of this file.
00001 
+00023 #include <search.h>
+00024 
+00025 #include "hash.h"
+00026 
+00027 static void (*cb)(void*);
+00028 
+00029 static
+00030 inline
+00031 void
+00032 walk(const void * node, const VISIT which, const int depth)
+00033 {
+00034         if (endorder == which || leaf == which) {
+00035                 cb(*(void**)node);
+00036         }
+00037 }
+00038 
+00039 void
+00040 hashEach(Hash this, void (*callback)(const void*))
+00041 {
+00042         cb = callback;
+00043 
+00044         twalk(this->root, walk);
+00045 }
+00046 
+00047 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/empty_8c.html b/assets/html/doc/empty_8c.html new file mode 100644 index 0000000..1bf9549 --- /dev/null +++ b/assets/html/doc/empty_8c.html @@ -0,0 +1,160 @@ + + + + +Server: src/cbuf/empty.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/cbuf/empty.c File Reference

+
+
+
#include "cbuf.h"
+
+Include dependency graph for empty.c:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + +

+Functions

void cbufEmpty (Cbuf this)
+

Detailed Description

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file empty.c.

+

Function Documentation

+ +
+
+ + + + + + + + +
void cbufEmpty (Cbuf this)
+
+
+ +

Definition at line 26 of file empty.c.

+
{
+        this->bused = 0;
+        this->read  = this->write;
+}
+
+
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/empty_8c_source.html b/assets/html/doc/empty_8c_source.html new file mode 100644 index 0000000..8726eec --- /dev/null +++ b/assets/html/doc/empty_8c_source.html @@ -0,0 +1,122 @@ + + + + +Server: src/cbuf/empty.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/cbuf/empty.c

+
+
+Go to the documentation of this file.
00001 
+00023 #include "cbuf.h"
+00024 
+00025 void
+00026 cbufEmpty(Cbuf this)
+00027 {
+00028         this->bused = 0;
+00029         this->read  = this->write;
+00030 }
+00031 
+00032 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/files.html b/assets/html/doc/files.html new file mode 100644 index 0000000..17a7903 --- /dev/null +++ b/assets/html/doc/files.html @@ -0,0 +1,253 @@ + + + + +Server: File List + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

File List

+
+
+
Here is a list of all files with brief descriptions:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
config.h [code]
include/auth.h [code]
include/cbuf.h [code]
include/class.h [code]
include/commons.h [code]
include/hash.h [code]
include/http.h [code]
include/logger.h [code]
include/server.h [code]
include/session.h [code]
include/socket.h [code]
include/stream.h [code]
include/auth/auth.h [code]
include/auth/credential.h [code]
include/auth/ldap.h [code]
include/auth/interface/auth.h [code]
include/class/class.h [code]
include/class/interface.h [code]
include/class/interface/class.h [code]
include/hash/hash.h [code]
include/hash/value.h [code]
include/hash/interface/hashable.h [code]
include/http/cookie.h [code]
include/http/header.h [code]
include/http/message.h [code]
include/http/parser.h [code]
include/http/request.h [code]
include/http/response.h [code]
include/http/worker.h [code]
include/http/writer.h [code]
include/http/interface/http_intro.h [code]
include/http/message/queue.h [code]
include/interface/observer.h [code]
include/interface/subject.h [code]
include/logger/logger.h [code]
include/logger/interface/logger.h [code]
include/stream/stream.h [code]
include/stream/interface/reader.h [code]
include/stream/interface/writer.h [code]
include/utils/hash.h [code]
include/utils/http.h [code]
include/utils/memory.h [code]
include/utils/signalHandling.h [code]
src/webgameserver.c [code]
src/auth/credential.c [code]
src/auth/ldap.c [code]
src/auth/interface/auth.c [code]
src/cbuf/addr_index.c [code]
src/cbuf/cbuf.c [code]
src/cbuf/empty.c [code]
src/cbuf/get_data.c [code]
src/cbuf/get_free.c [code]
src/cbuf/get_line.c [code]
src/cbuf/get_read.c [code]
src/cbuf/get_write.c [code]
src/cbuf/inc_read.c [code]
src/cbuf/inc_write.c [code]
src/cbuf/is_empty.c [code]
src/cbuf/is_locked.c [code]
src/cbuf/lock.c [code]
src/cbuf/memchr.c [code]
src/cbuf/read.c [code]
src/cbuf/release.c [code]
src/cbuf/set_data.c [code]
src/cbuf/skip_non_alpha.c [code]
src/cbuf/write.c [code]
src/class/interface.c [code]
src/class/interface/i_class.c [code]
src/hash/add.c [code]
src/hash/delete.c [code]
src/hash/each.c [code]
src/hash/get.c [code]
src/hash/hash.c [code]
src/hash/value.c [code]
src/hash/interface/hashable.c [code]
src/http/cookie.c [code]
src/http/header.c [code]
src/http/message.c [code]
src/http/parser.c [code]
src/http/request.c [code]
src/http/response.c [code]
src/http/worker.c [code]
src/http/writer.c [code]
src/http/header/to_string.c [code]
src/http/interface/i_http_intro.c [code]
src/http/message/get_version.c [code]
src/http/message/has_keep_alive.c [code]
src/http/message/has_valid_version.c [code]
src/http/message/header_size_get.c [code]
src/http/message/header_to_string.c [code]
src/http/message/queue.c [code]
src/http/parser/new_message.c [code]
src/http/parser/p_body.c [code]
src/http/parser/p_header.c [code]
src/http/parser/p_post_vars.c [code]
src/http/parser/p_request_vars.c [code]
src/http/parser/parse.c [code]
src/http/request/has_valid_method.c [code]
src/http/response/304.c [code]
src/http/response/403.c [code]
src/http/response/404.c [code]
src/http/response/asset.c [code]
src/http/response/login_form.c [code]
src/http/response/randval.c [code]
src/http/response/session.c [code]
src/http/worker/add_common_header.c [code]
src/http/worker/answer.c [code]
src/http/worker/get_asset.c [code]
src/http/worker/process.c [code]
src/http/writer/write.c [code]
src/interface/observer.c [code]
src/interface/subject.c [code]
src/logger/logger.c [code]
src/logger/stderr.c [code]
src/logger/syslog.c [code]
src/logger/interface/i_logger.c [code]
src/server/close_conn.c [code]
src/server/handle_accept.c [code]
src/server/poll.c [code]
src/server/read.c [code]
src/server/run.c [code]
src/server/server.c [code]
src/server/write.c [code]
src/session/add.c [code]
src/session/delete.c [code]
src/session/get.c [code]
src/session/session.c [code]
src/socket/accept.c [code]
src/socket/connect.c [code]
src/socket/listen.c [code]
src/socket/socket.c [code]
src/stream/read.c [code]
src/stream/stream.c [code]
src/stream/write.c [code]
src/stream/interface/reader.c [code]
src/stream/interface/writer.c [code]
src/utils/daemonize.c [code]
src/utils/hash.c [code]
src/utils/http.c [code]
src/utils/memory.c [code]
src/utils/signalHandling.c [code]
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/functions.html b/assets/html/doc/functions.html new file mode 100644 index 0000000..b575c68 --- /dev/null +++ b/assets/html/doc/functions.html @@ -0,0 +1,585 @@ + + + + +Server: Data Fields + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + + + +
+
+ +
+
+
+ +
+
+
Here is a list of all struct and union fields with links to the structures/unions they belong to:
+ +

- _ -

+ + +

- a -

+ + +

- b -

+ + +

- c -

+ + +

- d -

+ + +

- e -

+ + +

- f -

+ + +

- g -

+ + +

- h -

+ + +

- i -

+ + +

- k -

+ + +

- l -

+ + +

- m -

+ + +

- n -

+ + +

- o -

+ + +

- p -

+ + +

- q -

+ + +

- r -

+ + +

- s -

+ + +

- t -

+ + +

- u -

+ + +

- v -

+ + +

- w -

+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/functions_func.html b/assets/html/doc/functions_func.html new file mode 100644 index 0000000..5477bf2 --- /dev/null +++ b/assets/html/doc/functions_func.html @@ -0,0 +1,122 @@ + + + + +Server: Data Fields - Functions + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + + +
+
+ +
+
+
+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/functions_vars.html b/assets/html/doc/functions_vars.html new file mode 100644 index 0000000..394eb83 --- /dev/null +++ b/assets/html/doc/functions_vars.html @@ -0,0 +1,579 @@ + + + + +Server: Data Fields - Variables + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + + + +
+
+ +
+
+
+ +
+
+  + +

- _ -

+ + +

- a -

+ + +

- b -

+ + +

- c -

+ + +

- d -

+ + +

- e -

+ + +

- f -

+ + +

- g -

+ + +

- h -

+ + +

- i -

+ + +

- k -

+ + +

- l -

+ + +

- m -

+ + +

- n -

+ + +

- o -

+ + +

- p -

+ + +

- q -

+ + +

- r -

+ + +

- s -

+ + +

- t -

+ + +

- u -

+ + +

- v -

+ + +

- w -

+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/get__asset_8c.html b/assets/html/doc/get__asset_8c.html new file mode 100644 index 0000000..b73ae19 --- /dev/null +++ b/assets/html/doc/get__asset_8c.html @@ -0,0 +1,223 @@ + + + + +Server: src/http/worker/get_asset.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/http/worker/get_asset.c File Reference

+
+
+
#include <sys/types.h>
+#include "http/header.h"
+#include "http/message.h"
+#include "http/request.h"
+#include "http/response.h"
+#include "utils/memory.h"
+#include "hash.h"
+
+Include dependency graph for get_asset.c:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + +

+Functions

HttpMessage httpWorkerGetAsset (HttpRequest request, const char *fname, const char *mime, size_t nmime)
+

Detailed Description

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file get_asset.c.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
HttpMessage httpWorkerGetAsset (HttpRequest request,
const char * fname,
const char * mime,
size_t nmime 
)
+
+
+ +

Definition at line 34 of file get_asset.c.

+
{
+        char *     match;
+        size_t     nmatch;
+        HttpHeader header;
+
+        header = hashGet(
+                        ((HttpMessage)request)->header,
+                        CSTRA("If-None-Match"));
+
+        if (NULL == header) {
+                match  = "";
+                nmatch = 0;
+        }
+        else {
+                match  = (header->value)[0];
+                nmatch = (header->nvalue)[0];
+        }
+
+        return (HttpMessage)httpResponseAsset(
+                        fname, mime, nmime, match, nmatch);
+}
+
+

+Here is the call graph for this function:
+
+
+ + +
+

+ +

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/get__asset_8c_source.html b/assets/html/doc/get__asset_8c_source.html new file mode 100644 index 0000000..005c4a8 --- /dev/null +++ b/assets/html/doc/get__asset_8c_source.html @@ -0,0 +1,151 @@ + + + + +Server: src/http/worker/get_asset.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/http/worker/get_asset.c

+
+
+Go to the documentation of this file.
00001 
+00023 #include <sys/types.h>
+00024 
+00025 #include "http/header.h"
+00026 #include "http/message.h"
+00027 #include "http/request.h"
+00028 #include "http/response.h"
+00029 
+00030 #include "utils/memory.h"
+00031 #include "hash.h"
+00032 
+00033 HttpMessage
+00034 httpWorkerGetAsset(
+00035                 HttpRequest request,
+00036                 const char * fname,
+00037                 const char * mime,
+00038                 size_t       nmime)
+00039 {
+00040         char *     match;
+00041         size_t     nmatch;
+00042         HttpHeader header;
+00043 
+00044         header = hashGet(
+00045                         ((HttpMessage)request)->header,
+00046                         CSTRA("If-None-Match"));
+00047 
+00048         if (NULL == header) {
+00049                 match  = "";
+00050                 nmatch = 0;
+00051         }
+00052         else {
+00053                 match  = (header->value)[0];
+00054                 nmatch = (header->nvalue)[0];
+00055         }
+00056 
+00057         return (HttpMessage)httpResponseAsset(
+00058                         fname, mime, nmime, match, nmatch);
+00059 }
+00060 
+00061 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/get__data_8c.html b/assets/html/doc/get__data_8c.html new file mode 100644 index 0000000..037758d --- /dev/null +++ b/assets/html/doc/get__data_8c.html @@ -0,0 +1,196 @@ + + + + +Server: src/cbuf/get_data.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/cbuf/get_data.c File Reference

+
+
+
#include <sys/types.h>
+#include <string.h>
+#include "cbuf.h"
+
+Include dependency graph for get_data.c:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + +

+Functions

char * cbufGetData (Cbuf this, size_t n)
+

Detailed Description

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file get_data.c.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
char* cbufGetData (Cbuf this,
size_t n 
)
+
+
+ +

Definition at line 29 of file get_data.c.

+
{
+        char * ret = cbufGetRead(this);
+
+        if (n > this->bused) {
+                return (char *)-1;
+        }
+
+        cbufIncRead(this, n);
+        return ret;
+}
+
+

+Here is the call graph for this function:
+
+
+ + +
+

+ +

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/get__data_8c_source.html b/assets/html/doc/get__data_8c_source.html new file mode 100644 index 0000000..aba2652 --- /dev/null +++ b/assets/html/doc/get__data_8c_source.html @@ -0,0 +1,131 @@ + + + + +Server: src/cbuf/get_data.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/cbuf/get_data.c

+
+
+Go to the documentation of this file.
00001 
+00023 #include <sys/types.h>
+00024 #include <string.h>
+00025 
+00026 #include "cbuf.h"
+00027 
+00028 char *
+00029 cbufGetData(Cbuf this, size_t n)
+00030 {
+00031         char * ret = cbufGetRead(this);
+00032 
+00033         if (n > this->bused) {
+00034                 return (char *)-1;
+00035         }
+00036 
+00037         cbufIncRead(this, n);
+00038         return ret;
+00039 }
+00040 
+00041 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/get__free_8c.html b/assets/html/doc/get__free_8c.html new file mode 100644 index 0000000..24c0d12 --- /dev/null +++ b/assets/html/doc/get__free_8c.html @@ -0,0 +1,169 @@ + + + + +Server: src/cbuf/get_free.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/cbuf/get_free.c File Reference

+
+
+
#include <sys/types.h>
+#include "cbuf.h"
+
+Include dependency graph for get_free.c:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + +

+Functions

size_t cbufGetFree (Cbuf this)
+

Detailed Description

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file get_free.c.

+

Function Documentation

+ +
+
+ + + + + + + + +
size_t cbufGetFree (Cbuf this)
+
+
+ +

Definition at line 28 of file get_free.c.

+
{
+        return this->bsize - this->bused;
+}
+
+

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/get__free_8c_source.html b/assets/html/doc/get__free_8c_source.html new file mode 100644 index 0000000..bffbc19 --- /dev/null +++ b/assets/html/doc/get__free_8c_source.html @@ -0,0 +1,123 @@ + + + + +Server: src/cbuf/get_free.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/cbuf/get_free.c

+
+
+Go to the documentation of this file.
00001 
+00023 #include <sys/types.h>
+00024 
+00025 #include "cbuf.h"
+00026 
+00027 size_t
+00028 cbufGetFree(Cbuf this)
+00029 {
+00030         return this->bsize - this->bused;
+00031 }
+00032 
+00033 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/get__line_8c.html b/assets/html/doc/get__line_8c.html new file mode 100644 index 0000000..30e1094 --- /dev/null +++ b/assets/html/doc/get__line_8c.html @@ -0,0 +1,203 @@ + + + + +Server: src/cbuf/get_line.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/cbuf/get_line.c File Reference

+
+
+
#include <sys/types.h>
+#include <string.h>
+#include "cbuf.h"
+
+Include dependency graph for get_line.c:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + +

+Functions

char * cbufGetLine (Cbuf this, char **line_end)
+

Detailed Description

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file get_line.c.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
char* cbufGetLine (Cbuf this,
char ** line_end 
)
+
+
+ +

Definition at line 30 of file get_line.c.

+
{
+        char * nl  = cbufMemchr(this, '\n');
+        char * ret = NULL;
+
+        if (NULL != nl) {
+                size_t len = cbufAddrIndex(this, nl) + 1;
+
+                *line_end = nl - 1;
+                *nl       = 0;
+                *(nl-1)   = ('\r' == *(nl-1))? 0 : *(nl-1);
+
+                ret = cbufGetRead(this);
+                cbufIncRead(this, len);
+        }
+
+        return ret;
+}
+
+

+Here is the call graph for this function:
+
+
+ + +
+

+ +

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/get__line_8c_source.html b/assets/html/doc/get__line_8c_source.html new file mode 100644 index 0000000..73117e1 --- /dev/null +++ b/assets/html/doc/get__line_8c_source.html @@ -0,0 +1,139 @@ + + + + +Server: src/cbuf/get_line.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/cbuf/get_line.c

+
+
+Go to the documentation of this file.
00001 
+00023 #include <sys/types.h>
+00024 
+00025 #include <string.h>
+00026 
+00027 #include "cbuf.h"
+00028 
+00029 char *
+00030 cbufGetLine(Cbuf this, char ** line_end)
+00031 {
+00032         char * nl  = cbufMemchr(this, '\n');
+00033         char * ret = NULL;
+00034 
+00035         if (NULL != nl) {
+00036                 size_t len = cbufAddrIndex(this, nl) + 1;
+00037 
+00038                 *line_end = nl - 1;
+00039                 *nl       = 0;
+00040                 *(nl-1)   = ('\r' == *(nl-1))? 0 : *(nl-1);
+00041 
+00042                 ret = cbufGetRead(this);
+00043                 cbufIncRead(this, len);
+00044         }
+00045 
+00046         return ret;
+00047 }
+00048 
+00049 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/get__read_8c.html b/assets/html/doc/get__read_8c.html new file mode 100644 index 0000000..39eb1c0 --- /dev/null +++ b/assets/html/doc/get__read_8c.html @@ -0,0 +1,168 @@ + + + + +Server: src/cbuf/get_read.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/cbuf/get_read.c File Reference

+
+
+
#include "cbuf.h"
+
+Include dependency graph for get_read.c:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + +

+Functions

char * cbufGetRead (Cbuf this)
+

Detailed Description

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file get_read.c.

+

Function Documentation

+ +
+
+ + + + + + + + +
char* cbufGetRead (Cbuf this)
+
+
+ +

Definition at line 26 of file get_read.c.

+
{
+        return this->data + this->read;
+}
+
+

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/get__read_8c_source.html b/assets/html/doc/get__read_8c_source.html new file mode 100644 index 0000000..41c97d0 --- /dev/null +++ b/assets/html/doc/get__read_8c_source.html @@ -0,0 +1,121 @@ + + + + +Server: src/cbuf/get_read.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/cbuf/get_read.c

+
+
+Go to the documentation of this file.
00001 
+00023 #include "cbuf.h"
+00024 
+00025 char *
+00026 cbufGetRead(Cbuf this)
+00027 {
+00028         return this->data + this->read;
+00029 }
+00030 
+00031 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/get__version_8c.html b/assets/html/doc/get__version_8c.html new file mode 100644 index 0000000..c8c09db --- /dev/null +++ b/assets/html/doc/get__version_8c.html @@ -0,0 +1,202 @@ + + + + +Server: src/http/message/get_version.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/http/message/get_version.c File Reference

+
+
+
#include <string.h>
+#include <stdlib.h>
+#include "http/message.h"
+
+Include dependency graph for get_version.c:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + +

+Functions

int httpMessageGetVersion (HttpMessage this, int *major, int *minor)
+

Detailed Description

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file get_version.c.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int httpMessageGetVersion (HttpMessage this,
int * major,
int * minor 
)
+
+
+ +

Definition at line 29 of file get_version.c.

+
{
+        char * major_ptr = this->version + 5;
+        char * minor_ptr = strchr(major_ptr, '.') + 1;
+        char   version[] = "\0\0\0";
+
+        if (NULL == minor_ptr ||
+                        ((minor_ptr - major_ptr - 1) > 2) ||
+                        strlen(minor_ptr) > 2)
+                return -1;
+
+        memcpy(version, major_ptr, minor_ptr - major_ptr - 1);
+        *major = atoi(version);
+
+        memset(version, 0, 3);
+        strcpy(version, minor_ptr);
+        *minor = atoi(version);
+
+        return ((*major)<<7)|(*minor);
+}
+
+

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/get__version_8c_source.html b/assets/html/doc/get__version_8c_source.html new file mode 100644 index 0000000..53516a0 --- /dev/null +++ b/assets/html/doc/get__version_8c_source.html @@ -0,0 +1,140 @@ + + + + +Server: src/http/message/get_version.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/http/message/get_version.c

+
+
+Go to the documentation of this file.
00001 
+00023 #include <string.h>
+00024 #include <stdlib.h>
+00025 
+00026 #include "http/message.h"
+00027 
+00028 int
+00029 httpMessageGetVersion(HttpMessage this, int * major, int * minor)
+00030 {
+00031         char * major_ptr = this->version + 5;
+00032         char * minor_ptr = strchr(major_ptr, '.') + 1;
+00033         char   version[] = "\0\0\0";
+00034 
+00035         if (NULL == minor_ptr ||
+00036                         ((minor_ptr - major_ptr - 1) > 2) ||
+00037                         strlen(minor_ptr) > 2)
+00038                 return -1;
+00039 
+00040         memcpy(version, major_ptr, minor_ptr - major_ptr - 1);
+00041         *major = atoi(version);
+00042 
+00043         memset(version, 0, 3);
+00044         strcpy(version, minor_ptr);
+00045         *minor = atoi(version);
+00046 
+00047         return ((*major)<<7)|(*minor);
+00048 }
+00049 
+00050 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/get__write_8c.html b/assets/html/doc/get__write_8c.html new file mode 100644 index 0000000..d8a7059 --- /dev/null +++ b/assets/html/doc/get__write_8c.html @@ -0,0 +1,168 @@ + + + + +Server: src/cbuf/get_write.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/cbuf/get_write.c File Reference

+
+
+
#include "cbuf.h"
+
+Include dependency graph for get_write.c:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + +

+Functions

char * cbufGetWrite (Cbuf this)
+

Detailed Description

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file get_write.c.

+

Function Documentation

+ +
+
+ + + + + + + + +
char* cbufGetWrite (Cbuf this)
+
+
+ +

Definition at line 26 of file get_write.c.

+
{
+        return this->data + this->write;
+}
+
+

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/get__write_8c_source.html b/assets/html/doc/get__write_8c_source.html new file mode 100644 index 0000000..bc4f84c --- /dev/null +++ b/assets/html/doc/get__write_8c_source.html @@ -0,0 +1,121 @@ + + + + +Server: src/cbuf/get_write.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/cbuf/get_write.c

+
+
+Go to the documentation of this file.
00001 
+00023 #include "cbuf.h"
+00024 
+00025 char *
+00026 cbufGetWrite(Cbuf this)
+00027 {
+00028         return this->data + this->write;
+00029 }
+00030 
+00031 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/globals.html b/assets/html/doc/globals.html new file mode 100644 index 0000000..09b9e5c --- /dev/null +++ b/assets/html/doc/globals.html @@ -0,0 +1,166 @@ + + + + +Server: Globals + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + + + +
+
+ +
+
+
+ +
+
+
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+ +

- _ -

+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/globals_0x61.html b/assets/html/doc/globals_0x61.html new file mode 100644 index 0000000..5391a97 --- /dev/null +++ b/assets/html/doc/globals_0x61.html @@ -0,0 +1,161 @@ + + + + +Server: Globals + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + + + +
+
+ +
+
+
+ +
+
+
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+ +

- a -

+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/globals_0x62.html b/assets/html/doc/globals_0x62.html new file mode 100644 index 0000000..76b90ba --- /dev/null +++ b/assets/html/doc/globals_0x62.html @@ -0,0 +1,148 @@ + + + + +Server: Globals + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + + + +
+
+ +
+
+
+ +
+
+
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+ +

- b -

+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/globals_0x63.html b/assets/html/doc/globals_0x63.html new file mode 100644 index 0000000..9b7d06e --- /dev/null +++ b/assets/html/doc/globals_0x63.html @@ -0,0 +1,280 @@ + + + + +Server: Globals + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + + + +
+
+ +
+
+
+ +
+
+
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+ +

- c -

+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/globals_0x64.html b/assets/html/doc/globals_0x64.html new file mode 100644 index 0000000..1408ece --- /dev/null +++ b/assets/html/doc/globals_0x64.html @@ -0,0 +1,162 @@ + + + + +Server: Globals + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + + + +
+
+ +
+
+
+ +
+
+
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+ +

- d -

+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/globals_0x65.html b/assets/html/doc/globals_0x65.html new file mode 100644 index 0000000..99efbe1 --- /dev/null +++ b/assets/html/doc/globals_0x65.html @@ -0,0 +1,169 @@ + + + + +Server: Globals + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + + + +
+
+ +
+
+
+ +
+
+
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+ +

- e -

+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/globals_0x66.html b/assets/html/doc/globals_0x66.html new file mode 100644 index 0000000..5a21f71 --- /dev/null +++ b/assets/html/doc/globals_0x66.html @@ -0,0 +1,203 @@ + + + + +Server: Globals + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + + + +
+
+ +
+
+
+ +
+
+
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+ +

- f -

+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/globals_0x67.html b/assets/html/doc/globals_0x67.html new file mode 100644 index 0000000..5937571 --- /dev/null +++ b/assets/html/doc/globals_0x67.html @@ -0,0 +1,148 @@ + + + + +Server: Globals + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + + + +
+
+ +
+
+
+ +
+
+
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+ +

- g -

+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/globals_0x68.html b/assets/html/doc/globals_0x68.html new file mode 100644 index 0000000..8acaa3d --- /dev/null +++ b/assets/html/doc/globals_0x68.html @@ -0,0 +1,393 @@ + + + + +Server: Globals + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + + + +
+
+ +
+
+
+ +
+
+
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+ +

- h -

+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/globals_0x69.html b/assets/html/doc/globals_0x69.html new file mode 100644 index 0000000..468f80c --- /dev/null +++ b/assets/html/doc/globals_0x69.html @@ -0,0 +1,209 @@ + + + + +Server: Globals + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + + + +
+
+ +
+
+
+ +
+
+
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+ +

- i -

+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/globals_0x6c.html b/assets/html/doc/globals_0x6c.html new file mode 100644 index 0000000..39e3588 --- /dev/null +++ b/assets/html/doc/globals_0x6c.html @@ -0,0 +1,183 @@ + + + + +Server: Globals + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + + + +
+
+ +
+
+
+ +
+
+
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+ +

- l -

+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/globals_0x6d.html b/assets/html/doc/globals_0x6d.html new file mode 100644 index 0000000..4cb0957 --- /dev/null +++ b/assets/html/doc/globals_0x6d.html @@ -0,0 +1,158 @@ + + + + +Server: Globals + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + + + +
+
+ +
+
+
+ +
+
+
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+ +

- m -

+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/globals_0x6e.html b/assets/html/doc/globals_0x6e.html new file mode 100644 index 0000000..f30b806 --- /dev/null +++ b/assets/html/doc/globals_0x6e.html @@ -0,0 +1,160 @@ + + + + +Server: Globals + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + + + +
+
+ +
+
+
+ +
+
+
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+ +

- n -

+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/globals_0x6f.html b/assets/html/doc/globals_0x6f.html new file mode 100644 index 0000000..2ee201b --- /dev/null +++ b/assets/html/doc/globals_0x6f.html @@ -0,0 +1,149 @@ + + + + +Server: Globals + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + + + +
+
+ +
+
+
+ +
+
+
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+ +

- o -

+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/globals_0x70.html b/assets/html/doc/globals_0x70.html new file mode 100644 index 0000000..601b74f --- /dev/null +++ b/assets/html/doc/globals_0x70.html @@ -0,0 +1,175 @@ + + + + +Server: Globals + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + + + +
+
+ +
+
+
+ +
+
+
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+ +

- p -

+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/globals_0x72.html b/assets/html/doc/globals_0x72.html new file mode 100644 index 0000000..b16ac88 --- /dev/null +++ b/assets/html/doc/globals_0x72.html @@ -0,0 +1,154 @@ + + + + +Server: Globals + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + + + +
+
+ +
+
+
+ +
+
+
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+ +

- r -

+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/globals_0x73.html b/assets/html/doc/globals_0x73.html new file mode 100644 index 0000000..6da8b6a --- /dev/null +++ b/assets/html/doc/globals_0x73.html @@ -0,0 +1,249 @@ + + + + +Server: Globals + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + + + +
+
+ +
+
+
+ +
+
+
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+ +

- s -

+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/globals_0x74.html b/assets/html/doc/globals_0x74.html new file mode 100644 index 0000000..84bea40 --- /dev/null +++ b/assets/html/doc/globals_0x74.html @@ -0,0 +1,152 @@ + + + + +Server: Globals + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + + + +
+
+ +
+
+
+ +
+
+
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+ +

- t -

+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/globals_0x76.html b/assets/html/doc/globals_0x76.html new file mode 100644 index 0000000..8c8050d --- /dev/null +++ b/assets/html/doc/globals_0x76.html @@ -0,0 +1,148 @@ + + + + +Server: Globals + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + + + +
+
+ +
+
+
+ +
+
+
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+ +

- v -

+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/globals_0x77.html b/assets/html/doc/globals_0x77.html new file mode 100644 index 0000000..890355a --- /dev/null +++ b/assets/html/doc/globals_0x77.html @@ -0,0 +1,148 @@ + + + + +Server: Globals + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + + + +
+
+ +
+
+
+ +
+
+
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+ +

- w -

+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/globals_defs.html b/assets/html/doc/globals_defs.html new file mode 100644 index 0000000..22644f7 --- /dev/null +++ b/assets/html/doc/globals_defs.html @@ -0,0 +1,446 @@ + + + + +Server: Globals + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + + + +
+
+ +
+
+
+ +
+
+  + +

- _ -

+ + +

- b -

+ + +

- c -

+ + +

- d -

+ + +

- e -

+ + +

- f -

+ + +

- g -

+ + +

- h -

+ + +

- i -

+ + +

- l -

+ + +

- m -

+ + +

- n -

+ + +

- p -

+ + +

- r -

+ + +

- s -

+ + +

- t -

+ + +

- v -

+ + +

- w -

+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/globals_enum.html b/assets/html/doc/globals_enum.html new file mode 100644 index 0000000..88284a3 --- /dev/null +++ b/assets/html/doc/globals_enum.html @@ -0,0 +1,140 @@ + + + + +Server: Globals + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + + +
+
+ +
+
+
+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/globals_eval.html b/assets/html/doc/globals_eval.html new file mode 100644 index 0000000..82f7ec8 --- /dev/null +++ b/assets/html/doc/globals_eval.html @@ -0,0 +1,185 @@ + + + + +Server: Globals + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + + +
+
+ +
+
+
+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/globals_func.html b/assets/html/doc/globals_func.html new file mode 100644 index 0000000..82eb263 --- /dev/null +++ b/assets/html/doc/globals_func.html @@ -0,0 +1,147 @@ + + + + +Server: Globals + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + + + +
+
+ +
+
+
+ +
+
+  + +

- a -

+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/globals_func_0x63.html b/assets/html/doc/globals_func_0x63.html new file mode 100644 index 0000000..13ca735 --- /dev/null +++ b/assets/html/doc/globals_func_0x63.html @@ -0,0 +1,244 @@ + + + + +Server: Globals + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + + + +
+
+ +
+
+
+ +
+
+  + +

- c -

+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/globals_func_0x64.html b/assets/html/doc/globals_func_0x64.html new file mode 100644 index 0000000..2462f54 --- /dev/null +++ b/assets/html/doc/globals_func_0x64.html @@ -0,0 +1,141 @@ + + + + +Server: Globals + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + + + +
+
+ +
+
+
+ +
+
+  + +

- d -

+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/globals_func_0x66.html b/assets/html/doc/globals_func_0x66.html new file mode 100644 index 0000000..96ba223 --- /dev/null +++ b/assets/html/doc/globals_func_0x66.html @@ -0,0 +1,141 @@ + + + + +Server: Globals + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + + + +
+
+ +
+
+
+ +
+
+  + +

- f -

+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/globals_func_0x68.html b/assets/html/doc/globals_func_0x68.html new file mode 100644 index 0000000..af3914b --- /dev/null +++ b/assets/html/doc/globals_func_0x68.html @@ -0,0 +1,282 @@ + + + + +Server: Globals + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + + + +
+
+ +
+
+
+ +
+
+  + +

- h -

+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/globals_func_0x69.html b/assets/html/doc/globals_func_0x69.html new file mode 100644 index 0000000..aa91d8d --- /dev/null +++ b/assets/html/doc/globals_func_0x69.html @@ -0,0 +1,175 @@ + + + + +Server: Globals + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + + + +
+
+ +
+
+
+ +
+
+  + +

- i -

+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/globals_func_0x6c.html b/assets/html/doc/globals_func_0x6c.html new file mode 100644 index 0000000..ddbea2b --- /dev/null +++ b/assets/html/doc/globals_func_0x6c.html @@ -0,0 +1,141 @@ + + + + +Server: Globals + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + + + +
+
+ +
+
+
+ +
+
+  + +

- l -

+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/globals_func_0x6d.html b/assets/html/doc/globals_func_0x6d.html new file mode 100644 index 0000000..2a60272 --- /dev/null +++ b/assets/html/doc/globals_func_0x6d.html @@ -0,0 +1,140 @@ + + + + +Server: Globals + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + + + +
+
+ +
+
+
+ +
+
+  + +

- m -

+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/globals_func_0x6e.html b/assets/html/doc/globals_func_0x6e.html new file mode 100644 index 0000000..f0ab16f --- /dev/null +++ b/assets/html/doc/globals_func_0x6e.html @@ -0,0 +1,140 @@ + + + + +Server: Globals + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + + + +
+
+ +
+
+
+ +
+
+  + +

- n -

+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/globals_func_0x6f.html b/assets/html/doc/globals_func_0x6f.html new file mode 100644 index 0000000..e0f592c --- /dev/null +++ b/assets/html/doc/globals_func_0x6f.html @@ -0,0 +1,141 @@ + + + + +Server: Globals + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + + + +
+
+ +
+
+
+ +
+
+  + +

- o -

+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/globals_func_0x73.html b/assets/html/doc/globals_func_0x73.html new file mode 100644 index 0000000..096f011 --- /dev/null +++ b/assets/html/doc/globals_func_0x73.html @@ -0,0 +1,220 @@ + + + + +Server: Globals + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + + + +
+
+ +
+
+
+ +
+
+  + +

- s -

+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/globals_func_0x74.html b/assets/html/doc/globals_func_0x74.html new file mode 100644 index 0000000..6c259a9 --- /dev/null +++ b/assets/html/doc/globals_func_0x74.html @@ -0,0 +1,141 @@ + + + + +Server: Globals + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + + + +
+
+ +
+
+
+ +
+
+  + +

- t -

+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/globals_type.html b/assets/html/doc/globals_type.html new file mode 100644 index 0000000..0744f38 --- /dev/null +++ b/assets/html/doc/globals_type.html @@ -0,0 +1,197 @@ + + + + +Server: Globals + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + + +
+
+ +
+
+
+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/globals_vars.html b/assets/html/doc/globals_vars.html new file mode 100644 index 0000000..ce54dab --- /dev/null +++ b/assets/html/doc/globals_vars.html @@ -0,0 +1,131 @@ + + + + +Server: Globals + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + + +
+
+ +
+
+
+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/graph_legend.html b/assets/html/doc/graph_legend.html new file mode 100644 index 0000000..9404c5d --- /dev/null +++ b/assets/html/doc/graph_legend.html @@ -0,0 +1,168 @@ + + + + +Server: Graph Legend + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ +
+
+ +
+
+
+ +
+
+
+

Graph Legend

+
+
+

This page explains how to interpret the graphs that are generated by doxygen.

+

Consider the following example:

+
/*! Invisible class because of truncation */
+class Invisible { };
+
+/*! Truncated class, inheritance relation is hidden */
+class Truncated : public Invisible { };
+
+/* Class not documented with doxygen comments */
+class Undocumented { };
+
+/*! Class that is inherited using public inheritance */
+class PublicBase : public Truncated { };
+
+/*! A template class */
+template<class T> class Templ { };
+
+/*! Class that is inherited using protected inheritance */
+class ProtectedBase { };
+
+/*! Class that is inherited using private inheritance */
+class PrivateBase { };
+
+/*! Class that is used by the Inherited class */
+class Used { };
+
+/*! Super class that inherits a number of other classes */
+class Inherited : public PublicBase,
+                  protected ProtectedBase,
+                  private PrivateBase,
+                  public Undocumented,
+                  public Templ<int>
+{
+  private:
+    Used *m_usedClass;
+};
+

This will result in the following graph:

+
+graph_legend.png +
+

The boxes in the above graph have the following meaning:

+
    +
  • +A filled gray box represents the struct or class for which the graph is generated.
  • +
  • +A box with a black border denotes a documented struct or class.
  • +
  • +A box with a grey border denotes an undocumented struct or class.
  • +
  • +A box with a red border denotes a documented struct or class forwhich not all inheritance/containment relations are shown. A graph is truncated if it does not fit within the specified boundaries.
  • +
+

The arrows have the following meaning:

+
    +
  • +A dark blue arrow is used to visualize a public inheritance relation between two classes.
  • +
  • +A dark green arrow is used for protected inheritance.
  • +
  • +A dark red arrow is used for private inheritance.
  • +
  • +A purple dashed arrow is used if a class is contained or used by another class. The arrow is labeled with the variable(s) through which the pointed class or struct is accessible.
  • +
  • +A yellow dashed arrow denotes a relation between a template instance and the template class it was instantiated from. The arrow is labeled with the template parameters of the instance.
  • +
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/handle__accept_8c.html b/assets/html/doc/handle__accept_8c.html new file mode 100644 index 0000000..0d25269 --- /dev/null +++ b/assets/html/doc/handle__accept_8c.html @@ -0,0 +1,254 @@ + + + + +Server: src/server/handle_accept.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/server/handle_accept.c File Reference

+
+
+
#include <errno.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <openssl/ssl.h>
+#include "http/worker.h"
+#include "server.h"
+#include "class.h"
+#include "logger.h"
+#include "stream.h"
+
+Include dependency graph for handle_accept.c:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + +

+Functions

int serverHandleAccept (Server this, unsigned int i)
+

Detailed Description

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file handle_accept.c.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
int serverHandleAccept (Server this,
unsigned int i 
)
+
+
+ +

Definition at line 36 of file handle_accept.c.

+
{
+        char   remoteAddr[16] = "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0";
+        Sock   acc = NULL;
+        Stream st;
+
+        if (this->nfds >= this->max_fds) {
+                return -1;
+        }
+
+        acc = socketAccept((0 == i)? this->sock : this->sockSSL, &remoteAddr);
+
+        if (-1 != acc->handle) {
+        switch(i) {
+                case 0:
+                        // no SSL
+                        st = new(Stream, STREAM_FD, acc->handle);
+                        break;
+
+                case 1:
+                        // SSL
+                        {
+                                SSL * ssl = SSL_new(this->ctx);
+                                SSL_set_fd(ssl, acc->handle);
+                                SSL_accept(ssl);
+                                st = new(Stream, STREAM_SSL, ssl);
+                        }
+                        break;
+
+                default:
+                        break;
+        }
+
+                // save the socket handle
+                (this->conns)[acc->handle].sock   = acc; 
+
+                // clone worker
+                (this->conns)[acc->handle].worker = clone(this->worker);
+                (this->conns)[acc->handle].stream = st;
+
+                (this->fds)[this->nfds].fd        = acc->handle;
+                (this->fds)[this->nfds].events    = POLLIN;
+                this->nfds++;
+        } else {
+                delete(acc);
+
+                switch(errno) {
+                        case EAGAIN:
+                                loggerLog(this->logger,
+                                                LOGGER_DEBUG,
+                                                "server accept blocks");
+                                break;
+
+                        default:
+                                loggerLog(this->logger,
+                                                LOGGER_DEBUG,
+                                                "server accept error");
+                                break;
+                }
+        }
+
+        return (acc)? acc->handle : -1;
+}
+
+

+Here is the call graph for this function:
+
+
+ + +
+

+ +

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/handle__accept_8c_source.html b/assets/html/doc/handle__accept_8c_source.html new file mode 100644 index 0000000..9e9ca14 --- /dev/null +++ b/assets/html/doc/handle__accept_8c_source.html @@ -0,0 +1,190 @@ + + + + +Server: src/server/handle_accept.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/server/handle_accept.c

+
+
+Go to the documentation of this file.
00001 
+00023 #include <errno.h>
+00024 #include <stdio.h>
+00025 #include <stdlib.h>
+00026 
+00027 #include <openssl/ssl.h>
+00028 
+00029 #include "http/worker.h"
+00030 #include "server.h"
+00031 #include "class.h"
+00032 #include "logger.h"
+00033 #include "stream.h"
+00034 
+00035 int
+00036 serverHandleAccept(Server this, unsigned int i)
+00037 {
+00038         char   remoteAddr[16] = "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0";
+00039         Sock   acc = NULL;
+00040         Stream st;
+00041 
+00042         if (this->nfds >= this->max_fds) {
+00043                 return -1;
+00044         }
+00045 
+00046         acc = socketAccept((0 == i)? this->sock : this->sockSSL, &remoteAddr);
+00047 
+00048         if (-1 != acc->handle) {
+00049         switch(i) {
+00050                 case 0:
+00051                         // no SSL
+00052                         st = new(Stream, STREAM_FD, acc->handle);
+00053                         break;
+00054 
+00055                 case 1:
+00056                         // SSL
+00057                         {
+00058                                 SSL * ssl = SSL_new(this->ctx);
+00059                                 SSL_set_fd(ssl, acc->handle);
+00060                                 SSL_accept(ssl);
+00061                                 st = new(Stream, STREAM_SSL, ssl);
+00062                         }
+00063                         break;
+00064 
+00065                 default:
+00066                         break;
+00067         }
+00068 
+00069                 // save the socket handle
+00070                 (this->conns)[acc->handle].sock   = acc; 
+00071 
+00072                 // clone worker
+00073                 (this->conns)[acc->handle].worker = clone(this->worker);
+00074                 (this->conns)[acc->handle].stream = st;
+00075 
+00076                 (this->fds)[this->nfds].fd        = acc->handle;
+00077                 (this->fds)[this->nfds].events    = POLLIN;
+00078                 this->nfds++;
+00079         } else {
+00080                 delete(acc);
+00081 
+00082                 switch(errno) {
+00083                         case EAGAIN:
+00084                                 loggerLog(this->logger,
+00085                                                 LOGGER_DEBUG,
+00086                                                 "server accept blocks");
+00087                                 break;
+00088 
+00089                         default:
+00090                                 loggerLog(this->logger,
+00091                                                 LOGGER_DEBUG,
+00092                                                 "server accept error");
+00093                                 break;
+00094                 }
+00095         }
+00096 
+00097         return (acc)? acc->handle : -1;
+00098 }
+00099 
+00100 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/has__keep__alive_8c.html b/assets/html/doc/has__keep__alive_8c.html new file mode 100644 index 0000000..9861447 --- /dev/null +++ b/assets/html/doc/has__keep__alive_8c.html @@ -0,0 +1,198 @@ + + + + +Server: src/http/message/has_keep_alive.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/http/message/has_keep_alive.c File Reference

+
+
+
#include <string.h>
+#include <sys/types.h>
+#include <ctype.h>
+#include "http/message.h"
+#include "http/request.h"
+#include "http/header.h"
+#include "utils/memory.h"
+#include "commons.h"
+#include "hash.h"
+
+Include dependency graph for has_keep_alive.c:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + +

+Functions

char httpMessageHasKeepAlive (HttpMessage message)
+

Detailed Description

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file has_keep_alive.c.

+

Function Documentation

+ +
+
+ + + + + + + + +
char httpMessageHasKeepAlive (HttpMessage message)
+
+
+ +

Definition at line 37 of file has_keep_alive.c.

+
{
+        HttpHeader  header;
+        size_t      size;
+        char *      value;
+
+        header = hashGet(message->header, CSTRA("connection"));
+
+        if (NULL == header) {
+                return 0;
+        }
+
+        size  = (header->nvalue)[0];
+        value = (header->value)[0];
+
+        return (0 == strncasecmp("keep-alive", value, size))? 1 : 0;
+}
+
+

+Here is the call graph for this function:
+
+
+ + +
+

+ +

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/has__keep__alive_8c_source.html b/assets/html/doc/has__keep__alive_8c_source.html new file mode 100644 index 0000000..171a0a9 --- /dev/null +++ b/assets/html/doc/has__keep__alive_8c_source.html @@ -0,0 +1,145 @@ + + + + +Server: src/http/message/has_keep_alive.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/http/message/has_keep_alive.c

+
+
+Go to the documentation of this file.
00001 
+00023 #include <string.h>
+00024 #include <sys/types.h>
+00025 #include <ctype.h>
+00026 
+00027 #include "http/message.h"
+00028 #include "http/request.h"
+00029 #include "http/header.h"
+00030 
+00031 #include "utils/memory.h"
+00032 
+00033 #include "commons.h"
+00034 #include "hash.h"
+00035 
+00036 char
+00037 httpMessageHasKeepAlive(HttpMessage message)
+00038 {
+00039         HttpHeader  header;
+00040         size_t      size;
+00041         char *      value;
+00042 
+00043         header = hashGet(message->header, CSTRA("connection"));
+00044 
+00045         if (NULL == header) {
+00046                 return 0;
+00047         }
+00048 
+00049         size  = (header->nvalue)[0];
+00050         value = (header->value)[0];
+00051 
+00052         return (0 == strncasecmp("keep-alive", value, size))? 1 : 0;
+00053 }
+00054 
+00055 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/has__valid__method_8c.html b/assets/html/doc/has__valid__method_8c.html new file mode 100644 index 0000000..70ed645 --- /dev/null +++ b/assets/html/doc/has__valid__method_8c.html @@ -0,0 +1,199 @@ + + + + +Server: src/http/request/has_valid_method.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/http/request/has_valid_method.c File Reference

+
+
+
#include <string.h>
+#include "http/request.h"
+
+Include dependency graph for has_valid_method.c:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + + + +

+Functions

int httpRequestHasValidMethod (HttpRequest this)

+Variables

char * http_method [N_HTTP_METHOD]
+

Detailed Description

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file has_valid_method.c.

+

Function Documentation

+ +
+
+ + + + + + + + +
int httpRequestHasValidMethod (HttpRequest this)
+
+
+ +

Definition at line 38 of file has_valid_method.c.

+
{
+        int i;
+
+        if (NULL == this->method)
+                return 0;
+
+        for (i=0; i<N_HTTP_METHOD; i++) {
+                if (0 == strcmp(http_method[i], this->method))
+                        break;
+        }
+
+        return (i != N_HTTP_METHOD);
+}
+
+
+
+

Variable Documentation

+ +
+
+ + + + +
char* http_method[N_HTTP_METHOD]
+
+
+Initial value:
 {
+        "OPTIONS",
+        "GET",
+        "HEAD",
+        "POST",
+        "PUT",
+        "DELETE",
+        "TRACE",
+        "CONNECT"}
+
+

Definition at line 27 of file has_valid_method.c.

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/has__valid__method_8c_source.html b/assets/html/doc/has__valid__method_8c_source.html new file mode 100644 index 0000000..ff43a04 --- /dev/null +++ b/assets/html/doc/has__valid__method_8c_source.html @@ -0,0 +1,143 @@ + + + + +Server: src/http/request/has_valid_method.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/http/request/has_valid_method.c

+
+
+Go to the documentation of this file.
00001 
+00023 #include <string.h>
+00024 
+00025 #include "http/request.h"
+00026 
+00027 char * http_method[N_HTTP_METHOD] = {
+00028         "OPTIONS",
+00029         "GET",
+00030         "HEAD",
+00031         "POST",
+00032         "PUT",
+00033         "DELETE",
+00034         "TRACE",
+00035         "CONNECT"};
+00036 
+00037 int
+00038 httpRequestHasValidMethod(HttpRequest this)
+00039 {
+00040         int i;
+00041 
+00042         if (NULL == this->method)
+00043                 return 0;
+00044 
+00045         for (i=0; i<N_HTTP_METHOD; i++) {
+00046                 if (0 == strcmp(http_method[i], this->method))
+00047                         break;
+00048         }
+00049 
+00050         return (i != N_HTTP_METHOD);
+00051 }
+00052 
+00053 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/has__valid__version_8c.html b/assets/html/doc/has__valid__version_8c.html new file mode 100644 index 0000000..1fcaff6 --- /dev/null +++ b/assets/html/doc/has__valid__version_8c.html @@ -0,0 +1,185 @@ + + + + +Server: src/http/message/has_valid_version.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/http/message/has_valid_version.c File Reference

+
+
+
#include <string.h>
+#include "http/message.h"
+#include "utils/http.h"
+
+Include dependency graph for has_valid_version.c:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + +

+Functions

int httpMessageHasValidVersion (HttpMessage this)
+

Detailed Description

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file has_valid_version.c.

+

Function Documentation

+ +
+
+ + + + + + + + +
int httpMessageHasValidVersion (HttpMessage this)
+
+
+ +

Definition at line 29 of file has_valid_version.c.

+
{
+        int major;
+        int minor;
+
+        if (! isHttpVersion(this->version, strlen(this->version)))
+                return 0;
+
+        if (0 > httpMessageGetVersion(this, &major, &minor))
+                return 0;
+
+        if (1 != major)
+                return 0;
+
+        if (0 > minor || 1 < minor)
+                return 0;
+
+        return 1;
+}
+
+

+Here is the call graph for this function:
+
+
+ + +
+

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/has__valid__version_8c_source.html b/assets/html/doc/has__valid__version_8c_source.html new file mode 100644 index 0000000..6ab501c --- /dev/null +++ b/assets/html/doc/has__valid__version_8c_source.html @@ -0,0 +1,139 @@ + + + + +Server: src/http/message/has_valid_version.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/http/message/has_valid_version.c

+
+
+Go to the documentation of this file.
00001 
+00023 #include <string.h>
+00024 
+00025 #include "http/message.h"
+00026 #include "utils/http.h"
+00027 
+00028 int
+00029 httpMessageHasValidVersion(HttpMessage this)
+00030 {
+00031         int major;
+00032         int minor;
+00033 
+00034         if (! isHttpVersion(this->version, strlen(this->version)))
+00035                 return 0;
+00036 
+00037         if (0 > httpMessageGetVersion(this, &major, &minor))
+00038                 return 0;
+00039 
+00040         if (1 != major)
+00041                 return 0;
+00042 
+00043         if (0 > minor || 1 < minor)
+00044                 return 0;
+00045 
+00046         return 1;
+00047 }
+00048 
+00049 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/hash_2add_8c.html b/assets/html/doc/hash_2add_8c.html new file mode 100644 index 0000000..9b400b8 --- /dev/null +++ b/assets/html/doc/hash_2add_8c.html @@ -0,0 +1,200 @@ + + + + +Server: src/hash/add.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/hash/add.c File Reference

+
+
+
#include <search.h>
+#include "hash.h"
+#include "class.h"
+
+Include dependency graph for add.c:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + +

+Functions

void * hashAdd (Hash this, void *operand)
+

Detailed Description

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file add.c.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
void* hashAdd (Hash this,
void * operand 
)
+
+
+ +

Definition at line 37 of file add.c.

+
{
+        void * found = tsearch(operand, &(this->root), hashAddComp);
+
+        if (NULL == found) {
+                return NULL;
+        }
+
+        if (operand != *(void**)found) {
+                hashableHandleDouble(*(void**)found, operand);
+                delete(operand);
+        }
+
+        return *(void**)found;
+}
+
+

+Here is the call graph for this function:
+
+
+ + +
+

+ +

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/hash_2add_8c_source.html b/assets/html/doc/hash_2add_8c_source.html new file mode 100644 index 0000000..7cd00c4 --- /dev/null +++ b/assets/html/doc/hash_2add_8c_source.html @@ -0,0 +1,143 @@ + + + + +Server: src/hash/add.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/hash/add.c

+
+
+Go to the documentation of this file.
00001 
+00023 #include <search.h>
+00024 
+00025 #include "hash.h"
+00026 #include "class.h"
+00027 
+00028 static
+00029 inline
+00030 int
+00031 hashAddComp(const void * a, const void * b)
+00032 {
+00033         return hashableGetHash((void*)b) - hashableGetHash((void*)a);
+00034 }
+00035 
+00036 void *
+00037 hashAdd(Hash this, void * operand)
+00038 {
+00039         void * found = tsearch(operand, &(this->root), hashAddComp);
+00040 
+00041         if (NULL == found) {
+00042                 return NULL;
+00043         }
+00044 
+00045         if (operand != *(void**)found) {
+00046                 hashableHandleDouble(*(void**)found, operand);
+00047                 delete(operand);
+00048         }
+00049 
+00050         return *(void**)found;
+00051 }
+00052 
+00053 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/hash_2delete_8c.html b/assets/html/doc/hash_2delete_8c.html new file mode 100644 index 0000000..a2e1e97 --- /dev/null +++ b/assets/html/doc/hash_2delete_8c.html @@ -0,0 +1,190 @@ + + + + +Server: src/hash/delete.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/hash/delete.c File Reference

+
+
+
#include <search.h>
+#include <sys/types.h>
+#include "hash.h"
+#include "utils/hash.h"
+
+Include dependency graph for delete.c:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + +

+Functions

void * hashDelete (Hash this, const char *search, size_t nsearch)
+

Detailed Description

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file delete.c.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void* hashDelete (Hash this,
const char * search,
size_t nsearch 
)
+
+
+ +

Definition at line 38 of file delete.c.

+
{
+        unsigned long hash  = sdbm((const unsigned char *)search, nsearch);
+        void *        found = tfind(&hash, &(this->root), hashDeleteComp);
+
+        return (NULL != found)? *(void**)found : NULL;
+}
+
+

+Here is the call graph for this function:
+
+
+ + +
+

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/hash_2delete_8c_source.html b/assets/html/doc/hash_2delete_8c_source.html new file mode 100644 index 0000000..7843bd8 --- /dev/null +++ b/assets/html/doc/hash_2delete_8c_source.html @@ -0,0 +1,136 @@ + + + + +Server: src/hash/delete.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/hash/delete.c

+
+
+Go to the documentation of this file.
00001 
+00023 #include <search.h>
+00024 #include <sys/types.h>
+00025 
+00026 #include "hash.h"
+00027 #include "utils/hash.h"
+00028 
+00029 static
+00030 inline
+00031 int
+00032 hashDeleteComp(const void * a, const void * b)
+00033 {
+00034         return hashableGetHash((void*)b) - *(const unsigned long*)a;
+00035 }
+00036 
+00037 void *
+00038 hashDelete(Hash this, const char * search, size_t nsearch)
+00039 {
+00040         unsigned long hash  = sdbm((const unsigned char *)search, nsearch);
+00041         void *        found = tfind(&hash, &(this->root), hashDeleteComp);
+00042 
+00043         return (NULL != found)? *(void**)found : NULL;
+00044 }
+00045 
+00046 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/hash_2get_8c.html b/assets/html/doc/hash_2get_8c.html new file mode 100644 index 0000000..b93d11b --- /dev/null +++ b/assets/html/doc/hash_2get_8c.html @@ -0,0 +1,199 @@ + + + + +Server: src/hash/get.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/hash/get.c File Reference

+
+
+
#include <search.h>
+#include <sys/types.h>
+#include "hash.h"
+#include "utils/hash.h"
+
+Include dependency graph for get.c:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + +

+Functions

void * hashGet (Hash this, const char *search, size_t nsearch)
+

Detailed Description

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file get.c.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void* hashGet (Hash this,
const char * search,
size_t nsearch 
)
+
+
+ +

Definition at line 38 of file get.c.

+
{
+        unsigned long hash  = sdbm((const unsigned char *)search, nsearch);
+        void *        found = tfind(&hash, &(this->root), hashGetComp);
+
+        return (NULL != found)? *(void**)found : NULL;
+}
+
+

+Here is the call graph for this function:
+
+
+ + +
+

+ +

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/hash_2get_8c_source.html b/assets/html/doc/hash_2get_8c_source.html new file mode 100644 index 0000000..b326d1a --- /dev/null +++ b/assets/html/doc/hash_2get_8c_source.html @@ -0,0 +1,136 @@ + + + + +Server: src/hash/get.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/hash/get.c

+
+
+Go to the documentation of this file.
00001 
+00023 #include <search.h>
+00024 #include <sys/types.h>
+00025 
+00026 #include "hash.h"
+00027 #include "utils/hash.h"
+00028 
+00029 static
+00030 inline
+00031 int
+00032 hashGetComp(const void * a, const void * b)
+00033 {
+00034         return hashableGetHash((void*)b) - *(const unsigned long*)a;
+00035 }
+00036 
+00037 void *
+00038 hashGet(Hash this, const char * search, size_t nsearch)
+00039 {
+00040         unsigned long hash  = sdbm((const unsigned char *)search, nsearch);
+00041         void *        found = tfind(&hash, &(this->root), hashGetComp);
+00042 
+00043         return (NULL != found)? *(void**)found : NULL;
+00044 }
+00045 
+00046 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/hash_2hash_8c.html b/assets/html/doc/hash_2hash_8c.html new file mode 100644 index 0000000..c716b2e --- /dev/null +++ b/assets/html/doc/hash_2hash_8c.html @@ -0,0 +1,233 @@ + + + + +Server: src/hash/hash.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/hash/hash.c File Reference

+
+
+
#include <search.h>
+#include <stdarg.h>
+#include "hash/hash.h"
+#include "class.h"
+
+Include dependency graph for hash.c:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + + + + +

+Defines

#define _GNU_SOURCE

+Functions

 INIT_IFACE (Class, hashCtor, hashDtor, NULL)
 CREATE_CLASS (Hash, NULL, IFACE(Class))
+

Detailed Description

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file hash.c.

+

Define Documentation

+ +
+
+ + + + +
#define _GNU_SOURCE
+
+
+ +

Definition at line 23 of file hash.c.

+ +
+
+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
CREATE_CLASS (Hash ,
NULL ,
IFACE(Class)  
)
+
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
INIT_IFACE (Class ,
hashCtor ,
hashDtor ,
NULL  
)
+
+
+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/hash_2hash_8c_source.html b/assets/html/doc/hash_2hash_8c_source.html new file mode 100644 index 0000000..6e944b9 --- /dev/null +++ b/assets/html/doc/hash_2hash_8c_source.html @@ -0,0 +1,148 @@ + + + + +Server: src/hash/hash.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/hash/hash.c

+
+
+Go to the documentation of this file.
00001 
+00023 #define _GNU_SOURCE
+00024 
+00025 #include <search.h>
+00026 #include <stdarg.h>
+00027 
+00028 #include "hash/hash.h"
+00029 #include "class.h"
+00030 
+00031 static
+00032 int
+00033 hashCtor(void * _this, va_list * params)
+00034 {
+00035         return 0;
+00036 }
+00037 
+00038 static
+00039 inline
+00040 void
+00041 tDelete(void * node)
+00042 {
+00043         delete(node);
+00044 }
+00045 
+00046 static
+00047 void
+00048 hashDtor(void * _this)
+00049 {
+00050         Hash this = _this;
+00051 
+00057         tdestroy(this->root, tDelete);
+00058 }
+00059 
+00060 INIT_IFACE(Class, hashCtor, hashDtor, NULL);
+00061 CREATE_CLASS(Hash, NULL, IFACE(Class));
+00062 
+00063 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/hash_2hash_8h.html b/assets/html/doc/hash_2hash_8h.html new file mode 100644 index 0000000..7e0060e --- /dev/null +++ b/assets/html/doc/hash_2hash_8h.html @@ -0,0 +1,365 @@ + + + + +Server: include/hash/hash.h File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

include/hash/hash.h File Reference

+
+
+
#include <sys/types.h>
+#include "class.h"
+
+Include dependency graph for hash.h:
+
+
+ + +
+
+This graph shows which files directly or indirectly include this file:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + + + + + + +

+Data Structures

struct  Hash

+Functions

void * hashAdd (Hash, void *)
void * hashDelete (Hash, const char *, size_t)
void * hashGet (Hash, const char *, size_t)
void hashEach (Hash, void(*)(const void *))
+

Detailed Description

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file hash.h.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
void* hashAdd (Hash ,
void *  
)
+
+
+ +

Definition at line 37 of file add.c.

+
{
+        void * found = tsearch(operand, &(this->root), hashAddComp);
+
+        if (NULL == found) {
+                return NULL;
+        }
+
+        if (operand != *(void**)found) {
+                hashableHandleDouble(*(void**)found, operand);
+                delete(operand);
+        }
+
+        return *(void**)found;
+}
+
+

+Here is the call graph for this function:
+
+
+ + +
+

+ +

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void* hashDelete (Hash ,
const char * ,
size_t  
)
+
+
+ +

Definition at line 38 of file delete.c.

+
{
+        unsigned long hash  = sdbm((const unsigned char *)search, nsearch);
+        void *        found = tfind(&hash, &(this->root), hashDeleteComp);
+
+        return (NULL != found)? *(void**)found : NULL;
+}
+
+

+Here is the call graph for this function:
+
+
+ + +
+

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
void hashEach (Hash ,
void(*)(const void *)  
)
+
+
+ +

Definition at line 40 of file each.c.

+
{
+        cb = callback;
+
+        twalk(this->root, walk);
+}
+
+

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void* hashGet (Hash ,
const char * ,
size_t  
)
+
+
+ +

Definition at line 38 of file get.c.

+
{
+        unsigned long hash  = sdbm((const unsigned char *)search, nsearch);
+        void *        found = tfind(&hash, &(this->root), hashGetComp);
+
+        return (NULL != found)? *(void**)found : NULL;
+}
+
+

+Here is the call graph for this function:
+
+
+ + +
+

+ +

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/hash_2hash_8h_source.html b/assets/html/doc/hash_2hash_8h_source.html new file mode 100644 index 0000000..a8b5793 --- /dev/null +++ b/assets/html/doc/hash_2hash_8h_source.html @@ -0,0 +1,132 @@ + + + + +Server: include/hash/hash.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

include/hash/hash.h

+
+
+Go to the documentation of this file.
00001 
+00023 #ifndef __HASH_HASH_H__
+00024 #define __HASH_HASH_H__
+00025 
+00026 #include <sys/types.h>
+00027 
+00028 #include "class.h"
+00029 
+00030 
+00031 CLASS(Hash) {
+00032         void * root;
+00033 };
+00034 
+00035 void * hashAdd(Hash, void *);
+00036 void * hashDelete(Hash, const char *, size_t);
+00037 void * hashGet(Hash, const char *, size_t);
+00038 void   hashEach(Hash, void (*)(const void*));
+00039 
+00040 #endif // __HASH_HASH_H__
+00041 
+00042 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/hash_8h.html b/assets/html/doc/hash_8h.html new file mode 100644 index 0000000..605b644 --- /dev/null +++ b/assets/html/doc/hash_8h.html @@ -0,0 +1,125 @@ + + + + +Server: include/hash.h File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

include/hash.h File Reference

+
+
+
#include "hash/hash.h"
+#include "hash/value.h"
+#include "hash/interface/hashable.h"
+
+Include dependency graph for hash.h:
+
+
+ + +
+
+

Go to the source code of this file.

+ +
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/hash_8h_source.html b/assets/html/doc/hash_8h_source.html new file mode 100644 index 0000000..553058b --- /dev/null +++ b/assets/html/doc/hash_8h_source.html @@ -0,0 +1,121 @@ + + + + +Server: include/hash.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

include/hash.h

+
+
+Go to the documentation of this file.
00001 #ifndef __HASH_H__
+00002 #define __HASH_H__
+00003 
+00004 #include "hash/hash.h"
+00005 #include "hash/value.h"
+00006 #include "hash/interface/hashable.h"
+00007 
+00008 #endif // __HASH_H__
+00009 
+00010 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/hashable_8c.html b/assets/html/doc/hashable_8c.html new file mode 100644 index 0000000..258b232 --- /dev/null +++ b/assets/html/doc/hashable_8c.html @@ -0,0 +1,209 @@ + + + + +Server: src/hash/interface/hashable.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/hash/interface/hashable.c File Reference

+
+
+
#include <stdlib.h>
+#include <stdio.h>
+#include <stdarg.h>
+#include "class.h"
+#include "hash/interface/hashable.h"
+
+Include dependency graph for hashable.c:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + + +

+Functions

unsigned long hashableGetHash (void *hashable)
void hashableHandleDouble (void *hashable, void *new_hashable)
+

Detailed Description

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file hashable.c.

+

Function Documentation

+ +
+
+ + + + + + + + +
unsigned long hashableGetHash (void * hashable)
+
+
+ +

Definition at line 36 of file hashable.c.

+
{
+        unsigned long ret;
+
+        RETCALL(hashable, Hashable, getHash, ret);
+
+        return ret;
+}
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
void hashableHandleDouble (void * hashable,
void * new_hashable 
)
+
+
+ +

Definition at line 46 of file hashable.c.

+
{
+        CALL(hashable, Hashable, handleDouble, new_hashable);
+}
+
+

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/hashable_8c_source.html b/assets/html/doc/hashable_8c_source.html new file mode 100644 index 0000000..3fd9b42 --- /dev/null +++ b/assets/html/doc/hashable_8c_source.html @@ -0,0 +1,141 @@ + + + + +Server: src/hash/interface/hashable.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/hash/interface/hashable.c

+
+
+Go to the documentation of this file.
00001 
+00023 #include <stdlib.h>
+00024 #include <stdio.h>
+00025 #include <stdarg.h>
+00026 
+00027 #include "class.h"
+00028 #include "hash/interface/hashable.h"
+00029 
+00030 const struct interface i_Hashable = {
+00031         "hashable",
+00032         2
+00033 };
+00034 
+00035 unsigned long
+00036 hashableGetHash(void * hashable)
+00037 {
+00038         unsigned long ret;
+00039 
+00040         RETCALL(hashable, Hashable, getHash, ret);
+00041 
+00042         return ret;
+00043 }
+00044 
+00045 void
+00046 hashableHandleDouble(void * hashable, void * new_hashable)
+00047 {
+00048         CALL(hashable, Hashable, handleDouble, new_hashable);
+00049 }
+00050 
+00051 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/hashable_8h.html b/assets/html/doc/hashable_8h.html new file mode 100644 index 0000000..b5493ba --- /dev/null +++ b/assets/html/doc/hashable_8h.html @@ -0,0 +1,253 @@ + + + + +Server: include/hash/interface/hashable.h File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

include/hash/interface/hashable.h File Reference

+
+
+
#include "class.h"
+
+Include dependency graph for hashable.h:
+
+
+ + +
+
+This graph shows which files directly or indirectly include this file:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + + + + + + + +

+Data Structures

struct  i_Hashable

+Typedefs

typedef unsigned long(* fptr_hashableGetHash )(void *)
typedef void(* fptr_hashableHandleDouble )(void *, void *)

+Functions

unsigned long hashableGetHash (void *)
void hashableHandleDouble (void *, void *)
+

Detailed Description

+

The logger interface.

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file hashable.h.

+

Typedef Documentation

+ +
+
+ + + + +
typedef unsigned long(* fptr_hashableGetHash)(void *)
+
+
+ +

Definition at line 29 of file hashable.h.

+ +
+
+ +
+
+ + + + +
typedef void(* fptr_hashableHandleDouble)(void *, void *)
+
+
+ +

Definition at line 30 of file hashable.h.

+ +
+
+

Function Documentation

+ +
+
+ + + + + + + + +
unsigned long hashableGetHash (void * )
+
+
+ +

Definition at line 36 of file hashable.c.

+
{
+        unsigned long ret;
+
+        RETCALL(hashable, Hashable, getHash, ret);
+
+        return ret;
+}
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
void hashableHandleDouble (void * ,
void *  
)
+
+
+ +

Definition at line 46 of file hashable.c.

+
{
+        CALL(hashable, Hashable, handleDouble, new_hashable);
+}
+
+

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/hashable_8h_source.html b/assets/html/doc/hashable_8h_source.html new file mode 100644 index 0000000..d50bb75 --- /dev/null +++ b/assets/html/doc/hashable_8h_source.html @@ -0,0 +1,134 @@ + + + + +Server: include/hash/interface/hashable.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

include/hash/interface/hashable.h

+
+
+Go to the documentation of this file.
00001 
+00024 #ifndef __HASH_INTERFACE_HASHABLE_H__
+00025 #define __HASH_INTERFACE_HASHABLE_H__
+00026 
+00027 #include "class.h"
+00028 
+00029 typedef unsigned long (* fptr_hashableGetHash)(void *);
+00030 typedef void          (* fptr_hashableHandleDouble)(void *, void *);
+00031 
+00032 extern const struct interface i_Hashable;
+00033 
+00034 struct i_Hashable {
+00035         const struct interface * const _;
+00036         fptr_hashableGetHash           getHash;
+00037         fptr_hashableHandleDouble      handleDouble;
+00038 };
+00039 
+00040 extern unsigned long hashableGetHash(void *);
+00041 extern void          hashableHandleDouble(void *, void *);
+00042 
+00043 #endif // __HASH_INTERFACE_HASHABLE_H__
+00044 
+00045 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/header_8c.html b/assets/html/doc/header_8c.html new file mode 100644 index 0000000..ec43876 --- /dev/null +++ b/assets/html/doc/header_8c.html @@ -0,0 +1,257 @@ + + + + +Server: src/http/header.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/http/header.c File Reference

+
+
+
#include <stdlib.h>
+#include <string.h>
+#include "class.h"
+#include "hash.h"
+#include "http/header.h"
+#include "utils/hash.h"
+#include "utils/memory.h"
+
+Include dependency graph for header.c:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + + + +

+Functions

 INIT_IFACE (Class, httpHeaderCtor, httpHeaderDtor, NULL)
 INIT_IFACE (Hashable, httpHeaderGetHash, httpHeaderHandleDouble)
 CREATE_CLASS (HttpHeader, NULL, IFACE(Class), IFACE(Hashable))
+

Detailed Description

+

Interface implementation for HTTP header class.

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file header.c.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CREATE_CLASS (HttpHeader ,
NULL ,
IFACE(Class) ,
IFACE(Hashable)  
)
+
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
INIT_IFACE (Class ,
httpHeaderCtor ,
httpHeaderDtor ,
NULL  
)
+
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
INIT_IFACE (Hashable ,
httpHeaderGetHash ,
httpHeaderHandleDouble  
)
+
+
+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/header_8c_source.html b/assets/html/doc/header_8c_source.html new file mode 100644 index 0000000..a91a297 --- /dev/null +++ b/assets/html/doc/header_8c_source.html @@ -0,0 +1,194 @@ + + + + +Server: src/http/header.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/http/header.c

+
+
+Go to the documentation of this file.
00001 
+00024 #include <stdlib.h>
+00025 #include <string.h>
+00026 
+00027 #include "class.h"
+00028 #include "hash.h"
+00029 #include "http/header.h"
+00030 
+00031 #include "utils/hash.h"
+00032 #include "utils/memory.h"
+00033 
+00034 static
+00035 int
+00036 httpHeaderCtor(void * _this, va_list * params) {
+00037         HttpHeader this = _this;
+00038         char * name;
+00039         char * value;
+00040 
+00041         name            = va_arg(* params, char *);
+00042         this->nname     = va_arg(* params, size_t);
+00043         value           = va_arg(* params, char *);
+00044         this->nvalue[0] = va_arg(* params, size_t);
+00045         
+00046         this->name              = malloc(this->nname + 1);
+00047         this->name[this->nname] = 0;
+00048         memcpy(this->name, name, this->nname);
+00049 
+00050         this->hash = sdbm((unsigned char *)name, this->nname);
+00051 
+00052         (this->value)[0]                    = malloc((this->nvalue)[0] + 1);
+00053         (this->value)[0][(this->nvalue)[0]] = 0;
+00054         memcpy((this->value)[0], value, (this->nvalue)[0]);
+00055         this->cvalue = 1;
+00056         this->size   = this->nname + 2 + (this->nvalue)[0] + 2;
+00057 
+00058         return 0;
+00059 }
+00060 
+00061 static
+00062 void
+00063 httpHeaderDtor(void * _this)
+00064 {
+00065         HttpHeader this = _this;
+00066         size_t     i;
+00067 
+00068         FREE(this->name);
+00069 
+00070         for (i=0; i<this->cvalue; i++) {
+00071                 FREE(this->value[i]);
+00072         }
+00073 }
+00074 
+00075 static
+00076 unsigned long
+00077 httpHeaderGetHash(void * _this)
+00078 {
+00079         HttpHeader this = _this;
+00080 
+00081         return this->hash;
+00082 }
+00083 
+00084 static
+00085 void
+00086 httpHeaderHandleDouble(void * _this, void * _double)
+00087 {
+00088         HttpHeader this = _this;
+00089         HttpHeader doub = _double;
+00090 
+00091         if (this->cvalue >= N_VALUES) {
+00093                 return;
+00094         }
+00095 
+00096         (this->nvalue)[this->cvalue]    = (doub->nvalue)[0];
+00097         (this->value)[(this->cvalue)++] = (doub->value)[0];
+00098         this->size += doub->size;
+00099         (doub->value)[0] = NULL;
+00100 }
+00101 
+00102 INIT_IFACE(Class, httpHeaderCtor, httpHeaderDtor, NULL);
+00103 INIT_IFACE(Hashable, httpHeaderGetHash, httpHeaderHandleDouble);
+00104 CREATE_CLASS(HttpHeader, NULL, IFACE(Class), IFACE(Hashable));
+00105 
+00106 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/header_8h.html b/assets/html/doc/header_8h.html new file mode 100644 index 0000000..deb3a16 --- /dev/null +++ b/assets/html/doc/header_8h.html @@ -0,0 +1,219 @@ + + + + +Server: include/http/header.h File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

include/http/header.h File Reference

+
+
+
#include <sys/types.h>
+#include "class.h"
+
+Include dependency graph for header.h:
+
+
+ + +
+
+This graph shows which files directly or indirectly include this file:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + + + + + +

+Data Structures

struct  HttpHeader

+Defines

#define N_VALUES   128

+Functions

size_t httpHeaderToString (HttpHeader, char *)
+

Detailed Description

+

HTTP header class. One Instance represents one header line of an HTTP message.

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file header.h.

+

Define Documentation

+ +
+
+ + + + +
#define N_VALUES   128
+
+
+ +

Definition at line 32 of file header.h.

+ +
+
+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
size_t httpHeaderToString (HttpHeader ,
char *  
)
+
+
+ +

Definition at line 29 of file to_string.c.

+
{
+        size_t size = header->size;
+        int    i;
+
+        for (i=0; i<header->cvalue; i++) {
+                memcpy(string, header->name, header->nname);
+                string += header->nname;
+
+                *string++ = ':';
+                *string++ = ' ';
+
+                memcpy(string, header->value[i], header->nvalue[i]);
+                string += header->nvalue[i];
+
+                *string++ = '\r';
+                *string++ = '\n';
+        }
+
+        return size;
+}
+
+
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/header_8h_source.html b/assets/html/doc/header_8h_source.html new file mode 100644 index 0000000..cdd992f --- /dev/null +++ b/assets/html/doc/header_8h_source.html @@ -0,0 +1,136 @@ + + + + +Server: include/http/header.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

include/http/header.h

+
+
+Go to the documentation of this file.
00001 
+00025 #ifndef __HTTP_HEADER_H__
+00026 #define __HTTP_HEADER_H__
+00027 
+00028 #include <sys/types.h>
+00029 
+00030 #include "class.h"
+00031 
+00032 #define N_VALUES        128
+00033 
+00034 CLASS(HttpHeader) {
+00035         unsigned long hash;
+00036         char *        name;
+00037         char *        value[N_VALUES];
+00038         size_t        nname;                    
+00039         size_t        nvalue[N_VALUES]; 
+00040         size_t        cvalue;                   
+00041         size_t        size;                             
+00042 };
+00043 
+00044 size_t     httpHeaderToString(HttpHeader, char *);
+00045 
+00046 #endif // __HTTP_HEADER_H__
+00047 
+00048 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/header__size__get_8c.html b/assets/html/doc/header__size__get_8c.html new file mode 100644 index 0000000..c686f60 --- /dev/null +++ b/assets/html/doc/header__size__get_8c.html @@ -0,0 +1,189 @@ + + + + +Server: src/http/message/header_size_get.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/http/message/header_size_get.c File Reference

+
+
+
#include <search.h>
+#include <string.h>
+#include <sys/types.h>
+#include "http/message.h"
+#include "http/response.h"
+#include "http/header.h"
+#include "http/interface/http_intro.h"
+#include "hash.h"
+
+Include dependency graph for header_size_get.c:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + +

+Functions

size_t httpMessageHeaderSizeGet (HttpMessage message)
+

Detailed Description

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file header_size_get.c.

+

Function Documentation

+ +
+
+ + + + + + + + +
size_t httpMessageHeaderSizeGet (HttpMessage message)
+
+
+ +

Definition at line 44 of file header_size_get.c.

+
{
+        size = httpIntroSizeGet(message);
+
+        hashEach(message->header, addHeaderSize);
+        size += 2;
+
+        return size;
+}
+
+

+Here is the call graph for this function:
+
+
+ + +
+

+ +

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/header__size__get_8c_source.html b/assets/html/doc/header__size__get_8c_source.html new file mode 100644 index 0000000..cb5c437 --- /dev/null +++ b/assets/html/doc/header__size__get_8c_source.html @@ -0,0 +1,144 @@ + + + + +Server: src/http/message/header_size_get.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/http/message/header_size_get.c

+
+
+Go to the documentation of this file.
00001 
+00023 #include <search.h>
+00024 #include <string.h>
+00025 #include <sys/types.h>
+00026 
+00027 #include "http/message.h"
+00028 #include "http/response.h"
+00029 #include "http/header.h"
+00030 #include "http/interface/http_intro.h"
+00031 #include "hash.h"
+00032 
+00033 static size_t size;
+00034 
+00035 static
+00036 inline
+00037 void
+00038 addHeaderSize(const void * node)
+00039 {
+00040         size += ((HttpHeader)node)->size;
+00041 }
+00042 
+00043 size_t
+00044 httpMessageHeaderSizeGet(HttpMessage message)
+00045 {
+00046         size = httpIntroSizeGet(message);
+00047 
+00048         hashEach(message->header, addHeaderSize);
+00049         size += 2;
+00050 
+00051         return size;
+00052 }
+00053 
+00054 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/header__to__string_8c.html b/assets/html/doc/header__to__string_8c.html new file mode 100644 index 0000000..69a8da9 --- /dev/null +++ b/assets/html/doc/header__to__string_8c.html @@ -0,0 +1,202 @@ + + + + +Server: src/http/message/header_to_string.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/http/message/header_to_string.c File Reference

+
+
+
#include <search.h>
+#include <string.h>
+#include <stdio.h>
+#include "http/response.h"
+#include "http/header.h"
+#include "http/interface/http_intro.h"
+#include "hash.h"
+
+Include dependency graph for header_to_string.c:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + +

+Functions

char * httpMessageHeaderToString (HttpMessage response, char *_string)
+

Detailed Description

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file header_to_string.c.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
char* httpMessageHeaderToString (HttpMessage response,
char * _string 
)
+
+
+ +

Definition at line 43 of file header_to_string.c.

+
{
+        HttpMessage message = (HttpMessage)response;
+
+        string = httpIntroToString(response, _string);
+
+        hashEach(message->header, addHeaderString);
+
+        *string++ = '\r';
+        *string++ = '\n';
+
+        return string;
+}
+
+

+Here is the call graph for this function:
+
+
+ + +
+

+ +

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/header__to__string_8c_source.html b/assets/html/doc/header__to__string_8c_source.html new file mode 100644 index 0000000..16a2907 --- /dev/null +++ b/assets/html/doc/header__to__string_8c_source.html @@ -0,0 +1,147 @@ + + + + +Server: src/http/message/header_to_string.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/http/message/header_to_string.c

+
+
+Go to the documentation of this file.
00001 
+00023 #include <search.h>
+00024 #include <string.h>
+00025 #include <stdio.h>
+00026 
+00027 #include "http/response.h"
+00028 #include "http/header.h"
+00029 #include "http/interface/http_intro.h"
+00030 #include "hash.h"
+00031 
+00032 static char * string;
+00033 
+00034 static
+00035 inline
+00036 void
+00037 addHeaderString(const void * node)
+00038 {
+00039         string += httpHeaderToString((HttpHeader)node, string);
+00040 }
+00041 
+00042 char *
+00043 httpMessageHeaderToString(HttpMessage response, char * _string)
+00044 {
+00045         HttpMessage message = (HttpMessage)response;
+00046 
+00047         string = httpIntroToString(response, _string);
+00048 
+00049         hashEach(message->header, addHeaderString);
+00050 
+00051         *string++ = '\r';
+00052         *string++ = '\n';
+00053 
+00054         return string;
+00055 }
+00056 
+00057 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/http_2response_2session_8c.html b/assets/html/doc/http_2response_2session_8c.html new file mode 100644 index 0000000..f5364b5 --- /dev/null +++ b/assets/html/doc/http_2response_2session_8c.html @@ -0,0 +1,231 @@ + + + + +Server: src/http/response/session.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/http/response/session.c File Reference

+
+
+
#include <stdlib.h>
+#include <string.h>
+#include <stdio.h>
+#include <time.h>
+#include <sys/types.h>
+#include "class.h"
+#include "http/response.h"
+#include "http/message.h"
+#include "http/header.h"
+#include "session.h"
+#include "utils/memory.h"
+#include "hash.h"
+
+Include dependency graph for session.c:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + + + +

+Defines

#define RESP_DATA   "{\"id\":\"%lu\",\"timeout\":%d,\"timeleft\":%ld,\"username\":\"%s\"}"

+Functions

HttpResponse httpResponseSession (Session session)
+

Detailed Description

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file session.c.

+

Define Documentation

+ +
+
+ + + + +
#define RESP_DATA   "{\"id\":\"%lu\",\"timeout\":%d,\"timeleft\":%ld,\"username\":\"%s\"}"
+
+
+ +

Definition at line 39 of file session.c.

+ +
+
+

Function Documentation

+ +
+
+ + + + + + + + +
HttpResponse httpResponseSession (Session session)
+
+
+ +

Definition at line 42 of file session.c.

+
{
+        char         buffer[200];
+        HttpResponse response;
+        HttpMessage  message;
+        size_t       nbuf;
+
+        response = new(HttpResponse, "HTTP/1.1", 200, "OK");
+        message  = (HttpMessage)response;
+
+        hashAdd(message->header,
+                        new(HttpHeader, CSTRA("Content-Type"), CSTRA("application/json")));
+
+        message->type  = HTTP_MESSAGE_BUFFERED;
+
+        nbuf = sprintf(buffer, RESP_DATA,
+                        (NULL != session)? session->id : 0,
+                        (NULL != session)? SESSION_LIVETIME : 0,
+                        (NULL != session)? session->livetime - time(NULL) : 0,
+                        (NULL != session)? session->username : "");
+
+        message->nbody = nbuf;
+        message->body  = malloc(nbuf);
+        memcpy(message->body, buffer, nbuf);
+
+        return response;
+}
+
+

+Here is the call graph for this function:
+
+
+ + +
+

+ +

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/http_2response_2session_8c_source.html b/assets/html/doc/http_2response_2session_8c_source.html new file mode 100644 index 0000000..4940abd --- /dev/null +++ b/assets/html/doc/http_2response_2session_8c_source.html @@ -0,0 +1,160 @@ + + + + +Server: src/http/response/session.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/http/response/session.c

+
+
+Go to the documentation of this file.
00001 
+00023 #include <stdlib.h>
+00024 #include <string.h>
+00025 #include <stdio.h>
+00026 #include <time.h>
+00027 #include <sys/types.h>
+00028 
+00029 #include "class.h"
+00030 
+00031 #include "http/response.h"
+00032 #include "http/message.h"
+00033 #include "http/header.h"
+00034 #include "session.h"
+00035 
+00036 #include "utils/memory.h"
+00037 #include "hash.h"
+00038 
+00039 #define RESP_DATA "{\"id\":\"%lu\",\"timeout\":%d,\"timeleft\":%ld,\"username\":\"%s\"}"
+00040 
+00041 HttpResponse
+00042 httpResponseSession(Session session)
+00043 {
+00044         char         buffer[200];
+00045         HttpResponse response;
+00046         HttpMessage  message;
+00047         size_t       nbuf;
+00048 
+00049         response = new(HttpResponse, "HTTP/1.1", 200, "OK");
+00050         message  = (HttpMessage)response;
+00051 
+00052         hashAdd(message->header,
+00053                         new(HttpHeader, CSTRA("Content-Type"), CSTRA("application/json")));
+00054 
+00055         message->type  = HTTP_MESSAGE_BUFFERED;
+00056 
+00057         nbuf = sprintf(buffer, RESP_DATA,
+00058                         (NULL != session)? session->id : 0,
+00059                         (NULL != session)? SESSION_LIVETIME : 0,
+00060                         (NULL != session)? session->livetime - time(NULL) : 0,
+00061                         (NULL != session)? session->username : "");
+00062 
+00063         message->nbody = nbuf;
+00064         message->body  = malloc(nbuf);
+00065         memcpy(message->body, buffer, nbuf);
+00066 
+00067         return response;
+00068 }
+00069 
+00070 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/http_2writer_2write_8c.html b/assets/html/doc/http_2writer_2write_8c.html new file mode 100644 index 0000000..831b985 --- /dev/null +++ b/assets/html/doc/http_2writer_2write_8c.html @@ -0,0 +1,299 @@ + + + + +Server: src/http/writer/write.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/http/writer/write.c File Reference

+
+
+
#include <unistd.h>
+#include <sys/stat.h>
+#include "class.h"
+#include "http/message.h"
+#include "http/writer.h"
+#include "cbuf.h"
+#include "stream.h"
+#include "commons.h"
+
+Include dependency graph for write.c:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + +

+Functions

ssize_t httpWriterWrite (void *_this, Stream st)
+

Detailed Description

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file write.c.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
ssize_t httpWriterWrite (void * _this,
Stream st 
)
+
+
+ +

read

+

write

+

if the message did not have the keep-alive feature we don't care about further pipelined messages and return to the caller with a -1 indicating that the underlying connection should be closed at their side. Then we close to connection.

+

+ +

Definition at line 36 of file write.c.

+
{
+        HttpWriter       this    = _this;
+        HttpMessageQueue respq   = this->queue;
+        int              cont    = 1;
+
+        if (cbufIsLocked(this->buffer)) {
+                if (FALSE == this->ourLock)
+                        return 0;
+        }
+        else {
+                cbufLock(this->buffer);
+                this->ourLock = TRUE;
+        }
+
+        while (cont) {
+                switch (this->state) {
+                        case HTTP_WRITER_GET:
+                                if (NULL == this->current && 0 < respq->nmsgs) {
+                                        this->current = respq->msgs[0];
+
+                                        this->written = 0;
+                                        this->nbody   = 0;
+                                        this->nheader = httpMessageHeaderSizeGet(this->current);
+
+                                        httpMessageHeaderToString(
+                                                        this->current,
+                                                        cbufGetWrite(this->buffer));
+                                        cbufIncWrite(this->buffer, this->nheader);
+
+                                        this->state = HTTP_WRITER_WRITE;
+                                }
+                                else {
+                                        cbufRelease(this->buffer);
+                                        this->ourLock = FALSE;
+                                        cont          = 0;
+                                }
+                                break;
+
+                        case HTTP_WRITER_WRITE:
+                                if (this->nbody < this->current->nbody) {
+                                        size_t size = MIN(
+                                                        this->current->nbody - this->nbody,
+                                                        cbufGetFree(this->buffer));
+
+                                        switch (this->current->type) {
+                                                case HTTP_MESSAGE_BUFFERED:
+                                                        cbufSetData(this->buffer,
+                                                                        this->current->body + this->nbody,
+                                                                        size);
+                                                        break;
+
+                                                case HTTP_MESSAGE_PIPED:
+                                                        size = cbufRead(this->buffer, this->current->handle);
+                                                        break;
+
+                                                default:
+                                                        return -1;
+                                        }
+
+                                        this->nbody += size;
+                                }
+
+                                {
+                                        ssize_t written = cbufWrite(this->buffer, st);
+
+                                        if (0 <= written) {
+                                                this->written += written;
+                                        }
+                                        else {
+                                                return -1;
+                                        }
+                                }
+
+                                if (this->written == this->current->nbody + this->nheader) {
+                                        this->state = HTTP_WRITER_DONE;
+                                }
+                                else {
+                                        cont = 0;
+                                }
+                                break;
+
+                        case HTTP_WRITER_DONE:
+                                this->state   = HTTP_WRITER_GET;
+
+                                memmove(respq->msgs,
+                                                &(respq->msgs[1]),
+                                                sizeof(void*) * (--respq->nmsgs + 1));
+
+                                cbufRelease(this->buffer);
+                                this->ourLock = FALSE;
+
+                                if (! httpMessageHasKeepAlive(this->current)) {
+                                        delete(this->current);
+                                        return -1;
+                                }
+
+                                delete(this->current);
+                                break;
+                }
+        }
+
+        return respq->nmsgs;
+}
+
+

+Here is the call graph for this function:
+
+
+ + +
+

+ +

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/http_2writer_2write_8c_source.html b/assets/html/doc/http_2writer_2write_8c_source.html new file mode 100644 index 0000000..63c7b04 --- /dev/null +++ b/assets/html/doc/http_2writer_2write_8c_source.html @@ -0,0 +1,231 @@ + + + + +Server: src/http/writer/write.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/http/writer/write.c

+
+
+Go to the documentation of this file.
00001 
+00023 #include <unistd.h>
+00024 #include <sys/stat.h>
+00025 
+00026 #include "class.h"
+00027 #include "http/message.h"
+00028 #include "http/writer.h"
+00029 #include "cbuf.h"
+00030 #include "stream.h"
+00031 
+00032 #include "commons.h"
+00033 
+00034 
+00035 ssize_t
+00036 httpWriterWrite(void * _this, Stream st)
+00037 {
+00038         HttpWriter       this    = _this;
+00039         HttpMessageQueue respq   = this->queue;
+00040         int              cont    = 1;
+00041 
+00042         if (cbufIsLocked(this->buffer)) {
+00043                 if (FALSE == this->ourLock)
+00044                         return 0;
+00045         }
+00046         else {
+00047                 cbufLock(this->buffer);
+00048                 this->ourLock = TRUE;
+00049         }
+00050 
+00051         while (cont) {
+00052                 switch (this->state) {
+00053                         case HTTP_WRITER_GET:
+00054                                 if (NULL == this->current && 0 < respq->nmsgs) {
+00055                                         this->current = respq->msgs[0];
+00056 
+00057                                         this->written = 0;
+00058                                         this->nbody   = 0;
+00059                                         this->nheader = httpMessageHeaderSizeGet(this->current);
+00060 
+00061                                         httpMessageHeaderToString(
+00062                                                         this->current,
+00063                                                         cbufGetWrite(this->buffer));
+00064                                         cbufIncWrite(this->buffer, this->nheader);
+00065 
+00066                                         this->state = HTTP_WRITER_WRITE;
+00067                                 }
+00068                                 else {
+00069                                         cbufRelease(this->buffer);
+00070                                         this->ourLock = FALSE;
+00071                                         cont          = 0;
+00072                                 }
+00073                                 break;
+00074 
+00075                         case HTTP_WRITER_WRITE:
+00079                                 if (this->nbody < this->current->nbody) {
+00080                                         size_t size = MIN(
+00081                                                         this->current->nbody - this->nbody,
+00082                                                         cbufGetFree(this->buffer));
+00083 
+00084                                         switch (this->current->type) {
+00085                                                 case HTTP_MESSAGE_BUFFERED:
+00086                                                         cbufSetData(this->buffer,
+00087                                                                         this->current->body + this->nbody,
+00088                                                                         size);
+00089                                                         break;
+00090 
+00091                                                 case HTTP_MESSAGE_PIPED:
+00092                                                         size = cbufRead(this->buffer, this->current->handle);
+00093                                                         break;
+00094 
+00095                                                 default:
+00096                                                         return -1;
+00097                                         }
+00098 
+00099                                         this->nbody += size;
+00100                                 }
+00101 
+00105                                 {
+00106                                         ssize_t written = cbufWrite(this->buffer, st);
+00107 
+00108                                         if (0 <= written) {
+00109                                                 this->written += written;
+00110                                         }
+00111                                         else {
+00112                                                 return -1;
+00113                                         }
+00114                                 }
+00115 
+00116                                 if (this->written == this->current->nbody + this->nheader) {
+00117                                         this->state = HTTP_WRITER_DONE;
+00118                                 }
+00119                                 else {
+00120                                         cont = 0;
+00121                                 }
+00122                                 break;
+00123 
+00124                         case HTTP_WRITER_DONE:
+00125                                 this->state   = HTTP_WRITER_GET;
+00126 
+00127                                 memmove(respq->msgs,
+00128                                                 &(respq->msgs[1]),
+00129                                                 sizeof(void*) * (--respq->nmsgs + 1));
+00130 
+00131                                 cbufRelease(this->buffer);
+00132                                 this->ourLock = FALSE;
+00133 
+00134                                 if (! httpMessageHasKeepAlive(this->current)) {
+00142                                         delete(this->current);
+00143                                         return -1;
+00144                                 }
+00145 
+00146                                 delete(this->current);
+00147                                 break;
+00148                 }
+00149         }
+00150 
+00151         return respq->nmsgs;
+00152 }
+00153 
+00154 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/http_2writer_8c.html b/assets/html/doc/http_2writer_8c.html new file mode 100644 index 0000000..369b9a3 --- /dev/null +++ b/assets/html/doc/http_2writer_8c.html @@ -0,0 +1,248 @@ + + + + +Server: src/http/writer.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/http/writer.c File Reference

+
+
+
#include <stdarg.h>
+#include "class.h"
+#include "stream.h"
+#include "http/message/queue.h"
+#include "http/writer.h"
+
+Include dependency graph for writer.c:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + + + +

+Functions

 INIT_IFACE (Class, httpWriterCtor, httpWriterDtor, NULL)
 INIT_IFACE (StreamWriter, httpWriterWrite)
 CREATE_CLASS (HttpWriter, NULL, IFACE(Class), IFACE(StreamWriter))
+

Detailed Description

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file writer.c.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CREATE_CLASS (HttpWriter ,
NULL ,
IFACE(Class) ,
IFACE(StreamWriter)  
)
+
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
INIT_IFACE (Class ,
httpWriterCtor ,
httpWriterDtor ,
NULL  
)
+
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
INIT_IFACE (StreamWriter ,
httpWriterWrite  
)
+
+
+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/http_2writer_8c_source.html b/assets/html/doc/http_2writer_8c_source.html new file mode 100644 index 0000000..49fb12d --- /dev/null +++ b/assets/html/doc/http_2writer_8c_source.html @@ -0,0 +1,152 @@ + + + + +Server: src/http/writer.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/http/writer.c

+
+
+Go to the documentation of this file.
00001 
+00023 #include <stdarg.h>
+00024 
+00025 #include "class.h"
+00026 #include "stream.h"
+00027 
+00028 #include "http/message/queue.h"
+00029 #include "http/writer.h"
+00030 
+00031 static
+00032 int
+00033 httpWriterCtor(void * _this, va_list * params)
+00034 {
+00035         HttpWriter this = _this;
+00036 
+00037         this->buffer = va_arg(*params, Cbuf);
+00038         this->queue  = new(HttpMessageQueue);
+00039 
+00040         return 0;
+00041 }
+00042 
+00043 static
+00044 void
+00045 httpWriterDtor(void * _this)
+00046 {
+00047         HttpWriter this = _this;
+00048 
+00049         delete(this->queue);
+00050 
+00051         if (TRUE == this->ourLock)
+00052                 cbufRelease(this->buffer);
+00053 
+00054         if (NULL != this->current)
+00055                 delete(this->current);
+00056 }
+00057 
+00058 INIT_IFACE(Class, httpWriterCtor, httpWriterDtor, NULL);
+00059 INIT_IFACE(StreamWriter, httpWriterWrite);
+00060 CREATE_CLASS(HttpWriter, NULL, IFACE(Class), IFACE(StreamWriter));
+00061 
+00062 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/http_2writer_8h.html b/assets/html/doc/http_2writer_8h.html new file mode 100644 index 0000000..7913a83 --- /dev/null +++ b/assets/html/doc/http_2writer_8h.html @@ -0,0 +1,386 @@ + + + + +Server: include/http/writer.h File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

include/http/writer.h File Reference

+
+
+
#include <sys/types.h>
+#include "class.h"
+#include "http/message.h"
+#include "http/message/queue.h"
+#include "cbuf.h"
+#include "stream.h"
+#include "commons.h"
+
+Include dependency graph for writer.h:
+
+
+ + +
+
+This graph shows which files directly or indirectly include this file:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + + + + + + + + + +

+Data Structures

struct  HttpWriter

+Defines

#define WRITER_MAX_BUF   131072

+Typedefs

typedef enum e_HttpWriterState HttpWriterState

+Enumerations

enum  e_HttpWriterState { HTTP_WRITER_GET = 0, +HTTP_WRITER_WRITE, +HTTP_WRITER_DONE + }

+Functions

ssize_t httpWriterWrite (void *, Stream)
+

Detailed Description

+

Write ready responses to an output stream.

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file writer.h.

+

Define Documentation

+ +
+
+ + + + +
#define WRITER_MAX_BUF   131072
+
+
+ +

Definition at line 38 of file writer.h.

+ +
+
+

Typedef Documentation

+ +
+
+ + + + +
typedef enum e_HttpWriterState HttpWriterState
+
+
+ +
+
+

Enumeration Type Documentation

+ +
+
+ + + + +
enum e_HttpWriterState
+
+
+
Enumerator:
+ + + +
HTTP_WRITER_GET  +
HTTP_WRITER_WRITE  +
HTTP_WRITER_DONE  +
+
+
+ +

Definition at line 41 of file writer.h.

+ +
+
+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
ssize_t httpWriterWrite (void * ,
Stream  
)
+
+
+ +

read

+

write

+

if the message did not have the keep-alive feature we don't care about further pipelined messages and return to the caller with a -1 indicating that the underlying connection should be closed at their side. Then we close to connection.

+

+ +

Definition at line 36 of file write.c.

+
{
+        HttpWriter       this    = _this;
+        HttpMessageQueue respq   = this->queue;
+        int              cont    = 1;
+
+        if (cbufIsLocked(this->buffer)) {
+                if (FALSE == this->ourLock)
+                        return 0;
+        }
+        else {
+                cbufLock(this->buffer);
+                this->ourLock = TRUE;
+        }
+
+        while (cont) {
+                switch (this->state) {
+                        case HTTP_WRITER_GET:
+                                if (NULL == this->current && 0 < respq->nmsgs) {
+                                        this->current = respq->msgs[0];
+
+                                        this->written = 0;
+                                        this->nbody   = 0;
+                                        this->nheader = httpMessageHeaderSizeGet(this->current);
+
+                                        httpMessageHeaderToString(
+                                                        this->current,
+                                                        cbufGetWrite(this->buffer));
+                                        cbufIncWrite(this->buffer, this->nheader);
+
+                                        this->state = HTTP_WRITER_WRITE;
+                                }
+                                else {
+                                        cbufRelease(this->buffer);
+                                        this->ourLock = FALSE;
+                                        cont          = 0;
+                                }
+                                break;
+
+                        case HTTP_WRITER_WRITE:
+                                if (this->nbody < this->current->nbody) {
+                                        size_t size = MIN(
+                                                        this->current->nbody - this->nbody,
+                                                        cbufGetFree(this->buffer));
+
+                                        switch (this->current->type) {
+                                                case HTTP_MESSAGE_BUFFERED:
+                                                        cbufSetData(this->buffer,
+                                                                        this->current->body + this->nbody,
+                                                                        size);
+                                                        break;
+
+                                                case HTTP_MESSAGE_PIPED:
+                                                        size = cbufRead(this->buffer, this->current->handle);
+                                                        break;
+
+                                                default:
+                                                        return -1;
+                                        }
+
+                                        this->nbody += size;
+                                }
+
+                                {
+                                        ssize_t written = cbufWrite(this->buffer, st);
+
+                                        if (0 <= written) {
+                                                this->written += written;
+                                        }
+                                        else {
+                                                return -1;
+                                        }
+                                }
+
+                                if (this->written == this->current->nbody + this->nheader) {
+                                        this->state = HTTP_WRITER_DONE;
+                                }
+                                else {
+                                        cont = 0;
+                                }
+                                break;
+
+                        case HTTP_WRITER_DONE:
+                                this->state   = HTTP_WRITER_GET;
+
+                                memmove(respq->msgs,
+                                                &(respq->msgs[1]),
+                                                sizeof(void*) * (--respq->nmsgs + 1));
+
+                                cbufRelease(this->buffer);
+                                this->ourLock = FALSE;
+
+                                if (! httpMessageHasKeepAlive(this->current)) {
+                                        delete(this->current);
+                                        return -1;
+                                }
+
+                                delete(this->current);
+                                break;
+                }
+        }
+
+        return respq->nmsgs;
+}
+
+

+Here is the call graph for this function:
+
+
+ + +
+

+ +

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/http_2writer_8h_source.html b/assets/html/doc/http_2writer_8h_source.html new file mode 100644 index 0000000..8ca9e5e --- /dev/null +++ b/assets/html/doc/http_2writer_8h_source.html @@ -0,0 +1,154 @@ + + + + +Server: include/http/writer.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

include/http/writer.h

+
+
+Go to the documentation of this file.
00001 
+00024 #ifndef __HTTP_WRITER_H__
+00025 #define __HTTP_WRITER_H__
+00026 
+00027 #include <sys/types.h>
+00028 
+00029 #include "class.h"
+00030 #include "http/message.h"
+00031 #include "http/message/queue.h"
+00032 #include "cbuf.h"
+00033 #include "stream.h"
+00034 
+00035 #include "commons.h"
+00036 
+00037 
+00038 #define WRITER_MAX_BUF  131072
+00039 
+00040 
+00041 typedef enum e_HttpWriterState {
+00042         HTTP_WRITER_GET=0,
+00043         HTTP_WRITER_WRITE,
+00044         HTTP_WRITER_DONE
+00045 } HttpWriterState;
+00046 
+00047 CLASS(HttpWriter) {
+00048         Cbuf             buffer;
+00049         Bool             ourLock;
+00050 
+00051         HttpMessageQueue queue;
+00052         HttpMessage      current;
+00053 
+00054         size_t           nheader;
+00055         size_t           nbody;
+00056         size_t           written;
+00057 
+00058         HttpWriterState  state;
+00059 };
+00060 
+00061 ssize_t httpWriterWrite(void *, Stream);
+00062 
+00063 #endif // __HTTP_WRITER_H__
+00064 
+00065 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/http_8c.html b/assets/html/doc/http_8c.html new file mode 100644 index 0000000..80c018f --- /dev/null +++ b/assets/html/doc/http_8c.html @@ -0,0 +1,283 @@ + + + + +Server: src/utils/http.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/utils/http.c File Reference

+
+
+
#include <stdlib.h>
+#include <sys/types.h>
+#include <string.h>
+#include "http/message.h"
+#include "http/request.h"
+#include "http/response.h"
+#include "class.h"
+#include "commons.h"
+
+Include dependency graph for http.c:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + + +

+Functions

char isHttpVersion (const char *str, size_t len)
HttpMessage httpGetMessage (const char *part1, size_t len1, const char *part2, size_t len2, const char *part3, size_t len3)
+

Detailed Description

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file http.c.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
HttpMessage httpGetMessage (const char * part1,
size_t len1,
const char * part2,
size_t len2,
const char * part3,
size_t len3 
)
+
+
+ +

Definition at line 51 of file http.c.

+
{
+        if (isHttpVersion(part1, len1)) {
+                return new(HttpResponse,
+                                part1, len1,
+                                strtoul(part2, NULL, 10),
+                                part3, len3);
+        }
+
+        if (isHttpVersion(part3, len3)) {
+                return new(HttpRequest,
+                                part1, len1,
+                                part2, len2,
+                                part3, len3);
+        }
+
+        return NULL;
+}
+
+

+Here is the call graph for this function:
+
+
+ + +
+

+ +

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
char isHttpVersion (const char * str,
size_t len 
)
+
+
+ +

Definition at line 36 of file http.c.

+
{
+        if (NULL == str)
+                return FALSE;
+
+        if (8 > len)
+                return FALSE;
+
+        if (0 != memcmp("HTTP/", str, sizeof("HTTP/")-1))
+                return FALSE;
+
+        return TRUE;
+}
+
+

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/http_8c_source.html b/assets/html/doc/http_8c_source.html new file mode 100644 index 0000000..53fa817 --- /dev/null +++ b/assets/html/doc/http_8c_source.html @@ -0,0 +1,163 @@ + + + + +Server: src/utils/http.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/utils/http.c

+
+
+Go to the documentation of this file.
00001 
+00023 #include <stdlib.h>
+00024 #include <sys/types.h>
+00025 #include <string.h>
+00026 
+00027 #include "http/message.h"
+00028 #include "http/request.h"
+00029 #include "http/response.h"
+00030 
+00031 #include "class.h"
+00032 
+00033 #include "commons.h"
+00034 
+00035 char
+00036 isHttpVersion(const char * str, size_t len)
+00037 {
+00038         if (NULL == str)
+00039                 return FALSE;
+00040 
+00041         if (8 > len)
+00042                 return FALSE;
+00043 
+00044         if (0 != memcmp("HTTP/", str, sizeof("HTTP/")-1))
+00045                 return FALSE;
+00046 
+00047         return TRUE;
+00048 }
+00049 
+00050 HttpMessage
+00051 httpGetMessage(
+00052                 const char * part1, size_t len1,
+00053                 const char * part2, size_t len2,
+00054                 const char * part3, size_t len3)
+00055 {
+00056         if (isHttpVersion(part1, len1)) {
+00057                 return new(HttpResponse,
+00058                                 part1, len1,
+00059                                 strtoul(part2, NULL, 10),
+00060                                 part3, len3);
+00061         }
+00062 
+00063         if (isHttpVersion(part3, len3)) {
+00064                 return new(HttpRequest,
+00065                                 part1, len1,
+00066                                 part2, len2,
+00067                                 part3, len3);
+00068         }
+00069 
+00070         return NULL;
+00071 }
+00072 
+00073 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/http_8h.html b/assets/html/doc/http_8h.html new file mode 100644 index 0000000..51b8634 --- /dev/null +++ b/assets/html/doc/http_8h.html @@ -0,0 +1,132 @@ + + + + +Server: include/http.h File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

include/http.h File Reference

+
+
+
#include "http/cookie.h"
+#include "http/header.h"
+#include "http/message.h"
+#include "http/message/queue.h"
+#include "http/request.h"
+#include "http/response.h"
+#include "http/parser.h"
+#include "http/writer.h"
+#include "http/worker.h"
+#include "http/interface/http_intro.h"
+
+Include dependency graph for http.h:
+
+
+ + +
+
+

Go to the source code of this file.

+ +
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/http_8h_source.html b/assets/html/doc/http_8h_source.html new file mode 100644 index 0000000..1d9debd --- /dev/null +++ b/assets/html/doc/http_8h_source.html @@ -0,0 +1,128 @@ + + + + +Server: include/http.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

include/http.h

+
+
+Go to the documentation of this file.
00001 #ifndef __HTTP_H__
+00002 #define __HTTP_H__
+00003 
+00004 #include "http/cookie.h"
+00005 #include "http/header.h"
+00006 #include "http/message.h"
+00007 #include "http/message/queue.h"
+00008 #include "http/request.h"
+00009 #include "http/response.h"
+00010 #include "http/parser.h"
+00011 #include "http/writer.h"
+00012 #include "http/worker.h"
+00013 #include "http/interface/http_intro.h"
+00014 
+00015 #endif // __HTTP_H__
+00016 
+00017 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/http__intro_8h.html b/assets/html/doc/http__intro_8h.html new file mode 100644 index 0000000..4bfba63 --- /dev/null +++ b/assets/html/doc/http__intro_8h.html @@ -0,0 +1,266 @@ + + + + +Server: include/http/interface/http_intro.h File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

include/http/interface/http_intro.h File Reference

+
+
+
#include <sys/types.h>
+
+Include dependency graph for http_intro.h:
+
+
+ + +
+
+This graph shows which files directly or indirectly include this file:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + + + + + + + +

+Data Structures

struct  i_HttpIntro

+Typedefs

typedef size_t(* fptr_httpIntroSizeGet )(void *)
typedef char *(* fptr_httpIntroToString )(void *, char *)

+Functions

size_t httpIntroSizeGet (void *)
char * httpIntroToString (void *, char *)
+

Detailed Description

+

Virtual (dynamically bound) methods to get the size of the http intro line. As i have two kinds of http messages (response, request) which need a slitly different handling when turning the data into a string.

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file http_intro.h.

+

Typedef Documentation

+ +
+
+ + + + +
typedef size_t(* fptr_httpIntroSizeGet)(void *)
+
+
+ +

Definition at line 31 of file http_intro.h.

+ +
+
+ +
+
+ + + + +
typedef char*(* fptr_httpIntroToString)(void *, char *)
+
+
+ +

Definition at line 32 of file http_intro.h.

+ +
+
+

Function Documentation

+ +
+
+ + + + + + + + +
size_t httpIntroSizeGet (void * )
+
+
+ +

Definition at line 32 of file i_http_intro.c.

+
{
+        size_t ret;
+
+        RETCALL(object, HttpIntro, sizeGet, ret);
+
+        return ret;
+}
+
+

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
char* httpIntroToString (void * ,
char *  
)
+
+
+ +

Definition at line 42 of file i_http_intro.c.

+
{
+        char * ret;
+
+        RETCALL(object, HttpIntro, toString, ret, string);
+
+        return ret;
+}
+
+

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/http__intro_8h_source.html b/assets/html/doc/http__intro_8h_source.html new file mode 100644 index 0000000..a5179b1 --- /dev/null +++ b/assets/html/doc/http__intro_8h_source.html @@ -0,0 +1,134 @@ + + + + +Server: include/http/interface/http_intro.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

include/http/interface/http_intro.h

+
+
+Go to the documentation of this file.
00001 
+00026 #ifndef __HTTP_INTRO_H__
+00027 #define __HTTP_INTRO_H__
+00028 
+00029 #include <sys/types.h>
+00030 
+00031 typedef size_t (* fptr_httpIntroSizeGet)(void *);
+00032 typedef char * (* fptr_httpIntroToString)(void *, char *);
+00033 
+00034 extern const struct interface i_HttpIntro;
+00035 
+00036 struct i_HttpIntro {
+00037         const struct interface * const _;
+00038         fptr_httpIntroSizeGet    sizeGet;
+00039         fptr_httpIntroToString   toString;
+00040 };
+00041 
+00042 extern size_t httpIntroSizeGet(void *);
+00043 extern char * httpIntroToString(void *, char *);
+00044 
+00045 #endif // __HTTP_INTRO_H__
+00046 
+00047 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/i__class_8c.html b/assets/html/doc/i__class_8c.html new file mode 100644 index 0000000..eb7b20b --- /dev/null +++ b/assets/html/doc/i__class_8c.html @@ -0,0 +1,266 @@ + + + + +Server: src/class/interface/i_class.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/class/interface/i_class.c File Reference

+
+
+
#include <stdarg.h>
+#include <stdlib.h>
+#include <assert.h>
+#include "class/class.h"
+#include "class/interface/class.h"
+
+Include dependency graph for i_class.c:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + + + +

+Functions

void * classNew (class_ptr class,...)
void classDelete (void **object)
void * classClone (void *_object)
+

Detailed Description

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file i_class.c.

+

Function Documentation

+ +
+
+ + + + + + + + +
void* classClone (void * _object)
+
+
+ +

Definition at line 69 of file i_class.c.

+
{
+        class_ptr class  = GET_CLASS(_object);
+        void *    object = calloc(1, class->object_size + sizeof(void*));
+
+        * (class_ptr *)object = class;
+        object += sizeof(void*);
+
+#undef clone
+        CALL(object, Class, clone, _object);
+
+        return object;
+}
+
+
+
+ +
+
+ + + + + + + + +
void classDelete (void ** object)
+
+
+ +

Definition at line 58 of file i_class.c.

+
{
+        if (NULL != *object) {
+                CALL(*object, Class, dtor);
+
+                free(*object - sizeof(void*));
+                *object = NULL;
+        }
+}
+
+

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
void* classNew (class_ptr class,
 ... 
)
+
+
+ +

Definition at line 37 of file i_class.c.

+
{
+        void *  object = calloc(1, class->object_size + sizeof(void*));
+        va_list params;
+        int     ret;
+
+        * (class_ptr *)object = class;
+        object += sizeof(void*);
+
+        va_start(params, class);
+        RETCALL(object, Class, ctor, ret, &params);
+        va_end(params);
+
+        if (-1 == ret) {
+                classDelete(&object);
+        }
+
+        return object;
+}
+
+

+Here is the call graph for this function:
+
+
+ + +
+

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/i__class_8c_source.html b/assets/html/doc/i__class_8c_source.html new file mode 100644 index 0000000..5e2d1a9 --- /dev/null +++ b/assets/html/doc/i__class_8c_source.html @@ -0,0 +1,173 @@ + + + + +Server: src/class/interface/i_class.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/class/interface/i_class.c

+
+
+Go to the documentation of this file.
00001 
+00023 #include <stdarg.h>
+00024 #include <stdlib.h>
+00025 #include <assert.h>
+00026 
+00027 #include "class/class.h"
+00028 #include "class/interface/class.h"
+00029 
+00030 const
+00031 struct interface i_Class = {
+00032         "class",
+00033         3
+00034 };
+00035 
+00036 void *
+00037 classNew(class_ptr class, ...)
+00038 {
+00039         void *  object = calloc(1, class->object_size + sizeof(void*));
+00040         va_list params;
+00041         int     ret;
+00042 
+00043         * (class_ptr *)object = class;
+00044         object += sizeof(void*);
+00045 
+00046         va_start(params, class);
+00047         RETCALL(object, Class, ctor, ret, &params);
+00048         va_end(params);
+00049 
+00050         if (-1 == ret) {
+00051                 classDelete(&object);
+00052         }
+00053 
+00054         return object;
+00055 }
+00056 
+00057 void
+00058 classDelete(void ** object)
+00059 {
+00060         if (NULL != *object) {
+00061                 CALL(*object, Class, dtor);
+00062 
+00063                 free(*object - sizeof(void*));
+00064                 *object = NULL;
+00065         }
+00066 }
+00067 
+00068 void *
+00069 classClone(void * _object)
+00070 {
+00071         class_ptr class  = GET_CLASS(_object);
+00072         void *    object = calloc(1, class->object_size + sizeof(void*));
+00073 
+00074         * (class_ptr *)object = class;
+00075         object += sizeof(void*);
+00076 
+00077 #undef clone
+00078         CALL(object, Class, clone, _object);
+00079 
+00080         return object;
+00081 }
+00082 
+00083 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/i__http__intro_8c.html b/assets/html/doc/i__http__intro_8c.html new file mode 100644 index 0000000..56dd48e --- /dev/null +++ b/assets/html/doc/i__http__intro_8c.html @@ -0,0 +1,219 @@ + + + + +Server: src/http/interface/i_http_intro.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/http/interface/i_http_intro.c File Reference

+
+
+
#include "class.h"
+#include "http/interface/http_intro.h"
+
+Include dependency graph for i_http_intro.c:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + + +

+Functions

size_t httpIntroSizeGet (void *object)
char * httpIntroToString (void *object, char *string)
+

Detailed Description

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file i_http_intro.c.

+

Function Documentation

+ +
+
+ + + + + + + + +
size_t httpIntroSizeGet (void * object)
+
+
+ +

Definition at line 32 of file i_http_intro.c.

+
{
+        size_t ret;
+
+        RETCALL(object, HttpIntro, sizeGet, ret);
+
+        return ret;
+}
+
+

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
char* httpIntroToString (void * object,
char * string 
)
+
+
+ +

Definition at line 42 of file i_http_intro.c.

+
{
+        char * ret;
+
+        RETCALL(object, HttpIntro, toString, ret, string);
+
+        return ret;
+}
+
+

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/i__http__intro_8c_source.html b/assets/html/doc/i__http__intro_8c_source.html new file mode 100644 index 0000000..9a1bf97 --- /dev/null +++ b/assets/html/doc/i__http__intro_8c_source.html @@ -0,0 +1,141 @@ + + + + +Server: src/http/interface/i_http_intro.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/http/interface/i_http_intro.c

+
+
+Go to the documentation of this file.
00001 
+00023 #include "class.h"
+00024 #include "http/interface/http_intro.h"
+00025 
+00026 const struct interface i_HttpIntro = {
+00027         "httpIntro",
+00028         2
+00029 };
+00030 
+00031 size_t
+00032 httpIntroSizeGet(void * object)
+00033 {
+00034         size_t ret;
+00035 
+00036         RETCALL(object, HttpIntro, sizeGet, ret);
+00037 
+00038         return ret;
+00039 }
+00040 
+00041 char *
+00042 httpIntroToString(void * object, char * string)
+00043 {
+00044         char * ret;
+00045 
+00046         RETCALL(object, HttpIntro, toString, ret, string);
+00047 
+00048         return ret;
+00049 }
+00050 
+00051 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/i__logger_8c.html b/assets/html/doc/i__logger_8c.html new file mode 100644 index 0000000..dc9a747 --- /dev/null +++ b/assets/html/doc/i__logger_8c.html @@ -0,0 +1,214 @@ + + + + +Server: src/logger/interface/i_logger.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/logger/interface/i_logger.c File Reference

+
+
+
#include <stdlib.h>
+#include <stdio.h>
+#include <stdarg.h>
+#include "logger/logger.h"
+#include "logger/interface/logger.h"
+
+Include dependency graph for i_logger.c:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + +

+Functions

void loggerLog (void *_object, logger_level level, const char *const fmt,...)
+

Detailed Description

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file i_logger.c.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void loggerLog (void * _object,
logger_level level,
const char *const fmt,
 ... 
)
+
+
+ +

Definition at line 36 of file i_logger.c.

+
                                                                           {
+        Logger object = _object;
+
+        if (level >= object->min_level) {
+                char *  msg      = NULL;
+                size_t  msg_size = 0;
+                va_list params;
+
+                va_start(params, fmt);
+                msg_size = vsnprintf(msg, msg_size, fmt, params);
+                va_end(params);
+
+                msg = malloc(msg_size + 1);
+
+                va_start(params, fmt);
+                vsnprintf(msg, msg_size + 1, fmt, params);
+                va_end(params);
+
+                CALL(_object, Logger, log, level, msg);
+
+                free(msg);
+        }
+}
+
+

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/i__logger_8c_source.html b/assets/html/doc/i__logger_8c_source.html new file mode 100644 index 0000000..7e01102 --- /dev/null +++ b/assets/html/doc/i__logger_8c_source.html @@ -0,0 +1,150 @@ + + + + +Server: src/logger/interface/i_logger.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/logger/interface/i_logger.c

+
+
+Go to the documentation of this file.
00001 
+00023 #include <stdlib.h>
+00024 #include <stdio.h>
+00025 #include <stdarg.h>
+00026 
+00027 #include "logger/logger.h"
+00028 #include "logger/interface/logger.h"
+00029 
+00030 const struct interface i_Logger = {
+00031         "logger",
+00032         1
+00033 };
+00034 
+00035 void
+00036 loggerLog(void * _object, logger_level level, const char * const fmt, ...) {
+00037         Logger object = _object;
+00038 
+00039         if (level >= object->min_level) {
+00040                 char *  msg      = NULL;
+00041                 size_t  msg_size = 0;
+00042                 va_list params;
+00043 
+00044                 va_start(params, fmt);
+00045                 msg_size = vsnprintf(msg, msg_size, fmt, params);
+00046                 va_end(params);
+00047 
+00048                 msg = malloc(msg_size + 1);
+00049 
+00050                 va_start(params, fmt);
+00051                 vsnprintf(msg, msg_size + 1, fmt, params);
+00052                 va_end(params);
+00053 
+00054                 CALL(_object, Logger, log, level, msg);
+00055 
+00056                 free(msg);
+00057         }
+00058 }
+00059 
+00060 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/inc__read_8c.html b/assets/html/doc/inc__read_8c.html new file mode 100644 index 0000000..910ff43 --- /dev/null +++ b/assets/html/doc/inc__read_8c.html @@ -0,0 +1,182 @@ + + + + +Server: src/cbuf/inc_read.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/cbuf/inc_read.c File Reference

+
+
+
#include <sys/types.h>
+#include "cbuf.h"
+
+Include dependency graph for inc_read.c:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + +

+Functions

void cbufIncRead (Cbuf this, size_t n)
+

Detailed Description

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file inc_read.c.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
void cbufIncRead (Cbuf this,
size_t n 
)
+
+
+ +

Definition at line 28 of file inc_read.c.

+
{
+        this->read  += n;
+        this->read   = (this->read >= this->bsize)?
+                this->read - this->bsize : this->read;
+        this->bused -= n;
+}
+
+

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/inc__read_8c_source.html b/assets/html/doc/inc__read_8c_source.html new file mode 100644 index 0000000..a8bc444 --- /dev/null +++ b/assets/html/doc/inc__read_8c_source.html @@ -0,0 +1,126 @@ + + + + +Server: src/cbuf/inc_read.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/cbuf/inc_read.c

+
+
+Go to the documentation of this file.
00001 
+00023 #include <sys/types.h>
+00024 
+00025 #include "cbuf.h"
+00026 
+00027 void
+00028 cbufIncRead(Cbuf this, size_t n)
+00029 {
+00030         this->read  += n;
+00031         this->read   = (this->read >= this->bsize)?
+00032                 this->read - this->bsize : this->read;
+00033         this->bused -= n;
+00034 }
+00035 
+00036 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/inc__write_8c.html b/assets/html/doc/inc__write_8c.html new file mode 100644 index 0000000..06aa149 --- /dev/null +++ b/assets/html/doc/inc__write_8c.html @@ -0,0 +1,182 @@ + + + + +Server: src/cbuf/inc_write.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/cbuf/inc_write.c File Reference

+
+
+
#include <sys/types.h>
+#include "cbuf.h"
+
+Include dependency graph for inc_write.c:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + +

+Functions

void cbufIncWrite (Cbuf this, size_t n)
+

Detailed Description

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file inc_write.c.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
void cbufIncWrite (Cbuf this,
size_t n 
)
+
+
+ +

Definition at line 28 of file inc_write.c.

+
{
+        this->write += n;
+        this->write  = (this->write >= this->bsize)?
+                this->write - this->bsize : this->write;
+        this->bused += n;
+}
+
+

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/inc__write_8c_source.html b/assets/html/doc/inc__write_8c_source.html new file mode 100644 index 0000000..123eb76 --- /dev/null +++ b/assets/html/doc/inc__write_8c_source.html @@ -0,0 +1,126 @@ + + + + +Server: src/cbuf/inc_write.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/cbuf/inc_write.c

+
+
+Go to the documentation of this file.
00001 
+00023 #include <sys/types.h>
+00024 
+00025 #include "cbuf.h"
+00026 
+00027 void
+00028 cbufIncWrite(Cbuf this, size_t n)
+00029 {
+00030         this->write += n;
+00031         this->write  = (this->write >= this->bsize)?
+00032                 this->write - this->bsize : this->write;
+00033         this->bused += n;
+00034 }
+00035 
+00036 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/index.html b/assets/html/doc/index.html new file mode 100644 index 0000000..5619a99 --- /dev/null +++ b/assets/html/doc/index.html @@ -0,0 +1,104 @@ + + + + +Server: Main Page + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ +
+
+ +
+
+
+ +
+
+
+

Server Documentation

+
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/installdox b/assets/html/doc/installdox new file mode 100755 index 0000000..edf5bbf --- /dev/null +++ b/assets/html/doc/installdox @@ -0,0 +1,112 @@ +#!/usr/bin/perl + +%subst = ( ); +$quiet = 0; + +while ( @ARGV ) { + $_ = shift @ARGV; + if ( s/^-// ) { + if ( /^l(.*)/ ) { + $v = ($1 eq "") ? shift @ARGV : $1; + ($v =~ /\/$/) || ($v .= "/"); + $_ = $v; + if ( /(.+)\@(.+)/ ) { + if ( exists $subst{$1} ) { + $subst{$1} = $2; + } else { + print STDERR "Unknown tag file $1 given with option -l\n"; + &usage(); + } + } else { + print STDERR "Argument $_ is invalid for option -l\n"; + &usage(); + } + } + elsif ( /^q/ ) { + $quiet = 1; + } + elsif ( /^\?|^h/ ) { + &usage(); + } + else { + print STDERR "Illegal option -$_\n"; + &usage(); + } + } + else { + push (@files, $_ ); + } +} + +foreach $sub (keys %subst) +{ + if ( $subst{$sub} eq "" ) + { + print STDERR "No substitute given for tag file `$sub'\n"; + &usage(); + } + elsif ( ! $quiet && $sub ne "_doc" && $sub ne "_cgi" ) + { + print "Substituting $subst{$sub} for each occurrence of tag file $sub\n"; + } +} + +if ( ! @files ) { + if (opendir(D,".")) { + foreach $file ( readdir(D) ) { + $match = ".html"; + next if ( $file =~ /^\.\.?$/ ); + ($file =~ /$match/) && (push @files, $file); + ($file =~ /\.svg/) && (push @files, $file); + ($file =~ "navtree.js") && (push @files, $file); + } + closedir(D); + } +} + +if ( ! @files ) { + print STDERR "Warning: No input files given and none found!\n"; +} + +foreach $f (@files) +{ + if ( ! $quiet ) { + print "Editing: $f...\n"; + } + $oldf = $f; + $f .= ".bak"; + unless (rename $oldf,$f) { + print STDERR "Error: cannot rename file $oldf\n"; + exit 1; + } + if (open(F,"<$f")) { + unless (open(G,">$oldf")) { + print STDERR "Error: opening file $oldf for writing\n"; + exit 1; + } + if ($oldf ne "tree.js") { + while () { + s/doxygen\=\"([^ \"\:\t\>\<]*)\:([^ \"\t\>\<]*)\" (xlink:href|href|src)=\"\2/doxygen\=\"$1:$subst{$1}\" \3=\"$subst{$1}/g; + print G "$_"; + } + } + else { + while () { + s/\"([^ \"\:\t\>\<]*)\:([^ \"\t\>\<]*)\", \"\2/\"$1:$subst{$1}\" ,\"$subst{$1}/g; + print G "$_"; + } + } + } + else { + print STDERR "Warning file $f does not exist\n"; + } + unlink $f; +} + +sub usage { + print STDERR "Usage: installdox [options] [html-file [html-file ...]]\n"; + print STDERR "Options:\n"; + print STDERR " -l tagfile\@linkName tag file + URL or directory \n"; + print STDERR " -q Quiet mode\n\n"; + exit 1; +} diff --git a/assets/html/doc/interface_8c.html b/assets/html/doc/interface_8c.html new file mode 100644 index 0000000..45d6e3b --- /dev/null +++ b/assets/html/doc/interface_8c.html @@ -0,0 +1,188 @@ + + + + +Server: src/class/interface.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/class/interface.c File Reference

+
+
+
#include <sys/types.h>
+#include <stdlib.h>
+#include "class/interface.h"
+#include "commons.h"
+
+Include dependency graph for interface.c:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + +

+Functions

iface_ptr interfaceGet (iface_impl_ptr iface_impl, const iface_ptr _iface)
+

Detailed Description

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file interface.c.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
iface_ptr interfaceGet (iface_impl_ptr iface_impl,
const iface_ptr _iface 
)
+
+
+

this one is important in selector functions to get the correct interface implementation of a class.

+ +

Definition at line 44 of file interface.c.

+
{
+        const iface_ptr * iface = &_iface;
+        iface_ptr *       found;
+
+    if (! iface_impl->simpl) {
+        qsort((void**)(iface_impl->impl), iface_impl->nimpl, sizeof(iface_ptr), comp);
+        iface_impl->simpl=TRUE;
+    }
+
+    found = bsearch(
+                        &iface,
+                        iface_impl->impl,
+                        iface_impl->nimpl,
+                        sizeof(iface_ptr),
+                        comp);
+
+        return found? *found : (iface_ptr)NULL;
+}
+
+
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/interface_8c_source.html b/assets/html/doc/interface_8c_source.html new file mode 100644 index 0000000..d2c22d0 --- /dev/null +++ b/assets/html/doc/interface_8c_source.html @@ -0,0 +1,150 @@ + + + + +Server: src/class/interface.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/class/interface.c

+
+
+Go to the documentation of this file.
00001 
+00023 #include <sys/types.h>
+00024 #include <stdlib.h>
+00025 
+00026 #include "class/interface.h"
+00027 #include "commons.h"
+00028 
+00029 static
+00030 inline
+00031 int
+00032 comp(const void * _a, const void * _b)
+00033 {
+00034         const struct interface * a = **(const struct interface ***)_a;
+00035         const struct interface * b = **(const struct interface ***)_b;
+00036     return ((a)<(b))? -1 : ((a)>(b))? 1 : 0;
+00037 }
+00038 
+00043 iface_ptr
+00044 interfaceGet(iface_impl_ptr iface_impl, const iface_ptr _iface)
+00045 {
+00046         const iface_ptr * iface = &_iface;
+00047         iface_ptr *       found;
+00048 
+00049     if (! iface_impl->simpl) {
+00050         qsort((void**)(iface_impl->impl), iface_impl->nimpl, sizeof(iface_ptr), comp);
+00051         iface_impl->simpl=TRUE;
+00052     }
+00053 
+00054     found = bsearch(
+00055                         &iface,
+00056                         iface_impl->impl,
+00057                         iface_impl->nimpl,
+00058                         sizeof(iface_ptr),
+00059                         comp);
+00060 
+00061         return found? *found : (iface_ptr)NULL;
+00062 }
+00063 
+00064 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/interface_8h.html b/assets/html/doc/interface_8h.html new file mode 100644 index 0000000..940e6ec --- /dev/null +++ b/assets/html/doc/interface_8h.html @@ -0,0 +1,344 @@ + + + + +Server: include/class/interface.h File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

include/class/interface.h File Reference

+
+
+
#include <sys/types.h>
+
+Include dependency graph for interface.h:
+
+
+ + +
+
+This graph shows which files directly or indirectly include this file:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + + + + + + + + + + + + + +

+Data Structures

struct  interface
struct  iface_impl

+Defines

#define MAX_IFACE   32
#define IFACE(name)   ((const struct i_##name const*)&i_##name##_impl)
#define INIT_IFACE(name,...)   static const struct i_##name i_##name##_impl = {&i_##name,__VA_ARGS__}
#define NUMARGS(...)   (sizeof((const void*[]){__VA_ARGS__})/sizeof(void*))
#define INIT_IFACE_IMPL(...)   {NUMARGS(__VA_ARGS__), 0, {__VA_ARGS__}}

+Typedefs

typedef struct interfaceiface_ptr
typedef struct iface_impliface_impl_ptr

+Functions

iface_ptr interfaceGet (iface_impl_ptr, const iface_ptr)
+

Detailed Description

+

Interface definition code. Each interface is a set of selector functions as well as a data structure where the concrete implementation will be stored. This structure is the intergrated in the class that implements the interface.

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file interface.h.

+

Define Documentation

+ +
+
+ + + + + + + + +
#define IFACE( name)   ((const struct i_##name const*)&i_##name##_impl)
+
+
+ +

Definition at line 34 of file interface.h.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
#define INIT_IFACE( name,
 ... 
)   static const struct i_##name i_##name##_impl = {&i_##name,__VA_ARGS__}
+
+
+ +

Definition at line 35 of file interface.h.

+ +
+
+ +
+
+ + + + + + + + +
#define INIT_IFACE_IMPL( ...)   {NUMARGS(__VA_ARGS__), 0, {__VA_ARGS__}}
+
+
+ +

Definition at line 39 of file interface.h.

+ +
+
+ +
+
+ + + + +
#define MAX_IFACE   32
+
+
+ +

Definition at line 32 of file interface.h.

+ +
+
+ +
+
+ + + + + + + + +
#define NUMARGS( ...)   (sizeof((const void*[]){__VA_ARGS__})/sizeof(void*))
+
+
+ +

Definition at line 38 of file interface.h.

+ +
+
+

Typedef Documentation

+ +
+
+ + + + +
typedef struct iface_impl* iface_impl_ptr
+
+
+ +

Definition at line 53 of file interface.h.

+ +
+
+ +
+
+ + + + +
typedef struct interface* iface_ptr
+
+
+ +

Definition at line 46 of file interface.h.

+ +
+
+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
iface_ptr interfaceGet (iface_impl_ptr iface_impl,
const iface_ptr _iface 
)
+
+
+

this one is important in selector functions to get the correct interface implementation of a class.

+ +

Definition at line 44 of file interface.c.

+
{
+        const iface_ptr * iface = &_iface;
+        iface_ptr *       found;
+
+    if (! iface_impl->simpl) {
+        qsort((void**)(iface_impl->impl), iface_impl->nimpl, sizeof(iface_ptr), comp);
+        iface_impl->simpl=TRUE;
+    }
+
+    found = bsearch(
+                        &iface,
+                        iface_impl->impl,
+                        iface_impl->nimpl,
+                        sizeof(iface_ptr),
+                        comp);
+
+        return found? *found : (iface_ptr)NULL;
+}
+
+
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/interface_8h_source.html b/assets/html/doc/interface_8h_source.html new file mode 100644 index 0000000..b0c03db --- /dev/null +++ b/assets/html/doc/interface_8h_source.html @@ -0,0 +1,145 @@ + + + + +Server: include/class/interface.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

include/class/interface.h

+
+
+Go to the documentation of this file.
00001 
+00027 #ifndef __CLASS_INTERFACE_H__
+00028 #define __CLASS_INTERFACE_H__
+00029 
+00030 #include <sys/types.h>
+00031 
+00032 #define MAX_IFACE       32      // ATTENTION: every iface_impl will use MAX_IFACE * sizeof(void*)
+00033 
+00034 #define IFACE(name)             ((const struct i_##name const*)&i_##name##_impl)
+00035 #define INIT_IFACE(name,...) \
+00036         static const struct i_##name i_##name##_impl = {&i_##name,__VA_ARGS__}
+00037 
+00038 #define NUMARGS(...)    (sizeof((const void*[]){__VA_ARGS__})/sizeof(void*))
+00039 #define INIT_IFACE_IMPL(...)    {NUMARGS(__VA_ARGS__), 0, {__VA_ARGS__}}
+00040 
+00041 
+00042 struct interface {
+00043         const char * name;
+00044         const size_t nmethods;
+00045 };
+00046 typedef const struct interface * iface_ptr;
+00047 
+00048 struct iface_impl {
+00049         const size_t nimpl;           // number of interface implementations
+00050         char         simpl;           // implementations sorted??
+00051         const void * impl[MAX_IFACE]; // implementations
+00052 };
+00053 typedef struct iface_impl * iface_impl_ptr;
+00054 
+00055 extern iface_ptr interfaceGet(iface_impl_ptr, const iface_ptr);
+00056 
+00057 #endif // __CLASS_INTERFACE_H__
+00058 
+00059 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/is__empty_8c.html b/assets/html/doc/is__empty_8c.html new file mode 100644 index 0000000..b1157e8 --- /dev/null +++ b/assets/html/doc/is__empty_8c.html @@ -0,0 +1,168 @@ + + + + +Server: src/cbuf/is_empty.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/cbuf/is_empty.c File Reference

+
+
+
#include "cbuf.h"
+
+Include dependency graph for is_empty.c:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + +

+Functions

char cbufIsEmpty (Cbuf this)
+

Detailed Description

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file is_empty.c.

+

Function Documentation

+ +
+
+ + + + + + + + +
char cbufIsEmpty (Cbuf this)
+
+
+ +

Definition at line 26 of file is_empty.c.

+
{
+        return (0 == this->bused);
+}
+
+

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/is__empty_8c_source.html b/assets/html/doc/is__empty_8c_source.html new file mode 100644 index 0000000..fa03b6d --- /dev/null +++ b/assets/html/doc/is__empty_8c_source.html @@ -0,0 +1,121 @@ + + + + +Server: src/cbuf/is_empty.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/cbuf/is_empty.c

+
+
+Go to the documentation of this file.
00001 
+00023 #include "cbuf.h"
+00024 
+00025 char
+00026 cbufIsEmpty(Cbuf this)
+00027 {
+00028         return (0 == this->bused);
+00029 }
+00030 
+00031 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/is__locked_8c.html b/assets/html/doc/is__locked_8c.html new file mode 100644 index 0000000..cfe783d --- /dev/null +++ b/assets/html/doc/is__locked_8c.html @@ -0,0 +1,169 @@ + + + + +Server: src/cbuf/is_locked.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/cbuf/is_locked.c File Reference

+
+
+
#include "cbuf.h"
+#include "commons.h"
+
+Include dependency graph for is_locked.c:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + +

+Functions

Bool cbufIsLocked (Cbuf this)
+

Detailed Description

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file is_locked.c.

+

Function Documentation

+ +
+
+ + + + + + + + +
Bool cbufIsLocked (Cbuf this)
+
+
+ +

Definition at line 28 of file is_locked.c.

+
{
+        return this->lock;
+}
+
+

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/is__locked_8c_source.html b/assets/html/doc/is__locked_8c_source.html new file mode 100644 index 0000000..b015a19 --- /dev/null +++ b/assets/html/doc/is__locked_8c_source.html @@ -0,0 +1,123 @@ + + + + +Server: src/cbuf/is_locked.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/cbuf/is_locked.c

+
+
+Go to the documentation of this file.
00001 
+00023 #include "cbuf.h"
+00024 
+00025 #include "commons.h"
+00026 
+00027 Bool
+00028 cbufIsLocked(Cbuf this)
+00029 {
+00030         return this->lock;
+00031 }
+00032 
+00033 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/jquery.js b/assets/html/doc/jquery.js new file mode 100644 index 0000000..c052173 --- /dev/null +++ b/assets/html/doc/jquery.js @@ -0,0 +1,54 @@ +/* + * jQuery JavaScript Library v1.3.2 + * http://jquery.com/ + * + * Copyright (c) 2009 John Resig + * Dual licensed under the MIT and GPL licenses. + * http://docs.jquery.com/License + * + * Date: 2009-02-19 17:34:21 -0500 (Thu, 19 Feb 2009) + * Revision: 6246 + */ +(function(){var l=this,g,y=l.jQuery,p=l.$,o=l.jQuery=l.$=function(E,F){return new o.fn.init(E,F)},D=/^[^<]*(<(.|\s)+>)[^>]*$|^#([\w-]+)$/,f=/^.[^:#\[\.,]*$/;o.fn=o.prototype={init:function(E,H){E=E||document;if(E.nodeType){this[0]=E;this.length=1;this.context=E;return this}if(typeof E==="string"){var G=D.exec(E);if(G&&(G[1]||!H)){if(G[1]){E=o.clean([G[1]],H)}else{var I=document.getElementById(G[3]);if(I&&I.id!=G[3]){return o().find(E)}var F=o(I||[]);F.context=document;F.selector=E;return F}}else{return o(H).find(E)}}else{if(o.isFunction(E)){return o(document).ready(E)}}if(E.selector&&E.context){this.selector=E.selector;this.context=E.context}return this.setArray(o.isArray(E)?E:o.makeArray(E))},selector:"",jquery:"1.3.2",size:function(){return this.length},get:function(E){return E===g?Array.prototype.slice.call(this):this[E]},pushStack:function(F,H,E){var G=o(F);G.prevObject=this;G.context=this.context;if(H==="find"){G.selector=this.selector+(this.selector?" ":"")+E}else{if(H){G.selector=this.selector+"."+H+"("+E+")"}}return G},setArray:function(E){this.length=0;Array.prototype.push.apply(this,E);return this},each:function(F,E){return o.each(this,F,E)},index:function(E){return o.inArray(E&&E.jquery?E[0]:E,this)},attr:function(F,H,G){var E=F;if(typeof F==="string"){if(H===g){return this[0]&&o[G||"attr"](this[0],F)}else{E={};E[F]=H}}return this.each(function(I){for(F in E){o.attr(G?this.style:this,F,o.prop(this,E[F],G,I,F))}})},css:function(E,F){if((E=="width"||E=="height")&&parseFloat(F)<0){F=g}return this.attr(E,F,"curCSS")},text:function(F){if(typeof F!=="object"&&F!=null){return this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(F))}var E="";o.each(F||this,function(){o.each(this.childNodes,function(){if(this.nodeType!=8){E+=this.nodeType!=1?this.nodeValue:o.fn.text([this])}})});return E},wrapAll:function(E){if(this[0]){var F=o(E,this[0].ownerDocument).clone();if(this[0].parentNode){F.insertBefore(this[0])}F.map(function(){var G=this;while(G.firstChild){G=G.firstChild}return G}).append(this)}return this},wrapInner:function(E){return this.each(function(){o(this).contents().wrapAll(E)})},wrap:function(E){return this.each(function(){o(this).wrapAll(E)})},append:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.appendChild(E)}})},prepend:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.insertBefore(E,this.firstChild)}})},before:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this)})},after:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this.nextSibling)})},end:function(){return this.prevObject||o([])},push:[].push,sort:[].sort,splice:[].splice,find:function(E){if(this.length===1){var F=this.pushStack([],"find",E);F.length=0;o.find(E,this[0],F);return F}else{return this.pushStack(o.unique(o.map(this,function(G){return o.find(E,G)})),"find",E)}},clone:function(G){var E=this.map(function(){if(!o.support.noCloneEvent&&!o.isXMLDoc(this)){var I=this.outerHTML;if(!I){var J=this.ownerDocument.createElement("div");J.appendChild(this.cloneNode(true));I=J.innerHTML}return o.clean([I.replace(/ jQuery\d+="(?:\d+|null)"/g,"").replace(/^\s*/,"")])[0]}else{return this.cloneNode(true)}});if(G===true){var H=this.find("*").andSelf(),F=0;E.find("*").andSelf().each(function(){if(this.nodeName!==H[F].nodeName){return}var I=o.data(H[F],"events");for(var K in I){for(var J in I[K]){o.event.add(this,K,I[K][J],I[K][J].data)}}F++})}return E},filter:function(E){return this.pushStack(o.isFunction(E)&&o.grep(this,function(G,F){return E.call(G,F)})||o.multiFilter(E,o.grep(this,function(F){return F.nodeType===1})),"filter",E)},closest:function(E){var G=o.expr.match.POS.test(E)?o(E):null,F=0;return this.map(function(){var H=this;while(H&&H.ownerDocument){if(G?G.index(H)>-1:o(H).is(E)){o.data(H,"closest",F);return H}H=H.parentNode;F++}})},not:function(E){if(typeof E==="string"){if(f.test(E)){return this.pushStack(o.multiFilter(E,this,true),"not",E)}else{E=o.multiFilter(E,this)}}var F=E.length&&E[E.length-1]!==g&&!E.nodeType;return this.filter(function(){return F?o.inArray(this,E)<0:this!=E})},add:function(E){return this.pushStack(o.unique(o.merge(this.get(),typeof E==="string"?o(E):o.makeArray(E))))},is:function(E){return !!E&&o.multiFilter(E,this).length>0},hasClass:function(E){return !!E&&this.is("."+E)},val:function(K){if(K===g){var E=this[0];if(E){if(o.nodeName(E,"option")){return(E.attributes.value||{}).specified?E.value:E.text}if(o.nodeName(E,"select")){var I=E.selectedIndex,L=[],M=E.options,H=E.type=="select-one";if(I<0){return null}for(var F=H?I:0,J=H?I+1:M.length;F=0||o.inArray(this.name,K)>=0)}else{if(o.nodeName(this,"select")){var N=o.makeArray(K);o("option",this).each(function(){this.selected=(o.inArray(this.value,N)>=0||o.inArray(this.text,N)>=0)});if(!N.length){this.selectedIndex=-1}}else{this.value=K}}})},html:function(E){return E===g?(this[0]?this[0].innerHTML.replace(/ jQuery\d+="(?:\d+|null)"/g,""):null):this.empty().append(E)},replaceWith:function(E){return this.after(E).remove()},eq:function(E){return this.slice(E,+E+1)},slice:function(){return this.pushStack(Array.prototype.slice.apply(this,arguments),"slice",Array.prototype.slice.call(arguments).join(","))},map:function(E){return this.pushStack(o.map(this,function(G,F){return E.call(G,F,G)}))},andSelf:function(){return this.add(this.prevObject)},domManip:function(J,M,L){if(this[0]){var I=(this[0].ownerDocument||this[0]).createDocumentFragment(),F=o.clean(J,(this[0].ownerDocument||this[0]),I),H=I.firstChild;if(H){for(var G=0,E=this.length;G1||G>0?I.cloneNode(true):I)}}if(F){o.each(F,z)}}return this;function K(N,O){return M&&o.nodeName(N,"table")&&o.nodeName(O,"tr")?(N.getElementsByTagName("tbody")[0]||N.appendChild(N.ownerDocument.createElement("tbody"))):N}}};o.fn.init.prototype=o.fn;function z(E,F){if(F.src){o.ajax({url:F.src,async:false,dataType:"script"})}else{o.globalEval(F.text||F.textContent||F.innerHTML||"")}if(F.parentNode){F.parentNode.removeChild(F)}}function e(){return +new Date}o.extend=o.fn.extend=function(){var J=arguments[0]||{},H=1,I=arguments.length,E=false,G;if(typeof J==="boolean"){E=J;J=arguments[1]||{};H=2}if(typeof J!=="object"&&!o.isFunction(J)){J={}}if(I==H){J=this;--H}for(;H-1}},swap:function(H,G,I){var E={};for(var F in G){E[F]=H.style[F];H.style[F]=G[F]}I.call(H);for(var F in G){H.style[F]=E[F]}},css:function(H,F,J,E){if(F=="width"||F=="height"){var L,G={position:"absolute",visibility:"hidden",display:"block"},K=F=="width"?["Left","Right"]:["Top","Bottom"];function I(){L=F=="width"?H.offsetWidth:H.offsetHeight;if(E==="border"){return}o.each(K,function(){if(!E){L-=parseFloat(o.curCSS(H,"padding"+this,true))||0}if(E==="margin"){L+=parseFloat(o.curCSS(H,"margin"+this,true))||0}else{L-=parseFloat(o.curCSS(H,"border"+this+"Width",true))||0}})}if(H.offsetWidth!==0){I()}else{o.swap(H,G,I)}return Math.max(0,Math.round(L))}return o.curCSS(H,F,J)},curCSS:function(I,F,G){var L,E=I.style;if(F=="opacity"&&!o.support.opacity){L=o.attr(E,"opacity");return L==""?"1":L}if(F.match(/float/i)){F=w}if(!G&&E&&E[F]){L=E[F]}else{if(q.getComputedStyle){if(F.match(/float/i)){F="float"}F=F.replace(/([A-Z])/g,"-$1").toLowerCase();var M=q.getComputedStyle(I,null);if(M){L=M.getPropertyValue(F)}if(F=="opacity"&&L==""){L="1"}}else{if(I.currentStyle){var J=F.replace(/\-(\w)/g,function(N,O){return O.toUpperCase()});L=I.currentStyle[F]||I.currentStyle[J];if(!/^\d+(px)?$/i.test(L)&&/^\d/.test(L)){var H=E.left,K=I.runtimeStyle.left;I.runtimeStyle.left=I.currentStyle.left;E.left=L||0;L=E.pixelLeft+"px";E.left=H;I.runtimeStyle.left=K}}}}return L},clean:function(F,K,I){K=K||document;if(typeof K.createElement==="undefined"){K=K.ownerDocument||K[0]&&K[0].ownerDocument||document}if(!I&&F.length===1&&typeof F[0]==="string"){var H=/^<(\w+)\s*\/?>$/.exec(F[0]);if(H){return[K.createElement(H[1])]}}var G=[],E=[],L=K.createElement("div");o.each(F,function(P,S){if(typeof S==="number"){S+=""}if(!S){return}if(typeof S==="string"){S=S.replace(/(<(\w+)[^>]*?)\/>/g,function(U,V,T){return T.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)?U:V+">"});var O=S.replace(/^\s+/,"").substring(0,10).toLowerCase();var Q=!O.indexOf("",""]||!O.indexOf("",""]||O.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,"","
"]||!O.indexOf("",""]||(!O.indexOf("",""]||!O.indexOf("",""]||!o.support.htmlSerialize&&[1,"div
","
"]||[0,"",""];L.innerHTML=Q[1]+S+Q[2];while(Q[0]--){L=L.lastChild}if(!o.support.tbody){var R=/"&&!R?L.childNodes:[];for(var M=N.length-1;M>=0;--M){if(o.nodeName(N[M],"tbody")&&!N[M].childNodes.length){N[M].parentNode.removeChild(N[M])}}}if(!o.support.leadingWhitespace&&/^\s/.test(S)){L.insertBefore(K.createTextNode(S.match(/^\s*/)[0]),L.firstChild)}S=o.makeArray(L.childNodes)}if(S.nodeType){G.push(S)}else{G=o.merge(G,S)}});if(I){for(var J=0;G[J];J++){if(o.nodeName(G[J],"script")&&(!G[J].type||G[J].type.toLowerCase()==="text/javascript")){E.push(G[J].parentNode?G[J].parentNode.removeChild(G[J]):G[J])}else{if(G[J].nodeType===1){G.splice.apply(G,[J+1,0].concat(o.makeArray(G[J].getElementsByTagName("script"))))}I.appendChild(G[J])}}return E}return G},attr:function(J,G,K){if(!J||J.nodeType==3||J.nodeType==8){return g}var H=!o.isXMLDoc(J),L=K!==g;G=H&&o.props[G]||G;if(J.tagName){var F=/href|src|style/.test(G);if(G=="selected"&&J.parentNode){J.parentNode.selectedIndex}if(G in J&&H&&!F){if(L){if(G=="type"&&o.nodeName(J,"input")&&J.parentNode){throw"type property can't be changed"}J[G]=K}if(o.nodeName(J,"form")&&J.getAttributeNode(G)){return J.getAttributeNode(G).nodeValue}if(G=="tabIndex"){var I=J.getAttributeNode("tabIndex");return I&&I.specified?I.value:J.nodeName.match(/(button|input|object|select|textarea)/i)?0:J.nodeName.match(/^(a|area)$/i)&&J.href?0:g}return J[G]}if(!o.support.style&&H&&G=="style"){return o.attr(J.style,"cssText",K)}if(L){J.setAttribute(G,""+K)}var E=!o.support.hrefNormalized&&H&&F?J.getAttribute(G,2):J.getAttribute(G);return E===null?g:E}if(!o.support.opacity&&G=="opacity"){if(L){J.zoom=1;J.filter=(J.filter||"").replace(/alpha\([^)]*\)/,"")+(parseInt(K)+""=="NaN"?"":"alpha(opacity="+K*100+")")}return J.filter&&J.filter.indexOf("opacity=")>=0?(parseFloat(J.filter.match(/opacity=([^)]*)/)[1])/100)+"":""}G=G.replace(/-([a-z])/ig,function(M,N){return N.toUpperCase()});if(L){J[G]=K}return J[G]},trim:function(E){return(E||"").replace(/^\s+|\s+$/g,"")},makeArray:function(G){var E=[];if(G!=null){var F=G.length;if(F==null||typeof G==="string"||o.isFunction(G)||G.setInterval){E[0]=G}else{while(F){E[--F]=G[F]}}}return E},inArray:function(G,H){for(var E=0,F=H.length;E0?this.clone(true):this).get();o.fn[F].apply(o(L[K]),I);J=J.concat(I)}return this.pushStack(J,E,G)}});o.each({removeAttr:function(E){o.attr(this,E,"");if(this.nodeType==1){this.removeAttribute(E)}},addClass:function(E){o.className.add(this,E)},removeClass:function(E){o.className.remove(this,E)},toggleClass:function(F,E){if(typeof E!=="boolean"){E=!o.className.has(this,F)}o.className[E?"add":"remove"](this,F)},remove:function(E){if(!E||o.filter(E,[this]).length){o("*",this).add([this]).each(function(){o.event.remove(this);o.removeData(this)});if(this.parentNode){this.parentNode.removeChild(this)}}},empty:function(){o(this).children().remove();while(this.firstChild){this.removeChild(this.firstChild)}}},function(E,F){o.fn[E]=function(){return this.each(F,arguments)}});function j(E,F){return E[0]&&parseInt(o.curCSS(E[0],F,true),10)||0}var h="jQuery"+e(),v=0,A={};o.extend({cache:{},data:function(F,E,G){F=F==l?A:F;var H=F[h];if(!H){H=F[h]=++v}if(E&&!o.cache[H]){o.cache[H]={}}if(G!==g){o.cache[H][E]=G}return E?o.cache[H][E]:H},removeData:function(F,E){F=F==l?A:F;var H=F[h];if(E){if(o.cache[H]){delete o.cache[H][E];E="";for(E in o.cache[H]){break}if(!E){o.removeData(F)}}}else{try{delete F[h]}catch(G){if(F.removeAttribute){F.removeAttribute(h)}}delete o.cache[H]}},queue:function(F,E,H){if(F){E=(E||"fx")+"queue";var G=o.data(F,E);if(!G||o.isArray(H)){G=o.data(F,E,o.makeArray(H))}else{if(H){G.push(H)}}}return G},dequeue:function(H,G){var E=o.queue(H,G),F=E.shift();if(!G||G==="fx"){F=E[0]}if(F!==g){F.call(H)}}});o.fn.extend({data:function(E,G){var H=E.split(".");H[1]=H[1]?"."+H[1]:"";if(G===g){var F=this.triggerHandler("getData"+H[1]+"!",[H[0]]);if(F===g&&this.length){F=o.data(this[0],E)}return F===g&&H[1]?this.data(H[0]):F}else{return this.trigger("setData"+H[1]+"!",[H[0],G]).each(function(){o.data(this,E,G)})}},removeData:function(E){return this.each(function(){o.removeData(this,E)})},queue:function(E,F){if(typeof E!=="string"){F=E;E="fx"}if(F===g){return o.queue(this[0],E)}return this.each(function(){var G=o.queue(this,E,F);if(E=="fx"&&G.length==1){G[0].call(this)}})},dequeue:function(E){return this.each(function(){o.dequeue(this,E)})}}); +/* + * Sizzle CSS Selector Engine - v0.9.3 + * Copyright 2009, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * More information: http://sizzlejs.com/ + */ +(function(){var R=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?/g,L=0,H=Object.prototype.toString;var F=function(Y,U,ab,ac){ab=ab||[];U=U||document;if(U.nodeType!==1&&U.nodeType!==9){return[]}if(!Y||typeof Y!=="string"){return ab}var Z=[],W,af,ai,T,ad,V,X=true;R.lastIndex=0;while((W=R.exec(Y))!==null){Z.push(W[1]);if(W[2]){V=RegExp.rightContext;break}}if(Z.length>1&&M.exec(Y)){if(Z.length===2&&I.relative[Z[0]]){af=J(Z[0]+Z[1],U)}else{af=I.relative[Z[0]]?[U]:F(Z.shift(),U);while(Z.length){Y=Z.shift();if(I.relative[Y]){Y+=Z.shift()}af=J(Y,af)}}}else{var ae=ac?{expr:Z.pop(),set:E(ac)}:F.find(Z.pop(),Z.length===1&&U.parentNode?U.parentNode:U,Q(U));af=F.filter(ae.expr,ae.set);if(Z.length>0){ai=E(af)}else{X=false}while(Z.length){var ah=Z.pop(),ag=ah;if(!I.relative[ah]){ah=""}else{ag=Z.pop()}if(ag==null){ag=U}I.relative[ah](ai,ag,Q(U))}}if(!ai){ai=af}if(!ai){throw"Syntax error, unrecognized expression: "+(ah||Y)}if(H.call(ai)==="[object Array]"){if(!X){ab.push.apply(ab,ai)}else{if(U.nodeType===1){for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&(ai[aa]===true||ai[aa].nodeType===1&&K(U,ai[aa]))){ab.push(af[aa])}}}else{for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&ai[aa].nodeType===1){ab.push(af[aa])}}}}}else{E(ai,ab)}if(V){F(V,U,ab,ac);if(G){hasDuplicate=false;ab.sort(G);if(hasDuplicate){for(var aa=1;aa":function(Z,U,aa){var X=typeof U==="string";if(X&&!/\W/.test(U)){U=aa?U:U.toUpperCase();for(var V=0,T=Z.length;V=0)){if(!V){T.push(Y)}}else{if(V){U[X]=false}}}}return false},ID:function(T){return T[1].replace(/\\/g,"")},TAG:function(U,T){for(var V=0;T[V]===false;V++){}return T[V]&&Q(T[V])?U[1]:U[1].toUpperCase()},CHILD:function(T){if(T[1]=="nth"){var U=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(T[2]=="even"&&"2n"||T[2]=="odd"&&"2n+1"||!/\D/.test(T[2])&&"0n+"+T[2]||T[2]);T[2]=(U[1]+(U[2]||1))-0;T[3]=U[3]-0}T[0]=L++;return T},ATTR:function(X,U,V,T,Y,Z){var W=X[1].replace(/\\/g,"");if(!Z&&I.attrMap[W]){X[1]=I.attrMap[W]}if(X[2]==="~="){X[4]=" "+X[4]+" "}return X},PSEUDO:function(X,U,V,T,Y){if(X[1]==="not"){if(X[3].match(R).length>1||/^\w/.test(X[3])){X[3]=F(X[3],null,null,U)}else{var W=F.filter(X[3],U,V,true^Y);if(!V){T.push.apply(T,W)}return false}}else{if(I.match.POS.test(X[0])||I.match.CHILD.test(X[0])){return true}}return X},POS:function(T){T.unshift(true);return T}},filters:{enabled:function(T){return T.disabled===false&&T.type!=="hidden"},disabled:function(T){return T.disabled===true},checked:function(T){return T.checked===true},selected:function(T){T.parentNode.selectedIndex;return T.selected===true},parent:function(T){return !!T.firstChild},empty:function(T){return !T.firstChild},has:function(V,U,T){return !!F(T[3],V).length},header:function(T){return/h\d/i.test(T.nodeName)},text:function(T){return"text"===T.type},radio:function(T){return"radio"===T.type},checkbox:function(T){return"checkbox"===T.type},file:function(T){return"file"===T.type},password:function(T){return"password"===T.type},submit:function(T){return"submit"===T.type},image:function(T){return"image"===T.type},reset:function(T){return"reset"===T.type},button:function(T){return"button"===T.type||T.nodeName.toUpperCase()==="BUTTON"},input:function(T){return/input|select|textarea|button/i.test(T.nodeName)}},setFilters:{first:function(U,T){return T===0},last:function(V,U,T,W){return U===W.length-1},even:function(U,T){return T%2===0},odd:function(U,T){return T%2===1},lt:function(V,U,T){return UT[3]-0},nth:function(V,U,T){return T[3]-0==U},eq:function(V,U,T){return T[3]-0==U}},filter:{PSEUDO:function(Z,V,W,aa){var U=V[1],X=I.filters[U];if(X){return X(Z,W,V,aa)}else{if(U==="contains"){return(Z.textContent||Z.innerText||"").indexOf(V[3])>=0}else{if(U==="not"){var Y=V[3];for(var W=0,T=Y.length;W=0)}}},ID:function(U,T){return U.nodeType===1&&U.getAttribute("id")===T},TAG:function(U,T){return(T==="*"&&U.nodeType===1)||U.nodeName===T},CLASS:function(U,T){return(" "+(U.className||U.getAttribute("class"))+" ").indexOf(T)>-1},ATTR:function(Y,W){var V=W[1],T=I.attrHandle[V]?I.attrHandle[V](Y):Y[V]!=null?Y[V]:Y.getAttribute(V),Z=T+"",X=W[2],U=W[4];return T==null?X==="!=":X==="="?Z===U:X==="*="?Z.indexOf(U)>=0:X==="~="?(" "+Z+" ").indexOf(U)>=0:!U?Z&&T!==false:X==="!="?Z!=U:X==="^="?Z.indexOf(U)===0:X==="$="?Z.substr(Z.length-U.length)===U:X==="|="?Z===U||Z.substr(0,U.length+1)===U+"-":false},POS:function(X,U,V,Y){var T=U[2],W=I.setFilters[T];if(W){return W(X,V,U,Y)}}}};var M=I.match.POS;for(var O in I.match){I.match[O]=RegExp(I.match[O].source+/(?![^\[]*\])(?![^\(]*\))/.source)}var E=function(U,T){U=Array.prototype.slice.call(U);if(T){T.push.apply(T,U);return T}return U};try{Array.prototype.slice.call(document.documentElement.childNodes)}catch(N){E=function(X,W){var U=W||[];if(H.call(X)==="[object Array]"){Array.prototype.push.apply(U,X)}else{if(typeof X.length==="number"){for(var V=0,T=X.length;V";var T=document.documentElement;T.insertBefore(U,T.firstChild);if(!!document.getElementById(V)){I.find.ID=function(X,Y,Z){if(typeof Y.getElementById!=="undefined"&&!Z){var W=Y.getElementById(X[1]);return W?W.id===X[1]||typeof W.getAttributeNode!=="undefined"&&W.getAttributeNode("id").nodeValue===X[1]?[W]:g:[]}};I.filter.ID=function(Y,W){var X=typeof Y.getAttributeNode!=="undefined"&&Y.getAttributeNode("id");return Y.nodeType===1&&X&&X.nodeValue===W}}T.removeChild(U)})();(function(){var T=document.createElement("div");T.appendChild(document.createComment(""));if(T.getElementsByTagName("*").length>0){I.find.TAG=function(U,Y){var X=Y.getElementsByTagName(U[1]);if(U[1]==="*"){var W=[];for(var V=0;X[V];V++){if(X[V].nodeType===1){W.push(X[V])}}X=W}return X}}T.innerHTML="";if(T.firstChild&&typeof T.firstChild.getAttribute!=="undefined"&&T.firstChild.getAttribute("href")!=="#"){I.attrHandle.href=function(U){return U.getAttribute("href",2)}}})();if(document.querySelectorAll){(function(){var T=F,U=document.createElement("div");U.innerHTML="

";if(U.querySelectorAll&&U.querySelectorAll(".TEST").length===0){return}F=function(Y,X,V,W){X=X||document;if(!W&&X.nodeType===9&&!Q(X)){try{return E(X.querySelectorAll(Y),V)}catch(Z){}}return T(Y,X,V,W)};F.find=T.find;F.filter=T.filter;F.selectors=T.selectors;F.matches=T.matches})()}if(document.getElementsByClassName&&document.documentElement.getElementsByClassName){(function(){var T=document.createElement("div");T.innerHTML="
";if(T.getElementsByClassName("e").length===0){return}T.lastChild.className="e";if(T.getElementsByClassName("e").length===1){return}I.order.splice(1,0,"CLASS");I.find.CLASS=function(U,V,W){if(typeof V.getElementsByClassName!=="undefined"&&!W){return V.getElementsByClassName(U[1])}}})()}function P(U,Z,Y,ad,aa,ac){var ab=U=="previousSibling"&&!ac;for(var W=0,V=ad.length;W0){X=T;break}}}T=T[U]}ad[W]=X}}}var K=document.compareDocumentPosition?function(U,T){return U.compareDocumentPosition(T)&16}:function(U,T){return U!==T&&(U.contains?U.contains(T):true)};var Q=function(T){return T.nodeType===9&&T.documentElement.nodeName!=="HTML"||!!T.ownerDocument&&Q(T.ownerDocument)};var J=function(T,aa){var W=[],X="",Y,V=aa.nodeType?[aa]:aa;while((Y=I.match.PSEUDO.exec(T))){X+=Y[0];T=T.replace(I.match.PSEUDO,"")}T=I.relative[T]?T+"*":T;for(var Z=0,U=V.length;Z0||T.offsetHeight>0};F.selectors.filters.animated=function(T){return o.grep(o.timers,function(U){return T===U.elem}).length};o.multiFilter=function(V,T,U){if(U){V=":not("+V+")"}return F.matches(V,T)};o.dir=function(V,U){var T=[],W=V[U];while(W&&W!=document){if(W.nodeType==1){T.push(W)}W=W[U]}return T};o.nth=function(X,T,V,W){T=T||1;var U=0;for(;X;X=X[V]){if(X.nodeType==1&&++U==T){break}}return X};o.sibling=function(V,U){var T=[];for(;V;V=V.nextSibling){if(V.nodeType==1&&V!=U){T.push(V)}}return T};return;l.Sizzle=F})();o.event={add:function(I,F,H,K){if(I.nodeType==3||I.nodeType==8){return}if(I.setInterval&&I!=l){I=l}if(!H.guid){H.guid=this.guid++}if(K!==g){var G=H;H=this.proxy(G);H.data=K}var E=o.data(I,"events")||o.data(I,"events",{}),J=o.data(I,"handle")||o.data(I,"handle",function(){return typeof o!=="undefined"&&!o.event.triggered?o.event.handle.apply(arguments.callee.elem,arguments):g});J.elem=I;o.each(F.split(/\s+/),function(M,N){var O=N.split(".");N=O.shift();H.type=O.slice().sort().join(".");var L=E[N];if(o.event.specialAll[N]){o.event.specialAll[N].setup.call(I,K,O)}if(!L){L=E[N]={};if(!o.event.special[N]||o.event.special[N].setup.call(I,K,O)===false){if(I.addEventListener){I.addEventListener(N,J,false)}else{if(I.attachEvent){I.attachEvent("on"+N,J)}}}}L[H.guid]=H;o.event.global[N]=true});I=null},guid:1,global:{},remove:function(K,H,J){if(K.nodeType==3||K.nodeType==8){return}var G=o.data(K,"events"),F,E;if(G){if(H===g||(typeof H==="string"&&H.charAt(0)==".")){for(var I in G){this.remove(K,I+(H||""))}}else{if(H.type){J=H.handler;H=H.type}o.each(H.split(/\s+/),function(M,O){var Q=O.split(".");O=Q.shift();var N=RegExp("(^|\\.)"+Q.slice().sort().join(".*\\.")+"(\\.|$)");if(G[O]){if(J){delete G[O][J.guid]}else{for(var P in G[O]){if(N.test(G[O][P].type)){delete G[O][P]}}}if(o.event.specialAll[O]){o.event.specialAll[O].teardown.call(K,Q)}for(F in G[O]){break}if(!F){if(!o.event.special[O]||o.event.special[O].teardown.call(K,Q)===false){if(K.removeEventListener){K.removeEventListener(O,o.data(K,"handle"),false)}else{if(K.detachEvent){K.detachEvent("on"+O,o.data(K,"handle"))}}}F=null;delete G[O]}}})}for(F in G){break}if(!F){var L=o.data(K,"handle");if(L){L.elem=null}o.removeData(K,"events");o.removeData(K,"handle")}}},trigger:function(I,K,H,E){var G=I.type||I;if(!E){I=typeof I==="object"?I[h]?I:o.extend(o.Event(G),I):o.Event(G);if(G.indexOf("!")>=0) +{I.type=G=G.slice(0,-1);I.exclusive=true}if(!H){I.stopPropagation();if(this.global[G]){o.each(o.cache,function(){if(this.events&&this.events[G]){o.event.trigger(I,K,this.handle.elem)}})}}if(!H||H.nodeType==3||H.nodeType==8){return g}I.result=g;I.target=H;K=o.makeArray(K);K.unshift(I)}I.currentTarget=H;var J=o.data(H,"handle");if(J){J.apply(H,K)}if((!H[G]||(o.nodeName(H,"a")&&G=="click"))&&H["on"+G]&&H["on"+G].apply(H,K)===false){I.result=false}if(!E&&H[G]&&!I.isDefaultPrevented()&&!(o.nodeName(H,"a")&&G=="click")){this.triggered=true;try{H[G]()}catch(L){}}this.triggered=false;if(!I.isPropagationStopped()){var F=H.parentNode||H.ownerDocument;if(F){o.event.trigger(I,K,F,true)}}},handle:function(K){var J,E;K=arguments[0]=o.event.fix(K||l.event);K.currentTarget=this;var L=K.type.split(".");K.type=L.shift();J=!L.length&&!K.exclusive;var I=RegExp("(^|\\.)"+L.slice().sort().join(".*\\.")+"(\\.|$)");E=(o.data(this,"events")||{})[K.type];for(var G in E){var H=E[G];if(J||I.test(H.type)){K.handler=H;K.data=H.data;var F=H.apply(this,arguments);if(F!==g){K.result=F;if(F===false){K.preventDefault();K.stopPropagation()}}if(K.isImmediatePropagationStopped()){break}}}},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),fix:function(H){if(H[h]){return H}var F=H;H=o.Event(F);for(var G=this.props.length,J;G;){J=this.props[--G];H[J]=F[J]}if(!H.target){H.target=H.srcElement||document}if(H.target.nodeType==3){H.target=H.target.parentNode}if(!H.relatedTarget&&H.fromElement){H.relatedTarget=H.fromElement==H.target?H.toElement:H.fromElement}if(H.pageX==null&&H.clientX!=null){var I=document.documentElement,E=document.body;H.pageX=H.clientX+(I&&I.scrollLeft||E&&E.scrollLeft||0)-(I.clientLeft||0);H.pageY=H.clientY+(I&&I.scrollTop||E&&E.scrollTop||0)-(I.clientTop||0)}if(!H.which&&((H.charCode||H.charCode===0)?H.charCode:H.keyCode)){H.which=H.charCode||H.keyCode}if(!H.metaKey&&H.ctrlKey){H.metaKey=H.ctrlKey}if(!H.which&&H.button){H.which=(H.button&1?1:(H.button&2?3:(H.button&4?2:0)))}return H},proxy:function(F,E){E=E||function(){return F.apply(this,arguments)};E.guid=F.guid=F.guid||E.guid||this.guid++;return E},special:{ready:{setup:B,teardown:function(){}}},specialAll:{live:{setup:function(E,F){o.event.add(this,F[0],c)},teardown:function(G){if(G.length){var E=0,F=RegExp("(^|\\.)"+G[0]+"(\\.|$)");o.each((o.data(this,"events").live||{}),function(){if(F.test(this.type)){E++}});if(E<1){o.event.remove(this,G[0],c)}}}}}};o.Event=function(E){if(!this.preventDefault){return new o.Event(E)}if(E&&E.type){this.originalEvent=E;this.type=E.type}else{this.type=E}this.timeStamp=e();this[h]=true};function k(){return false}function u(){return true}o.Event.prototype={preventDefault:function(){this.isDefaultPrevented=u;var E=this.originalEvent;if(!E){return}if(E.preventDefault){E.preventDefault()}E.returnValue=false},stopPropagation:function(){this.isPropagationStopped=u;var E=this.originalEvent;if(!E){return}if(E.stopPropagation){E.stopPropagation()}E.cancelBubble=true},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=u;this.stopPropagation()},isDefaultPrevented:k,isPropagationStopped:k,isImmediatePropagationStopped:k};var a=function(F){var E=F.relatedTarget;while(E&&E!=this){try{E=E.parentNode}catch(G){E=this}}if(E!=this){F.type=F.data;o.event.handle.apply(this,arguments)}};o.each({mouseover:"mouseenter",mouseout:"mouseleave"},function(F,E){o.event.special[E]={setup:function(){o.event.add(this,F,a,E)},teardown:function(){o.event.remove(this,F,a)}}});o.fn.extend({bind:function(F,G,E){return F=="unload"?this.one(F,G,E):this.each(function(){o.event.add(this,F,E||G,E&&G)})},one:function(G,H,F){var E=o.event.proxy(F||H,function(I){o(this).unbind(I,E);return(F||H).apply(this,arguments)});return this.each(function(){o.event.add(this,G,E,F&&H)})},unbind:function(F,E){return this.each(function(){o.event.remove(this,F,E)})},trigger:function(E,F){return this.each(function(){o.event.trigger(E,F,this)})},triggerHandler:function(E,G){if(this[0]){var F=o.Event(E);F.preventDefault();F.stopPropagation();o.event.trigger(F,G,this[0]);return F.result}},toggle:function(G){var E=arguments,F=1;while(F=0){var E=G.slice(I,G.length);G=G.slice(0,I)}var H="GET";if(J){if(o.isFunction(J)){K=J;J=null}else{if(typeof J==="object"){J=o.param(J);H="POST"}}}var F=this;o.ajax({url:G,type:H,dataType:"html",data:J,complete:function(M,L){if(L=="success"||L=="notmodified"){F.html(E?o("
").append(M.responseText.replace(//g,"")).find(E):M.responseText)}if(K){F.each(K,[M.responseText,L,M])}}});return this},serialize:function(){return o.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?o.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password|search/i.test(this.type))}).map(function(E,F){var G=o(this).val();return G==null?null:o.isArray(G)?o.map(G,function(I,H){return{name:F.name,value:I}}):{name:F.name,value:G}}).get()}});o.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(E,F){o.fn[F]=function(G){return this.bind(F,G)}});var r=e();o.extend({get:function(E,G,H,F){if(o.isFunction(G)){H=G;G=null}return o.ajax({type:"GET",url:E,data:G,success:H,dataType:F})},getScript:function(E,F){return o.get(E,null,F,"script")},getJSON:function(E,F,G){return o.get(E,F,G,"json")},post:function(E,G,H,F){if(o.isFunction(G)){H=G;G={}}return o.ajax({type:"POST",url:E,data:G,success:H,dataType:F})},ajaxSetup:function(E){o.extend(o.ajaxSettings,E)},ajaxSettings:{url:location.href,global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:function(){return l.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest()},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},ajax:function(M){M=o.extend(true,M,o.extend(true,{},o.ajaxSettings,M));var W,F=/=\?(&|$)/g,R,V,G=M.type.toUpperCase();if(M.data&&M.processData&&typeof M.data!=="string"){M.data=o.param(M.data)}if(M.dataType=="jsonp"){if(G=="GET"){if(!M.url.match(F)){M.url+=(M.url.match(/\?/)?"&":"?")+(M.jsonp||"callback")+"=?"}}else{if(!M.data||!M.data.match(F)){M.data=(M.data?M.data+"&":"")+(M.jsonp||"callback")+"=?"}}M.dataType="json"}if(M.dataType=="json"&&(M.data&&M.data.match(F)||M.url.match(F))){W="jsonp"+r++;if(M.data){M.data=(M.data+"").replace(F,"="+W+"$1")}M.url=M.url.replace(F,"="+W+"$1");M.dataType="script";l[W]=function(X){V=X;I();L();l[W]=g;try{delete l[W]}catch(Y){}if(H){H.removeChild(T)}}}if(M.dataType=="script"&&M.cache==null){M.cache=false}if(M.cache===false&&G=="GET"){var E=e();var U=M.url.replace(/(\?|&)_=.*?(&|$)/,"$1_="+E+"$2");M.url=U+((U==M.url)?(M.url.match(/\?/)?"&":"?")+"_="+E:"")}if(M.data&&G=="GET"){M.url+=(M.url.match(/\?/)?"&":"?")+M.data;M.data=null}if(M.global&&!o.active++){o.event.trigger("ajaxStart")}var Q=/^(\w+:)?\/\/([^\/?#]+)/.exec(M.url);if(M.dataType=="script"&&G=="GET"&&Q&&(Q[1]&&Q[1]!=location.protocol||Q[2]!=location.host)){var H=document.getElementsByTagName("head")[0];var T=document.createElement("script");T.src=M.url;if(M.scriptCharset){T.charset=M.scriptCharset}if(!W){var O=false;T.onload=T.onreadystatechange=function(){if(!O&&(!this.readyState||this.readyState=="loaded"||this.readyState=="complete")){O=true;I();L();T.onload=T.onreadystatechange=null;H.removeChild(T)}}}H.appendChild(T);return g}var K=false;var J=M.xhr();if(M.username){J.open(G,M.url,M.async,M.username,M.password)}else{J.open(G,M.url,M.async)}try{if(M.data){J.setRequestHeader("Content-Type",M.contentType)}if(M.ifModified){J.setRequestHeader("If-Modified-Since",o.lastModified[M.url]||"Thu, 01 Jan 1970 00:00:00 GMT")}J.setRequestHeader("X-Requested-With","XMLHttpRequest");J.setRequestHeader("Accept",M.dataType&&M.accepts[M.dataType]?M.accepts[M.dataType]+", */*":M.accepts._default)}catch(S){}if(M.beforeSend&&M.beforeSend(J,M)===false){if(M.global&&!--o.active){o.event.trigger("ajaxStop")}J.abort();return false}if(M.global){o.event.trigger("ajaxSend",[J,M])}var N=function(X){if(J.readyState==0){if(P){clearInterval(P);P=null;if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}}else{if(!K&&J&&(J.readyState==4||X=="timeout")){K=true;if(P){clearInterval(P);P=null}R=X=="timeout"?"timeout":!o.httpSuccess(J)?"error":M.ifModified&&o.httpNotModified(J,M.url)?"notmodified":"success";if(R=="success"){try{V=o.httpData(J,M.dataType,M)}catch(Z){R="parsererror"}}if(R=="success"){var Y;try{Y=J.getResponseHeader("Last-Modified")}catch(Z){}if(M.ifModified&&Y){o.lastModified[M.url]=Y}if(!W){I()}}else{o.handleError(M,J,R)}L();if(X){J.abort()}if(M.async){J=null}}}};if(M.async){var P=setInterval(N,13);if(M.timeout>0){setTimeout(function(){if(J&&!K){N("timeout")}},M.timeout)}}try{J.send(M.data)}catch(S){o.handleError(M,J,null,S)}if(!M.async){N()}function I(){if(M.success){M.success(V,R)}if(M.global){o.event.trigger("ajaxSuccess",[J,M])}}function L(){if(M.complete){M.complete(J,R)}if(M.global){o.event.trigger("ajaxComplete",[J,M])}if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}return J},handleError:function(F,H,E,G){if(F.error){F.error(H,E,G)}if(F.global){o.event.trigger("ajaxError",[H,F,G])}},active:0,httpSuccess:function(F){try{return !F.status&&location.protocol=="file:"||(F.status>=200&&F.status<300)||F.status==304||F.status==1223}catch(E){}return false},httpNotModified:function(G,E){try{var H=G.getResponseHeader("Last-Modified");return G.status==304||H==o.lastModified[E]}catch(F){}return false},httpData:function(J,H,G){var F=J.getResponseHeader("content-type"),E=H=="xml"||!H&&F&&F.indexOf("xml")>=0,I=E?J.responseXML:J.responseText;if(E&&I.documentElement.tagName=="parsererror"){throw"parsererror"}if(G&&G.dataFilter){I=G.dataFilter(I,H)}if(typeof I==="string"){if(H=="script"){o.globalEval(I)}if(H=="json"){I=l["eval"]("("+I+")")}}return I},param:function(E){var G=[];function H(I,J){G[G.length]=encodeURIComponent(I)+"="+encodeURIComponent(J)}if(o.isArray(E)||E.jquery){o.each(E,function(){H(this.name,this.value)})}else{for(var F in E){if(o.isArray(E[F])){o.each(E[F],function(){H(F,this)})}else{H(F,o.isFunction(E[F])?E[F]():E[F])}}}return G.join("&").replace(/%20/g,"+")}});var m={},n,d=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];function t(F,E){var G={};o.each(d.concat.apply([],d.slice(0,E)),function() +{G[this]=F});return G}o.fn.extend({show:function(J,L){if(J){return this.animate(t("show",3),J,L)}else{for(var H=0,F=this.length;H").appendTo("body");K=I.css("display");if(K==="none"){K="block"}I.remove();m[G]=K}o.data(this[H],"olddisplay",K)}}for(var H=0,F=this.length;H=0;H--){if(G[H].elem==this){if(E){G[H](true)}G.splice(H,1)}}});if(!E){this.dequeue()}return this}});o.each({slideDown:t("show",1),slideUp:t("hide",1),slideToggle:t("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(E,F){o.fn[E]=function(G,H){return this.animate(F,G,H)}});o.extend({speed:function(G,H,F){var E=typeof G==="object"?G:{complete:F||!F&&H||o.isFunction(G)&&G,duration:G,easing:F&&H||H&&!o.isFunction(H)&&H};E.duration=o.fx.off?0:typeof E.duration==="number"?E.duration:o.fx.speeds[E.duration]||o.fx.speeds._default;E.old=E.complete;E.complete=function(){if(E.queue!==false){o(this).dequeue()}if(o.isFunction(E.old)){E.old.call(this)}};return E},easing:{linear:function(G,H,E,F){return E+F*G},swing:function(G,H,E,F){return((-Math.cos(G*Math.PI)/2)+0.5)*F+E}},timers:[],fx:function(F,E,G){this.options=E;this.elem=F;this.prop=G;if(!E.orig){E.orig={}}}});o.fx.prototype={update:function(){if(this.options.step){this.options.step.call(this.elem,this.now,this)}(o.fx.step[this.prop]||o.fx.step._default)(this);if((this.prop=="height"||this.prop=="width")&&this.elem.style){this.elem.style.display="block"}},cur:function(F){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null)){return this.elem[this.prop]}var E=parseFloat(o.css(this.elem,this.prop,F));return E&&E>-10000?E:parseFloat(o.curCSS(this.elem,this.prop))||0},custom:function(I,H,G){this.startTime=e();this.start=I;this.end=H;this.unit=G||this.unit||"px";this.now=this.start;this.pos=this.state=0;var E=this;function F(J){return E.step(J)}F.elem=this.elem;if(F()&&o.timers.push(F)&&!n){n=setInterval(function(){var K=o.timers;for(var J=0;J=this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var E=true;for(var F in this.options.curAnim){if(this.options.curAnim[F]!==true){E=false}}if(E){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;this.elem.style.display=this.options.display;if(o.css(this.elem,"display")=="none"){this.elem.style.display="block"}}if(this.options.hide){o(this.elem).hide()}if(this.options.hide||this.options.show){for(var I in this.options.curAnim){o.attr(this.elem.style,I,this.options.orig[I])}}this.options.complete.call(this.elem)}return false}else{var J=G-this.startTime;this.state=J/this.options.duration;this.pos=o.easing[this.options.easing||(o.easing.swing?"swing":"linear")](this.state,J,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update()}return true}};o.extend(o.fx,{speeds:{slow:600,fast:200,_default:400},step:{opacity:function(E){o.attr(E.elem.style,"opacity",E.now)},_default:function(E){if(E.elem.style&&E.elem.style[E.prop]!=null){E.elem.style[E.prop]=E.now+E.unit}else{E.elem[E.prop]=E.now}}}});if(document.documentElement.getBoundingClientRect){o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}var G=this[0].getBoundingClientRect(),J=this[0].ownerDocument,F=J.body,E=J.documentElement,L=E.clientTop||F.clientTop||0,K=E.clientLeft||F.clientLeft||0,I=G.top+(self.pageYOffset||o.boxModel&&E.scrollTop||F.scrollTop)-L,H=G.left+(self.pageXOffset||o.boxModel&&E.scrollLeft||F.scrollLeft)-K;return{top:I,left:H}}}else{o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}o.offset.initialized||o.offset.initialize();var J=this[0],G=J.offsetParent,F=J,O=J.ownerDocument,M,H=O.documentElement,K=O.body,L=O.defaultView,E=L.getComputedStyle(J,null),N=J.offsetTop,I=J.offsetLeft;while((J=J.parentNode)&&J!==K&&J!==H){M=L.getComputedStyle(J,null);N-=J.scrollTop,I-=J.scrollLeft;if(J===G){N+=J.offsetTop,I+=J.offsetLeft;if(o.offset.doesNotAddBorder&&!(o.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(J.tagName))){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}F=G,G=J.offsetParent}if(o.offset.subtractsBorderForOverflowNotVisible&&M.overflow!=="visible"){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}E=M}if(E.position==="relative"||E.position==="static"){N+=K.offsetTop,I+=K.offsetLeft}if(E.position==="fixed"){N+=Math.max(H.scrollTop,K.scrollTop),I+=Math.max(H.scrollLeft,K.scrollLeft)}return{top:N,left:I}}}o.offset={initialize:function(){if(this.initialized){return}var L=document.body,F=document.createElement("div"),H,G,N,I,M,E,J=L.style.marginTop,K='
';M={position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"};for(E in M){F.style[E]=M[E]}F.innerHTML=K;L.insertBefore(F,L.firstChild);H=F.firstChild,G=H.firstChild,I=H.nextSibling.firstChild.firstChild;this.doesNotAddBorder=(G.offsetTop!==5);this.doesAddBorderForTableAndCells=(I.offsetTop===5);H.style.overflow="hidden",H.style.position="relative";this.subtractsBorderForOverflowNotVisible=(G.offsetTop===-5);L.style.marginTop="1px";this.doesNotIncludeMarginInBodyOffset=(L.offsetTop===0);L.style.marginTop=J;L.removeChild(F);this.initialized=true},bodyOffset:function(E){o.offset.initialized||o.offset.initialize();var G=E.offsetTop,F=E.offsetLeft;if(o.offset.doesNotIncludeMarginInBodyOffset){G+=parseInt(o.curCSS(E,"marginTop",true),10)||0,F+=parseInt(o.curCSS(E,"marginLeft",true),10)||0}return{top:G,left:F}}};o.fn.extend({position:function(){var I=0,H=0,F;if(this[0]){var G=this.offsetParent(),J=this.offset(),E=/^body|html$/i.test(G[0].tagName)?{top:0,left:0}:G.offset();J.top-=j(this,"marginTop");J.left-=j(this,"marginLeft");E.top+=j(G,"borderTopWidth");E.left+=j(G,"borderLeftWidth");F={top:J.top-E.top,left:J.left-E.left}}return F},offsetParent:function(){var E=this[0].offsetParent||document.body;while(E&&(!/^body|html$/i.test(E.tagName)&&o.css(E,"position")=="static")){E=E.offsetParent}return o(E)}});o.each(["Left","Top"],function(F,E){var G="scroll"+E;o.fn[G]=function(H){if(!this[0]){return null}return H!==g?this.each(function(){this==l||this==document?l.scrollTo(!F?H:o(l).scrollLeft(),F?H:o(l).scrollTop()):this[G]=H}):this[0]==l||this[0]==document?self[F?"pageYOffset":"pageXOffset"]||o.boxModel&&document.documentElement[G]||document.body[G]:this[0][G]}});o.each(["Height","Width"],function(I,G){var E=I?"Left":"Top",H=I?"Right":"Bottom",F=G.toLowerCase();o.fn["inner"+G]=function(){return this[0]?o.css(this[0],F,false,"padding"):null};o.fn["outer"+G]=function(K){return this[0]?o.css(this[0],F,false,K?"margin":"border"):null};var J=G.toLowerCase();o.fn[J]=function(K){return this[0]==l?document.compatMode=="CSS1Compat"&&document.documentElement["client"+G]||document.body["client"+G]:this[0]==document?Math.max(document.documentElement["client"+G],document.body["scroll"+G],document.documentElement["scroll"+G],document.body["offset"+G],document.documentElement["offset"+G]):K===g?(this.length?o.css(this[0],J):null):this.css(J,typeof K==="string"?K:K+"px")}})})(); +/* + * jQuery UI 1.7.2 + * + * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * http://docs.jquery.com/UI + */ +jQuery.ui||(function(c){var i=c.fn.remove,d=c.browser.mozilla&&(parseFloat(c.browser.version)<1.9);c.ui={version:"1.7.2",plugin:{add:function(k,l,n){var m=c.ui[k].prototype;for(var j in n){m.plugins[j]=m.plugins[j]||[];m.plugins[j].push([l,n[j]])}},call:function(j,l,k){var n=j.plugins[l];if(!n||!j.element[0].parentNode){return}for(var m=0;m0){return true}m[j]=1;l=(m[j]>0);m[j]=0;return l},isOverAxis:function(k,j,l){return(k>j)&&(k<(j+l))},isOver:function(o,k,n,m,j,l){return c.ui.isOverAxis(o,n,j)&&c.ui.isOverAxis(k,m,l)},keyCode:{BACKSPACE:8,CAPS_LOCK:20,COMMA:188,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38}};if(d){var f=c.attr,e=c.fn.removeAttr,h="http://www.w3.org/2005/07/aaa",a=/^aria-/,b=/^wairole:/;c.attr=function(k,j,l){var m=l!==undefined;return(j=="role"?(m?f.call(this,k,j,"wairole:"+l):(f.apply(this,arguments)||"").replace(b,"")):(a.test(j)?(m?k.setAttributeNS(h,j.replace(a,"aaa:"),l):f.call(this,k,j.replace(a,"aaa:"))):f.apply(this,arguments)))};c.fn.removeAttr=function(j){return(a.test(j)?this.each(function(){this.removeAttributeNS(h,j.replace(a,""))}):e.call(this,j))}}c.fn.extend({remove:function(){c("*",this).add(this).each(function(){c(this).triggerHandler("remove")});return i.apply(this,arguments)},enableSelection:function(){return this.attr("unselectable","off").css("MozUserSelect","").unbind("selectstart.ui")},disableSelection:function(){return this.attr("unselectable","on").css("MozUserSelect","none").bind("selectstart.ui",function(){return false})},scrollParent:function(){var j;if((c.browser.msie&&(/(static|relative)/).test(this.css("position")))||(/absolute/).test(this.css("position"))){j=this.parents().filter(function(){return(/(relative|absolute|fixed)/).test(c.curCSS(this,"position",1))&&(/(auto|scroll)/).test(c.curCSS(this,"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0)}else{j=this.parents().filter(function(){return(/(auto|scroll)/).test(c.curCSS(this,"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0)}return(/fixed/).test(this.css("position"))||!j.length?c(document):j}});c.extend(c.expr[":"],{data:function(l,k,j){return !!c.data(l,j[3])},focusable:function(k){var l=k.nodeName.toLowerCase(),j=c.attr(k,"tabindex");return(/input|select|textarea|button|object/.test(l)?!k.disabled:"a"==l||"area"==l?k.href||!isNaN(j):!isNaN(j))&&!c(k)["area"==l?"parents":"closest"](":hidden").length},tabbable:function(k){var j=c.attr(k,"tabindex");return(isNaN(j)||j>=0)&&c(k).is(":focusable")}});function g(m,n,o,l){function k(q){var p=c[m][n][q]||[];return(typeof p=="string"?p.split(/,?\s+/):p)}var j=k("getter");if(l.length==1&&typeof l[0]=="string"){j=j.concat(k("getterSetter"))}return(c.inArray(o,j)!=-1)}c.widget=function(k,j){var l=k.split(".")[0];k=k.split(".")[1];c.fn[k]=function(p){var n=(typeof p=="string"),o=Array.prototype.slice.call(arguments,1);if(n&&p.substring(0,1)=="_"){return this}if(n&&g(l,k,p,o)){var m=c.data(this[0],k);return(m?m[p].apply(m,o):undefined)}return this.each(function(){var q=c.data(this,k);(!q&&!n&&c.data(this,k,new c[l][k](this,p))._init());(q&&n&&c.isFunction(q[p])&&q[p].apply(q,o))})};c[l]=c[l]||{};c[l][k]=function(o,n){var m=this;this.namespace=l;this.widgetName=k;this.widgetEventPrefix=c[l][k].eventPrefix||k;this.widgetBaseClass=l+"-"+k;this.options=c.extend({},c.widget.defaults,c[l][k].defaults,c.metadata&&c.metadata.get(o)[k],n);this.element=c(o).bind("setData."+k,function(q,p,r){if(q.target==o){return m._setData(p,r)}}).bind("getData."+k,function(q,p){if(q.target==o){return m._getData(p)}}).bind("remove",function(){return m.destroy()})};c[l][k].prototype=c.extend({},c.widget.prototype,j);c[l][k].getterSetter="option"};c.widget.prototype={_init:function(){},destroy:function(){this.element.removeData(this.widgetName).removeClass(this.widgetBaseClass+"-disabled "+this.namespace+"-state-disabled").removeAttr("aria-disabled")},option:function(l,m){var k=l,j=this;if(typeof l=="string"){if(m===undefined){return this._getData(l)}k={};k[l]=m}c.each(k,function(n,o){j._setData(n,o)})},_getData:function(j){return this.options[j]},_setData:function(j,k){this.options[j]=k;if(j=="disabled"){this.element[k?"addClass":"removeClass"](this.widgetBaseClass+"-disabled "+this.namespace+"-state-disabled").attr("aria-disabled",k)}},enable:function(){this._setData("disabled",false)},disable:function(){this._setData("disabled",true)},_trigger:function(l,m,n){var p=this.options[l],j=(l==this.widgetEventPrefix?l:this.widgetEventPrefix+l);m=c.Event(m);m.type=j;if(m.originalEvent){for(var k=c.event.props.length,o;k;){o=c.event.props[--k];m[o]=m.originalEvent[o]}}this.element.trigger(m,n);return !(c.isFunction(p)&&p.call(this.element[0],m,n)===false||m.isDefaultPrevented())}};c.widget.defaults={disabled:false};c.ui.mouse={_mouseInit:function(){var j=this;this.element.bind("mousedown."+this.widgetName,function(k){return j._mouseDown(k)}).bind("click."+this.widgetName,function(k){if(j._preventClickEvent){j._preventClickEvent=false;k.stopImmediatePropagation();return false}});if(c.browser.msie){this._mouseUnselectable=this.element.attr("unselectable");this.element.attr("unselectable","on")}this.started=false},_mouseDestroy:function(){this.element.unbind("."+this.widgetName);(c.browser.msie&&this.element.attr("unselectable",this._mouseUnselectable))},_mouseDown:function(l){l.originalEvent=l.originalEvent||{};if(l.originalEvent.mouseHandled){return}(this._mouseStarted&&this._mouseUp(l));this._mouseDownEvent=l;var k=this,m=(l.which==1),j=(typeof this.options.cancel=="string"?c(l.target).parents().add(l.target).filter(this.options.cancel).length:false);if(!m||j||!this._mouseCapture(l)){return true}this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet){this._mouseDelayTimer=setTimeout(function(){k.mouseDelayMet=true},this.options.delay)}if(this._mouseDistanceMet(l)&&this._mouseDelayMet(l)){this._mouseStarted=(this._mouseStart(l)!==false);if(!this._mouseStarted){l.preventDefault();return true}}this._mouseMoveDelegate=function(n){return k._mouseMove(n)};this._mouseUpDelegate=function(n){return k._mouseUp(n)};c(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);(c.browser.safari||l.preventDefault());l.originalEvent.mouseHandled=true;return true},_mouseMove:function(j){if(c.browser.msie&&!j.button){return this._mouseUp(j)}if(this._mouseStarted){this._mouseDrag(j);return j.preventDefault()}if(this._mouseDistanceMet(j)&&this._mouseDelayMet(j)){this._mouseStarted=(this._mouseStart(this._mouseDownEvent,j)!==false);(this._mouseStarted?this._mouseDrag(j):this._mouseUp(j))}return !this._mouseStarted},_mouseUp:function(j){c(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;this._preventClickEvent=(j.target==this._mouseDownEvent.target);this._mouseStop(j)}return false},_mouseDistanceMet:function(j){return(Math.max(Math.abs(this._mouseDownEvent.pageX-j.pageX),Math.abs(this._mouseDownEvent.pageY-j.pageY))>=this.options.distance)},_mouseDelayMet:function(j){return this.mouseDelayMet},_mouseStart:function(j){},_mouseDrag:function(j){},_mouseStop:function(j){},_mouseCapture:function(j){return true}};c.ui.mouse.defaults={cancel:null,distance:1,delay:0}})(jQuery);;/* * jQuery UI Resizable 1.7.2 + * + * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * http://docs.jquery.com/UI/Resizables + * + * Depends: + * ui.core.js + */ +(function(c){c.widget("ui.resizable",c.extend({},c.ui.mouse,{_init:function(){var e=this,j=this.options;this.element.addClass("ui-resizable");c.extend(this,{_aspectRatio:!!(j.aspectRatio),aspectRatio:j.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:j.helper||j.ghost||j.animate?j.helper||"ui-resizable-helper":null});if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)){if(/relative/.test(this.element.css("position"))&&c.browser.opera){this.element.css({position:"relative",top:"auto",left:"auto"})}this.element.wrap(c('
').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")}));this.element=this.element.parent().data("resizable",this.element.data("resizable"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});this.originalResizeStyle=this.originalElement.css("resize");this.originalElement.css("resize","none");this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"}));this.originalElement.css({margin:this.originalElement.css("margin")});this._proportionallyResize()}this.handles=j.handles||(!c(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"});if(this.handles.constructor==String){if(this.handles=="all"){this.handles="n,e,s,w,se,sw,ne,nw"}var k=this.handles.split(",");this.handles={};for(var f=0;f
');if(/sw|se|ne|nw/.test(h)){g.css({zIndex:++j.zIndex})}if("se"==h){g.addClass("ui-icon ui-icon-gripsmall-diagonal-se")}this.handles[h]=".ui-resizable-"+h;this.element.append(g)}}this._renderAxis=function(p){p=p||this.element;for(var m in this.handles){if(this.handles[m].constructor==String){this.handles[m]=c(this.handles[m],this.element).show()}if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var n=c(this.handles[m],this.element),o=0;o=/sw|ne|nw|se|n|s/.test(m)?n.outerHeight():n.outerWidth();var l=["padding",/ne|nw|n/.test(m)?"Top":/se|sw|s/.test(m)?"Bottom":/^e$/.test(m)?"Right":"Left"].join("");p.css(l,o);this._proportionallyResize()}if(!c(this.handles[m]).length){continue}}};this._renderAxis(this.element);this._handles=c(".ui-resizable-handle",this.element).disableSelection();this._handles.mouseover(function(){if(!e.resizing){if(this.className){var i=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)}e.axis=i&&i[1]?i[1]:"se"}});if(j.autoHide){this._handles.hide();c(this.element).addClass("ui-resizable-autohide").hover(function(){c(this).removeClass("ui-resizable-autohide");e._handles.show()},function(){if(!e.resizing){c(this).addClass("ui-resizable-autohide");e._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy();var d=function(f){c(f).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){d(this.element);var e=this.element;e.parent().append(this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")})).end().remove()}this.originalElement.css("resize",this.originalResizeStyle);d(this.originalElement)},_mouseCapture:function(e){var f=false;for(var d in this.handles){if(c(this.handles[d])[0]==e.target){f=true}}return this.options.disabled||!!f},_mouseStart:function(f){var i=this.options,e=this.element.position(),d=this.element;this.resizing=true;this.documentScroll={top:c(document).scrollTop(),left:c(document).scrollLeft()};if(d.is(".ui-draggable")||(/absolute/).test(d.css("position"))){d.css({position:"absolute",top:e.top,left:e.left})}if(c.browser.opera&&(/relative/).test(d.css("position"))){d.css({position:"relative",top:"auto",left:"auto"})}this._renderProxy();var j=b(this.helper.css("left")),g=b(this.helper.css("top"));if(i.containment){j+=c(i.containment).scrollLeft()||0;g+=c(i.containment).scrollTop()||0}this.offset=this.helper.offset();this.position={left:j,top:g};this.size=this._helper?{width:d.outerWidth(),height:d.outerHeight()}:{width:d.width(),height:d.height()};this.originalSize=this._helper?{width:d.outerWidth(),height:d.outerHeight()}:{width:d.width(),height:d.height()};this.originalPosition={left:j,top:g};this.sizeDiff={width:d.outerWidth()-d.width(),height:d.outerHeight()-d.height()};this.originalMousePosition={left:f.pageX,top:f.pageY};this.aspectRatio=(typeof i.aspectRatio=="number")?i.aspectRatio:((this.originalSize.width/this.originalSize.height)||1);var h=c(".ui-resizable-"+this.axis).css("cursor");c("body").css("cursor",h=="auto"?this.axis+"-resize":h);d.addClass("ui-resizable-resizing");this._propagate("start",f);return true},_mouseDrag:function(d){var g=this.helper,f=this.options,l={},p=this,i=this.originalMousePosition,m=this.axis;var q=(d.pageX-i.left)||0,n=(d.pageY-i.top)||0;var h=this._change[m];if(!h){return false}var k=h.apply(this,[d,q,n]),j=c.browser.msie&&c.browser.version<7,e=this.sizeDiff;if(this._aspectRatio||d.shiftKey){k=this._updateRatio(k,d)}k=this._respectSize(k,d);this._propagate("resize",d);g.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});if(!this._helper&&this._proportionallyResizeElements.length){this._proportionallyResize()}this._updateCache(k);this._trigger("resize",d,this.ui());return false},_mouseStop:function(g){this.resizing=false;var h=this.options,l=this;if(this._helper){var f=this._proportionallyResizeElements,d=f.length&&(/textarea/i).test(f[0].nodeName),e=d&&c.ui.hasScroll(f[0],"left")?0:l.sizeDiff.height,j=d?0:l.sizeDiff.width;var m={width:(l.size.width-j),height:(l.size.height-e)},i=(parseInt(l.element.css("left"),10)+(l.position.left-l.originalPosition.left))||null,k=(parseInt(l.element.css("top"),10)+(l.position.top-l.originalPosition.top))||null;if(!h.animate){this.element.css(c.extend(m,{top:k,left:i}))}l.helper.height(l.size.height);l.helper.width(l.size.width);if(this._helper&&!h.animate){this._proportionallyResize()}}c("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop",g);if(this._helper){this.helper.remove()}return false},_updateCache:function(d){var e=this.options;this.offset=this.helper.offset();if(a(d.left)){this.position.left=d.left}if(a(d.top)){this.position.top=d.top}if(a(d.height)){this.size.height=d.height}if(a(d.width)){this.size.width=d.width}},_updateRatio:function(g,f){var h=this.options,i=this.position,e=this.size,d=this.axis;if(g.height){g.width=(e.height*this.aspectRatio)}else{if(g.width){g.height=(e.width/this.aspectRatio)}}if(d=="sw"){g.left=i.left+(e.width-g.width);g.top=null}if(d=="nw"){g.top=i.top+(e.height-g.height);g.left=i.left+(e.width-g.width)}return g},_respectSize:function(k,f){var i=this.helper,h=this.options,q=this._aspectRatio||f.shiftKey,p=this.axis,s=a(k.width)&&h.maxWidth&&(h.maxWidthk.width),r=a(k.height)&&h.minHeight&&(h.minHeight>k.height);if(g){k.width=h.minWidth}if(r){k.height=h.minHeight}if(s){k.width=h.maxWidth}if(l){k.height=h.maxHeight}var e=this.originalPosition.left+this.originalSize.width,n=this.position.top+this.size.height;var j=/sw|nw|w/.test(p),d=/nw|ne|n/.test(p);if(g&&j){k.left=e-h.minWidth}if(s&&j){k.left=e-h.maxWidth}if(r&&d){k.top=n-h.minHeight}if(l&&d){k.top=n-h.maxHeight}var m=!k.width&&!k.height;if(m&&!k.left&&k.top){k.top=null}else{if(m&&!k.top&&k.left){k.left=null}}return k},_proportionallyResize:function(){var j=this.options;if(!this._proportionallyResizeElements.length){return}var f=this.helper||this.element;for(var e=0;e');var d=c.browser.msie&&c.browser.version<7,f=(d?1:0),g=(d?2:-1);this.helper.addClass(this._helper).css({width:this.element.outerWidth()+g,height:this.element.outerHeight()+g,position:"absolute",left:this.elementOffset.left-f+"px",top:this.elementOffset.top-f+"px",zIndex:++h.zIndex});this.helper.appendTo("body").disableSelection()}else{this.helper=this.element}},_change:{e:function(f,e,d){return{width:this.originalSize.width+e}},w:function(g,e,d){var i=this.options,f=this.originalSize,h=this.originalPosition;return{left:h.left+e,width:f.width-e}},n:function(g,e,d){var i=this.options,f=this.originalSize,h=this.originalPosition;return{top:h.top+d,height:f.height-d}},s:function(f,e,d){return{height:this.originalSize.height+d}},se:function(f,e,d){return c.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[f,e,d]))},sw:function(f,e,d){return c.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[f,e,d]))},ne:function(f,e,d){return c.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[f,e,d]))},nw:function(f,e,d){return c.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[f,e,d]))}},_propagate:function(e,d){c.ui.plugin.call(this,e,[d,this.ui()]);(e!="resize"&&this._trigger(e,d,this.ui()))},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}));c.extend(c.ui.resizable,{version:"1.7.2",eventPrefix:"resize",defaults:{alsoResize:false,animate:false,animateDuration:"slow",animateEasing:"swing",aspectRatio:false,autoHide:false,cancel:":input,option",containment:false,delay:0,distance:1,ghost:false,grid:false,handles:"e,s,se",helper:false,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1000}});c.ui.plugin.add("resizable","alsoResize",{start:function(e,f){var d=c(this).data("resizable"),g=d.options;_store=function(h){c(h).each(function(){c(this).data("resizable-alsoresize",{width:parseInt(c(this).width(),10),height:parseInt(c(this).height(),10),left:parseInt(c(this).css("left"),10),top:parseInt(c(this).css("top"),10)})})};if(typeof(g.alsoResize)=="object"&&!g.alsoResize.parentNode){if(g.alsoResize.length){g.alsoResize=g.alsoResize[0];_store(g.alsoResize)}else{c.each(g.alsoResize,function(h,i){_store(h)})}}else{_store(g.alsoResize)}},resize:function(f,h){var e=c(this).data("resizable"),i=e.options,g=e.originalSize,k=e.originalPosition;var j={height:(e.size.height-g.height)||0,width:(e.size.width-g.width)||0,top:(e.position.top-k.top)||0,left:(e.position.left-k.left)||0},d=function(l,m){c(l).each(function(){var p=c(this),q=c(this).data("resizable-alsoresize"),o={},n=m&&m.length?m:["width","height","top","left"];c.each(n||["width","height","top","left"],function(r,t){var s=(q[t]||0)+(j[t]||0);if(s&&s>=0){o[t]=s||null}});if(/relative/.test(p.css("position"))&&c.browser.opera){e._revertToRelativePosition=true;p.css({position:"absolute",top:"auto",left:"auto"})}p.css(o)})};if(typeof(i.alsoResize)=="object"&&!i.alsoResize.nodeType){c.each(i.alsoResize,function(l,m){d(l,m)})}else{d(i.alsoResize)}},stop:function(e,f){var d=c(this).data("resizable");if(d._revertToRelativePosition&&c.browser.opera){d._revertToRelativePosition=false;el.css({position:"relative"})}c(this).removeData("resizable-alsoresize-start")}});c.ui.plugin.add("resizable","animate",{stop:function(h,m){var n=c(this).data("resizable"),i=n.options;var g=n._proportionallyResizeElements,d=g.length&&(/textarea/i).test(g[0].nodeName),e=d&&c.ui.hasScroll(g[0],"left")?0:n.sizeDiff.height,k=d?0:n.sizeDiff.width;var f={width:(n.size.width-k),height:(n.size.height-e)},j=(parseInt(n.element.css("left"),10)+(n.position.left-n.originalPosition.left))||null,l=(parseInt(n.element.css("top"),10)+(n.position.top-n.originalPosition.top))||null;n.element.animate(c.extend(f,l&&j?{top:l,left:j}:{}),{duration:i.animateDuration,easing:i.animateEasing,step:function(){var o={width:parseInt(n.element.css("width"),10),height:parseInt(n.element.css("height"),10),top:parseInt(n.element.css("top"),10),left:parseInt(n.element.css("left"),10)};if(g&&g.length){c(g[0]).css({width:o.width,height:o.height})}n._updateCache(o);n._propagate("resize",h)}})}});c.ui.plugin.add("resizable","containment",{start:function(e,q){var s=c(this).data("resizable"),i=s.options,k=s.element;var f=i.containment,j=(f instanceof c)?f.get(0):(/parent/.test(f))?k.parent().get(0):f;if(!j){return}s.containerElement=c(j);if(/document/.test(f)||f==document){s.containerOffset={left:0,top:0};s.containerPosition={left:0,top:0};s.parentData={element:c(document),left:0,top:0,width:c(document).width(),height:c(document).height()||document.body.parentNode.scrollHeight}}else{var m=c(j),h=[];c(["Top","Right","Left","Bottom"]).each(function(p,o){h[p]=b(m.css("padding"+o))});s.containerOffset=m.offset();s.containerPosition=m.position();s.containerSize={height:(m.innerHeight()-h[3]),width:(m.innerWidth()-h[1])};var n=s.containerOffset,d=s.containerSize.height,l=s.containerSize.width,g=(c.ui.hasScroll(j,"left")?j.scrollWidth:l),r=(c.ui.hasScroll(j)?j.scrollHeight:d);s.parentData={element:j,left:n.left,top:n.top,width:g,height:r}}},resize:function(f,p){var s=c(this).data("resizable"),h=s.options,e=s.containerSize,n=s.containerOffset,l=s.size,m=s.position,q=s._aspectRatio||f.shiftKey,d={top:0,left:0},g=s.containerElement;if(g[0]!=document&&(/static/).test(g.css("position"))){d=n}if(m.left<(s._helper?n.left:0)){s.size.width=s.size.width+(s._helper?(s.position.left-n.left):(s.position.left-d.left));if(q){s.size.height=s.size.width/h.aspectRatio}s.position.left=h.helper?n.left:0}if(m.top<(s._helper?n.top:0)) +{s.size.height=s.size.height+(s._helper?(s.position.top-n.top):s.position.top);if(q){s.size.width=s.size.height*h.aspectRatio}s.position.top=s._helper?n.top:0}s.offset.left=s.parentData.left+s.position.left;s.offset.top=s.parentData.top+s.position.top;var k=Math.abs((s._helper?s.offset.left-d.left:(s.offset.left-d.left))+s.sizeDiff.width),r=Math.abs((s._helper?s.offset.top-d.top:(s.offset.top-n.top))+s.sizeDiff.height);var j=s.containerElement.get(0)==s.element.parent().get(0),i=/relative|absolute/.test(s.containerElement.css("position"));if(j&&i){k-=s.parentData.left}if(k+s.size.width>=s.parentData.width){s.size.width=s.parentData.width-k;if(q){s.size.height=s.size.width/s.aspectRatio}}if(r+s.size.height>=s.parentData.height){s.size.height=s.parentData.height-r;if(q){s.size.width=s.size.height*s.aspectRatio}}},stop:function(e,m){var p=c(this).data("resizable"),f=p.options,k=p.position,l=p.containerOffset,d=p.containerPosition,g=p.containerElement;var i=c(p.helper),q=i.offset(),n=i.outerWidth()-p.sizeDiff.width,j=i.outerHeight()-p.sizeDiff.height;if(p._helper&&!f.animate&&(/relative/).test(g.css("position"))){c(this).css({left:q.left-d.left-l.left,width:n,height:j})}if(p._helper&&!f.animate&&(/static/).test(g.css("position"))){c(this).css({left:q.left-d.left-l.left,width:n,height:j})}}});c.ui.plugin.add("resizable","ghost",{start:function(f,g){var d=c(this).data("resizable"),h=d.options,e=d.size;d.ghost=d.originalElement.clone();d.ghost.css({opacity:0.25,display:"block",position:"relative",height:e.height,width:e.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof h.ghost=="string"?h.ghost:"");d.ghost.appendTo(d.helper)},resize:function(e,f){var d=c(this).data("resizable"),g=d.options;if(d.ghost){d.ghost.css({position:"relative",height:d.size.height,width:d.size.width})}},stop:function(e,f){var d=c(this).data("resizable"),g=d.options;if(d.ghost&&d.helper){d.helper.get(0).removeChild(d.ghost.get(0))}}});c.ui.plugin.add("resizable","grid",{resize:function(d,l){var n=c(this).data("resizable"),g=n.options,j=n.size,h=n.originalSize,i=n.originalPosition,m=n.axis,k=g._aspectRatio||d.shiftKey;g.grid=typeof g.grid=="number"?[g.grid,g.grid]:g.grid;var f=Math.round((j.width-h.width)/(g.grid[0]||1))*(g.grid[0]||1),e=Math.round((j.height-h.height)/(g.grid[1]||1))*(g.grid[1]||1);if(/^(se|s|e)$/.test(m)){n.size.width=h.width+f;n.size.height=h.height+e}else{if(/^(ne)$/.test(m)){n.size.width=h.width+f;n.size.height=h.height+e;n.position.top=i.top-e}else{if(/^(sw)$/.test(m)){n.size.width=h.width+f;n.size.height=h.height+e;n.position.left=i.left-f}else{n.size.width=h.width+f;n.size.height=h.height+e;n.position.top=i.top-e;n.position.left=i.left-f}}}}});var b=function(d){return parseInt(d,10)||0};var a=function(d){return !isNaN(parseInt(d,10))}})(jQuery);; +/** + * jQuery.ScrollTo - Easy element scrolling using jQuery. + * Copyright (c) 2008 Ariel Flesler - aflesler(at)gmail(dot)com + * Licensed under GPL license (http://www.opensource.org/licenses/gpl-license.php). + * Date: 2/8/2008 + * @author Ariel Flesler + * @version 1.3.2 + */ +;(function($){var o=$.scrollTo=function(a,b,c){o.window().scrollTo(a,b,c)};o.defaults={axis:'y',duration:1};o.window=function(){return $($.browser.safari?'body':'html')};$.fn.scrollTo=function(l,m,n){if(typeof m=='object'){n=m;m=0}n=$.extend({},o.defaults,n);m=m||n.speed||n.duration;n.queue=n.queue&&n.axis.length>1;if(n.queue)m/=2;n.offset=j(n.offset);n.over=j(n.over);return this.each(function(){var a=this,b=$(a),t=l,c,d={},w=b.is('html,body');switch(typeof t){case'number':case'string':if(/^([+-]=)?\d+(px)?$/.test(t)){t=j(t);break}t=$(t,this);case'object':if(t.is||t.style)c=(t=$(t)).offset()}$.each(n.axis.split(''),function(i,f){var P=f=='x'?'Left':'Top',p=P.toLowerCase(),k='scroll'+P,e=a[k],D=f=='x'?'Width':'Height';if(c){d[k]=c[p]+(w?0:e-b.offset()[p]);if(n.margin){d[k]-=parseInt(t.css('margin'+P))||0;d[k]-=parseInt(t.css('border'+P+'Width'))||0}d[k]+=n.offset[p]||0;if(n.over[p])d[k]+=t[D.toLowerCase()]()*n.over[p]}else d[k]=t[p];if(/^\d+$/.test(d[k]))d[k]=d[k]<=0?0:Math.min(d[k],h(D));if(!i&&n.queue){if(e!=d[k])g(n.onAfterFirst);delete d[k]}});g(n.onAfter);function g(a){b.animate(d,m,n.easing,a&&function(){a.call(this,l)})};function h(D){var b=w?$.browser.opera?document.body:document.documentElement:a;return b['scroll'+D]-b['client'+D]}})};function j(a){return typeof a=='object'?a:{top:a,left:a}}})(jQuery); + diff --git a/assets/html/doc/ldap_8c.html b/assets/html/doc/ldap_8c.html new file mode 100644 index 0000000..c97df26 --- /dev/null +++ b/assets/html/doc/ldap_8c.html @@ -0,0 +1,254 @@ + + + + +Server: src/auth/ldap.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/auth/ldap.c File Reference

+
+
+
#include <stdarg.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdio.h>
+#include <ldap.h>
+#include "class.h"
+#include "utils/memory.h"
+#include "commons.h"
+#include "auth/ldap.h"
+#include "auth/credential.h"
+#include "auth/interface/auth.h"
+
+Include dependency graph for ldap.c:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + + + +

+Functions

 INIT_IFACE (Class, authLdapCtor, authLdapDtor, NULL)
 INIT_IFACE (Auth, authLdapAuthenticate)
 CREATE_CLASS (AuthLdap, NULL, IFACE(Class), IFACE(Auth))
+

Detailed Description

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file ldap.c.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CREATE_CLASS (AuthLdap ,
NULL ,
IFACE(Class) ,
IFACE(Auth 
)
+
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
INIT_IFACE (Class ,
authLdapCtor ,
authLdapDtor ,
NULL  
)
+
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
INIT_IFACE (Auth ,
authLdapAuthenticate  
)
+
+
+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/ldap_8c_source.html b/assets/html/doc/ldap_8c_source.html new file mode 100644 index 0000000..61cbbd1 --- /dev/null +++ b/assets/html/doc/ldap_8c_source.html @@ -0,0 +1,198 @@ + + + + +Server: src/auth/ldap.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/auth/ldap.c

+
+
+Go to the documentation of this file.
00001 
+00023 #include <stdarg.h>
+00024 #include <stdlib.h>
+00025 #include <string.h>
+00026 #include <stdio.h>
+00027 #include <ldap.h>
+00028 
+00029 #include "class.h"
+00030 #include "utils/memory.h"
+00031 #include "commons.h"
+00032 
+00033 #include "auth/ldap.h"
+00034 #include "auth/credential.h"
+00035 #include "auth/interface/auth.h"
+00036 
+00037 static
+00038 int
+00039 authLdapCtor(void * _this, va_list * params)
+00040 {
+00041         AuthLdap this = _this;
+00042         char *   url  = va_arg(*params, char*);
+00043         char *   base_dn;
+00044 
+00045         this->url = malloc(strlen(url) + 1);
+00046         strcpy(this->url, url);
+00047 
+00048         this->version  = 3;
+00049 
+00050         base_dn        = va_arg(* params, char *);
+00051         this->nbase_dn = va_arg(* params, size_t);
+00052         
+00053         this->base_dn = malloc(this->nbase_dn + 1);
+00054         this->base_dn[this->nbase_dn] = 0;
+00055         memcpy(this->base_dn, base_dn, this->nbase_dn);
+00056 
+00057         return 0;
+00058 }
+00059 
+00060 static
+00061 void
+00062 authLdapDtor(void * _this)
+00063 {
+00064         AuthLdap this = _this;
+00065 
+00066         FREE(this->base_dn);
+00067         FREE(this->url);
+00068 }
+00069 
+00070 static
+00071 int
+00072 authLdapAuthenticate(void * _this, Credential cred)
+00073 {
+00074         AuthLdap this = _this;
+00075         char     who[256];
+00076         char *   who_ptr = who;
+00077         int      ldap_err;
+00078 
+00079         if (CRED_PASSWORD != cred->type) {
+00080                 return FALSE;
+00081         }
+00082 
+00083         ldap_initialize(&(this->ldap), this->url);
+00084         ldap_set_option(this->ldap, LDAP_OPT_PROTOCOL_VERSION, &(this->version));
+00085 
+00086         memcpy(who_ptr, "cn=", sizeof("cn=") - 1);
+00087         who_ptr   += sizeof("cn=") - 1;
+00088         memcpy(who_ptr, CRED_PWD(cred).user, CRED_PWD(cred).nuser);
+00089         who_ptr += CRED_PWD(cred).nuser;
+00090         *who_ptr++ = ',';
+00091         memcpy(who_ptr, this->base_dn, this->nbase_dn);
+00092         who_ptr[this->nbase_dn] = 0;
+00093 
+00094         ldap_err = ldap_simple_bind_s(this->ldap, who, CRED_PWD(cred).pass);
+00095         if (0 == ldap_err) {
+00096                 ldap_unbind_s(this->ldap);
+00098                 return TRUE;
+00099         }
+00100 
+00101         fprintf(stderr, "%s\n", ldap_err2string(ldap_err));
+00102         return FALSE;
+00103 }
+00104 
+00105 INIT_IFACE(Class, authLdapCtor, authLdapDtor, NULL);
+00106 INIT_IFACE(Auth, authLdapAuthenticate);
+00107 CREATE_CLASS(AuthLdap, NULL, IFACE(Class), IFACE(Auth));
+00108 
+00109 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/ldap_8h.html b/assets/html/doc/ldap_8h.html new file mode 100644 index 0000000..1b016cf --- /dev/null +++ b/assets/html/doc/ldap_8h.html @@ -0,0 +1,145 @@ + + + + +Server: include/auth/ldap.h File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

include/auth/ldap.h File Reference

+
+
+
#include <ldap.h>
+#include <sys/types.h>
+#include "class.h"
+
+Include dependency graph for ldap.h:
+
+
+ + +
+
+This graph shows which files directly or indirectly include this file:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + +

+Data Structures

struct  AuthLdap
+

Detailed Description

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file ldap.h.

+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/ldap_8h_source.html b/assets/html/doc/ldap_8h_source.html new file mode 100644 index 0000000..c23d4b2 --- /dev/null +++ b/assets/html/doc/ldap_8h_source.html @@ -0,0 +1,131 @@ + + + + +Server: include/auth/ldap.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

include/auth/ldap.h

+
+
+Go to the documentation of this file.
00001 
+00023 #ifndef __AUTH_LDAP_H__
+00024 #define __AUTH_LDAP_H__
+00025 
+00026 #include <ldap.h>
+00027 #include <sys/types.h>
+00028 
+00029 #include "class.h"
+00030 
+00031 CLASS(AuthLdap) {
+00032         LDAP *     ldap;
+00033         char *     url;
+00034         char *     base_dn;
+00035         int        version;
+00036         size_t     nbase_dn;
+00037 };
+00038 
+00039 #endif // __AUTH_LDAP_H__
+00040 
+00041 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/listen_8c.html b/assets/html/doc/listen_8c.html new file mode 100644 index 0000000..a5bdf53 --- /dev/null +++ b/assets/html/doc/listen_8c.html @@ -0,0 +1,202 @@ + + + + +Server: src/socket/listen.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/socket/listen.c File Reference

+
+
+
#include <stdlib.h>
+#include <errno.h>
+#include "socket.h"
+#include "class.h"
+#include "logger.h"
+
+Include dependency graph for listen.c:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + +

+Functions

void socketListen (Sock this, int backlog)
+

Detailed Description

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file listen.c.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
void socketListen (Sock this,
int backlog 
)
+
+
+ +

Bind to the local address

+

Mark the socket so it will listen for incoming connections

+

+ +

Definition at line 32 of file listen.c.

+
{
+    (this->addr).sin_family      = AF_INET;           // Internet address family
+    (this->addr).sin_addr.s_addr = htonl(INADDR_ANY); // Any incoming interface
+    (this->addr).sin_port        = htons(this->port); // Local port
+
+    if (-1 == bind(this->handle, (struct sockaddr *) &(this->addr), sizeof(this->addr))) {
+        loggerLog(this->log, LOGGER_CRIT,
+                "error binding socket: %s - service terminated",
+                strerror(errno));
+        exit(EXIT_FAILURE);
+    }
+
+    if (-1 == listen(this->handle, backlog)) {
+        loggerLog(this->log, LOGGER_CRIT,
+                "error binding socket: %s - service terminated",
+                strerror(errno));
+        exit(EXIT_FAILURE);
+    }
+}
+
+

+Here is the call graph for this function:
+
+
+ + +
+

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/listen_8c_source.html b/assets/html/doc/listen_8c_source.html new file mode 100644 index 0000000..b38ff01 --- /dev/null +++ b/assets/html/doc/listen_8c_source.html @@ -0,0 +1,143 @@ + + + + +Server: src/socket/listen.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/socket/listen.c

+
+
+Go to the documentation of this file.
00001 
+00023 #include <stdlib.h>     // for atoi() and exit()
+00024 #include <errno.h>      // for errno
+00025 
+00026 #include "socket.h"
+00027 #include "class.h"
+00028 #include "logger.h"
+00029 
+00030 
+00031 void
+00032 socketListen(Sock this, int backlog)
+00033 {
+00034     (this->addr).sin_family      = AF_INET;           // Internet address family
+00035     (this->addr).sin_addr.s_addr = htonl(INADDR_ANY); // Any incoming interface
+00036     (this->addr).sin_port        = htons(this->port); // Local port
+00037 
+00041     if (-1 == bind(this->handle, (struct sockaddr *) &(this->addr), sizeof(this->addr))) {
+00042         loggerLog(this->log, LOGGER_CRIT,
+00043                 "error binding socket: %s - service terminated",
+00044                 strerror(errno));
+00045         exit(EXIT_FAILURE);
+00046     }
+00047 
+00051     if (-1 == listen(this->handle, backlog)) {
+00052         loggerLog(this->log, LOGGER_CRIT,
+00053                 "error binding socket: %s - service terminated",
+00054                 strerror(errno));
+00055         exit(EXIT_FAILURE);
+00056     }
+00057 }
+00058 
+00059 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/lock_8c.html b/assets/html/doc/lock_8c.html new file mode 100644 index 0000000..674f7de --- /dev/null +++ b/assets/html/doc/lock_8c.html @@ -0,0 +1,168 @@ + + + + +Server: src/cbuf/lock.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/cbuf/lock.c File Reference

+
+
+
#include "cbuf.h"
+
+Include dependency graph for lock.c:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + +

+Functions

void cbufLock (Cbuf this)
+

Detailed Description

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file lock.c.

+

Function Documentation

+ +
+
+ + + + + + + + +
void cbufLock (Cbuf this)
+
+
+ +

Definition at line 26 of file lock.c.

+
{
+        this->lock = TRUE;
+}
+
+

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/lock_8c_source.html b/assets/html/doc/lock_8c_source.html new file mode 100644 index 0000000..2ec2fb4 --- /dev/null +++ b/assets/html/doc/lock_8c_source.html @@ -0,0 +1,121 @@ + + + + +Server: src/cbuf/lock.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/cbuf/lock.c

+
+
+Go to the documentation of this file.
00001 
+00023 #include "cbuf.h"
+00024 
+00025 void
+00026 cbufLock(Cbuf this)
+00027 {
+00028         this->lock = TRUE;
+00029 }
+00030 
+00031 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/logger_2interface_2logger_8h.html b/assets/html/doc/logger_2interface_2logger_8h.html new file mode 100644 index 0000000..323f538 --- /dev/null +++ b/assets/html/doc/logger_2interface_2logger_8h.html @@ -0,0 +1,244 @@ + + + + +Server: include/logger/interface/logger.h File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

include/logger/interface/logger.h File Reference

+
+
+
#include <stdarg.h>
+#include "class.h"
+#include "logger.h"
+
+Include dependency graph for logger.h:
+
+
+ + +
+
+This graph shows which files directly or indirectly include this file:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + + + + + +

+Data Structures

struct  i_Logger

+Typedefs

typedef void(* fptr_log )(void *, logger_level, const char *const)

+Functions

void loggerLog (void *, logger_level, const char *const,...)
+

Detailed Description

+

The logger interface.

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file logger.h.

+

Typedef Documentation

+ +
+
+ + + + +
typedef void(* fptr_log)(void *, logger_level, const char *const)
+
+
+ +

Definition at line 32 of file logger.h.

+ +
+
+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void loggerLog (void * ,
logger_level ,
const char * const,
 ... 
)
+
+
+ +

Definition at line 36 of file i_logger.c.

+
                                                                           {
+        Logger object = _object;
+
+        if (level >= object->min_level) {
+                char *  msg      = NULL;
+                size_t  msg_size = 0;
+                va_list params;
+
+                va_start(params, fmt);
+                msg_size = vsnprintf(msg, msg_size, fmt, params);
+                va_end(params);
+
+                msg = malloc(msg_size + 1);
+
+                va_start(params, fmt);
+                vsnprintf(msg, msg_size + 1, fmt, params);
+                va_end(params);
+
+                CALL(_object, Logger, log, level, msg);
+
+                free(msg);
+        }
+}
+
+

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/logger_2interface_2logger_8h_source.html b/assets/html/doc/logger_2interface_2logger_8h_source.html new file mode 100644 index 0000000..c27dd12 --- /dev/null +++ b/assets/html/doc/logger_2interface_2logger_8h_source.html @@ -0,0 +1,134 @@ + + + + +Server: include/logger/interface/logger.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

include/logger/interface/logger.h

+
+
+Go to the documentation of this file.
00001 
+00024 #ifndef __LOGGER_INTERFACE_LOGGER_H__
+00025 #define __LOGGER_INTERFACE_LOGGER_H__
+00026 
+00027 #include <stdarg.h>
+00028 
+00029 #include "class.h"
+00030 #include "logger.h"
+00031 
+00032 typedef void (* fptr_log)(void *, logger_level, const char * const);
+00033 
+00034 extern const struct interface i_Logger;
+00035 
+00036 struct i_Logger {
+00037         const struct interface * const _;
+00038         fptr_log                       log;
+00039 };
+00040 
+00041 extern void loggerLog(void *, logger_level, const char * const, ...);
+00042 
+00043 #endif // __LOGGER_INTERFACE_LOGGER_H__
+00044 
+00045 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/logger_2logger_8h.html b/assets/html/doc/logger_2logger_8h.html new file mode 100644 index 0000000..c6f4f9e --- /dev/null +++ b/assets/html/doc/logger_2logger_8h.html @@ -0,0 +1,245 @@ + + + + +Server: include/logger/logger.h File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

include/logger/logger.h File Reference

+
+
+
#include "class.h"
+
+Include dependency graph for logger.h:
+
+
+ + +
+
+This graph shows which files directly or indirectly include this file:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + + + + + + + + + +

+Data Structures

struct  Logger
struct  LoggerStderr
struct  LoggerSyslog

+Typedefs

typedef enum logger_level logger_level

+Enumerations

enum  logger_level {
+  LOGGER_DEBUG = 0, +LOGGER_INFO, +LOGGER_NOTICE, +LOGGER_WARNING, +
+  LOGGER_ERR, +LOGGER_CRIT, +LOGGER_ALERT, +LOGGER_EMERG +
+ }

+Variables

const char *const logger_level_str []
+

Detailed Description

+

A generic logger class and two extended classes, One that logs to stderr and one that logs to the system syslog.

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file logger.h.

+

Typedef Documentation

+ +
+
+ + + + +
typedef enum logger_level logger_level
+
+
+ +
+
+

Enumeration Type Documentation

+ +
+
+ + + + +
enum logger_level
+
+
+
Enumerator:
+ + + + + + + + +
LOGGER_DEBUG  +
LOGGER_INFO  +
LOGGER_NOTICE  +
LOGGER_WARNING  +
LOGGER_ERR  +
LOGGER_CRIT  +
LOGGER_ALERT  +
LOGGER_EMERG  +
+
+
+ +

Definition at line 30 of file logger.h.

+ +
+
+

Variable Documentation

+ +
+
+ + + + +
const char* const logger_level_str[]
+
+
+ +

Definition at line 31 of file logger.c.

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/logger_2logger_8h_source.html b/assets/html/doc/logger_2logger_8h_source.html new file mode 100644 index 0000000..1c30a00 --- /dev/null +++ b/assets/html/doc/logger_2logger_8h_source.html @@ -0,0 +1,145 @@ + + + + +Server: include/logger/logger.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

include/logger/logger.h

+
+
+Go to the documentation of this file.
00001 
+00025 #ifndef __LOGGER_LOGGER_H__
+00026 #define __LOGGER_LOGGER_H__
+00027 
+00028 #include "class.h"
+00029 
+00030 typedef enum logger_level {
+00031         LOGGER_DEBUG=0,
+00032         LOGGER_INFO,
+00033         LOGGER_NOTICE,
+00034         LOGGER_WARNING,
+00035         LOGGER_ERR,
+00036         LOGGER_CRIT,
+00037         LOGGER_ALERT,
+00038         LOGGER_EMERG
+00039 } logger_level;
+00040 
+00041 extern const char * const logger_level_str[];
+00042 
+00043 CLASS(Logger) {
+00044         logger_level min_level;
+00045 };
+00046 
+00047 CLASS(LoggerStderr) {
+00048         EXTENDS(Logger);
+00049 };
+00050 
+00051 CLASS(LoggerSyslog) {
+00052         EXTENDS(Logger);
+00053 };
+00054 
+00055 #endif // __LOGGER_LOGGER_H__
+00056 
+00057 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/logger_8c.html b/assets/html/doc/logger_8c.html new file mode 100644 index 0000000..890f633 --- /dev/null +++ b/assets/html/doc/logger_8c.html @@ -0,0 +1,243 @@ + + + + +Server: src/logger/logger.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/logger/logger.c File Reference

+
+
+
#include <stdarg.h>
+#include "class.h"
+#include "logger/logger.h"
+#include "logger/interface/logger.h"
+
+Include dependency graph for logger.c:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + + + + +

+Functions

 INIT_IFACE (Class, loggerCtor, loggerDtor, NULL)
 CREATE_CLASS (Logger, NULL, IFACE(Class))

+Variables

const char *const logger_level_str []
+

Detailed Description

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file logger.c.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
CREATE_CLASS (Logger ,
NULL ,
IFACE(Class)  
)
+
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
INIT_IFACE (Class ,
loggerCtor ,
loggerDtor ,
NULL  
)
+
+
+ +
+
+

Variable Documentation

+ +
+
+ + + + +
const char* const logger_level_str[]
+
+
+Initial value:
 {
+        "DEBUG",
+        "INFO",
+        "NOTICE",
+        "WARNING",
+        "ERR",
+        "CRIT",
+        "ALERT",
+        "EMERG"
+}
+
+

Definition at line 31 of file logger.c.

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/logger_8c_source.html b/assets/html/doc/logger_8c_source.html new file mode 100644 index 0000000..b5cdc4a --- /dev/null +++ b/assets/html/doc/logger_8c_source.html @@ -0,0 +1,147 @@ + + + + +Server: src/logger/logger.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/logger/logger.c

+
+
+Go to the documentation of this file.
00001 
+00023 #include <stdarg.h>
+00024 
+00025 #include "class.h"
+00026 #include "logger/logger.h"
+00027 #include "logger/interface/logger.h"
+00028 
+00029 const
+00030 char * const
+00031 logger_level_str[] = {
+00032         "DEBUG",
+00033         "INFO",
+00034         "NOTICE",
+00035         "WARNING",
+00036         "ERR",
+00037         "CRIT",
+00038         "ALERT",
+00039         "EMERG"
+00040 };
+00041 
+00042 static
+00043 int
+00044 loggerCtor(void * _this, va_list * params)
+00045 {
+00046         Logger this = _this;
+00047         this->min_level = va_arg(*params, int);
+00048 
+00049         return 0;
+00050 }
+00051 
+00052 static void loggerDtor(void * _this) {}
+00053 
+00054 INIT_IFACE(Class, loggerCtor, loggerDtor, NULL);
+00055 CREATE_CLASS(Logger, NULL, IFACE(Class));
+00056 
+00057 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/logger_8h.html b/assets/html/doc/logger_8h.html new file mode 100644 index 0000000..7e990a6 --- /dev/null +++ b/assets/html/doc/logger_8h.html @@ -0,0 +1,131 @@ + + + + +Server: include/logger.h File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

include/logger.h File Reference

+
+
+
+Include dependency graph for logger.h:
+
+
+ + +
+
+This graph shows which files directly or indirectly include this file:
+
+
+ + +
+
+

Go to the source code of this file.

+ +
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/logger_8h_source.html b/assets/html/doc/logger_8h_source.html new file mode 100644 index 0000000..fa37da6 --- /dev/null +++ b/assets/html/doc/logger_8h_source.html @@ -0,0 +1,120 @@ + + + + +Server: include/logger.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

include/logger.h

+
+
+Go to the documentation of this file.
00001 #ifndef __LOGGER_H__
+00002 #define __LOGGER_H__
+00003 
+00004 #include "logger/logger.h"
+00005 #include "logger/interface/logger.h"
+00006 
+00007 #endif // __LOGGER_H__
+00008 
+00009 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/login__form_8c.html b/assets/html/doc/login__form_8c.html new file mode 100644 index 0000000..fb2fec3 --- /dev/null +++ b/assets/html/doc/login__form_8c.html @@ -0,0 +1,216 @@ + + + + +Server: src/http/response/login_form.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/http/response/login_form.c File Reference

+
+
+
#include <stdlib.h>
+#include <string.h>
+#include <stdio.h>
+#include <time.h>
+#include <sys/types.h>
+#include "class.h"
+#include "http/response.h"
+#include "http/message.h"
+#include "http/header.h"
+#include "utils/memory.h"
+#include "hash.h"
+
+Include dependency graph for login_form.c:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + + + +

+Defines

#define RESP_DATA

+Functions

HttpResponse httpResponseLoginForm ()
+

Detailed Description

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file login_form.c.

+

Define Documentation

+ +
+
+ + + + +
#define RESP_DATA
+
+
+Value:
"<form action=\"/me/\" method=\"POST\">" \
+        "<input name=\"username\" type=\"text\" />" \
+        "<input type=\"submit\">" \
+"</form>"
+
+

Definition at line 38 of file login_form.c.

+ +
+
+

Function Documentation

+ +
+
+ + + + + + + +
HttpResponse httpResponseLoginForm ()
+
+
+ +

Definition at line 44 of file login_form.c.

+
{
+        HttpResponse response;
+        HttpMessage  message;
+
+        response = new(HttpResponse, "HTTP/1.1", 200, "OK");
+        message  = (HttpMessage)response;
+
+        hashAdd(message->header,
+                        new(HttpHeader, CSTRA("Content-Type"), CSTRA("text/html")));
+
+        message->type  = HTTP_MESSAGE_BUFFERED;
+
+        message->nbody = sizeof(RESP_DATA)-1;
+        message->body  = malloc(message->nbody);
+        memcpy(message->body, RESP_DATA, message->nbody);
+
+        return response;
+}
+
+

+Here is the call graph for this function:
+
+
+ + +
+

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/login__form_8c_source.html b/assets/html/doc/login__form_8c_source.html new file mode 100644 index 0000000..6687c59 --- /dev/null +++ b/assets/html/doc/login__form_8c_source.html @@ -0,0 +1,154 @@ + + + + +Server: src/http/response/login_form.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/http/response/login_form.c

+
+
+Go to the documentation of this file.
00001 
+00023 #include <stdlib.h>
+00024 #include <string.h>
+00025 #include <stdio.h>
+00026 #include <time.h>
+00027 #include <sys/types.h>
+00028 
+00029 #include "class.h"
+00030 
+00031 #include "http/response.h"
+00032 #include "http/message.h"
+00033 #include "http/header.h"
+00034 
+00035 #include "utils/memory.h"
+00036 #include "hash.h"
+00037 
+00038 #define RESP_DATA "<form action=\"/me/\" method=\"POST\">" \
+00039         "<input name=\"username\" type=\"text\" />" \
+00040         "<input type=\"submit\">" \
+00041 "</form>"
+00042 
+00043 HttpResponse
+00044 httpResponseLoginForm()
+00045 {
+00046         HttpResponse response;
+00047         HttpMessage  message;
+00048 
+00049         response = new(HttpResponse, "HTTP/1.1", 200, "OK");
+00050         message  = (HttpMessage)response;
+00051 
+00052         hashAdd(message->header,
+00053                         new(HttpHeader, CSTRA("Content-Type"), CSTRA("text/html")));
+00054 
+00055         message->type  = HTTP_MESSAGE_BUFFERED;
+00056 
+00057         message->nbody = sizeof(RESP_DATA)-1;
+00058         message->body  = malloc(message->nbody);
+00059         memcpy(message->body, RESP_DATA, message->nbody);
+00060 
+00061         return response;
+00062 }
+00063 
+00064 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/memchr_8c.html b/assets/html/doc/memchr_8c.html new file mode 100644 index 0000000..87ac219 --- /dev/null +++ b/assets/html/doc/memchr_8c.html @@ -0,0 +1,188 @@ + + + + +Server: src/cbuf/memchr.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/cbuf/memchr.c File Reference

+
+
+
#include <string.h>
+#include "cbuf.h"
+
+Include dependency graph for memchr.c:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + +

+Functions

char * cbufMemchr (Cbuf this, int c)
+

Detailed Description

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file memchr.c.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
char* cbufMemchr (Cbuf this,
int c 
)
+
+
+ +

Definition at line 28 of file memchr.c.

+
{
+        return memchr(cbufGetRead(this), c, this->bused);
+}
+
+

+Here is the call graph for this function:
+
+
+ + +
+

+ +

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/memchr_8c_source.html b/assets/html/doc/memchr_8c_source.html new file mode 100644 index 0000000..3bdb9d4 --- /dev/null +++ b/assets/html/doc/memchr_8c_source.html @@ -0,0 +1,123 @@ + + + + +Server: src/cbuf/memchr.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/cbuf/memchr.c

+
+
+Go to the documentation of this file.
00001 
+00023 #include <string.h>
+00024 
+00025 #include "cbuf.h"
+00026 
+00027 char *
+00028 cbufMemchr(Cbuf this, int c)
+00029 {
+00030         return memchr(cbufGetRead(this), c, this->bused);
+00031 }
+00032 
+00033 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/memory_8c.html b/assets/html/doc/memory_8c.html new file mode 100644 index 0000000..e48caf0 --- /dev/null +++ b/assets/html/doc/memory_8c.html @@ -0,0 +1,163 @@ + + + + +Server: src/utils/memory.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/utils/memory.c File Reference

+
+
+
#include <stdlib.h>
+#include "utils/memory.h"
+
+Include dependency graph for memory.c:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + +

+Functions

void ffree (void **data)
+

Detailed Description

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file memory.c.

+

Function Documentation

+ +
+
+ + + + + + + + +
void ffree (void ** data)
+
+
+ +

Definition at line 28 of file memory.c.

+
{
+        if (NULL != *data) {
+                free(*data);
+                *data = NULL;
+        }
+}   
+
+
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/memory_8c_source.html b/assets/html/doc/memory_8c_source.html new file mode 100644 index 0000000..8f484ef --- /dev/null +++ b/assets/html/doc/memory_8c_source.html @@ -0,0 +1,126 @@ + + + + +Server: src/utils/memory.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/utils/memory.c

+
+
+Go to the documentation of this file.
00001 
+00023 #include <stdlib.h>
+00024 
+00025 #include "utils/memory.h"
+00026 
+00027 void
+00028 ffree(void ** data)
+00029 {
+00030         if (NULL != *data) {
+00031                 free(*data);
+00032                 *data = NULL;
+00033         }
+00034 }   
+00035 
+00036 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/memory_8h.html b/assets/html/doc/memory_8h.html new file mode 100644 index 0000000..b2183af --- /dev/null +++ b/assets/html/doc/memory_8h.html @@ -0,0 +1,201 @@ + + + + +Server: include/utils/memory.h File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

include/utils/memory.h File Reference

+
+
+ +

Go to the source code of this file.

+ + + + + + + +

+Defines

#define CSTRA(val)   val, sizeof(val)-1
 Const STRing Argument.
#define FREE(val)   (ffree((void**)&(val)))

+Functions

void ffree (void **)
+

Detailed Description

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file memory.h.

+

Define Documentation

+ +
+
+ + + + + + + + +
#define CSTRA( val)   val, sizeof(val)-1
+
+
+ +

Const STRing Argument.

+ +

Definition at line 26 of file memory.h.

+ +
+
+ +
+
+ + + + + + + + +
#define FREE( val)   (ffree((void**)&(val)))
+
+
+ +

Definition at line 28 of file memory.h.

+ +
+
+

Function Documentation

+ +
+
+ + + + + + + + +
void ffree (void ** )
+
+
+ +

Definition at line 28 of file memory.c.

+
{
+        if (NULL != *data) {
+                free(*data);
+                *data = NULL;
+        }
+}   
+
+
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/memory_8h_source.html b/assets/html/doc/memory_8h_source.html new file mode 100644 index 0000000..6b7be28 --- /dev/null +++ b/assets/html/doc/memory_8h_source.html @@ -0,0 +1,124 @@ + + + + +Server: include/utils/memory.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

include/utils/memory.h

+
+
+Go to the documentation of this file.
00001 
+00023 #ifndef __UTILS_MEMORY_H__
+00024 #define __UTILS_MEMORY_H__
+00025 
+00026 #define CSTRA(val)      val, sizeof(val)-1 //!< Const STRing Argument
+00027 
+00028 #define FREE(val)       (ffree((void**)&(val)))
+00029 
+00030 void ffree(void **);
+00031 
+00032 #endif // __UTILS_MEMORY_H__
+00033 
+00034 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/message_8c.html b/assets/html/doc/message_8c.html new file mode 100644 index 0000000..1e836c0 --- /dev/null +++ b/assets/html/doc/message_8c.html @@ -0,0 +1,238 @@ + + + + +Server: src/http/message.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/http/message.c File Reference

+
+
+
#include <search.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdarg.h>
+#include <unistd.h>
+#include "class.h"
+#include "hash.h"
+#include "http/message.h"
+#include "utils/memory.h"
+
+Include dependency graph for message.c:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + + + + +

+Defines

#define _GNU_SOURCE

+Functions

 INIT_IFACE (Class, httpMessageCtor, httpMessageDtor, NULL)
 CREATE_CLASS (HttpMessage, NULL, IFACE(Class))
+

Detailed Description

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file message.c.

+

Define Documentation

+ +
+
+ + + + +
#define _GNU_SOURCE
+
+
+ +

Definition at line 24 of file message.c.

+ +
+
+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
CREATE_CLASS (HttpMessage ,
NULL ,
IFACE(Class)  
)
+
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
INIT_IFACE (Class ,
httpMessageCtor ,
httpMessageDtor ,
NULL  
)
+
+
+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/message_8c_source.html b/assets/html/doc/message_8c_source.html new file mode 100644 index 0000000..0956dec --- /dev/null +++ b/assets/html/doc/message_8c_source.html @@ -0,0 +1,174 @@ + + + + +Server: src/http/message.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/http/message.c

+
+
+Go to the documentation of this file.
00001 
+00023 #ifndef _GNU_SOURCE
+00024 #define _GNU_SOURCE
+00025 #endif
+00026 
+00027 #include <search.h>
+00028 #include <stdlib.h>
+00029 #include <string.h>
+00030 #include <stdarg.h>
+00031 #include <unistd.h>
+00032 
+00033 #include "class.h"
+00034 #include "hash.h"
+00035 #include "http/message.h"
+00036 #include "utils/memory.h"
+00037 
+00038 
+00039 static
+00040 int
+00041 httpMessageCtor(void * _this, va_list * params)
+00042 {
+00043         HttpMessage this    = _this;
+00044         char *      version = va_arg(* params, char *);
+00045 
+00046         this->version = calloc(1, strlen(version)+1);
+00047         strcpy(this->version, version);
+00048 
+00049         this->header = new(Hash);
+00050 
+00051         return 0;
+00052 }
+00053 
+00054 static
+00055 void
+00056 httpMessageDtor(void * _this)
+00057 {
+00058         HttpMessage this = _this;
+00059 
+00060         delete(this->header);
+00061 
+00062         FREE(this->version);
+00063 
+00064         switch (this->type) {
+00065                 case HTTP_MESSAGE_BUFFERED:
+00066                         FREE(this->body);
+00067                         break;
+00068 
+00069                 case HTTP_MESSAGE_PIPED:
+00070                         if (2 < (this->handle->handle).fd) {
+00071                                 close((this->handle->handle).fd);
+00072                         }
+00073                         delete(this->handle);
+00074                         break;
+00075 
+00076                 default:
+00077                         break;
+00078         }
+00079 } 
+00080 
+00081 INIT_IFACE(Class, httpMessageCtor, httpMessageDtor, NULL);
+00082 CREATE_CLASS(HttpMessage, NULL, IFACE(Class));
+00083 
+00084 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/message_8h.html b/assets/html/doc/message_8h.html new file mode 100644 index 0000000..750d2e1 --- /dev/null +++ b/assets/html/doc/message_8h.html @@ -0,0 +1,473 @@ + + + + +Server: include/http/message.h File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

include/http/message.h File Reference

+
+
+
#include "class.h"
+#include "hash.h"
+#include "stream.h"
+
+Include dependency graph for message.h:
+
+
+ + +
+
+This graph shows which files directly or indirectly include this file:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + + + + + + + + + + + +

+Data Structures

struct  HttpMessage

+Typedefs

typedef enum e_HttpMessageType HttpMessageType

+Enumerations

enum  e_HttpMessageType { HTTP_MESSAGE_BUFFERED = 0, +HTTP_MESSAGE_PIPED + }

+Functions

char httpMessageHasKeepAlive (HttpMessage)
size_t httpMessageHeaderSizeGet (HttpMessage)
char * httpMessageHeaderToString (HttpMessage, char *)
int httpMessageGetVersion (HttpMessage, int *, int *)
int httpMessageHasValidVersion (HttpMessage)
+

Detailed Description

+

Generic HTTP message. Parent for request and response.

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file message.h.

+

Typedef Documentation

+ +
+
+ + + + +
typedef enum e_HttpMessageType HttpMessageType
+
+
+ +
+
+

Enumeration Type Documentation

+ +
+
+ + + + +
enum e_HttpMessageType
+
+
+
Enumerator:
+ + +
HTTP_MESSAGE_BUFFERED  +
HTTP_MESSAGE_PIPED  +
+
+
+ +

Definition at line 31 of file message.h.

+ +
+
+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int httpMessageGetVersion (HttpMessage ,
int * ,
int *  
)
+
+
+ +

Definition at line 29 of file get_version.c.

+
{
+        char * major_ptr = this->version + 5;
+        char * minor_ptr = strchr(major_ptr, '.') + 1;
+        char   version[] = "\0\0\0";
+
+        if (NULL == minor_ptr ||
+                        ((minor_ptr - major_ptr - 1) > 2) ||
+                        strlen(minor_ptr) > 2)
+                return -1;
+
+        memcpy(version, major_ptr, minor_ptr - major_ptr - 1);
+        *major = atoi(version);
+
+        memset(version, 0, 3);
+        strcpy(version, minor_ptr);
+        *minor = atoi(version);
+
+        return ((*major)<<7)|(*minor);
+}
+
+

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+ +
+
+ + + + + + + + +
char httpMessageHasKeepAlive (HttpMessage )
+
+
+ +

Definition at line 37 of file has_keep_alive.c.

+
{
+        HttpHeader  header;
+        size_t      size;
+        char *      value;
+
+        header = hashGet(message->header, CSTRA("connection"));
+
+        if (NULL == header) {
+                return 0;
+        }
+
+        size  = (header->nvalue)[0];
+        value = (header->value)[0];
+
+        return (0 == strncasecmp("keep-alive", value, size))? 1 : 0;
+}
+
+

+Here is the call graph for this function:
+
+
+ + +
+

+ +

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+ +
+
+ + + + + + + + +
int httpMessageHasValidVersion (HttpMessage )
+
+
+ +

Definition at line 29 of file has_valid_version.c.

+
{
+        int major;
+        int minor;
+
+        if (! isHttpVersion(this->version, strlen(this->version)))
+                return 0;
+
+        if (0 > httpMessageGetVersion(this, &major, &minor))
+                return 0;
+
+        if (1 != major)
+                return 0;
+
+        if (0 > minor || 1 < minor)
+                return 0;
+
+        return 1;
+}
+
+

+Here is the call graph for this function:
+
+
+ + +
+

+ +
+
+ +
+
+ + + + + + + + +
size_t httpMessageHeaderSizeGet (HttpMessage )
+
+
+ +

Definition at line 44 of file header_size_get.c.

+
{
+        size = httpIntroSizeGet(message);
+
+        hashEach(message->header, addHeaderSize);
+        size += 2;
+
+        return size;
+}
+
+

+Here is the call graph for this function:
+
+
+ + +
+

+ +

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
char* httpMessageHeaderToString (HttpMessage ,
char *  
)
+
+
+ +

Definition at line 43 of file header_to_string.c.

+
{
+        HttpMessage message = (HttpMessage)response;
+
+        string = httpIntroToString(response, _string);
+
+        hashEach(message->header, addHeaderString);
+
+        *string++ = '\r';
+        *string++ = '\n';
+
+        return string;
+}
+
+

+Here is the call graph for this function:
+
+
+ + +
+

+ +

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/message_8h_source.html b/assets/html/doc/message_8h_source.html new file mode 100644 index 0000000..012ba5f --- /dev/null +++ b/assets/html/doc/message_8h_source.html @@ -0,0 +1,147 @@ + + + + +Server: include/http/message.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

include/http/message.h

+
+
+Go to the documentation of this file.
00001 
+00024 #ifndef __HTTP_MESSAGE__
+00025 #define __HTTP_MESSAGE__
+00026 
+00027 #include "class.h"
+00028 #include "hash.h"
+00029 #include "stream.h"
+00030 
+00031 typedef enum e_HttpMessageType {
+00032         HTTP_MESSAGE_BUFFERED=0,
+00033         HTTP_MESSAGE_PIPED
+00034 } HttpMessageType;
+00035 
+00036 
+00037 CLASS(HttpMessage) {
+00038         char *          version;
+00039 
+00040         Hash            header;
+00041 
+00042         HttpMessageType type;
+00043         Stream          handle;
+00044         char *          body;
+00045         int             nbody;
+00046         int             dbody;
+00047 };
+00048 
+00049 char   httpMessageHasKeepAlive(HttpMessage);
+00050 size_t httpMessageHeaderSizeGet(HttpMessage);
+00051 char * httpMessageHeaderToString(HttpMessage, char *);
+00052 
+00053 int    httpMessageGetVersion(HttpMessage, int *, int *);
+00054 int    httpMessageHasValidVersion(HttpMessage);
+00055 
+00056 #endif // __HTTP_MESSAGE__
+00057 
+00058 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/navtree.js b/assets/html/doc/navtree.js new file mode 100644 index 0000000..4dc1bca --- /dev/null +++ b/assets/html/doc/navtree.js @@ -0,0 +1,438 @@ +var NAVTREE = +[ + [ "Server", "index.html", [ + [ "Related Pages", "pages.html", [ + [ "Todo List", "todo.html", null ] + ] ], + [ "Data Structures", "annotated.html", [ + [ "Auth", "structAuth.html", null ], + [ "AuthLdap", "structAuthLdap.html", null ], + [ "Cbuf", "structCbuf.html", null ], + [ "class", "structclass.html", null ], + [ "conns", "structconns.html", null ], + [ "Credential", "structCredential.html", null ], + [ "Hash", "structHash.html", null ], + [ "HashValue", "structHashValue.html", null ], + [ "HttpCookie", "structHttpCookie.html", null ], + [ "HttpHeader", "structHttpHeader.html", null ], + [ "HttpMessage", "structHttpMessage.html", null ], + [ "HttpMessageQueue", "structHttpMessageQueue.html", null ], + [ "HttpParser", "structHttpParser.html", null ], + [ "HttpRequest", "structHttpRequest.html", null ], + [ "HttpResponse", "structHttpResponse.html", null ], + [ "HttpWorker", "structHttpWorker.html", null ], + [ "HttpWriter", "structHttpWriter.html", null ], + [ "i_Auth", "structi__Auth.html", null ], + [ "i_Class", "structi__Class.html", null ], + [ "i_Hashable", "structi__Hashable.html", null ], + [ "i_HttpIntro", "structi__HttpIntro.html", null ], + [ "i_Logger", "structi__Logger.html", null ], + [ "i_Observer", "structi__Observer.html", null ], + [ "i_StreamReader", "structi__StreamReader.html", null ], + [ "i_StreamWriter", "structi__StreamWriter.html", null ], + [ "i_Subject", "structi__Subject.html", null ], + [ "iface_impl", "structiface__impl.html", null ], + [ "interface", "structinterface.html", null ], + [ "Logger", "structLogger.html", null ], + [ "LoggerStderr", "structLoggerStderr.html", null ], + [ "LoggerSyslog", "structLoggerSyslog.html", null ], + [ "randval", "structrandval.html", null ], + [ "Server", "structServer.html", null ], + [ "Session", "structSession.html", null ], + [ "Sock", "structSock.html", null ], + [ "Stream", "structStream.html", null ] + ] ], + [ "Data Structure Index", "classes.html", null ], + [ "Data Fields", "functions.html", null ], + [ "File List", "files.html", [ + [ "config.h", "config_8h.html", null ], + [ "include/auth.h", "auth_8h.html", null ], + [ "include/cbuf.h", "cbuf_8h.html", null ], + [ "include/class.h", "class_8h.html", null ], + [ "include/commons.h", "commons_8h.html", null ], + [ "include/hash.h", "hash_8h.html", null ], + [ "include/http.h", "http_8h.html", null ], + [ "include/logger.h", "logger_8h.html", null ], + [ "include/server.h", "server_8h.html", null ], + [ "include/session.h", "session_8h.html", null ], + [ "include/socket.h", "socket_8h.html", null ], + [ "include/stream.h", "stream_8h.html", null ], + [ "include/auth/auth.h", "auth_2auth_8h.html", null ], + [ "include/auth/credential.h", "credential_8h.html", null ], + [ "include/auth/ldap.h", "ldap_8h.html", null ], + [ "include/auth/interface/auth.h", "auth_2interface_2auth_8h.html", null ], + [ "include/class/class.h", "class_2class_8h.html", null ], + [ "include/class/interface.h", "interface_8h.html", null ], + [ "include/class/interface/class.h", "class_2interface_2class_8h.html", null ], + [ "include/hash/hash.h", "hash_2hash_8h.html", null ], + [ "include/hash/value.h", "value_8h.html", null ], + [ "include/hash/interface/hashable.h", "hashable_8h.html", null ], + [ "include/http/cookie.h", "cookie_8h.html", null ], + [ "include/http/header.h", "header_8h.html", null ], + [ "include/http/message.h", "message_8h.html", null ], + [ "include/http/parser.h", "parser_8h.html", null ], + [ "include/http/request.h", "request_8h.html", null ], + [ "include/http/response.h", "response_8h.html", null ], + [ "include/http/worker.h", "worker_8h.html", null ], + [ "include/http/writer.h", "http_2writer_8h.html", null ], + [ "include/http/interface/http_intro.h", "http__intro_8h.html", null ], + [ "include/http/message/queue.h", "queue_8h.html", null ], + [ "include/interface/observer.h", "observer_8h.html", null ], + [ "include/interface/subject.h", "subject_8h.html", null ], + [ "include/logger/logger.h", "logger_2logger_8h.html", null ], + [ "include/logger/interface/logger.h", "logger_2interface_2logger_8h.html", null ], + [ "include/stream/stream.h", "stream_2stream_8h.html", null ], + [ "include/stream/interface/reader.h", "reader_8h.html", null ], + [ "include/stream/interface/writer.h", "stream_2interface_2writer_8h.html", null ], + [ "include/utils/hash.h", "utils_2hash_8h.html", null ], + [ "include/utils/http.h", "utils_2http_8h.html", null ], + [ "include/utils/memory.h", "memory_8h.html", null ], + [ "include/utils/signalHandling.h", "signalHandling_8h.html", null ], + [ "src/webgameserver.c", "webgameserver_8c.html", null ], + [ "src/auth/credential.c", "credential_8c.html", null ], + [ "src/auth/ldap.c", "ldap_8c.html", null ], + [ "src/auth/interface/auth.c", "auth_8c.html", null ], + [ "src/cbuf/addr_index.c", "addr__index_8c.html", null ], + [ "src/cbuf/cbuf.c", "cbuf_8c.html", null ], + [ "src/cbuf/empty.c", "empty_8c.html", null ], + [ "src/cbuf/get_data.c", "get__data_8c.html", null ], + [ "src/cbuf/get_free.c", "get__free_8c.html", null ], + [ "src/cbuf/get_line.c", "get__line_8c.html", null ], + [ "src/cbuf/get_read.c", "get__read_8c.html", null ], + [ "src/cbuf/get_write.c", "get__write_8c.html", null ], + [ "src/cbuf/inc_read.c", "inc__read_8c.html", null ], + [ "src/cbuf/inc_write.c", "inc__write_8c.html", null ], + [ "src/cbuf/is_empty.c", "is__empty_8c.html", null ], + [ "src/cbuf/is_locked.c", "is__locked_8c.html", null ], + [ "src/cbuf/lock.c", "lock_8c.html", null ], + [ "src/cbuf/memchr.c", "memchr_8c.html", null ], + [ "src/cbuf/read.c", "cbuf_2read_8c.html", null ], + [ "src/cbuf/release.c", "release_8c.html", null ], + [ "src/cbuf/set_data.c", "set__data_8c.html", null ], + [ "src/cbuf/skip_non_alpha.c", "skip__non__alpha_8c.html", null ], + [ "src/cbuf/write.c", "cbuf_2write_8c.html", null ], + [ "src/class/interface.c", "interface_8c.html", null ], + [ "src/class/interface/i_class.c", "i__class_8c.html", null ], + [ "src/hash/add.c", "hash_2add_8c.html", null ], + [ "src/hash/delete.c", "hash_2delete_8c.html", null ], + [ "src/hash/each.c", "each_8c.html", null ], + [ "src/hash/get.c", "hash_2get_8c.html", null ], + [ "src/hash/hash.c", "hash_2hash_8c.html", null ], + [ "src/hash/value.c", "value_8c.html", null ], + [ "src/hash/interface/hashable.c", "hashable_8c.html", null ], + [ "src/http/cookie.c", "cookie_8c.html", null ], + [ "src/http/header.c", "header_8c.html", null ], + [ "src/http/message.c", "message_8c.html", null ], + [ "src/http/parser.c", "parser_8c.html", null ], + [ "src/http/request.c", "request_8c.html", null ], + [ "src/http/response.c", "response_8c.html", null ], + [ "src/http/worker.c", "worker_8c.html", null ], + [ "src/http/writer.c", "http_2writer_8c.html", null ], + [ "src/http/header/to_string.c", "to__string_8c.html", null ], + [ "src/http/interface/i_http_intro.c", "i__http__intro_8c.html", null ], + [ "src/http/message/get_version.c", "get__version_8c.html", null ], + [ "src/http/message/has_keep_alive.c", "has__keep__alive_8c.html", null ], + [ "src/http/message/has_valid_version.c", "has__valid__version_8c.html", null ], + [ "src/http/message/header_size_get.c", "header__size__get_8c.html", null ], + [ "src/http/message/header_to_string.c", "header__to__string_8c.html", null ], + [ "src/http/message/queue.c", "queue_8c.html", null ], + [ "src/http/parser/new_message.c", "new__message_8c.html", null ], + [ "src/http/parser/p_body.c", "p__body_8c.html", null ], + [ "src/http/parser/p_header.c", "p__header_8c.html", null ], + [ "src/http/parser/p_post_vars.c", "p__post__vars_8c.html", null ], + [ "src/http/parser/p_request_vars.c", "p__request__vars_8c.html", null ], + [ "src/http/parser/parse.c", "parse_8c.html", null ], + [ "src/http/request/has_valid_method.c", "has__valid__method_8c.html", null ], + [ "src/http/response/304.c", "304_8c.html", null ], + [ "src/http/response/403.c", "403_8c.html", null ], + [ "src/http/response/404.c", "404_8c.html", null ], + [ "src/http/response/asset.c", "asset_8c.html", null ], + [ "src/http/response/login_form.c", "login__form_8c.html", null ], + [ "src/http/response/randval.c", "randval_8c.html", null ], + [ "src/http/response/session.c", "http_2response_2session_8c.html", null ], + [ "src/http/worker/add_common_header.c", "add__common__header_8c.html", null ], + [ "src/http/worker/answer.c", "answer_8c.html", null ], + [ "src/http/worker/get_asset.c", "get__asset_8c.html", null ], + [ "src/http/worker/process.c", "process_8c.html", null ], + [ "src/http/writer/write.c", "http_2writer_2write_8c.html", null ], + [ "src/interface/observer.c", "observer_8c.html", null ], + [ "src/interface/subject.c", "subject_8c.html", null ], + [ "src/logger/logger.c", "logger_8c.html", null ], + [ "src/logger/stderr.c", "stderr_8c.html", null ], + [ "src/logger/syslog.c", "syslog_8c.html", null ], + [ "src/logger/interface/i_logger.c", "i__logger_8c.html", null ], + [ "src/server/close_conn.c", "close__conn_8c.html", null ], + [ "src/server/handle_accept.c", "handle__accept_8c.html", null ], + [ "src/server/poll.c", "poll_8c.html", null ], + [ "src/server/read.c", "server_2read_8c.html", null ], + [ "src/server/run.c", "run_8c.html", null ], + [ "src/server/server.c", "server_8c.html", null ], + [ "src/server/write.c", "server_2write_8c.html", null ], + [ "src/session/add.c", "session_2add_8c.html", null ], + [ "src/session/delete.c", "session_2delete_8c.html", null ], + [ "src/session/get.c", "session_2get_8c.html", null ], + [ "src/session/session.c", "session_2session_8c.html", null ], + [ "src/socket/accept.c", "accept_8c.html", null ], + [ "src/socket/connect.c", "connect_8c.html", null ], + [ "src/socket/listen.c", "listen_8c.html", null ], + [ "src/socket/socket.c", "socket_8c.html", null ], + [ "src/stream/read.c", "stream_2read_8c.html", null ], + [ "src/stream/stream.c", "stream_8c.html", null ], + [ "src/stream/write.c", "stream_2write_8c.html", null ], + [ "src/stream/interface/reader.c", "reader_8c.html", null ], + [ "src/stream/interface/writer.c", "stream_2interface_2writer_8c.html", null ], + [ "src/utils/daemonize.c", "daemonize_8c.html", null ], + [ "src/utils/hash.c", "utils_2hash_8c.html", null ], + [ "src/utils/http.c", "http_8c.html", null ], + [ "src/utils/memory.c", "memory_8c.html", null ], + [ "src/utils/signalHandling.c", "signalHandling_8c.html", null ] + ] ], + [ "Globals", "globals.html", null ] + ] ] +]; + +function createIndent(o,domNode,node,level) +{ + if (node.parentNode && node.parentNode.parentNode) + { + createIndent(o,domNode,node.parentNode,level+1); + } + var imgNode = document.createElement("img"); + if (level==0 && node.childrenData) + { + node.plus_img = imgNode; + node.expandToggle = document.createElement("a"); + node.expandToggle.href = "javascript:void(0)"; + node.expandToggle.onclick = function() + { + if (node.expanded) + { + $(node.getChildrenUL()).slideUp("fast"); + if (node.isLast) + { + node.plus_img.src = node.relpath+"ftv2plastnode.png"; + } + else + { + node.plus_img.src = node.relpath+"ftv2pnode.png"; + } + node.expanded = false; + } + else + { + expandNode(o, node, false); + } + } + node.expandToggle.appendChild(imgNode); + domNode.appendChild(node.expandToggle); + } + else + { + domNode.appendChild(imgNode); + } + if (level==0) + { + if (node.isLast) + { + if (node.childrenData) + { + imgNode.src = node.relpath+"ftv2plastnode.png"; + } + else + { + imgNode.src = node.relpath+"ftv2lastnode.png"; + domNode.appendChild(imgNode); + } + } + else + { + if (node.childrenData) + { + imgNode.src = node.relpath+"ftv2pnode.png"; + } + else + { + imgNode.src = node.relpath+"ftv2node.png"; + domNode.appendChild(imgNode); + } + } + } + else + { + if (node.isLast) + { + imgNode.src = node.relpath+"ftv2blank.png"; + } + else + { + imgNode.src = node.relpath+"ftv2vertline.png"; + } + } + imgNode.border = "0"; +} + +function newNode(o, po, text, link, childrenData, lastNode) +{ + var node = new Object(); + node.children = Array(); + node.childrenData = childrenData; + node.depth = po.depth + 1; + node.relpath = po.relpath; + node.isLast = lastNode; + + node.li = document.createElement("li"); + po.getChildrenUL().appendChild(node.li); + node.parentNode = po; + + node.itemDiv = document.createElement("div"); + node.itemDiv.className = "item"; + + node.labelSpan = document.createElement("span"); + node.labelSpan.className = "label"; + + createIndent(o,node.itemDiv,node,0); + node.itemDiv.appendChild(node.labelSpan); + node.li.appendChild(node.itemDiv); + + var a = document.createElement("a"); + node.labelSpan.appendChild(a); + node.label = document.createTextNode(text); + a.appendChild(node.label); + if (link) + { + a.href = node.relpath+link; + } + else + { + if (childrenData != null) + { + a.className = "nolink"; + a.href = "javascript:void(0)"; + a.onclick = node.expandToggle.onclick; + node.expanded = false; + } + } + + node.childrenUL = null; + node.getChildrenUL = function() + { + if (!node.childrenUL) + { + node.childrenUL = document.createElement("ul"); + node.childrenUL.className = "children_ul"; + node.childrenUL.style.display = "none"; + node.li.appendChild(node.childrenUL); + } + return node.childrenUL; + }; + + return node; +} + +function showRoot() +{ + var headerHeight = $("#top").height(); + var footerHeight = $("#nav-path").height(); + var windowHeight = $(window).height() - headerHeight - footerHeight; + navtree.scrollTo('#selected',0,{offset:-windowHeight/2}); +} + +function expandNode(o, node, imm) +{ + if (node.childrenData && !node.expanded) + { + if (!node.childrenVisited) + { + getNode(o, node); + } + if (imm) + { + $(node.getChildrenUL()).show(); + } + else + { + $(node.getChildrenUL()).slideDown("fast",showRoot); + } + if (node.isLast) + { + node.plus_img.src = node.relpath+"ftv2mlastnode.png"; + } + else + { + node.plus_img.src = node.relpath+"ftv2mnode.png"; + } + node.expanded = true; + } +} + +function getNode(o, po) +{ + po.childrenVisited = true; + var l = po.childrenData.length-1; + for (var i in po.childrenData) + { + var nodeData = po.childrenData[i]; + po.children[i] = newNode(o, po, nodeData[0], nodeData[1], nodeData[2], + i==l); + } +} + +function findNavTreePage(url, data) +{ + var nodes = data; + var result = null; + for (var i in nodes) + { + var d = nodes[i]; + if (d[1] == url) + { + return new Array(i); + } + else if (d[2] != null) // array of children + { + result = findNavTreePage(url, d[2]); + if (result != null) + { + return (new Array(i).concat(result)); + } + } + } + return null; +} + +function initNavTree(toroot,relpath) +{ + var o = new Object(); + o.toroot = toroot; + o.node = new Object(); + o.node.li = document.getElementById("nav-tree-contents"); + o.node.childrenData = NAVTREE; + o.node.children = new Array(); + o.node.childrenUL = document.createElement("ul"); + o.node.getChildrenUL = function() { return o.node.childrenUL; }; + o.node.li.appendChild(o.node.childrenUL); + o.node.depth = 0; + o.node.relpath = relpath; + + getNode(o, o.node); + + o.breadcrumbs = findNavTreePage(toroot, NAVTREE); + if (o.breadcrumbs == null) + { + o.breadcrumbs = findNavTreePage("index.html",NAVTREE); + } + if (o.breadcrumbs != null && o.breadcrumbs.length>0) + { + var p = o.node; + for (var i in o.breadcrumbs) + { + var j = o.breadcrumbs[i]; + p = p.children[j]; + expandNode(o,p,true); + } + p.itemDiv.className = p.itemDiv.className + " selected"; + p.itemDiv.id = "selected"; + $(window).load(showRoot); + } +} + diff --git a/assets/html/doc/new__message_8c.html b/assets/html/doc/new__message_8c.html new file mode 100644 index 0000000..0a1aa5c --- /dev/null +++ b/assets/html/doc/new__message_8c.html @@ -0,0 +1,214 @@ + + + + +Server: src/http/parser/new_message.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/http/parser/new_message.c File Reference

+
+
+
#include "http/parser.h"
+#include "utils/http.h"
+
+Include dependency graph for new_message.c:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + +

+Functions

void httpParserNewMessage (HttpParser this, const char *line, const char *lend)
+

Detailed Description

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file new_message.c.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void httpParserNewMessage (HttpParser this,
const char * line,
const char * lend 
)
+
+
+ +

Definition at line 28 of file new_message.c.

+
{
+        const char * part1, * part2, * part3;
+        size_t       len1, len2, len3;
+
+        part1 = line;
+        part2 = memchr(line, ' ', lend - line);
+
+        if (NULL == part2) return;
+
+        len1 = part2 - part1;
+        for (; *part2 == ' ' && *part2 != 0; part2++);
+
+        part3 = memchr(part2, ' ', lend - part2);
+
+        if (NULL == part3) return;
+
+        len2 = part3 - part2;
+        for (; *part3 == ' ' && *part3 != 0; part3++);
+
+        len3 = lend - part3;
+
+        this->current = httpGetMessage(part1, len1, part2, len2, part3, len3);
+}
+
+

+Here is the call graph for this function:
+
+
+ + +
+

+ +

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/new__message_8c_source.html b/assets/html/doc/new__message_8c_source.html new file mode 100644 index 0000000..dd42a63 --- /dev/null +++ b/assets/html/doc/new__message_8c_source.html @@ -0,0 +1,146 @@ + + + + +Server: src/http/parser/new_message.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/http/parser/new_message.c

+
+
+Go to the documentation of this file.
00001 
+00023 #include "http/parser.h"
+00024 
+00025 #include "utils/http.h"
+00026 
+00027 void
+00028 httpParserNewMessage(
+00029                 HttpParser   this,
+00030                 const char * line,
+00031                 const char * lend)
+00032 {
+00033         const char * part1, * part2, * part3;
+00034         size_t       len1, len2, len3;
+00035 
+00036         part1 = line;
+00037         part2 = memchr(line, ' ', lend - line);
+00038 
+00039         if (NULL == part2) return;
+00040 
+00041         len1 = part2 - part1;
+00042         for (; *part2 == ' ' && *part2 != 0; part2++);
+00043 
+00044         part3 = memchr(part2, ' ', lend - part2);
+00045 
+00046         if (NULL == part3) return;
+00047 
+00048         len2 = part3 - part2;
+00049         for (; *part3 == ' ' && *part3 != 0; part3++);
+00050 
+00051         len3 = lend - part3;
+00052 
+00053         this->current = httpGetMessage(part1, len1, part2, len2, part3, len3);
+00054 }
+00055 
+00056 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/observer_8c.html b/assets/html/doc/observer_8c.html new file mode 100644 index 0000000..ede6627 --- /dev/null +++ b/assets/html/doc/observer_8c.html @@ -0,0 +1,170 @@ + + + + +Server: src/interface/observer.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/interface/observer.c File Reference

+
+
+
#include "class.h"
+#include "interface/observer.h"
+
+Include dependency graph for observer.c:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + +

+Functions

void observerNotify (void *observer, void *subject)
+

Detailed Description

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file observer.c.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
void observerNotify (void * observer,
void * subject 
)
+
+
+ +

Definition at line 32 of file observer.c.

+
{
+        CALL(observer, Observer, notify, subject);
+}
+
+
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/observer_8c_source.html b/assets/html/doc/observer_8c_source.html new file mode 100644 index 0000000..7113a7b --- /dev/null +++ b/assets/html/doc/observer_8c_source.html @@ -0,0 +1,127 @@ + + + + +Server: src/interface/observer.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/interface/observer.c

+
+
+Go to the documentation of this file.
00001 
+00023 #include "class.h"
+00024 #include "interface/observer.h"
+00025 
+00026 const struct interface i_Observer = {
+00027         "observer",
+00028         1
+00029 };
+00030 
+00031 void
+00032 observerNotify(void * observer, void * subject)
+00033 {
+00034         CALL(observer, Observer, notify, subject);
+00035 }
+00036 
+00037 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/observer_8h.html b/assets/html/doc/observer_8h.html new file mode 100644 index 0000000..82d9530 --- /dev/null +++ b/assets/html/doc/observer_8h.html @@ -0,0 +1,186 @@ + + + + +Server: include/interface/observer.h File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

include/interface/observer.h File Reference

+
+
+ +

Go to the source code of this file.

+ + + + + + + +

+Data Structures

struct  i_Observer

+Typedefs

typedef void(* fptr_observerNotify )(void *, void *)

+Functions

void observerNotify (void *, void *)
+

Detailed Description

+

Definition of the observer pattern implementation.

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file observer.h.

+

Typedef Documentation

+ +
+
+ + + + +
typedef void(* fptr_observerNotify)(void *, void *)
+
+
+ +

Definition at line 27 of file observer.h.

+ +
+
+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
void observerNotify (void * ,
void *  
)
+
+
+ +

Definition at line 32 of file observer.c.

+
{
+        CALL(observer, Observer, notify, subject);
+}
+
+
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/observer_8h_source.html b/assets/html/doc/observer_8h_source.html new file mode 100644 index 0000000..ac40856 --- /dev/null +++ b/assets/html/doc/observer_8h_source.html @@ -0,0 +1,129 @@ + + + + +Server: include/interface/observer.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

include/interface/observer.h

+
+
+Go to the documentation of this file.
00001 
+00024 #ifndef __OBSERVER_H__
+00025 #define __OBSERVER_H__
+00026 
+00027 typedef void (* fptr_observerNotify)(void *, void*);
+00028 
+00029 extern const struct interface i_Observer;
+00030 
+00031 struct i_Observer {
+00032         const struct interface * const _;
+00033         fptr_observerNotify      notify;
+00034 };
+00035 
+00036 extern void observerNotify(void *, void *);
+00037 
+00038 #endif // __OBSERVER_H__
+00039 
+00040 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/p__body_8c.html b/assets/html/doc/p__body_8c.html new file mode 100644 index 0000000..28de6e7 --- /dev/null +++ b/assets/html/doc/p__body_8c.html @@ -0,0 +1,201 @@ + + + + +Server: src/http/parser/p_body.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/http/parser/p_body.c File Reference

+
+
+
#include <stdlib.h>
+#include <sys/types.h>
+#include "http/header.h"
+#include "http/message.h"
+#include "http/parser.h"
+#include "cbuf.h"
+#include "commons.h"
+
+Include dependency graph for p_body.c:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + +

+Functions

size_t httpParserBody (HttpParser this, const char *buf, size_t nbuf)
+

Detailed Description

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file p_body.c.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
size_t httpParserBody (HttpParser this,
const char * buf,
size_t nbuf 
)
+
+
+ +

Definition at line 34 of file p_body.c.

+
{
+        size_t      len     = 0;
+        HttpMessage current = this->current;
+
+        if (current->dbody < current->nbody) {
+                len = MIN(current->nbody - current->dbody, nbuf);
+
+                memcpy(current->body, buf, len);
+
+                current->dbody += len;
+        }
+
+        return len;
+}
+
+

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/p__body_8c_source.html b/assets/html/doc/p__body_8c_source.html new file mode 100644 index 0000000..67e901f --- /dev/null +++ b/assets/html/doc/p__body_8c_source.html @@ -0,0 +1,140 @@ + + + + +Server: src/http/parser/p_body.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/http/parser/p_body.c

+
+
+Go to the documentation of this file.
00001 
+00023 #include <stdlib.h>
+00024 #include <sys/types.h>
+00025 
+00026 #include "http/header.h"
+00027 #include "http/message.h"
+00028 #include "http/parser.h"
+00029 #include "cbuf.h"
+00030 
+00031 #include "commons.h"
+00032 
+00033 size_t
+00034 httpParserBody(HttpParser this, const char * buf, size_t nbuf)
+00035 {
+00036         size_t      len     = 0;
+00037         HttpMessage current = this->current;
+00038 
+00039         if (current->dbody < current->nbody) {
+00040                 len = MIN(current->nbody - current->dbody, nbuf);
+00041 
+00042                 memcpy(current->body, buf, len);
+00043 
+00044                 current->dbody += len;
+00045         }
+00046 
+00047         return len;
+00048 }
+00049 
+00050 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/p__header_8c.html b/assets/html/doc/p__header_8c.html new file mode 100644 index 0000000..8662950 --- /dev/null +++ b/assets/html/doc/p__header_8c.html @@ -0,0 +1,261 @@ + + + + +Server: src/http/parser/p_header.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/http/parser/p_header.c File Reference

+
+
+
#include <stdlib.h>
+#include <string.h>
+#include <sys/types.h>
+#include "class.h"
+#include "http/header.h"
+#include "http/parser.h"
+#include "http/message.h"
+#include "http/request.h"
+#include "hash.h"
+
+Include dependency graph for p_header.c:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + +

+Functions

void httpParserHeader (HttpParser this, const char *line, const char *lend)
+

Detailed Description

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file p_header.c.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void httpParserHeader (HttpParser this,
const char * line,
const char * lend 
)
+
+
+ +

Definition at line 35 of file p_header.c.

+
{
+        const char * name    = line;
+        char *       value   = memchr(line, ':', lend - line);
+        size_t       nname   = (value++) - name;
+        HttpMessage  current = this->current;
+
+        if (NULL == value) {
+                return;
+        }
+
+        for (; *value == ' ' && value < lend; value++);
+
+        if (value == lend) {
+                return;
+        }
+
+        if (0 == strncasecmp("content-length", name, nname-1)) {
+                current->nbody = strtoul(value, NULL, 10);
+                if (0 < this->current->nbody) {
+                        current->body  = malloc(current->nbody);
+                }
+                current->dbody = 0;
+        }
+
+        if (0 == strncasecmp("cookie", name, nname-1)) {
+                HttpRequest request = (HttpRequest)this->current;
+                char *  pair = value;
+                ssize_t togo = lend - value;
+
+                while(NULL != pair && 0 < togo) {
+                        char * key    = pair;
+                        char * eqsign;
+                        char * val;
+                        size_t nval;
+
+                        for (; *key == ' ' && key < lend; key++, togo--);
+                        eqsign = memchr(key, '=', togo);
+
+                        if (NULL == eqsign) {
+                                break;
+                        }
+
+                        togo -= (eqsign - key);
+                        pair  = memchr(eqsign, ';', togo);
+
+                        if (NULL == pair) {
+                                pair = (char *)lend;
+                        }
+
+                        nval = pair-eqsign-1;
+                        val  = (0 != nval)? eqsign+1 : NULL;
+
+                        hashAdd(request->cookies,
+                                        new(HashValue, key, eqsign-key, val, nval));
+
+                        pair++;
+                        togo -= (pair - eqsign);
+                }
+        }
+
+        hashAdd(current->header,
+                        new(HttpHeader, name, nname, value, lend - value));
+}
+
+

+Here is the call graph for this function:
+
+
+ + +
+

+ +

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/p__header_8c_source.html b/assets/html/doc/p__header_8c_source.html new file mode 100644 index 0000000..fe3c6d2 --- /dev/null +++ b/assets/html/doc/p__header_8c_source.html @@ -0,0 +1,193 @@ + + + + +Server: src/http/parser/p_header.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/http/parser/p_header.c

+
+
+Go to the documentation of this file.
00001 
+00023 #include <stdlib.h>
+00024 #include <string.h>
+00025 #include <sys/types.h>
+00026 
+00027 #include "class.h"
+00028 #include "http/header.h"
+00029 #include "http/parser.h"
+00030 #include "http/message.h"
+00031 #include "http/request.h"
+00032 #include "hash.h"
+00033 
+00034 void
+00035 httpParserHeader(
+00036                 HttpParser   this,
+00037                 const char * line,
+00038                 const char * lend)
+00039 {
+00040         const char * name    = line;
+00041         char *       value   = memchr(line, ':', lend - line);
+00042         size_t       nname   = (value++) - name;
+00043         HttpMessage  current = this->current;
+00044 
+00045         if (NULL == value) {
+00046                 return;
+00047         }
+00048 
+00049         for (; *value == ' ' && value < lend; value++);
+00050 
+00051         if (value == lend) {
+00052                 return;
+00053         }
+00054 
+00055         if (0 == strncasecmp("content-length", name, nname-1)) {
+00056                 current->nbody = strtoul(value, NULL, 10);
+00057                 if (0 < this->current->nbody) {
+00058                         current->body  = malloc(current->nbody);
+00059                 }
+00060                 current->dbody = 0;
+00061         }
+00062 
+00063         if (0 == strncasecmp("cookie", name, nname-1)) {
+00064                 HttpRequest request = (HttpRequest)this->current;
+00065                 char *  pair = value;
+00066                 ssize_t togo = lend - value;
+00067 
+00068                 while(NULL != pair && 0 < togo) {
+00069                         char * key    = pair;
+00070                         char * eqsign;
+00071                         char * val;
+00072                         size_t nval;
+00073 
+00074                         for (; *key == ' ' && key < lend; key++, togo--);
+00075                         eqsign = memchr(key, '=', togo);
+00076 
+00077                         if (NULL == eqsign) {
+00078                                 break;
+00079                         }
+00080 
+00081                         togo -= (eqsign - key);
+00082                         pair  = memchr(eqsign, ';', togo);
+00083 
+00084                         if (NULL == pair) {
+00085                                 pair = (char *)lend;
+00086                         }
+00087 
+00088                         nval = pair-eqsign-1;
+00089                         val  = (0 != nval)? eqsign+1 : NULL;
+00090 
+00091                         hashAdd(request->cookies,
+00092                                         new(HashValue, key, eqsign-key, val, nval));
+00093 
+00094                         pair++;
+00095                         togo -= (pair - eqsign);
+00096                 }
+00097         }
+00098 
+00099         hashAdd(current->header,
+00100                         new(HttpHeader, name, nname, value, lend - value));
+00101 }
+00102 
+00103 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/p__post__vars_8c.html b/assets/html/doc/p__post__vars_8c.html new file mode 100644 index 0000000..65eaae5 --- /dev/null +++ b/assets/html/doc/p__post__vars_8c.html @@ -0,0 +1,212 @@ + + + + +Server: src/http/parser/p_post_vars.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/http/parser/p_post_vars.c File Reference

+
+
+
#include <string.h>
+#include <sys/types.h>
+#include "http/parser.h"
+#include "http/request.h"
+#include "hash.h"
+#include "class.h"
+
+Include dependency graph for p_post_vars.c:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + +

+Functions

void httpParserPostVars (HttpParser this)
+

Detailed Description

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file p_post_vars.c.

+

Function Documentation

+ +
+
+ + + + + + + + +
void httpParserPostVars (HttpParser this)
+
+
+
Todo:
this is very similar to other pair parsing things... key1=val1<delim>key2=val2<delim>...keyn=valn Generalize this!!!!
+ +

Definition at line 37 of file p_post_vars.c.

+
{
+        HttpRequest request = (HttpRequest)this->current;
+        char *      pair    = this->current->body;
+        ssize_t     togo    = this->current->nbody;
+
+        while(NULL != pair && 0 < togo) {
+                char * key    = pair;
+                char * eqsign = memchr(key, '=', togo);
+                char * value;
+                size_t nvalue;
+
+                if (NULL == eqsign) {
+                        return;
+                }
+
+                togo -= (eqsign - key);
+                pair  = memchr(eqsign, '&', togo);
+
+                if (NULL == pair) {
+                        pair = &(this->current->body[this->current->nbody]);
+                }
+
+                nvalue = pair-eqsign-1;
+                value  = (0 != nvalue)? eqsign+1 : NULL;
+
+                hashAdd(request->post,
+                                new(HashValue, key, eqsign-key, value, nvalue));
+
+                pair++;
+                togo -= (pair - eqsign);
+        }
+}
+
+

+Here is the call graph for this function:
+
+
+ + +
+

+ +

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/p__post__vars_8c_source.html b/assets/html/doc/p__post__vars_8c_source.html new file mode 100644 index 0000000..153bc3c --- /dev/null +++ b/assets/html/doc/p__post__vars_8c_source.html @@ -0,0 +1,156 @@ + + + + +Server: src/http/parser/p_post_vars.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/http/parser/p_post_vars.c

+
+
+Go to the documentation of this file.
00001 
+00023 #include <string.h>
+00024 #include <sys/types.h>
+00025 
+00026 #include "http/parser.h"
+00027 #include "http/request.h"
+00028 #include "hash.h"
+00029 #include "class.h"
+00030 
+00036 void
+00037 httpParserPostVars(HttpParser this)
+00038 {
+00039         HttpRequest request = (HttpRequest)this->current;
+00040         char *      pair    = this->current->body;
+00041         ssize_t     togo    = this->current->nbody;
+00042 
+00043         while(NULL != pair && 0 < togo) {
+00044                 char * key    = pair;
+00045                 char * eqsign = memchr(key, '=', togo);
+00046                 char * value;
+00047                 size_t nvalue;
+00048 
+00049                 if (NULL == eqsign) {
+00050                         return;
+00051                 }
+00052 
+00053                 togo -= (eqsign - key);
+00054                 pair  = memchr(eqsign, '&', togo);
+00055 
+00056                 if (NULL == pair) {
+00057                         pair = &(this->current->body[this->current->nbody]);
+00058                 }
+00059 
+00060                 nvalue = pair-eqsign-1;
+00061                 value  = (0 != nvalue)? eqsign+1 : NULL;
+00062 
+00063                 hashAdd(request->post,
+00064                                 new(HashValue, key, eqsign-key, value, nvalue));
+00065 
+00066                 pair++;
+00067                 togo -= (pair - eqsign);
+00068         }
+00069 }
+00070 
+00071 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/p__request__vars_8c.html b/assets/html/doc/p__request__vars_8c.html new file mode 100644 index 0000000..31b2683 --- /dev/null +++ b/assets/html/doc/p__request__vars_8c.html @@ -0,0 +1,215 @@ + + + + +Server: src/http/parser/p_request_vars.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/http/parser/p_request_vars.c File Reference

+
+
+
#include <stdlib.h>
+#include <string.h>
+#include <sys/types.h>
+#include "http/parser.h"
+#include "http/request.h"
+#include "hash.h"
+#include "class.h"
+
+Include dependency graph for p_request_vars.c:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + +

+Functions

void httpParserRequestVars (HttpParser this)
+

Detailed Description

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file p_request_vars.c.

+

Function Documentation

+ +
+
+ + + + + + + + +
void httpParserRequestVars (HttpParser this)
+
+
+ +

Definition at line 33 of file p_request_vars.c.

+
{
+        HttpRequest request = (HttpRequest)this->current;
+        char *      delim   = strchr(request->uri, '?');
+
+        if (NULL == delim) {
+                delim = request->uri + strlen(request->uri);
+        }
+
+        request->path = malloc(delim - request->uri + 1);
+        request->path[delim - request->uri] = 0;
+        memcpy(request->path, request->uri, delim - request->uri);
+
+        while(NULL != delim && 0 != *delim) {
+                char * key    = delim + 1;
+                char * eqsign = strchr(key, '=');
+                char * value;
+                size_t nvalue;
+
+                if (NULL == eqsign) {
+                        return;
+                }
+
+                delim  = strchr(eqsign, '&');
+
+                if (NULL == delim) {
+                        delim = key + strlen(key);
+                }
+
+                nvalue = delim-eqsign-1;
+                value  = (0 != nvalue)? eqsign+1 : NULL;
+
+                hashAdd(request->get,
+                                new(HashValue, key, eqsign-key, value, nvalue));
+        }
+}
+
+

+Here is the call graph for this function:
+
+
+ + +
+

+ +

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/p__request__vars_8c_source.html b/assets/html/doc/p__request__vars_8c_source.html new file mode 100644 index 0000000..701b943 --- /dev/null +++ b/assets/html/doc/p__request__vars_8c_source.html @@ -0,0 +1,160 @@ + + + + +Server: src/http/parser/p_request_vars.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/http/parser/p_request_vars.c

+
+
+Go to the documentation of this file.
00001 
+00023 #include <stdlib.h>
+00024 #include <string.h>
+00025 #include <sys/types.h>
+00026 
+00027 #include "http/parser.h"
+00028 #include "http/request.h"
+00029 #include "hash.h"
+00030 #include "class.h"
+00031 
+00032 void
+00033 httpParserRequestVars(HttpParser this)
+00034 {
+00035         HttpRequest request = (HttpRequest)this->current;
+00036         char *      delim   = strchr(request->uri, '?');
+00037 
+00038         if (NULL == delim) {
+00039                 delim = request->uri + strlen(request->uri);
+00040         }
+00041 
+00042         request->path = malloc(delim - request->uri + 1);
+00043         request->path[delim - request->uri] = 0;
+00044         memcpy(request->path, request->uri, delim - request->uri);
+00045 
+00046         while(NULL != delim && 0 != *delim) {
+00047                 char * key    = delim + 1;
+00048                 char * eqsign = strchr(key, '=');
+00049                 char * value;
+00050                 size_t nvalue;
+00051 
+00052                 if (NULL == eqsign) {
+00053                         return;
+00054                 }
+00055 
+00056                 delim  = strchr(eqsign, '&');
+00057 
+00058                 if (NULL == delim) {
+00059                         delim = key + strlen(key);
+00060                 }
+00061 
+00062                 nvalue = delim-eqsign-1;
+00063                 value  = (0 != nvalue)? eqsign+1 : NULL;
+00064 
+00065                 hashAdd(request->get,
+00066                                 new(HashValue, key, eqsign-key, value, nvalue));
+00067         }
+00068 }
+00069 
+00070 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/pages.html b/assets/html/doc/pages.html new file mode 100644 index 0000000..79a2c0b --- /dev/null +++ b/assets/html/doc/pages.html @@ -0,0 +1,108 @@ + + + + +Server: Related Pages + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ +
+
+ +
+
+
+ +
+
+
+

Related Pages

+
+
+
Here is a list of all related documentation pages:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/parse_8c.html b/assets/html/doc/parse_8c.html new file mode 100644 index 0000000..f68214b --- /dev/null +++ b/assets/html/doc/parse_8c.html @@ -0,0 +1,371 @@ + + + + +Server: src/http/parser/parse.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/http/parser/parse.c File Reference

+
+
+
#include <stdlib.h>
+#include "class.h"
+#include "cbuf.h"
+#include "stream.h"
+#include "http/parser.h"
+#include "http/header.h"
+#include "http/interface/http_intro.h"
+#include "utils/memory.h"
+#include "commons.h"
+
+Include dependency graph for parse.c:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + + + +

+Defines

#define MIN(a, b)   ((a)<(b)? (a) : (b))

+Functions

ssize_t httpParserParse (void *_this, Stream st)
+

Detailed Description

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file parse.c.

+

Define Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define MIN( a,
 
)   ((a)<(b)? (a) : (b))
+
+
+ +

Definition at line 36 of file parse.c.

+ +
+
+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
ssize_t httpParserParse (void * _this,
Stream st 
)
+
+
+ +

do we have form data??

+

> then parse them...

+

enqueue current request

+

prepare for next request

+

+ +

Definition at line 40 of file parse.c.

+
{
+        HttpParser this = _this;
+        int        cont = 1;
+        ssize_t    read;
+        char *     line;
+        char *     line_end;
+
+        if (cbufIsLocked(this->buffer)) {
+                if (FALSE == this->ourLock)
+                        return 0;
+        }
+        else {
+                cbufLock(this->buffer);
+                this->ourLock = TRUE;
+        }
+
+        if (NULL != this->incomplete) {
+                cbufSetData(this->buffer, this->incomplete, this->isize);
+                free(this->incomplete);
+                this->incomplete = NULL;
+        }
+
+        if (0 > (read = cbufRead(this->buffer, st))) {
+                return read;
+        }
+
+        while (cont) {
+                switch(this->state) {
+                        case HTTP_MESSAGE_GARBAGE:
+                                cbufSkipNonAlpha(this->buffer);
+                                if (! cbufIsEmpty(this->buffer)) {
+                                        this->state = HTTP_MESSAGE_START;
+                                }
+                                else {
+                                        cbufRelease(this->buffer);
+                                        this->ourLock = FALSE;
+                                        cont          = 0;
+                                }
+
+                                break;
+
+                        case HTTP_MESSAGE_START:
+                                if (NULL == (line = cbufGetLine(this->buffer, &line_end))) {
+                                        if (! cbufIsEmpty(this->buffer)) {
+                                                this->isize = this->buffer->bused;
+                                                this->incomplete = malloc(this->isize);
+                                                memcpy(this->incomplete,
+                                                                cbufGetData(this->buffer, this->isize),
+                                                                this->isize);
+                                        }
+                                        cbufRelease(this->buffer);
+                                        this->ourLock = FALSE;
+                                        cont = 0;
+                                        break;
+                                }
+                                
+                                httpParserNewMessage(this, line, line_end);
+                                if (NULL == this->current) {
+                                        cbufRelease(this->buffer);
+                                        this->ourLock = FALSE;
+                                        return -1;
+                                }
+                                httpParserRequestVars(this);
+
+                                this->state = HTTP_MESSAGE_INTRO_DONE;
+                                break;
+
+                        case HTTP_MESSAGE_INTRO_DONE:
+                                if (NULL == (line = cbufGetLine(this->buffer, &line_end))) {
+                                        if (! cbufIsEmpty(this->buffer)) {
+                                                this->isize = this->buffer->bused;
+                                                this->incomplete = malloc(this->isize);
+                                                memcpy(this->incomplete,
+                                                                cbufGetData(this->buffer, this->isize),
+                                                                this->isize);
+                                        }
+                                        cbufRelease(this->buffer);
+                                        this->ourLock = FALSE;
+                                        cont = 0;
+                                        break;
+                                }
+
+                                if (0 == strlen(line)) {
+                                        this->state = HTTP_MESSAGE_HEADERS_DONE;
+                                        break;
+                                }
+
+                                httpParserHeader(this, line, line_end);
+                                break;
+
+                        case HTTP_MESSAGE_HEADERS_DONE:
+                                if (this->current->dbody == this->current->nbody) {
+                                        this->state = HTTP_MESSAGE_DONE;
+                                        break;
+                                }
+
+                                if (cbufIsEmpty(this->buffer)) {
+                                        cbufRelease(this->buffer);
+                                        this->ourLock = FALSE;
+                                        cont = 0;
+                                        break;
+                                }
+
+                                cbufIncRead(
+                                                this->buffer,
+                                                httpParserBody(
+                                                        this,
+                                                        cbufGetRead(this->buffer),
+                                                        this->buffer->bused));
+                                break;
+
+                        case HTTP_MESSAGE_DONE:
+                                {
+                                        HttpHeader enc = hashGet(
+                                                        this->current->header,
+                                                        CSTRA("content-type"));
+
+                                        if (NULL != enc && 0 == strncasecmp(
+                                                                "application/x-www-form-urlencoded",
+                                                                enc->value[0],
+                                                                MIN(sizeof("application/x-www-form-urlencoded")-1,
+                                                                        enc->nvalue[0]))) {
+                                                httpParserPostVars(this);
+                                        }
+
+                                this->queue->msgs[(this->queue->nmsgs)++] = this->current;
+                                this->current                             = NULL;
+
+                                this->state = HTTP_MESSAGE_GARBAGE;
+                                }
+                                break;
+
+                        default:
+                                break;
+                }
+        }
+
+        return this->queue->nmsgs;
+}
+
+

+Here is the call graph for this function:
+
+
+ + +
+

+ +

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/parse_8c_source.html b/assets/html/doc/parse_8c_source.html new file mode 100644 index 0000000..ed445d4 --- /dev/null +++ b/assets/html/doc/parse_8c_source.html @@ -0,0 +1,271 @@ + + + + +Server: src/http/parser/parse.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/http/parser/parse.c

+
+
+Go to the documentation of this file.
00001 
+00023 #include <stdlib.h>
+00024 
+00025 #include "class.h"
+00026 #include "cbuf.h"
+00027 #include "stream.h"
+00028 
+00029 #include "http/parser.h"
+00030 #include "http/header.h"
+00031 #include "http/interface/http_intro.h"
+00032 
+00033 #include "utils/memory.h"
+00034 #include "commons.h"
+00035 
+00036 #define MIN(a,b)        ((a)<(b)? (a) : (b))
+00037 
+00038 
+00039 ssize_t
+00040 httpParserParse(void * _this, Stream st)
+00041 {
+00042         HttpParser this = _this;
+00043         int        cont = 1;
+00044         ssize_t    read;
+00045         char *     line;
+00046         char *     line_end;
+00047 
+00048         if (cbufIsLocked(this->buffer)) {
+00049                 if (FALSE == this->ourLock)
+00050                         return 0;
+00051         }
+00052         else {
+00053                 cbufLock(this->buffer);
+00054                 this->ourLock = TRUE;
+00055         }
+00056 
+00057         if (NULL != this->incomplete) {
+00058                 cbufSetData(this->buffer, this->incomplete, this->isize);
+00059                 free(this->incomplete);
+00060                 this->incomplete = NULL;
+00061         }
+00062 
+00063         if (0 > (read = cbufRead(this->buffer, st))) {
+00064                 return read;
+00065         }
+00066 
+00067         while (cont) {
+00068                 switch(this->state) {
+00069                         case HTTP_MESSAGE_GARBAGE:
+00070                                 cbufSkipNonAlpha(this->buffer);
+00071                                 if (! cbufIsEmpty(this->buffer)) {
+00072                                         this->state = HTTP_MESSAGE_START;
+00073                                 }
+00074                                 else {
+00075                                         cbufRelease(this->buffer);
+00076                                         this->ourLock = FALSE;
+00077                                         cont          = 0;
+00078                                 }
+00079 
+00080                                 break;
+00081 
+00082                         case HTTP_MESSAGE_START:
+00083                                 if (NULL == (line = cbufGetLine(this->buffer, &line_end))) {
+00084                                         if (! cbufIsEmpty(this->buffer)) {
+00085                                                 this->isize = this->buffer->bused;
+00086                                                 this->incomplete = malloc(this->isize);
+00087                                                 memcpy(this->incomplete,
+00088                                                                 cbufGetData(this->buffer, this->isize),
+00089                                                                 this->isize);
+00090                                         }
+00091                                         cbufRelease(this->buffer);
+00092                                         this->ourLock = FALSE;
+00093                                         cont = 0;
+00094                                         break;
+00095                                 }
+00096                                 
+00097                                 httpParserNewMessage(this, line, line_end);
+00098                                 if (NULL == this->current) {
+00099                                         cbufRelease(this->buffer);
+00100                                         this->ourLock = FALSE;
+00101                                         return -1;
+00102                                 }
+00103                                 httpParserRequestVars(this);
+00104 
+00105                                 this->state = HTTP_MESSAGE_INTRO_DONE;
+00106                                 break;
+00107 
+00108                         case HTTP_MESSAGE_INTRO_DONE:
+00109                                 if (NULL == (line = cbufGetLine(this->buffer, &line_end))) {
+00110                                         if (! cbufIsEmpty(this->buffer)) {
+00111                                                 this->isize = this->buffer->bused;
+00112                                                 this->incomplete = malloc(this->isize);
+00113                                                 memcpy(this->incomplete,
+00114                                                                 cbufGetData(this->buffer, this->isize),
+00115                                                                 this->isize);
+00116                                         }
+00117                                         cbufRelease(this->buffer);
+00118                                         this->ourLock = FALSE;
+00119                                         cont = 0;
+00120                                         break;
+00121                                 }
+00122 
+00123                                 if (0 == strlen(line)) {
+00124                                         this->state = HTTP_MESSAGE_HEADERS_DONE;
+00125                                         break;
+00126                                 }
+00127 
+00128                                 httpParserHeader(this, line, line_end);
+00129                                 break;
+00130 
+00131                         case HTTP_MESSAGE_HEADERS_DONE:
+00132                                 if (this->current->dbody == this->current->nbody) {
+00133                                         this->state = HTTP_MESSAGE_DONE;
+00134                                         break;
+00135                                 }
+00136 
+00137                                 if (cbufIsEmpty(this->buffer)) {
+00138                                         cbufRelease(this->buffer);
+00139                                         this->ourLock = FALSE;
+00140                                         cont = 0;
+00141                                         break;
+00142                                 }
+00143 
+00144                                 cbufIncRead(
+00145                                                 this->buffer,
+00146                                                 httpParserBody(
+00147                                                         this,
+00148                                                         cbufGetRead(this->buffer),
+00149                                                         this->buffer->bused));
+00150                                 break;
+00151 
+00152                         case HTTP_MESSAGE_DONE:
+00153                                 {
+00154                                         HttpHeader enc = hashGet(
+00155                                                         this->current->header,
+00156                                                         CSTRA("content-type"));
+00157 
+00161                                         if (NULL != enc && 0 == strncasecmp(
+00162                                                                 "application/x-www-form-urlencoded",
+00163                                                                 enc->value[0],
+00164                                                                 MIN(sizeof("application/x-www-form-urlencoded")-1,
+00165                                                                         enc->nvalue[0]))) {
+00167                                                 httpParserPostVars(this);
+00168                                         }
+00169 
+00173                                 this->queue->msgs[(this->queue->nmsgs)++] = this->current;
+00174                                 this->current                             = NULL;
+00175 
+00179                                 this->state = HTTP_MESSAGE_GARBAGE;
+00180                                 }
+00181                                 break;
+00182 
+00183                         default:
+00184                                 break;
+00185                 }
+00186         }
+00187 
+00188         return this->queue->nmsgs;
+00189 }
+00190 
+00191 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/parser_8c.html b/assets/html/doc/parser_8c.html new file mode 100644 index 0000000..f440dde --- /dev/null +++ b/assets/html/doc/parser_8c.html @@ -0,0 +1,254 @@ + + + + +Server: src/http/parser.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/http/parser.c File Reference

+
+
+
#include <stdlib.h>
+#include <sys/types.h>
+#include <stdarg.h>
+#include "class.h"
+#include "stream.h"
+#include "http/parser.h"
+#include "http/message/queue.h"
+#include "http/request.h"
+#include "http/response.h"
+#include "cbuf.h"
+#include "utils/memory.h"
+
+Include dependency graph for parser.c:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + + + +

+Functions

 INIT_IFACE (Class, httpParserCtor, httpParserDtor, NULL)
 INIT_IFACE (StreamReader, httpParserParse)
 CREATE_CLASS (HttpParser, NULL, IFACE(Class), IFACE(StreamReader))
+

Detailed Description

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file parser.c.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CREATE_CLASS (HttpParser ,
NULL ,
IFACE(Class) ,
IFACE(StreamReader)  
)
+
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
INIT_IFACE (Class ,
httpParserCtor ,
httpParserDtor ,
NULL  
)
+
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
INIT_IFACE (StreamReader ,
httpParserParse  
)
+
+
+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/parser_8c_source.html b/assets/html/doc/parser_8c_source.html new file mode 100644 index 0000000..c3eae5c --- /dev/null +++ b/assets/html/doc/parser_8c_source.html @@ -0,0 +1,165 @@ + + + + +Server: src/http/parser.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/http/parser.c

+
+
+Go to the documentation of this file.
00001 
+00023 #include <stdlib.h>
+00024 #include <sys/types.h>
+00025 #include <stdarg.h>
+00026 
+00027 #include "class.h"
+00028 #include "stream.h"
+00029 
+00030 #include "http/parser.h"
+00031 #include "http/message/queue.h"
+00032 #include "http/request.h"
+00033 #include "http/response.h"
+00034 #include "cbuf.h"
+00035 
+00036 #include "utils/memory.h"
+00037 
+00038 
+00039 static
+00040 int
+00041 httpParserCtor(void * _this, va_list * params)
+00042 {
+00043         HttpParser this = _this;
+00044 
+00045         this->buffer = va_arg(* params, Cbuf);
+00046 
+00047         if (NULL == this->buffer) {
+00048                 return -1;
+00049         }
+00050 
+00051         this->queue = new(HttpMessageQueue);
+00052 
+00053         return 0;
+00054 }
+00055 
+00056 static
+00057 void
+00058 httpParserDtor(void * _this)
+00059 {
+00060         HttpParser this = _this;
+00061 
+00062         delete(this->queue);
+00063 
+00064         if (TRUE == this->ourLock)
+00065                 cbufRelease(this->buffer);
+00066 
+00067         FREE(this->incomplete);
+00068         delete(this->current);
+00069 } 
+00070 
+00071 INIT_IFACE(Class, httpParserCtor, httpParserDtor, NULL);
+00072 INIT_IFACE(StreamReader, httpParserParse);
+00073 CREATE_CLASS(HttpParser, NULL, IFACE(Class), IFACE(StreamReader));
+00074 
+00075 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/parser_8h.html b/assets/html/doc/parser_8h.html new file mode 100644 index 0000000..b993097 --- /dev/null +++ b/assets/html/doc/parser_8h.html @@ -0,0 +1,830 @@ + + + + +Server: include/http/parser.h File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

include/http/parser.h File Reference

+
+
+
#include "class.h"
+#include "http/message.h"
+#include "http/message/queue.h"
+#include "cbuf.h"
+#include "stream.h"
+#include "commons.h"
+
+Include dependency graph for parser.h:
+
+
+ + +
+
+This graph shows which files directly or indirectly include this file:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + + + + + + + + + + + + + + +

+Data Structures

struct  HttpParser

+Defines

#define PARSER_MAX_BUF   131072

+Typedefs

typedef enum e_HttpMessageState HttpMessageState

+Enumerations

enum  e_HttpMessageState {
+  HTTP_MESSAGE_GARBAGE = 0, +HTTP_MESSAGE_START, +HTTP_MESSAGE_INTRO_DONE, +HTTP_MESSAGE_HEADERS_DONE, +
+  HTTP_MESSAGE_DONE +
+ }

+Functions

ssize_t httpParserParse (void *, Stream)
void httpParserRequestVars (HttpParser)
void httpParserHeader (HttpParser, const char *, const char *)
void httpParserNewMessage (HttpParser, const char *, const char *lend)
size_t httpParserBody (HttpParser, const char *, size_t)
void httpParserPostVars (HttpParser)
+

Detailed Description

+

Parse requests from an input stream.

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file parser.h.

+

Define Documentation

+ +
+
+ + + + +
#define PARSER_MAX_BUF   131072
+
+
+ +

Definition at line 35 of file parser.h.

+ +
+
+

Typedef Documentation

+ +
+
+ + + + +
typedef enum e_HttpMessageState HttpMessageState
+
+
+ +
+
+

Enumeration Type Documentation

+ +
+
+ + + + +
enum e_HttpMessageState
+
+
+
Enumerator:
+ + + + + +
HTTP_MESSAGE_GARBAGE  +
HTTP_MESSAGE_START  +
HTTP_MESSAGE_INTRO_DONE  +
HTTP_MESSAGE_HEADERS_DONE  +
HTTP_MESSAGE_DONE  +
+
+
+ +

Definition at line 38 of file parser.h.

+ +
+
+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
size_t httpParserBody (HttpParser ,
const char * ,
size_t  
)
+
+
+ +

Definition at line 34 of file p_body.c.

+
{
+        size_t      len     = 0;
+        HttpMessage current = this->current;
+
+        if (current->dbody < current->nbody) {
+                len = MIN(current->nbody - current->dbody, nbuf);
+
+                memcpy(current->body, buf, len);
+
+                current->dbody += len;
+        }
+
+        return len;
+}
+
+

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void httpParserHeader (HttpParser ,
const char * ,
const char *  
)
+
+
+ +

Definition at line 35 of file p_header.c.

+
{
+        const char * name    = line;
+        char *       value   = memchr(line, ':', lend - line);
+        size_t       nname   = (value++) - name;
+        HttpMessage  current = this->current;
+
+        if (NULL == value) {
+                return;
+        }
+
+        for (; *value == ' ' && value < lend; value++);
+
+        if (value == lend) {
+                return;
+        }
+
+        if (0 == strncasecmp("content-length", name, nname-1)) {
+                current->nbody = strtoul(value, NULL, 10);
+                if (0 < this->current->nbody) {
+                        current->body  = malloc(current->nbody);
+                }
+                current->dbody = 0;
+        }
+
+        if (0 == strncasecmp("cookie", name, nname-1)) {
+                HttpRequest request = (HttpRequest)this->current;
+                char *  pair = value;
+                ssize_t togo = lend - value;
+
+                while(NULL != pair && 0 < togo) {
+                        char * key    = pair;
+                        char * eqsign;
+                        char * val;
+                        size_t nval;
+
+                        for (; *key == ' ' && key < lend; key++, togo--);
+                        eqsign = memchr(key, '=', togo);
+
+                        if (NULL == eqsign) {
+                                break;
+                        }
+
+                        togo -= (eqsign - key);
+                        pair  = memchr(eqsign, ';', togo);
+
+                        if (NULL == pair) {
+                                pair = (char *)lend;
+                        }
+
+                        nval = pair-eqsign-1;
+                        val  = (0 != nval)? eqsign+1 : NULL;
+
+                        hashAdd(request->cookies,
+                                        new(HashValue, key, eqsign-key, val, nval));
+
+                        pair++;
+                        togo -= (pair - eqsign);
+                }
+        }
+
+        hashAdd(current->header,
+                        new(HttpHeader, name, nname, value, lend - value));
+}
+
+

+Here is the call graph for this function:
+
+
+ + +
+

+ +

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void httpParserNewMessage (HttpParser ,
const char * ,
const char * lend 
)
+
+
+ +

Definition at line 28 of file new_message.c.

+
{
+        const char * part1, * part2, * part3;
+        size_t       len1, len2, len3;
+
+        part1 = line;
+        part2 = memchr(line, ' ', lend - line);
+
+        if (NULL == part2) return;
+
+        len1 = part2 - part1;
+        for (; *part2 == ' ' && *part2 != 0; part2++);
+
+        part3 = memchr(part2, ' ', lend - part2);
+
+        if (NULL == part3) return;
+
+        len2 = part3 - part2;
+        for (; *part3 == ' ' && *part3 != 0; part3++);
+
+        len3 = lend - part3;
+
+        this->current = httpGetMessage(part1, len1, part2, len2, part3, len3);
+}
+
+

+Here is the call graph for this function:
+
+
+ + +
+

+ +

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
ssize_t httpParserParse (void * ,
Stream  
)
+
+
+ +

do we have form data??

+

> then parse them...

+

enqueue current request

+

prepare for next request

+

+ +

Definition at line 40 of file parse.c.

+
{
+        HttpParser this = _this;
+        int        cont = 1;
+        ssize_t    read;
+        char *     line;
+        char *     line_end;
+
+        if (cbufIsLocked(this->buffer)) {
+                if (FALSE == this->ourLock)
+                        return 0;
+        }
+        else {
+                cbufLock(this->buffer);
+                this->ourLock = TRUE;
+        }
+
+        if (NULL != this->incomplete) {
+                cbufSetData(this->buffer, this->incomplete, this->isize);
+                free(this->incomplete);
+                this->incomplete = NULL;
+        }
+
+        if (0 > (read = cbufRead(this->buffer, st))) {
+                return read;
+        }
+
+        while (cont) {
+                switch(this->state) {
+                        case HTTP_MESSAGE_GARBAGE:
+                                cbufSkipNonAlpha(this->buffer);
+                                if (! cbufIsEmpty(this->buffer)) {
+                                        this->state = HTTP_MESSAGE_START;
+                                }
+                                else {
+                                        cbufRelease(this->buffer);
+                                        this->ourLock = FALSE;
+                                        cont          = 0;
+                                }
+
+                                break;
+
+                        case HTTP_MESSAGE_START:
+                                if (NULL == (line = cbufGetLine(this->buffer, &line_end))) {
+                                        if (! cbufIsEmpty(this->buffer)) {
+                                                this->isize = this->buffer->bused;
+                                                this->incomplete = malloc(this->isize);
+                                                memcpy(this->incomplete,
+                                                                cbufGetData(this->buffer, this->isize),
+                                                                this->isize);
+                                        }
+                                        cbufRelease(this->buffer);
+                                        this->ourLock = FALSE;
+                                        cont = 0;
+                                        break;
+                                }
+                                
+                                httpParserNewMessage(this, line, line_end);
+                                if (NULL == this->current) {
+                                        cbufRelease(this->buffer);
+                                        this->ourLock = FALSE;
+                                        return -1;
+                                }
+                                httpParserRequestVars(this);
+
+                                this->state = HTTP_MESSAGE_INTRO_DONE;
+                                break;
+
+                        case HTTP_MESSAGE_INTRO_DONE:
+                                if (NULL == (line = cbufGetLine(this->buffer, &line_end))) {
+                                        if (! cbufIsEmpty(this->buffer)) {
+                                                this->isize = this->buffer->bused;
+                                                this->incomplete = malloc(this->isize);
+                                                memcpy(this->incomplete,
+                                                                cbufGetData(this->buffer, this->isize),
+                                                                this->isize);
+                                        }
+                                        cbufRelease(this->buffer);
+                                        this->ourLock = FALSE;
+                                        cont = 0;
+                                        break;
+                                }
+
+                                if (0 == strlen(line)) {
+                                        this->state = HTTP_MESSAGE_HEADERS_DONE;
+                                        break;
+                                }
+
+                                httpParserHeader(this, line, line_end);
+                                break;
+
+                        case HTTP_MESSAGE_HEADERS_DONE:
+                                if (this->current->dbody == this->current->nbody) {
+                                        this->state = HTTP_MESSAGE_DONE;
+                                        break;
+                                }
+
+                                if (cbufIsEmpty(this->buffer)) {
+                                        cbufRelease(this->buffer);
+                                        this->ourLock = FALSE;
+                                        cont = 0;
+                                        break;
+                                }
+
+                                cbufIncRead(
+                                                this->buffer,
+                                                httpParserBody(
+                                                        this,
+                                                        cbufGetRead(this->buffer),
+                                                        this->buffer->bused));
+                                break;
+
+                        case HTTP_MESSAGE_DONE:
+                                {
+                                        HttpHeader enc = hashGet(
+                                                        this->current->header,
+                                                        CSTRA("content-type"));
+
+                                        if (NULL != enc && 0 == strncasecmp(
+                                                                "application/x-www-form-urlencoded",
+                                                                enc->value[0],
+                                                                MIN(sizeof("application/x-www-form-urlencoded")-1,
+                                                                        enc->nvalue[0]))) {
+                                                httpParserPostVars(this);
+                                        }
+
+                                this->queue->msgs[(this->queue->nmsgs)++] = this->current;
+                                this->current                             = NULL;
+
+                                this->state = HTTP_MESSAGE_GARBAGE;
+                                }
+                                break;
+
+                        default:
+                                break;
+                }
+        }
+
+        return this->queue->nmsgs;
+}
+
+

+Here is the call graph for this function:
+
+
+ + +
+

+ +

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+ +
+
+ + + + + + + + +
void httpParserPostVars (HttpParser this)
+
+
+
Todo:
this is very similar to other pair parsing things... key1=val1<delim>key2=val2<delim>...keyn=valn Generalize this!!!!
+ +

Definition at line 37 of file p_post_vars.c.

+
{
+        HttpRequest request = (HttpRequest)this->current;
+        char *      pair    = this->current->body;
+        ssize_t     togo    = this->current->nbody;
+
+        while(NULL != pair && 0 < togo) {
+                char * key    = pair;
+                char * eqsign = memchr(key, '=', togo);
+                char * value;
+                size_t nvalue;
+
+                if (NULL == eqsign) {
+                        return;
+                }
+
+                togo -= (eqsign - key);
+                pair  = memchr(eqsign, '&', togo);
+
+                if (NULL == pair) {
+                        pair = &(this->current->body[this->current->nbody]);
+                }
+
+                nvalue = pair-eqsign-1;
+                value  = (0 != nvalue)? eqsign+1 : NULL;
+
+                hashAdd(request->post,
+                                new(HashValue, key, eqsign-key, value, nvalue));
+
+                pair++;
+                togo -= (pair - eqsign);
+        }
+}
+
+

+Here is the call graph for this function:
+
+
+ + +
+

+ +

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+ +
+
+ + + + + + + + +
void httpParserRequestVars (HttpParser )
+
+
+ +

Definition at line 33 of file p_request_vars.c.

+
{
+        HttpRequest request = (HttpRequest)this->current;
+        char *      delim   = strchr(request->uri, '?');
+
+        if (NULL == delim) {
+                delim = request->uri + strlen(request->uri);
+        }
+
+        request->path = malloc(delim - request->uri + 1);
+        request->path[delim - request->uri] = 0;
+        memcpy(request->path, request->uri, delim - request->uri);
+
+        while(NULL != delim && 0 != *delim) {
+                char * key    = delim + 1;
+                char * eqsign = strchr(key, '=');
+                char * value;
+                size_t nvalue;
+
+                if (NULL == eqsign) {
+                        return;
+                }
+
+                delim  = strchr(eqsign, '&');
+
+                if (NULL == delim) {
+                        delim = key + strlen(key);
+                }
+
+                nvalue = delim-eqsign-1;
+                value  = (0 != nvalue)? eqsign+1 : NULL;
+
+                hashAdd(request->get,
+                                new(HashValue, key, eqsign-key, value, nvalue));
+        }
+}
+
+

+Here is the call graph for this function:
+
+
+ + +
+

+ +

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/parser_8h_source.html b/assets/html/doc/parser_8h_source.html new file mode 100644 index 0000000..bf01a13 --- /dev/null +++ b/assets/html/doc/parser_8h_source.html @@ -0,0 +1,159 @@ + + + + +Server: include/http/parser.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

include/http/parser.h

+
+
+Go to the documentation of this file.
00001 
+00024 #ifndef __HTTP_PARSER_H__
+00025 #define __HTTP_PARSER_H__
+00026 
+00027 #include "class.h"
+00028 #include "http/message.h"
+00029 #include "http/message/queue.h"
+00030 #include "cbuf.h"
+00031 #include "stream.h"
+00032 
+00033 #include "commons.h"
+00034 
+00035 #define PARSER_MAX_BUF  131072
+00036 
+00037 
+00038 typedef enum e_HttpMessageState {
+00039         HTTP_MESSAGE_GARBAGE=0,
+00040         HTTP_MESSAGE_START,
+00041         HTTP_MESSAGE_INTRO_DONE,
+00042         HTTP_MESSAGE_HEADERS_DONE,
+00043         HTTP_MESSAGE_DONE
+00044 } HttpMessageState;
+00045 
+00046 
+00047 CLASS(HttpParser) {
+00048         Cbuf             buffer;
+00049         Bool             ourLock;
+00050 
+00051         char *           incomplete;
+00052         size_t           isize;
+00053 
+00054         HttpMessageQueue queue;
+00055         HttpMessage      current;
+00056 
+00057         HttpMessageState state;
+00058 };
+00059 
+00060 ssize_t httpParserParse(void *, Stream);
+00061 void    httpParserRequestVars(HttpParser);
+00062 void    httpParserHeader(HttpParser, const char *, const char *);
+00063 void    httpParserNewMessage(HttpParser, const char *, const char * lend);
+00064 size_t  httpParserBody(HttpParser, const char *, size_t);
+00065 void    httpParserRequestVars(HttpParser);
+00066 void    httpParserPostVars(HttpParser);
+00067 
+00068 #endif // __HTTP_PARSER_H__
+00069 
+00070 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/poll_8c.html b/assets/html/doc/poll_8c.html new file mode 100644 index 0000000..3dc1dac --- /dev/null +++ b/assets/html/doc/poll_8c.html @@ -0,0 +1,247 @@ + + + + +Server: src/server/poll.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/server/poll.c File Reference

+
+
+
#include <poll.h>
+#include <errno.h>
+#include "server.h"
+#include "logger.h"
+#include "utils/signalHandling.h"
+
+Include dependency graph for poll.c:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + + + +

+Defines

#define POLLFD(ptr)   ((struct pollfd *)(ptr))

+Functions

int serverPoll (Server this)
+

Detailed Description

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file poll.c.

+

Define Documentation

+ +
+
+ + + + + + + + +
#define POLLFD( ptr)   ((struct pollfd *)(ptr))
+
+
+ +

Definition at line 31 of file poll.c.

+ +
+
+

Function Documentation

+ +
+
+ + + + + + + + +
int serverPoll (Server this)
+
+
+ +

put all closed fds to end of array in O(this->nfds)

+

+ +

Definition at line 34 of file poll.c.

+
                        {
+        int events;
+
+        struct pollfd * fda = &(this->fds[2]);
+        struct pollfd * fdb = &(this->fds[this->nfds-1]);
+
+        while (fda <= fdb) {
+                while (0 == fdb->fd && fda <= fdb) {
+                        fdb--;
+                        this->nfds--;
+                }
+
+                while (0 != fda->fd && fda <= fdb) fda++;
+
+                if (fda < fdb) {
+                        memcpy(fda, fdb, sizeof(struct pollfd));
+                        fdb--;
+                        this->nfds--;
+                }
+        }
+
+        /*
+         * wait for handles to become ready
+         */
+        if (-1 == (events = poll(this->fds, this->nfds, -1))) {
+                switch (errno) {
+                        default:
+                        case EBADF:
+                        case EINVAL:
+                        case ENOMEM:
+                                doShutdown = 1;
+                                // DROP THROUGH
+
+                        case EINTR:
+                                loggerLog(this->logger, LOGGER_CRIT,
+                                                "poll systemcall failed: [%s] - service terminated",
+                                                strerror(errno));
+                }
+        }
+
+        return events;
+}
+
+

+Here is the call graph for this function:
+
+
+ + +
+

+ +

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/poll_8c_source.html b/assets/html/doc/poll_8c_source.html new file mode 100644 index 0000000..4b46cd8 --- /dev/null +++ b/assets/html/doc/poll_8c_source.html @@ -0,0 +1,167 @@ + + + + +Server: src/server/poll.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/server/poll.c

+
+
+Go to the documentation of this file.
00001 
+00023 #include <poll.h>
+00024 #include <errno.h>
+00025 
+00026 #include "server.h"
+00027 #include "logger.h"
+00028 
+00029 #include "utils/signalHandling.h"
+00030 
+00031 #define POLLFD(ptr)     ((struct pollfd *)(ptr))
+00032 
+00033 int
+00034 serverPoll(Server this) {
+00035         int events;
+00036 
+00040         struct pollfd * fda = &(this->fds[2]);
+00041         struct pollfd * fdb = &(this->fds[this->nfds-1]);
+00042 
+00043         while (fda <= fdb) {
+00044                 while (0 == fdb->fd && fda <= fdb) {
+00045                         fdb--;
+00046                         this->nfds--;
+00047                 }
+00048 
+00049                 while (0 != fda->fd && fda <= fdb) fda++;
+00050 
+00051                 if (fda < fdb) {
+00052                         memcpy(fda, fdb, sizeof(struct pollfd));
+00053                         fdb--;
+00054                         this->nfds--;
+00055                 }
+00056         }
+00057 
+00058         /*
+00059          * wait for handles to become ready
+00060          */
+00061         if (-1 == (events = poll(this->fds, this->nfds, -1))) {
+00062                 switch (errno) {
+00063                         default:
+00064                         case EBADF:
+00065                         case EINVAL:
+00066                         case ENOMEM:
+00067                                 doShutdown = 1;
+00068                                 // DROP THROUGH
+00069 
+00070                         case EINTR:
+00071                                 loggerLog(this->logger, LOGGER_CRIT,
+00072                                                 "poll systemcall failed: [%s] - service terminated",
+00073                                                 strerror(errno));
+00074                 }
+00075         }
+00076 
+00077         return events;
+00078 }
+00079 
+00080 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/process_8c.html b/assets/html/doc/process_8c.html new file mode 100644 index 0000000..be8008f --- /dev/null +++ b/assets/html/doc/process_8c.html @@ -0,0 +1,537 @@ + + + + +Server: src/http/worker/process.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/http/worker/process.c File Reference

+
+
+
#include <sys/types.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <time.h>
+#include <string.h>
+#include <sys/time.h>
+#include "class.h"
+#include "auth.h"
+#include "http/worker.h"
+#include "http/header.h"
+#include "http/message.h"
+#include "http/request.h"
+#include "http/response.h"
+#include "http/message/queue.h"
+#include "http/parser.h"
+#include "session.h"
+#include "stream.h"
+#include "hash.h"
+#include "utils/memory.h"
+#include "commons.h"
+
+Include dependency graph for process.c:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + + + +

+Functions

HttpMessage httpWorkerGetAsset (HttpRequest, const char *, const char *, size_t)
void httpWorkerAddCommonHeader (HttpMessage, HttpMessage)
ssize_t httpWorkerProcess (HttpWorker this, Stream st)
+

Detailed Description

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file process.c.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
void httpWorkerAddCommonHeader (HttpMessage ,
HttpMessage  
)
+
+
+ +

Definition at line 36 of file add_common_header.c.

+
{
+        time_t       t;
+        struct tm *  tmp;
+        char         buffer[200];
+        size_t       nbuf;
+
+        if (httpMessageHasKeepAlive(request)) {
+                hashAdd(response->header,
+                                new(HttpHeader, CSTRA("Connection"), CSTRA("Keep-Alive")));
+        }
+        else {
+                hashAdd(response->header,
+                                new(HttpHeader, CSTRA("Connection"), CSTRA("Close")));
+        }
+
+        hashAdd(response->header,
+                        new(HttpHeader, CSTRA("Server"), CSTRA("testserver")));
+
+        switch(((HttpResponse)response)->status) {
+                case 304:
+                        break;
+
+                default:
+                        nbuf = sprintf(buffer, "%d", response->nbody);
+                        hashAdd(response->header,
+                                        new(HttpHeader, CSTRA("Content-Length"), buffer, nbuf));
+        }
+
+        t    = time(NULL);
+        tmp  = localtime(&t);
+        nbuf = strftime(buffer, sizeof(buffer), "%a, %d %b %Y %T %Z", tmp);
+        hashAdd(response->header,
+                        new(HttpHeader, CSTRA("Date"), buffer, nbuf));
+}
+
+

+Here is the call graph for this function:
+
+
+ + +
+

+ +

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
HttpMessage httpWorkerGetAsset (HttpRequest ,
const char * ,
const char * ,
size_t  
)
+
+
+ +

Definition at line 34 of file get_asset.c.

+
{
+        char *     match;
+        size_t     nmatch;
+        HttpHeader header;
+
+        header = hashGet(
+                        ((HttpMessage)request)->header,
+                        CSTRA("If-None-Match"));
+
+        if (NULL == header) {
+                match  = "";
+                nmatch = 0;
+        }
+        else {
+                match  = (header->value)[0];
+                nmatch = (header->nvalue)[0];
+        }
+
+        return (HttpMessage)httpResponseAsset(
+                        fname, mime, nmime, match, nmatch);
+}
+
+

+Here is the call graph for this function:
+
+
+ + +
+

+ +

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
ssize_t httpWorkerProcess (HttpWorker this,
Stream st 
)
+
+
+ +

Todo:
store the cookie count in the request to make a simple check possible to prevent this lookup if no cookies exists at all
+
Todo:
This is an application authorization not an HTTP authorization...anyway think about sending HTTP 401 messages if authorization is required and think about sending the credentials via header as described in the HTTP protocol. Most likely this will lead to hacky thing with javascript as i am not sure how far this is implemented within browsers. Anyway, for now we simply ignore a failed login within the response except that no session is initialized. We send an empty 200 OK
+

+ +

Definition at line 54 of file process.c.

+
{
+        ssize_t size;
+
+        if (0 < (size = httpParserParse(this->parser, st))) {
+                int              i;
+                HttpMessageQueue reqq  = this->parser->queue;
+                HttpMessageQueue respq = this->writer->queue;
+
+                for (i=0; i<reqq->nmsgs; i++) {
+                        HttpMessage  rmessage = reqq->msgs[i];
+                        HttpRequest  request  = (HttpRequest)(reqq->msgs[i]);
+                        HttpMessage  response = NULL;
+
+                        if (NULL == this->session) {
+                                HashValue sidstr = hashGet(request->cookies, CSTRA("sid"));
+
+                                        if (NULL != sidstr) {
+                                                unsigned long sid;
+
+                                        sid = strtoul((char*)(sidstr->value), NULL, 10);
+                                                this->session = sessionGet(this->sroot, sid);
+                                }
+                        }
+
+                        if (NULL != this->session) {
+                                if (time(NULL) < this->session->livetime) {
+                                        this->session->livetime = time(NULL) + SESSION_LIVETIME;
+                                } else {
+                                        sessionDelete(this->sroot, this->session->id);
+                                        delete(this->session);
+                                }
+                        }
+
+                        if (0 == strcmp("POST", request->method)) {
+                                if (0 == strcmp("/login/", request->path)) {
+                                        char   buffer[200];
+                                        size_t nbuf;
+
+                                        HashValue username = hashGet(request->post, CSTRA("username"));
+                                        HashValue password = hashGet(request->post, CSTRA("password"));
+
+                                        if (NULL == password || NULL == username) {
+                                                response = new(HttpResponse, "HTTP/1.1", 403, "Forbidden");
+                                        }
+
+                                        if (NULL == response) {
+                                                Credential cred = new(Credential,
+                                                                CRED_PASSWORD,
+                                                                (char*)(username->value), username->nvalue,
+                                                                (char*)(password->value), password->nvalue);
+
+                                                if (!authenticate(this->auth, cred)) {
+                                                        response = new(HttpResponse, "HTTP/1.1", 403, "Forbidden");
+                                                } else {
+                                                        if (NULL == this->session) {
+                                        this->session = sessionAdd(
+                                                        this->sroot,
+                                                                                new(Session,
+                                                                                        username->value,
+                                                                                        username->nvalue));
+                                                        } else {
+                                                                this->session->username = malloc(username->nvalue + 1);
+                                                                this->session->username[username->nvalue] = 0;
+                                                                memcpy(this->session->username,
+                                                                                username->value,
+                                                                                username->nvalue);
+                                                        }
+
+                                                        nbuf = sprintf(buffer,
+                                                                        "sid=%lu;Path=/",
+                                                                        this->session->id);
+
+                                                        response = (HttpMessage)httpResponseSession(
+                                                                        this->session);
+
+                                                        hashAdd(response->header,
+                                                                        new(HttpHeader,
+                                                                                CSTRA("Set-Cookie"),
+                                                                                buffer, nbuf));
+                                                }
+                                                delete(cred);
+                                        }
+                                }
+                        }
+
+                        if (0 == strcmp("GET", request->method)) {
+
+                                if (0 == strcmp("/", request->path)) {
+                                        response = httpWorkerGetAsset(
+                                                        request,
+                                                        "./assets/html/main.html",
+                                                        CSTRA("text/html"));
+                                }
+
+                                if (0 == strcmp("/sessinfo/", request->path)) {
+                                        response = (HttpMessage)httpResponseSession(this->session);
+                                }
+
+                                if (0 == strcmp("/sess/", request->path)) {
+                                        if (NULL == this->session) {
+                                                this->session = sessionAdd(
+                                                                this->sroot,
+                                                                new(Session, NULL, 0));
+                                        }
+                                        response = (HttpMessage)httpResponseSession(this->session);
+                                }
+
+                                if (0 == strcmp("/randval/", request->path)) {
+                                        if (NULL != this->session) {
+                                                response = (HttpMessage)httpResponseRandval(
+                                                                this->val->timestamp,
+                                                                this->val->value);
+                                        } else {
+                                                response = (HttpMessage)httpResponse403();
+                                        }
+                                }
+
+                                if (0 == strcmp("/image/me", request->path)) {
+                                        response = httpWorkerGetAsset(
+                                                        request,
+                                                        "./assets/image/waldschrat.jpg",
+                                                        CSTRA("image/jpeg"));
+                                }
+
+                                if (0 == strcmp("/assets/js/jquery", request->path)) {
+                                        response = httpWorkerGetAsset(
+                                                        request,
+                                                        "./assets/js/jquery-1.7.1.min.js",
+                                                        CSTRA("text/javascript"));
+                                }
+
+                                if (0 == strcmp("/assets/js/serverval", request->path)) {
+                                        response = httpWorkerGetAsset(
+                                                        request,
+                                                        "./assets/js/serverval.js",
+                                                        CSTRA("text/javascript"));
+                                }
+
+                                if (0 == strcmp("/assets/js/session", request->path)) {
+                                        response = httpWorkerGetAsset(
+                                                        request,
+                                                        "./assets/js/session.js",
+                                                        CSTRA("text/javascript"));
+                                }
+
+                                if (0 == strcmp("/assets/js/init", request->path)) {
+                                        response = httpWorkerGetAsset(
+                                                        request,
+                                                        "./assets/js/init.js",
+                                                        CSTRA("text/javascript"));
+                                }
+
+                                if (0 == strcmp("/assets/style/common", request->path)) {
+                                        response = httpWorkerGetAsset(
+                                                        request,
+                                                        "./assets/style/common.css",
+                                                        CSTRA("text/css"));
+                                }
+                        }
+
+                        if (NULL == response) {
+                                response = (HttpMessage)httpResponse404();
+                        }
+
+                        httpWorkerAddCommonHeader((HttpMessage)request, response);
+
+                        respq->msgs[(respq->nmsgs)++] = response;
+                        response = NULL;
+                        delete((reqq->msgs)[i]);
+                }
+
+                reqq->nmsgs = 0;
+        }
+
+        return size;
+}
+
+

+Here is the call graph for this function:
+
+
+ + +
+

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/process_8c_source.html b/assets/html/doc/process_8c_source.html new file mode 100644 index 0000000..530a408 --- /dev/null +++ b/assets/html/doc/process_8c_source.html @@ -0,0 +1,322 @@ + + + + +Server: src/http/worker/process.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/http/worker/process.c

+
+
+Go to the documentation of this file.
00001 
+00023 #include <sys/types.h>
+00024 #include <stdio.h>
+00025 #include <stdlib.h>
+00026 #include <time.h>
+00027 #include <string.h>
+00028 #include <sys/time.h>
+00029 
+00030 #include "class.h"
+00031 #include "auth.h"
+00032 
+00033 #include "http/worker.h"
+00034 #include "http/header.h"
+00035 #include "http/message.h"
+00036 #include "http/request.h"
+00037 #include "http/response.h"
+00038 #include "http/message/queue.h"
+00039 #include "http/parser.h"
+00040 #include "session.h"
+00041 #include "stream.h"
+00042 #include "hash.h"
+00043 
+00044 #include "utils/memory.h"
+00045 #include "hash.h"
+00046 #include "commons.h"
+00047 
+00048 
+00049 HttpMessage httpWorkerGetAsset(HttpRequest, const char *, const char *, size_t);
+00050 void        httpWorkerAddCommonHeader(HttpMessage, HttpMessage);
+00051 
+00052 
+00053 ssize_t
+00054 httpWorkerProcess(HttpWorker this, Stream st)
+00055 {
+00056         ssize_t size;
+00057 
+00058         if (0 < (size = httpParserParse(this->parser, st))) {
+00059                 int              i;
+00060                 HttpMessageQueue reqq  = this->parser->queue;
+00061                 HttpMessageQueue respq = this->writer->queue;
+00062 
+00063                 for (i=0; i<reqq->nmsgs; i++) {
+00064                         HttpMessage  rmessage = reqq->msgs[i];
+00065                         HttpRequest  request  = (HttpRequest)(reqq->msgs[i]);
+00066                         HttpMessage  response = NULL;
+00067 
+00073                         if (NULL == this->session) {
+00074                                 HashValue sidstr = hashGet(request->cookies, CSTRA("sid"));
+00075 
+00076                                         if (NULL != sidstr) {
+00077                                                 unsigned long sid;
+00078 
+00079                                         sid = strtoul((char*)(sidstr->value), NULL, 10);
+00080                                                 this->session = sessionGet(this->sroot, sid);
+00081                                 }
+00082                         }
+00083 
+00084                         if (NULL != this->session) {
+00085                                 if (time(NULL) < this->session->livetime) {
+00086                                         this->session->livetime = time(NULL) + SESSION_LIVETIME;
+00087                                 } else {
+00088                                         sessionDelete(this->sroot, this->session->id);
+00089                                         delete(this->session);
+00090                                 }
+00091                         }
+00092 
+00093                         if (0 == strcmp("POST", request->method)) {
+00094                                 if (0 == strcmp("/login/", request->path)) {
+00095                                         char   buffer[200];
+00096                                         size_t nbuf;
+00097 
+00098                                         HashValue username = hashGet(request->post, CSTRA("username"));
+00099                                         HashValue password = hashGet(request->post, CSTRA("password"));
+00100 
+00113                                         if (NULL == password || NULL == username) {
+00114                                                 response = new(HttpResponse, "HTTP/1.1", 403, "Forbidden");
+00115                                         }
+00116 
+00117                                         if (NULL == response) {
+00118                                                 Credential cred = new(Credential,
+00119                                                                 CRED_PASSWORD,
+00120                                                                 (char*)(username->value), username->nvalue,
+00121                                                                 (char*)(password->value), password->nvalue);
+00122 
+00123                                                 if (!authenticate(this->auth, cred)) {
+00124                                                         response = new(HttpResponse, "HTTP/1.1", 403, "Forbidden");
+00125                                                 } else {
+00126                                                         if (NULL == this->session) {
+00127                                         this->session = sessionAdd(
+00128                                                         this->sroot,
+00129                                                                                 new(Session,
+00130                                                                                         username->value,
+00131                                                                                         username->nvalue));
+00132                                                         } else {
+00133                                                                 this->session->username = malloc(username->nvalue + 1);
+00134                                                                 this->session->username[username->nvalue] = 0;
+00135                                                                 memcpy(this->session->username,
+00136                                                                                 username->value,
+00137                                                                                 username->nvalue);
+00138                                                         }
+00139 
+00140                                                         nbuf = sprintf(buffer,
+00141                                                                         "sid=%lu;Path=/",
+00142                                                                         this->session->id);
+00143 
+00144                                                         response = (HttpMessage)httpResponseSession(
+00145                                                                         this->session);
+00146 
+00147                                                         hashAdd(response->header,
+00148                                                                         new(HttpHeader,
+00149                                                                                 CSTRA("Set-Cookie"),
+00150                                                                                 buffer, nbuf));
+00151                                                 }
+00152                                                 delete(cred);
+00153                                         }
+00154                                 }
+00155                         }
+00156 
+00157                         if (0 == strcmp("GET", request->method)) {
+00158 
+00159                                 if (0 == strcmp("/", request->path)) {
+00160                                         response = httpWorkerGetAsset(
+00161                                                         request,
+00162                                                         "./assets/html/main.html",
+00163                                                         CSTRA("text/html"));
+00164                                 }
+00165 
+00166                                 if (0 == strcmp("/sessinfo/", request->path)) {
+00167                                         response = (HttpMessage)httpResponseSession(this->session);
+00168                                 }
+00169 
+00170                                 if (0 == strcmp("/sess/", request->path)) {
+00171                                         if (NULL == this->session) {
+00172                                                 this->session = sessionAdd(
+00173                                                                 this->sroot,
+00174                                                                 new(Session, NULL, 0));
+00175                                         }
+00176                                         response = (HttpMessage)httpResponseSession(this->session);
+00177                                 }
+00178 
+00179                                 if (0 == strcmp("/randval/", request->path)) {
+00180                                         if (NULL != this->session) {
+00181                                                 response = (HttpMessage)httpResponseRandval(
+00182                                                                 this->val->timestamp,
+00183                                                                 this->val->value);
+00184                                         } else {
+00185                                                 response = (HttpMessage)httpResponse403();
+00186                                         }
+00187                                 }
+00188 
+00189                                 if (0 == strcmp("/image/me", request->path)) {
+00190                                         response = httpWorkerGetAsset(
+00191                                                         request,
+00192                                                         "./assets/image/waldschrat.jpg",
+00193                                                         CSTRA("image/jpeg"));
+00194                                 }
+00195 
+00196                                 if (0 == strcmp("/assets/js/jquery", request->path)) {
+00197                                         response = httpWorkerGetAsset(
+00198                                                         request,
+00199                                                         "./assets/js/jquery-1.7.1.min.js",
+00200                                                         CSTRA("text/javascript"));
+00201                                 }
+00202 
+00203                                 if (0 == strcmp("/assets/js/serverval", request->path)) {
+00204                                         response = httpWorkerGetAsset(
+00205                                                         request,
+00206                                                         "./assets/js/serverval.js",
+00207                                                         CSTRA("text/javascript"));
+00208                                 }
+00209 
+00210                                 if (0 == strcmp("/assets/js/session", request->path)) {
+00211                                         response = httpWorkerGetAsset(
+00212                                                         request,
+00213                                                         "./assets/js/session.js",
+00214                                                         CSTRA("text/javascript"));
+00215                                 }
+00216 
+00217                                 if (0 == strcmp("/assets/js/init", request->path)) {
+00218                                         response = httpWorkerGetAsset(
+00219                                                         request,
+00220                                                         "./assets/js/init.js",
+00221                                                         CSTRA("text/javascript"));
+00222                                 }
+00223 
+00224                                 if (0 == strcmp("/assets/style/common", request->path)) {
+00225                                         response = httpWorkerGetAsset(
+00226                                                         request,
+00227                                                         "./assets/style/common.css",
+00228                                                         CSTRA("text/css"));
+00229                                 }
+00230                         }
+00231 
+00232                         if (NULL == response) {
+00233                                 response = (HttpMessage)httpResponse404();
+00234                         }
+00235 
+00236                         httpWorkerAddCommonHeader((HttpMessage)request, response);
+00237 
+00238                         respq->msgs[(respq->nmsgs)++] = response;
+00239                         response = NULL;
+00240                         delete((reqq->msgs)[i]);
+00241                 }
+00242 
+00243                 reqq->nmsgs = 0;
+00244         }
+00245 
+00246         return size;
+00247 }
+00248 
+00249 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/queue_8c.html b/assets/html/doc/queue_8c.html new file mode 100644 index 0000000..52bc6df --- /dev/null +++ b/assets/html/doc/queue_8c.html @@ -0,0 +1,212 @@ + + + + +Server: src/http/message/queue.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/http/message/queue.c File Reference

+
+
+
#include <stdarg.h>
+#include "class.h"
+#include "http/message/queue.h"
+
+Include dependency graph for queue.c:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + + +

+Functions

 INIT_IFACE (Class, messageQueueCtor, messageQueueDtor, NULL)
 CREATE_CLASS (HttpMessageQueue, NULL, IFACE(Class))
+

Detailed Description

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file queue.c.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
CREATE_CLASS (HttpMessageQueue ,
NULL ,
IFACE(Class)  
)
+
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
INIT_IFACE (Class ,
messageQueueCtor ,
messageQueueDtor ,
NULL  
)
+
+
+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/queue_8c_source.html b/assets/html/doc/queue_8c_source.html new file mode 100644 index 0000000..f56ca63 --- /dev/null +++ b/assets/html/doc/queue_8c_source.html @@ -0,0 +1,141 @@ + + + + +Server: src/http/message/queue.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/http/message/queue.c

+
+
+Go to the documentation of this file.
00001 
+00023 #include <stdarg.h>
+00024 
+00025 #include "class.h"
+00026 
+00027 #include "http/message/queue.h"
+00028 
+00029 static
+00030 int
+00031 messageQueueCtor(void * _this, va_list * params)
+00032 {
+00033         return 0;
+00034 }
+00035 
+00036 static
+00037 void
+00038 messageQueueDtor(void * _this)
+00039 {
+00040         HttpMessageQueue this = _this;
+00041         int              i;
+00042 
+00043         for (i=0; i<this->nmsgs; i++) {
+00044                 delete((this->msgs)[i]);
+00045         }
+00046 }
+00047 
+00048 INIT_IFACE(Class, messageQueueCtor, messageQueueDtor, NULL);
+00049 CREATE_CLASS(HttpMessageQueue, NULL, IFACE(Class));
+00050 
+00051 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/queue_8h.html b/assets/html/doc/queue_8h.html new file mode 100644 index 0000000..2329aca --- /dev/null +++ b/assets/html/doc/queue_8h.html @@ -0,0 +1,166 @@ + + + + +Server: include/http/message/queue.h File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

include/http/message/queue.h File Reference

+
+
+
#include "class.h"
+#include "http/message.h"
+
+Include dependency graph for queue.h:
+
+
+ + +
+
+This graph shows which files directly or indirectly include this file:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + + + +

+Data Structures

struct  HttpMessageQueue

+Defines

#define HTTP_MESSAGE_QUEUE_MAX   1024
+

Detailed Description

+

Holds requests ready for processing.

+
Todo:
change this to a real queue.
+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file queue.h.

+

Define Documentation

+ +
+
+ + + + +
#define HTTP_MESSAGE_QUEUE_MAX   1024
+
+
+ +

Definition at line 32 of file queue.h.

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/queue_8h_source.html b/assets/html/doc/queue_8h_source.html new file mode 100644 index 0000000..09500fb --- /dev/null +++ b/assets/html/doc/queue_8h_source.html @@ -0,0 +1,129 @@ + + + + +Server: include/http/message/queue.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

include/http/message/queue.h

+
+
+Go to the documentation of this file.
00001 
+00026 #ifndef __HTTP_MESSAGE_QUEUE_H__
+00027 #define __HTTP_MESSAGE_QUEUE_H__
+00028 
+00029 #include "class.h"
+00030 #include "http/message.h"
+00031 
+00032 #define HTTP_MESSAGE_QUEUE_MAX  1024
+00033 
+00034 
+00035 CLASS(HttpMessageQueue) {
+00036         HttpMessage msgs[HTTP_MESSAGE_QUEUE_MAX];
+00037         size_t      nmsgs;
+00038 };
+00039 
+00040 #endif // __HTTP_MESSAGE_QUEUE_H__
+00041 
+00042 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/randval_8c.html b/assets/html/doc/randval_8c.html new file mode 100644 index 0000000..7228cc6 --- /dev/null +++ b/assets/html/doc/randval_8c.html @@ -0,0 +1,239 @@ + + + + +Server: src/http/response/randval.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/http/response/randval.c File Reference

+
+
+
#include <stdlib.h>
+#include <string.h>
+#include <stdio.h>
+#include <time.h>
+#include <sys/types.h>
+#include "class.h"
+#include "http/response.h"
+#include "http/message.h"
+#include "http/header.h"
+#include "utils/memory.h"
+#include "hash.h"
+
+Include dependency graph for randval.c:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + + + +

+Defines

#define RESP_DATA   "{\"ctime\":%ld,\"vnext\":%ld,\"value\":\"%02d\"}"

+Functions

HttpResponse httpResponseRandval (time_t ctime, int value)
+

Detailed Description

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file randval.c.

+

Define Documentation

+ +
+
+ + + + +
#define RESP_DATA   "{\"ctime\":%ld,\"vnext\":%ld,\"value\":\"%02d\"}"
+
+
+ +

Definition at line 38 of file randval.c.

+ +
+
+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
HttpResponse httpResponseRandval (time_t ctime,
int value 
)
+
+
+ +

Definition at line 41 of file randval.c.

+
{
+        char         buffer[200];
+        HttpResponse response;
+        HttpMessage  message;
+        size_t       nbuf;
+        time_t       remaining;
+
+        response = new(HttpResponse, "HTTP/1.1", 200, "OK");
+        message  = (HttpMessage)response;
+
+        hashAdd(message->header,
+                        new(HttpHeader, CSTRA("Content-Type"), CSTRA("application/json")));
+
+        message->type  = HTTP_MESSAGE_BUFFERED;
+
+        remaining = 10 - (time(NULL) - ctime);
+
+        nbuf = sprintf(buffer, RESP_DATA, ctime, remaining, value);
+
+        message->nbody = nbuf;
+        message->body  = malloc(nbuf);
+        memcpy(message->body, buffer, nbuf);
+
+        return response;
+}
+
+

+Here is the call graph for this function:
+
+
+ + +
+

+ +

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/randval_8c_source.html b/assets/html/doc/randval_8c_source.html new file mode 100644 index 0000000..07b1807 --- /dev/null +++ b/assets/html/doc/randval_8c_source.html @@ -0,0 +1,158 @@ + + + + +Server: src/http/response/randval.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/http/response/randval.c

+
+
+Go to the documentation of this file.
00001 
+00023 #include <stdlib.h>
+00024 #include <string.h>
+00025 #include <stdio.h>
+00026 #include <time.h>
+00027 #include <sys/types.h>
+00028 
+00029 #include "class.h"
+00030 
+00031 #include "http/response.h"
+00032 #include "http/message.h"
+00033 #include "http/header.h"
+00034 
+00035 #include "utils/memory.h"
+00036 #include "hash.h"
+00037 
+00038 #define RESP_DATA "{\"ctime\":%ld,\"vnext\":%ld,\"value\":\"%02d\"}"
+00039 
+00040 HttpResponse
+00041 httpResponseRandval(time_t ctime, int value)
+00042 {
+00043         char         buffer[200];
+00044         HttpResponse response;
+00045         HttpMessage  message;
+00046         size_t       nbuf;
+00047         time_t       remaining;
+00048 
+00049         response = new(HttpResponse, "HTTP/1.1", 200, "OK");
+00050         message  = (HttpMessage)response;
+00051 
+00052         hashAdd(message->header,
+00053                         new(HttpHeader, CSTRA("Content-Type"), CSTRA("application/json")));
+00054 
+00055         message->type  = HTTP_MESSAGE_BUFFERED;
+00056 
+00057         remaining = 10 - (time(NULL) - ctime);
+00058 
+00059         nbuf = sprintf(buffer, RESP_DATA, ctime, remaining, value);
+00060 
+00061         message->nbody = nbuf;
+00062         message->body  = malloc(nbuf);
+00063         memcpy(message->body, buffer, nbuf);
+00064 
+00065         return response;
+00066 }
+00067 
+00068 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/reader_8c.html b/assets/html/doc/reader_8c.html new file mode 100644 index 0000000..d6d6a53 --- /dev/null +++ b/assets/html/doc/reader_8c.html @@ -0,0 +1,184 @@ + + + + +Server: src/stream/interface/reader.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/stream/interface/reader.c File Reference

+
+
+
#include "class.h"
+#include "stream/stream.h"
+#include "stream/interface/reader.h"
+
+Include dependency graph for reader.c:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + +

+Functions

ssize_t streamReaderRead (void *object, Stream st)
+

Detailed Description

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file reader.c.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
ssize_t streamReaderRead (void * object,
Stream st 
)
+
+
+ +

Definition at line 34 of file reader.c.

+
{
+        ssize_t ret;
+
+        RETCALL(object, StreamReader, read, ret, st);
+
+        return ret;
+}
+
+

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/reader_8c_source.html b/assets/html/doc/reader_8c_source.html new file mode 100644 index 0000000..0a7b6c2 --- /dev/null +++ b/assets/html/doc/reader_8c_source.html @@ -0,0 +1,133 @@ + + + + +Server: src/stream/interface/reader.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/stream/interface/reader.c

+
+
+Go to the documentation of this file.
00001 
+00023 #include "class.h"
+00024 
+00025 #include "stream/stream.h"
+00026 #include "stream/interface/reader.h"
+00027 
+00028 const struct interface i_StreamReader = {
+00029         "streamReader",
+00030         1
+00031 };
+00032 
+00033 ssize_t
+00034 streamReaderRead(void * object, Stream st)
+00035 {
+00036         ssize_t ret;
+00037 
+00038         RETCALL(object, StreamReader, read, ret, st);
+00039 
+00040         return ret;
+00041 }
+00042 
+00043 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/reader_8h.html b/assets/html/doc/reader_8h.html new file mode 100644 index 0000000..bae28bf --- /dev/null +++ b/assets/html/doc/reader_8h.html @@ -0,0 +1,215 @@ + + + + +Server: include/stream/interface/reader.h File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

include/stream/interface/reader.h File Reference

+
+
+
#include <sys/types.h>
+#include "stream/stream.h"
+
+Include dependency graph for reader.h:
+
+
+ + +
+
+This graph shows which files directly or indirectly include this file:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + + + + + +

+Data Structures

struct  i_StreamReader

+Typedefs

typedef ssize_t(* fptr_streamReaderRead )(void *, Stream)

+Functions

ssize_t streamReaderRead (void *, Stream)
+

Detailed Description

+

Interface whose implementations can read from a stream given as a handle.

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file reader.h.

+

Typedef Documentation

+ +
+
+ + + + +
typedef ssize_t(* fptr_streamReaderRead)(void *, Stream)
+
+
+ +

Definition at line 32 of file reader.h.

+ +
+
+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
ssize_t streamReaderRead (void * ,
Stream  
)
+
+
+ +

Definition at line 34 of file reader.c.

+
{
+        ssize_t ret;
+
+        RETCALL(object, StreamReader, read, ret, st);
+
+        return ret;
+}
+
+

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/reader_8h_source.html b/assets/html/doc/reader_8h_source.html new file mode 100644 index 0000000..0e06454 --- /dev/null +++ b/assets/html/doc/reader_8h_source.html @@ -0,0 +1,133 @@ + + + + +Server: include/stream/interface/reader.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

include/stream/interface/reader.h

+
+
+Go to the documentation of this file.
00001 
+00025 #ifndef __STREAM_INTERFACE_READER_H__
+00026 #define __STREAM_INTERFACE_READER_H__
+00027 
+00028 #include <sys/types.h>
+00029 
+00030 #include "stream/stream.h"
+00031 
+00032 typedef ssize_t (* fptr_streamReaderRead)(void *, Stream);
+00033 
+00034 extern const struct interface i_StreamReader;
+00035 
+00036 struct i_StreamReader {
+00037         const struct interface * const _;
+00038         fptr_streamReaderRead          read;
+00039 };
+00040 
+00041 extern ssize_t streamReaderRead(void *, Stream);
+00042 
+00043 #endif // __STREAM_INTERFACE_READER_H__
+00044 
+00045 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/release_8c.html b/assets/html/doc/release_8c.html new file mode 100644 index 0000000..d4b85c5 --- /dev/null +++ b/assets/html/doc/release_8c.html @@ -0,0 +1,168 @@ + + + + +Server: src/cbuf/release.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/cbuf/release.c File Reference

+
+
+
#include "cbuf.h"
+
+Include dependency graph for release.c:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + +

+Functions

void cbufRelease (Cbuf this)
+

Detailed Description

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file release.c.

+

Function Documentation

+ +
+
+ + + + + + + + +
void cbufRelease (Cbuf this)
+
+
+ +

Definition at line 26 of file release.c.

+
{
+        this->lock = FALSE;
+}
+
+

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/release_8c_source.html b/assets/html/doc/release_8c_source.html new file mode 100644 index 0000000..f790b28 --- /dev/null +++ b/assets/html/doc/release_8c_source.html @@ -0,0 +1,121 @@ + + + + +Server: src/cbuf/release.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/cbuf/release.c

+
+
+Go to the documentation of this file.
00001 
+00023 #include "cbuf.h"
+00024 
+00025 void
+00026 cbufRelease(Cbuf this)
+00027 {
+00028         this->lock = FALSE;
+00029 }
+00030 
+00031 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/request_8c.html b/assets/html/doc/request_8c.html new file mode 100644 index 0000000..05cff25 --- /dev/null +++ b/assets/html/doc/request_8c.html @@ -0,0 +1,258 @@ + + + + +Server: src/http/request.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/http/request.c File Reference

+
+
+
#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <sys/types.h>
+#include "class.h"
+#include "hash.h"
+#include "http/interface/http_intro.h"
+#include "http/request.h"
+#include "utils/memory.h"
+
+Include dependency graph for request.c:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + + + +

+Functions

 INIT_IFACE (Class, httpRequestCtor, httpRequestDtor, NULL)
 INIT_IFACE (HttpIntro, sizeGet, toString)
 CREATE_CLASS (HttpRequest, HttpMessage, IFACE(Class), IFACE(HttpIntro))
+

Detailed Description

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file request.c.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CREATE_CLASS (HttpRequest ,
HttpMessage ,
IFACE(Class) ,
IFACE(HttpIntro)  
)
+
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
INIT_IFACE (Class ,
httpRequestCtor ,
httpRequestDtor ,
NULL  
)
+
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
INIT_IFACE (HttpIntro ,
sizeGet ,
toString  
)
+
+
+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/request_8c_source.html b/assets/html/doc/request_8c_source.html new file mode 100644 index 0000000..ab7220c --- /dev/null +++ b/assets/html/doc/request_8c_source.html @@ -0,0 +1,216 @@ + + + + +Server: src/http/request.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/http/request.c

+
+
+Go to the documentation of this file.
00001 
+00023 #include <stdlib.h>
+00024 #include <stdarg.h>
+00025 #include <string.h>
+00026 #include <sys/types.h>
+00027 
+00028 #include "class.h"
+00029 #include "hash.h"
+00030 #include "http/interface/http_intro.h"
+00031 
+00032 #include "http/request.h"
+00033 #include "utils/memory.h"
+00034 
+00035 
+00036 static
+00037 int
+00038 httpRequestCtor(void * _this, va_list * params)
+00039 {
+00040         HttpRequest this = _this;
+00041         char      * method, * uri;
+00042         size_t      mlen, ulen;
+00043 
+00044         method = va_arg(* params, char *);
+00045         mlen   = va_arg(* params, size_t);
+00046         uri    = va_arg(* params, char *);
+00047         ulen   = va_arg(* params, size_t);
+00048 
+00049         PARENTCALL(_this, Class, ctor, params);
+00050 
+00051         this->method       = malloc(mlen + 1);
+00052         this->method[mlen] = 0;
+00053         memcpy(this->method, method, mlen);
+00054 
+00055         this->uri       = malloc(ulen + 1);
+00056         this->uri[ulen] = 0;
+00057         memcpy(this->uri, uri, ulen);
+00058 
+00059         this->get     = new(Hash);
+00060         this->post    = new(Hash);
+00061         this->cookies = new(Hash);
+00062 
+00063         return 0;
+00064 }
+00065 
+00066 static
+00067 void
+00068 httpRequestDtor(void * _this)
+00069 {
+00070         HttpRequest this = _this;
+00071 
+00072         delete(this->get);
+00073         delete(this->post);
+00074         delete(this->cookies);
+00075 
+00076         FREE(this->uri);
+00077         FREE(this->method);
+00078         FREE(this->path);
+00079 
+00080         PARENTCALL(_this, Class, dtor);
+00081 } 
+00082 
+00083 static
+00084 size_t
+00085 sizeGet(void * _this)
+00086 {
+00087         HttpRequest this = _this;
+00088         size_t      size = 0;
+00089 
+00090         size += strlen(this->method) + 1;
+00091         size += strlen(this->uri) + 1;
+00092         size += strlen(((HttpMessage)this)->version) + 2;
+00093 
+00094         return size;
+00095 }
+00096 
+00097 static
+00098 char *
+00099 toString(void * _this, char * string)
+00100 {
+00101         HttpRequest this = _this;
+00102 
+00103         strcpy(string, this->method);
+00104         string    += strlen(string);
+00105         *string++  = ' ';
+00106 
+00107         strcpy(string, this->uri);
+00108         string    += strlen(string);
+00109         *string++  = ' ';
+00110 
+00111         strcpy(string, ((HttpMessage)this)->version);
+00112         string    += strlen(string);
+00113         *string++  = '\r';
+00114         *string++  = '\n';
+00115 
+00116         return string;
+00117 }
+00118 
+00119 INIT_IFACE(Class, httpRequestCtor, httpRequestDtor, NULL);
+00120 INIT_IFACE(HttpIntro, sizeGet, toString);
+00121 CREATE_CLASS(HttpRequest,
+00122                 HttpMessage,
+00123                 IFACE(Class),
+00124                 IFACE(HttpIntro));
+00125 
+00126 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/request_8h.html b/assets/html/doc/request_8h.html new file mode 100644 index 0000000..f541ca5 --- /dev/null +++ b/assets/html/doc/request_8h.html @@ -0,0 +1,223 @@ + + + + +Server: include/http/request.h File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

include/http/request.h File Reference

+
+
+
#include "class.h"
+#include "http/message.h"
+#include "hash.h"
+
+Include dependency graph for request.h:
+
+
+ + +
+
+This graph shows which files directly or indirectly include this file:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + + + + + + + +

+Data Structures

struct  HttpRequest

+Defines

#define N_HTTP_METHOD   8

+Functions

int httpRequestHasValidMethod (HttpRequest)

+Variables

char * http_method [N_HTTP_METHOD]
+

Detailed Description

+

Represents one HTTP request.

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file request.h.

+

Define Documentation

+ +
+
+ + + + +
#define N_HTTP_METHOD   8
+
+
+ +

Definition at line 31 of file request.h.

+ +
+
+

Function Documentation

+ +
+
+ + + + + + + + +
int httpRequestHasValidMethod (HttpRequest )
+
+
+ +

Definition at line 38 of file has_valid_method.c.

+
{
+        int i;
+
+        if (NULL == this->method)
+                return 0;
+
+        for (i=0; i<N_HTTP_METHOD; i++) {
+                if (0 == strcmp(http_method[i], this->method))
+                        break;
+        }
+
+        return (i != N_HTTP_METHOD);
+}
+
+
+
+

Variable Documentation

+ +
+
+ + + + +
char* http_method[N_HTTP_METHOD]
+
+
+ +

Definition at line 33 of file request.h.

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/request_8h_source.html b/assets/html/doc/request_8h_source.html new file mode 100644 index 0000000..d9dfebe --- /dev/null +++ b/assets/html/doc/request_8h_source.html @@ -0,0 +1,140 @@ + + + + +Server: include/http/request.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

include/http/request.h

+
+
+Go to the documentation of this file.
00001 
+00024 #ifndef __HTTP_REQUEST_H__
+00025 #define __HTTP_REQUEST_H__
+00026 
+00027 #include "class.h"
+00028 #include "http/message.h"
+00029 #include "hash.h"
+00030 
+00031 #define N_HTTP_METHOD   8
+00032 
+00033 char * http_method[N_HTTP_METHOD];
+00034 
+00035 CLASS(HttpRequest) {
+00036         EXTENDS(HttpMessage);
+00037 
+00038         char *     method;
+00039         char *     uri;
+00040         char *     path;
+00041 
+00042         Hash       get;
+00043         Hash       post;
+00044         Hash       cookies;
+00045 };
+00046 
+00047 int httpRequestHasValidMethod(HttpRequest);
+00048 
+00049 #endif // __HTTP_REQUEST_H__
+00050 
+00051 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/resize.js b/assets/html/doc/resize.js new file mode 100644 index 0000000..04fa95c --- /dev/null +++ b/assets/html/doc/resize.js @@ -0,0 +1,81 @@ +var cookie_namespace = 'doxygen'; +var sidenav,navtree,content,header; + +function readCookie(cookie) +{ + var myCookie = cookie_namespace+"_"+cookie+"="; + if (document.cookie) + { + var index = document.cookie.indexOf(myCookie); + if (index != -1) + { + var valStart = index + myCookie.length; + var valEnd = document.cookie.indexOf(";", valStart); + if (valEnd == -1) + { + valEnd = document.cookie.length; + } + var val = document.cookie.substring(valStart, valEnd); + return val; + } + } + return 0; +} + +function writeCookie(cookie, val, expiration) +{ + if (val==undefined) return; + if (expiration == null) + { + var date = new Date(); + date.setTime(date.getTime()+(10*365*24*60*60*1000)); // default expiration is one week + expiration = date.toGMTString(); + } + document.cookie = cookie_namespace + "_" + cookie + "=" + val + "; expires=" + expiration+"; path=/"; +} + +function resizeWidth() +{ + var windowWidth = $(window).width() + "px"; + var sidenavWidth = $(sidenav).width(); + content.css({marginLeft:parseInt(sidenavWidth)+6+"px"}); //account for 6px-wide handle-bar + writeCookie('width',sidenavWidth, null); +} + +function restoreWidth(navWidth) +{ + var windowWidth = $(window).width() + "px"; + content.css({marginLeft:parseInt(navWidth)+6+"px"}); + sidenav.css({width:navWidth + "px"}); +} + +function resizeHeight() +{ + var headerHeight = header.height(); + var footerHeight = footer.height(); + var windowHeight = $(window).height() - headerHeight - footerHeight; + content.css({height:windowHeight + "px"}); + navtree.css({height:windowHeight + "px"}); + sidenav.css({height:windowHeight + "px",top: headerHeight+"px"}); +} + +function initResizable() +{ + header = $("#top"); + sidenav = $("#side-nav"); + content = $("#doc-content"); + navtree = $("#nav-tree"); + footer = $("#nav-path"); + $(".side-nav-resizable").resizable({resize: function(e, ui) { resizeWidth(); } }); + $(window).resize(function() { resizeHeight(); }); + var width = readCookie('width'); + if (width) { restoreWidth(width); } else { resizeWidth(); } + resizeHeight(); + var url = location.href; + var i=url.indexOf("#"); + if (i>=0) window.location.hash=url.substr(i); + var _preventDefault = function(evt) { evt.preventDefault(); }; + $("#splitbar").bind("dragstart", _preventDefault).bind("selectstart", _preventDefault); +} + + diff --git a/assets/html/doc/response_8c.html b/assets/html/doc/response_8c.html new file mode 100644 index 0000000..7beb49f --- /dev/null +++ b/assets/html/doc/response_8c.html @@ -0,0 +1,258 @@ + + + + +Server: src/http/response.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/http/response.c File Reference

+
+
+
#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <sys/types.h>
+#include <stdio.h>
+#include "class.h"
+#include "utils/memory.h"
+#include "http/response.h"
+#include "http/interface/http_intro.h"
+
+Include dependency graph for response.c:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + + + +

+Functions

 INIT_IFACE (Class, httpResponseCtor, httpResponseDtor, NULL)
 INIT_IFACE (HttpIntro, sizeGet, toString)
 CREATE_CLASS (HttpResponse, HttpMessage, IFACE(Class), IFACE(HttpIntro))
+

Detailed Description

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file response.c.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CREATE_CLASS (HttpResponse ,
HttpMessage ,
IFACE(Class) ,
IFACE(HttpIntro)  
)
+
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
INIT_IFACE (Class ,
httpResponseCtor ,
httpResponseDtor ,
NULL  
)
+
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
INIT_IFACE (HttpIntro ,
sizeGet ,
toString  
)
+
+
+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/response_8c_source.html b/assets/html/doc/response_8c_source.html new file mode 100644 index 0000000..6d6959b --- /dev/null +++ b/assets/html/doc/response_8c_source.html @@ -0,0 +1,199 @@ + + + + +Server: src/http/response.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/http/response.c

+
+
+Go to the documentation of this file.
00001 
+00023 #include <stdlib.h>
+00024 #include <stdarg.h>
+00025 #include <string.h>
+00026 #include <sys/types.h>
+00027 #include <stdio.h>
+00028 
+00029 #include "class.h"
+00030 #include "utils/memory.h"
+00031 
+00032 #include "http/response.h"
+00033 #include "http/interface/http_intro.h"
+00034 
+00035 
+00036 static
+00037 int
+00038 httpResponseCtor(void * _this, va_list * params)
+00039 {
+00040         HttpResponse this = _this;
+00041         char * reason;
+00042 
+00043         PARENTCALL(_this, Class, ctor, params);
+00044 
+00045         this->status = va_arg(* params, unsigned int);
+00046         reason       = va_arg(* params, char *);
+00047 
+00048         this->reason  = calloc(1, strlen(reason)+1);
+00049         strcpy(this->reason, reason);
+00050 
+00051         return 0;
+00052 }
+00053 
+00054 static
+00055 void
+00056 httpResponseDtor(void * _this)
+00057 {
+00058         HttpResponse this = _this;
+00059 
+00060         FREE(this->reason);
+00061 
+00062         PARENTCALL(_this, Class, dtor);
+00063 } 
+00064 
+00065 static
+00066 size_t
+00067 sizeGet(void * _this)
+00068 {
+00069         HttpResponse this = _this;
+00070         size_t       size = 0;
+00071 
+00072         size += strlen(((HttpMessage)this)->version) + 1;
+00073         size += 3 + 1;  // for status
+00074         size += strlen(this->reason) + 2;
+00075 
+00076         return size;
+00077 }
+00078 
+00079 static
+00080 char *
+00081 toString(void * _this, char * string)
+00082 {
+00083         HttpResponse this   = _this;
+00084 
+00085         strcpy(string, ((HttpMessage)this)->version);
+00086         string   += strlen(string);
+00087         *string++ = ' ';
+00088 
+00089         snprintf(string, 4, "%d", this->status);
+00090         string   += strlen(string);
+00091         *string++ = ' ';
+00092 
+00093         strcpy(string, this->reason);
+00094         string   += strlen(string);
+00095         *string++ = '\r';
+00096         *string++ = '\n';
+00097 
+00098         return string;
+00099 }
+00100 
+00101 INIT_IFACE(Class, httpResponseCtor, httpResponseDtor, NULL);
+00102 INIT_IFACE(HttpIntro, sizeGet, toString);
+00103 CREATE_CLASS(
+00104                 HttpResponse,
+00105                 HttpMessage,
+00106                 IFACE(Class),
+00107                 IFACE(HttpIntro));
+00108 
+00109 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/response_8h.html b/assets/html/doc/response_8h.html new file mode 100644 index 0000000..f75c662 --- /dev/null +++ b/assets/html/doc/response_8h.html @@ -0,0 +1,643 @@ + + + + +Server: include/http/response.h File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

include/http/response.h File Reference

+
+
+
#include <time.h>
+#include <sys/types.h>
+#include "class.h"
+#include "http/message.h"
+#include "session.h"
+
+Include dependency graph for response.h:
+
+
+ + +
+
+This graph shows which files directly or indirectly include this file:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + + + + + + + + + + +

+Data Structures

struct  HttpResponse

+Functions

HttpResponse httpResponse304 (const char *, size_t, const char *, size_t, const char *, size_t)
HttpResponse httpResponse404 ()
HttpResponse httpResponse403 ()
HttpResponse httpResponseMe ()
HttpResponse httpResponseLoginForm ()
HttpResponse httpResponseRandval (time_t, int)
HttpResponse httpResponseSession (Session)
HttpResponse httpResponseAsset (const char *, const char *, size_t, const char *, size_t)
+

Detailed Description

+

Represents one HTTP response.

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file response.h.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
HttpResponse httpResponse304 (const char * ,
size_t ,
const char * ,
size_t ,
const char * ,
size_t  
)
+
+
+ +

Definition at line 35 of file 304.c.

+
{
+        HttpResponse response;
+        HttpMessage  message;
+
+        response = new(HttpResponse, "HTTP/1.1", 304, "Not Modified");
+        message  = (HttpMessage)response;
+
+        message->type  = HTTP_MESSAGE_BUFFERED;
+        message->nbody = 0;
+        message->body  = NULL;
+
+        hashAdd(message->header,
+                        new(HttpHeader, CSTRA("Content-Type"), mime, nmime));
+        hashAdd(message->header,
+                        new(HttpHeader, CSTRA("ETag"), etag, netag));
+        hashAdd(message->header,
+                        new(HttpHeader, CSTRA("Last-Modified"), mtime, nmtime));
+
+        return response;
+}
+
+

+Here is the call graph for this function:
+
+
+ + +
+

+ +

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+ +
+
+ + + + + + + +
HttpResponse httpResponse403 ()
+
+
+ +

Definition at line 36 of file 403.c.

+
{
+        HttpResponse response;
+        HttpMessage  message;
+
+        response = new(HttpResponse, "HTTP/1.1", 403, "Forbidden");
+        message  = (HttpMessage)response;
+
+        message->type  = HTTP_MESSAGE_BUFFERED;
+        message->nbody = 0;
+        message->body  = NULL;
+
+        return response;
+}
+
+

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+ +
+
+ + + + + + + +
HttpResponse httpResponse404 ()
+
+
+ +

Definition at line 47 of file 404.c.

+
{
+        HttpResponse response;
+        HttpMessage  message;
+
+        response = new(HttpResponse, "HTTP/1.1", 404, "Not Found");
+        message  = (HttpMessage)response;
+
+        hashAdd(message->header,
+                        new(HttpHeader, CSTRA("Content-Type"), CSTRA("text/html")));
+
+        message->type  = HTTP_MESSAGE_BUFFERED;
+        message->nbody = sizeof(RESP_DATA) - 1;
+        message->body  = malloc(sizeof(RESP_DATA));
+        memcpy(message->body, RESP_DATA, sizeof(RESP_DATA));
+
+        return response;
+}
+
+

+Here is the call graph for this function:
+
+
+ + +
+

+ +

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
HttpResponse httpResponseAsset (const char * ,
const char * ,
size_t ,
const char * ,
size_t  
)
+
+
+ +

Definition at line 41 of file asset.c.

+
{
+        struct tm *  tmp;
+        char         etag[200];
+        size_t       netag;
+        char         mtime[200];
+        size_t       nmtime;
+        struct stat  st;
+        HttpResponse response;
+        HttpMessage  message;
+        int          handle;
+
+        handle = open(fname, O_RDONLY);
+        fstat(handle, &st);
+
+        tmp    = localtime(&(st.st_mtime));
+        netag  = strftime(etag, sizeof(etag), "%s", tmp);
+        nmtime = strftime(mtime, sizeof(mtime), "%a, %d %b %Y %T %Z", tmp);
+
+        if (netag == nmatch && 0 == memcmp(etag, match, netag)) {
+                return httpResponse304(mime, nmime, etag, netag, mtime, nmtime);
+        }
+
+        response = new(HttpResponse, "HTTP/1.1", 200, "OK");
+        message  = (HttpMessage)response;
+
+        message->type   = HTTP_MESSAGE_PIPED;
+        message->handle = new(Stream, STREAM_FD, handle);
+        message->nbody  = st.st_size;
+
+        hashAdd(message->header,
+                        new(HttpHeader, CSTRA("Content-Type"), mime, nmime));
+        hashAdd(message->header,
+                        new(HttpHeader, CSTRA("ETag"), etag, netag));
+        hashAdd(message->header,
+                        new(HttpHeader, CSTRA("Last-Modified"), mtime, nmtime));
+
+        return response;
+}
+
+

+Here is the call graph for this function:
+
+
+ + +
+

+ +

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+ +
+
+ + + + + + + +
HttpResponse httpResponseLoginForm ()
+
+
+ +

Definition at line 44 of file login_form.c.

+
{
+        HttpResponse response;
+        HttpMessage  message;
+
+        response = new(HttpResponse, "HTTP/1.1", 200, "OK");
+        message  = (HttpMessage)response;
+
+        hashAdd(message->header,
+                        new(HttpHeader, CSTRA("Content-Type"), CSTRA("text/html")));
+
+        message->type  = HTTP_MESSAGE_BUFFERED;
+
+        message->nbody = sizeof(RESP_DATA)-1;
+        message->body  = malloc(message->nbody);
+        memcpy(message->body, RESP_DATA, message->nbody);
+
+        return response;
+}
+
+

+Here is the call graph for this function:
+
+
+ + +
+

+ +
+
+ +
+
+ + + + + + + +
HttpResponse httpResponseMe ()
+
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
HttpResponse httpResponseRandval (time_t ,
int  
)
+
+
+ +

Definition at line 41 of file randval.c.

+
{
+        char         buffer[200];
+        HttpResponse response;
+        HttpMessage  message;
+        size_t       nbuf;
+        time_t       remaining;
+
+        response = new(HttpResponse, "HTTP/1.1", 200, "OK");
+        message  = (HttpMessage)response;
+
+        hashAdd(message->header,
+                        new(HttpHeader, CSTRA("Content-Type"), CSTRA("application/json")));
+
+        message->type  = HTTP_MESSAGE_BUFFERED;
+
+        remaining = 10 - (time(NULL) - ctime);
+
+        nbuf = sprintf(buffer, RESP_DATA, ctime, remaining, value);
+
+        message->nbody = nbuf;
+        message->body  = malloc(nbuf);
+        memcpy(message->body, buffer, nbuf);
+
+        return response;
+}
+
+

+Here is the call graph for this function:
+
+
+ + +
+

+ +

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+ +
+
+ + + + + + + + +
HttpResponse httpResponseSession (Session )
+
+
+ +

Definition at line 42 of file session.c.

+
{
+        char         buffer[200];
+        HttpResponse response;
+        HttpMessage  message;
+        size_t       nbuf;
+
+        response = new(HttpResponse, "HTTP/1.1", 200, "OK");
+        message  = (HttpMessage)response;
+
+        hashAdd(message->header,
+                        new(HttpHeader, CSTRA("Content-Type"), CSTRA("application/json")));
+
+        message->type  = HTTP_MESSAGE_BUFFERED;
+
+        nbuf = sprintf(buffer, RESP_DATA,
+                        (NULL != session)? session->id : 0,
+                        (NULL != session)? SESSION_LIVETIME : 0,
+                        (NULL != session)? session->livetime - time(NULL) : 0,
+                        (NULL != session)? session->username : "");
+
+        message->nbody = nbuf;
+        message->body  = malloc(nbuf);
+        memcpy(message->body, buffer, nbuf);
+
+        return response;
+}
+
+

+Here is the call graph for this function:
+
+
+ + +
+

+ +

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/response_8h_source.html b/assets/html/doc/response_8h_source.html new file mode 100644 index 0000000..d76885a --- /dev/null +++ b/assets/html/doc/response_8h_source.html @@ -0,0 +1,148 @@ + + + + +Server: include/http/response.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

include/http/response.h

+
+
+Go to the documentation of this file.
00001 
+00024 #ifndef __HTTP_RESPONSE_H__
+00025 #define __HTTP_RESPONSE_H__
+00026 
+00027 #include <time.h>
+00028 #include <sys/types.h>
+00029 
+00030 #include "class.h"
+00031 #include "http/message.h"
+00032 #include "session.h"
+00033 
+00034 
+00035 CLASS(HttpResponse) {
+00036         EXTENDS(HttpMessage);
+00037 
+00038         unsigned int status;
+00039         char *       reason;
+00040 };
+00041 
+00042 HttpResponse httpResponse304(
+00043                 const char *, size_t,
+00044                 const char *, size_t,
+00045                 const char *, size_t);
+00046 HttpResponse httpResponse404();
+00047 HttpResponse httpResponse403();
+00048 HttpResponse httpResponseMe();
+00049 HttpResponse httpResponseLoginForm();
+00050 HttpResponse httpResponseRandval(time_t, int);
+00051 HttpResponse httpResponseSession(Session);
+00052 HttpResponse httpResponseAsset(
+00053                 const char *,
+00054                 const char *, size_t,
+00055                 const char *, size_t);
+00056 
+00057 #endif // __HTTP_RESPONSE_H__
+00058 
+00059 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/run_8c.html b/assets/html/doc/run_8c.html new file mode 100644 index 0000000..98c9367 --- /dev/null +++ b/assets/html/doc/run_8c.html @@ -0,0 +1,641 @@ + + + + +Server: src/server/run.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/server/run.c File Reference

+
+
+
#include "server.h"
+#include "logger.h"
+#include "utils/signalHandling.h"
+
+Include dependency graph for run.c:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + + + + + + +

+Functions

int serverPoll (Server)
int serverHandleAccept (Server, unsigned int)
void serverCloseConn (Server, unsigned int)
ssize_t serverRead (Server, unsigned int)
ssize_t serverWrite (Server, unsigned int)
void serverRun (Server this)
+

Detailed Description

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file run.c.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
void serverCloseConn (Server ,
unsigned int 
)
+
+
+ +

Definition at line 31 of file close_conn.c.

+
{
+        int    fd = (this->fds)[i].fd;
+        Stream st = (this->conns[fd]).stream;
+
+        delete((this->conns)[fd].sock);
+        delete((this->conns)[fd].worker);
+
+        if (NULL != st && STREAM_SSL == st->type) {
+                SSL_shutdown((st->handle).ssl);
+                SSL_free((st->handle).ssl);
+        }
+
+        delete(st);
+
+        memset(&(this->fds[i]), 0, sizeof(struct pollfd));
+}
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
int serverHandleAccept (Server ,
unsigned int 
)
+
+
+ +

Definition at line 36 of file handle_accept.c.

+
{
+        char   remoteAddr[16] = "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0";
+        Sock   acc = NULL;
+        Stream st;
+
+        if (this->nfds >= this->max_fds) {
+                return -1;
+        }
+
+        acc = socketAccept((0 == i)? this->sock : this->sockSSL, &remoteAddr);
+
+        if (-1 != acc->handle) {
+        switch(i) {
+                case 0:
+                        // no SSL
+                        st = new(Stream, STREAM_FD, acc->handle);
+                        break;
+
+                case 1:
+                        // SSL
+                        {
+                                SSL * ssl = SSL_new(this->ctx);
+                                SSL_set_fd(ssl, acc->handle);
+                                SSL_accept(ssl);
+                                st = new(Stream, STREAM_SSL, ssl);
+                        }
+                        break;
+
+                default:
+                        break;
+        }
+
+                // save the socket handle
+                (this->conns)[acc->handle].sock   = acc; 
+
+                // clone worker
+                (this->conns)[acc->handle].worker = clone(this->worker);
+                (this->conns)[acc->handle].stream = st;
+
+                (this->fds)[this->nfds].fd        = acc->handle;
+                (this->fds)[this->nfds].events    = POLLIN;
+                this->nfds++;
+        } else {
+                delete(acc);
+
+                switch(errno) {
+                        case EAGAIN:
+                                loggerLog(this->logger,
+                                                LOGGER_DEBUG,
+                                                "server accept blocks");
+                                break;
+
+                        default:
+                                loggerLog(this->logger,
+                                                LOGGER_DEBUG,
+                                                "server accept error");
+                                break;
+                }
+        }
+
+        return (acc)? acc->handle : -1;
+}
+
+

+Here is the call graph for this function:
+
+
+ + +
+

+ +

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+ +
+
+ + + + + + + + +
int serverPoll (Server )
+
+
+ +

put all closed fds to end of array in O(this->nfds)

+

+ +

Definition at line 34 of file poll.c.

+
                        {
+        int events;
+
+        struct pollfd * fda = &(this->fds[2]);
+        struct pollfd * fdb = &(this->fds[this->nfds-1]);
+
+        while (fda <= fdb) {
+                while (0 == fdb->fd && fda <= fdb) {
+                        fdb--;
+                        this->nfds--;
+                }
+
+                while (0 != fda->fd && fda <= fdb) fda++;
+
+                if (fda < fdb) {
+                        memcpy(fda, fdb, sizeof(struct pollfd));
+                        fdb--;
+                        this->nfds--;
+                }
+        }
+
+        /*
+         * wait for handles to become ready
+         */
+        if (-1 == (events = poll(this->fds, this->nfds, -1))) {
+                switch (errno) {
+                        default:
+                        case EBADF:
+                        case EINVAL:
+                        case ENOMEM:
+                                doShutdown = 1;
+                                // DROP THROUGH
+
+                        case EINTR:
+                                loggerLog(this->logger, LOGGER_CRIT,
+                                                "poll systemcall failed: [%s] - service terminated",
+                                                strerror(errno));
+                }
+        }
+
+        return events;
+}
+
+

+Here is the call graph for this function:
+
+
+ + +
+

+ +

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
ssize_t serverRead (Server ,
unsigned int 
)
+
+
+ +

normal close: this must be mapped to -2 within the underlying read call.

+
Todo:
make sure all pending writes will be done before close.
+

+ +

Definition at line 30 of file read.c.

+
{
+        int     fd = (this->fds)[i].fd;
+        ssize_t size;
+
+        if (NULL == (this->conns)[fd].worker) {
+                loggerLog(
+                                this->logger,
+                                LOGGER_INFO,
+                                "initialization error: NULL reader");
+                return -1;
+        }
+
+        switch ((size = streamReaderRead(
+                                        (this->conns)[fd].worker,
+                                        (this->conns)[fd].stream)))
+        {
+                case -2:
+                        // DROP-THROUGH
+
+                case -1: 
+                        /*
+                         * read failure / close connection
+                         */
+                        loggerLog(this->logger, LOGGER_INFO,
+                                        "connection[%d] closed...%s",
+                                        fd,
+                                        inet_ntoa((((this->conns)[fd].sock)->addr).sin_addr));
+                        serverCloseConn(this, i);
+                        break;
+
+                case 0:
+                        break;
+
+                default:
+                        (this->fds)[i].events |= POLLOUT;
+                        break;
+        }
+
+        return size;
+}
+
+

+Here is the call graph for this function:
+
+
+ + +
+

+ +

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+ +
+
+ + + + + + + + +
void serverRun (Server this)
+
+
+ +

until error or signal

+

handle accept

+

handle accept SSL

+

handle reads

+

handle writes

+

+ +

Definition at line 35 of file run.c.

+
{
+    loggerLog(this->logger, LOGGER_INFO, "service started");
+
+    while (!doShutdown) 
+    {
+                int          events;
+                unsigned int i;
+                int          naccs = 10;
+
+                events = serverPoll(this);
+                if (doShutdown || 0 >= events) break;
+
+                if (0 != ((this->fds)[0].revents & POLLIN)) {
+                        events--;
+                        while(-1 != serverHandleAccept(this, 0) && 0 < naccs) {
+                                naccs--;
+                        }
+                }
+
+                if (0 != ((this->fds)[1].revents & POLLIN)) {
+                        events--;
+                        while(-1 != serverHandleAccept(this, 1) && 0 < naccs) {
+                                naccs--;
+                        }
+                }
+
+                for (i=2; i < this->nfds; i++) {
+                        int nreads = 10, nwrites = 10;
+
+                        if (0 != ((this->fds)[i].revents & POLLIN) && 0 < nreads) {
+                                events--;
+                                nreads--;
+
+                                serverRead(this, i);
+                        }
+
+                        if (0 != ((this->fds)[i].revents & POLLOUT) && 0 < nwrites) {
+                                events--;
+                                nwrites--;
+
+                                serverWrite(this, i);
+                        }
+
+                        if (0 > events)
+                                break; // no more events to handle
+                }
+    }
+}
+
+

+Here is the call graph for this function:
+
+
+ + +
+

+ +

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
ssize_t serverWrite (Server ,
unsigned int 
)
+
+
+ +

Definition at line 30 of file write.c.

+
{
+        int     fd = (this->fds)[i].fd;
+        ssize_t remaining;
+
+        if (NULL == (this->conns)[fd].worker) {
+                loggerLog(
+                                this->logger,
+                                LOGGER_INFO,
+                                "initialization error: NULL worker");
+                return -1;
+        }
+
+        remaining = streamWriterWrite(
+                        (this->conns)[fd].worker,
+                        (this->conns)[fd].stream);
+
+        switch(remaining) {
+                case -1:
+                        serverCloseConn(this, i);
+                        break;
+
+                case 0:
+                        (this->fds)[i].events &= ~POLLOUT;
+                        break;
+
+                default:
+                        break;
+        }
+
+        return remaining;
+}
+
+

+Here is the call graph for this function:
+
+
+ + +
+

+ +

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/run_8c_source.html b/assets/html/doc/run_8c_source.html new file mode 100644 index 0000000..97fb9ef --- /dev/null +++ b/assets/html/doc/run_8c_source.html @@ -0,0 +1,175 @@ + + + + +Server: src/server/run.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/server/run.c

+
+
+Go to the documentation of this file.
00001 
+00023 #include "server.h"
+00024 #include "logger.h"
+00025 
+00026 #include "utils/signalHandling.h"
+00027 
+00028 int     serverPoll(Server);
+00029 int     serverHandleAccept(Server, unsigned int);
+00030 void    serverCloseConn(Server, unsigned int);
+00031 ssize_t serverRead(Server, unsigned int);
+00032 ssize_t serverWrite(Server, unsigned int);
+00033 
+00034 void
+00035 serverRun(Server this)
+00036 {
+00037     loggerLog(this->logger, LOGGER_INFO, "service started");
+00038 
+00039     while (!doShutdown) 
+00040     {
+00041                 int          events;
+00042                 unsigned int i;
+00043                 int          naccs = 10;
+00044 
+00045                 events = serverPoll(this);
+00046                 if (doShutdown || 0 >= events) break;
+00047 
+00051                 if (0 != ((this->fds)[0].revents & POLLIN)) {
+00052                         events--;
+00053                         while(-1 != serverHandleAccept(this, 0) && 0 < naccs) {
+00054                                 naccs--;
+00055                         }
+00056                 }
+00057 
+00061                 if (0 != ((this->fds)[1].revents & POLLIN)) {
+00062                         events--;
+00063                         while(-1 != serverHandleAccept(this, 1) && 0 < naccs) {
+00064                                 naccs--;
+00065                         }
+00066                 }
+00067 
+00068                 for (i=2; i < this->nfds; i++) {
+00069                         int nreads = 10, nwrites = 10;
+00070 
+00074                         if (0 != ((this->fds)[i].revents & POLLIN) && 0 < nreads) {
+00075                                 events--;
+00076                                 nreads--;
+00077 
+00078                                 serverRead(this, i);
+00079                         }
+00080 
+00084                         if (0 != ((this->fds)[i].revents & POLLOUT) && 0 < nwrites) {
+00085                                 events--;
+00086                                 nwrites--;
+00087 
+00088                                 serverWrite(this, i);
+00089                         }
+00090 
+00091                         if (0 > events)
+00092                                 break; // no more events to handle
+00093                 }
+00094     }
+00095 }
+00096 
+00097 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/search/all_33.html b/assets/html/doc/search/all_33.html new file mode 100644 index 0000000..5ba38d8 --- /dev/null +++ b/assets/html/doc/search/all_33.html @@ -0,0 +1,25 @@ + + + + + + + +
+
Loading...
+
+
+ 304.c +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/all_34.html b/assets/html/doc/search/all_34.html new file mode 100644 index 0000000..5757660 --- /dev/null +++ b/assets/html/doc/search/all_34.html @@ -0,0 +1,30 @@ + + + + + + + +
+
Loading...
+
+
+ 403.c +
+
+
+
+ 404.c +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/all_5f.html b/assets/html/doc/search/all_5f.html new file mode 100644 index 0000000..7e180c4 --- /dev/null +++ b/assets/html/doc/search/all_5f.html @@ -0,0 +1,77 @@ + + + + + + + +
+
Loading...
+ +
+
+ _CALL + class.h +
+
+ +
+
+ _ISOC99_SOURCE + class.h +
+
+
+
+ _NULL + class.h +
+
+
+
+ _POSIX_C_SOURCE + cbuf.c +
+
+
+
+ _POSIX_SOURCE + cbuf.c +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/all_61.html b/assets/html/doc/search/all_61.html new file mode 100644 index 0000000..604c318 --- /dev/null +++ b/assets/html/doc/search/all_61.html @@ -0,0 +1,129 @@ + + + + + + + +
+
Loading...
+
+
+ accept.c +
+
+
+
+ add.c +
+
+
+
+ add.c +
+
+ +
+ +
+
+
+ answer.c +
+
+
+
+ asset.c +
+
+
+
+ attach + i_Subject +
+
+
+ +
+
+
+ auth.c +
+
+
+
+ auth.h +
+
+
+
+ auth.h +
+
+
+
+ auth.h +
+
+
+
+ AUTH_LDAP + auth.h +
+
+
+
+ authCreateById + auth.h +
+
+
+
+ authCreateLdap + auth.h +
+
+ +
+
+ AuthLdap +
+
+
+
+ AuthModule + auth.h +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/all_62.html b/assets/html/doc/search/all_62.html new file mode 100644 index 0000000..ec3e08a --- /dev/null +++ b/assets/html/doc/search/all_62.html @@ -0,0 +1,59 @@ + + + + + + + +
+
Loading...
+
+
+ base_dn + AuthLdap +
+
+
+
+ body + HttpMessage +
+
+
+
+ Bool + commons.h +
+
+
+
+ bsize + Cbuf +
+
+ +
+
+ bused + Cbuf +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/all_63.html b/assets/html/doc/search/all_63.html new file mode 100644 index 0000000..c2d9704 --- /dev/null +++ b/assets/html/doc/search/all_63.html @@ -0,0 +1,421 @@ + + + + + + + +
+
Loading...
+
+
+ CALL + class.h +
+
+
+
+ Cbuf +
+
+
+
+ cbuf.c +
+
+
+
+ cbuf.h +
+
+ + + + + + + + + + + + + + + + + + +
+ +
+
+
+ class.h +
+
+
+
+ class.h +
+
+
+
+ class.h +
+
+
+
+ CLASS_MAGIC + class.h +
+
+
+
+ class_ptr + class.h +
+
+ + + + +
+ +
+
+
+ commons.h +
+
+
+
+ config.h +
+
+
+
+ connect.c +
+
+
+ +
+ + +
+
+ cookies + HttpRequest +
+
+ +
+
+ cred + Credential +
+
+
+
+ CRED_PASSWORD + credential.h +
+
+
+
+ CRED_PWD + credential.h +
+
+
+ +
+
+ +
+
+ +
+
+
+ CredentialType + credential.h +
+
+
+
+ CSTRA + memory.h +
+
+
+
+ ctor + i_Class +
+
+
+
+ ctx + Server +
+
+ +
+
+ cvalue + HttpHeader +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/all_64.html b/assets/html/doc/search/all_64.html new file mode 100644 index 0000000..1a2b41a --- /dev/null +++ b/assets/html/doc/search/all_64.html @@ -0,0 +1,101 @@ + + + + + + + +
+
Loading...
+ +
+ +
+
+
+ data + Cbuf +
+
+
+
+ dbody + HttpMessage +
+
+
+
+ DEFAULT_SECS + webgameserver.c +
+
+
+
+ DEFAULT_USECS + webgameserver.c +
+
+
+
+ delete + class.h +
+
+
+
+ delete.c +
+
+
+
+ delete.c +
+
+
+
+ detach + i_Subject +
+
+
+
+ domain + HttpCookie +
+
+ +
+
+ dtor + i_Class +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/all_65.html b/assets/html/doc/search/all_65.html new file mode 100644 index 0000000..c3fcc3a --- /dev/null +++ b/assets/html/doc/search/all_65.html @@ -0,0 +1,90 @@ + + + + + + + +
+
Loading...
+
+
+ e_AuthModule + auth.h +
+
+
+
+ e_CredentialType + credential.h +
+
+
+
+ e_HttpMessageState + parser.h +
+
+
+
+ e_HttpMessageType + message.h +
+
+
+
+ e_HttpWriterState + writer.h +
+
+
+
+ e_StreamHandleType + stream.h +
+
+
+
+ each.c +
+
+
+
+ ECBUFOVFL + cbuf.h +
+
+
+
+ empty.c +
+
+
+
+ expires + HttpCookie +
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/all_66.html b/assets/html/doc/search/all_66.html new file mode 100644 index 0000000..bf0cf30 --- /dev/null +++ b/assets/html/doc/search/all_66.html @@ -0,0 +1,149 @@ + + + + + + + +
+
Loading...
+
+
+ FALSE + commons.h +
+
+
+
+ fd + Stream +
+
+
+
+ fds + Server +
+
+ +
+
+ fptr_authenticate + auth.h +
+
+
+
+ fptr_classInit + class.h +
+
+
+
+ fptr_clone + class.h +
+
+
+
+ fptr_ctor + class.h +
+
+
+
+ fptr_dtor + class.h +
+
+
+
+ fptr_hashableGetHash + hashable.h +
+
+
+
+ fptr_hashableHandleDouble + hashable.h +
+
+
+
+ fptr_httpIntroSizeGet + http_intro.h +
+
+
+
+ fptr_httpIntroToString + http_intro.h +
+
+
+
+ fptr_log + logger.h +
+
+
+
+ fptr_observerNotify + observer.h +
+
+
+
+ fptr_streamReaderRead + reader.h +
+
+
+
+ fptr_streamWriterWrite + writer.h +
+
+
+
+ fptr_subjectAttach + subject.h +
+
+
+
+ fptr_subjectDetach + subject.h +
+
+
+
+ fptr_subjectNotify + subject.h +
+
+
+
+ FREE + memory.h +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/all_67.html b/assets/html/doc/search/all_67.html new file mode 100644 index 0000000..830b988 --- /dev/null +++ b/assets/html/doc/search/all_67.html @@ -0,0 +1,83 @@ + + + + + + + +
+
Loading...
+
+
+ get + HttpRequest +
+
+
+
+ get.c +
+
+
+
+ get.c +
+
+
+ +
+
+
+ GET_CLASS + class.h +
+
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+ getHash + i_Hashable +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/all_68.html b/assets/html/doc/search/all_68.html new file mode 100644 index 0000000..212d18f --- /dev/null +++ b/assets/html/doc/search/all_68.html @@ -0,0 +1,729 @@ + + + + + + + +
+
Loading...
+ + +
+
+ handleDouble + i_Hashable +
+
+ +
+
+ HAS_PARENT + class.h +
+
+ + + +
+
+ hash.c +
+
+
+
+ hash.c +
+
+
+
+ hash.h +
+
+
+
+ hash.h +
+
+
+
+ hash.h +
+
+
+ +
+
+ +
+ + + + + + +
+
+ HashValue +
+
+
+
+ HAVE__BOOL + config.h +
+
+
+
+ HAVE_DLFCN_H + config.h +
+
+
+
+ HAVE_INTTYPES_H + config.h +
+
+
+
+ HAVE_JSON_JSON_H + config.h +
+
+
+
+ HAVE_LIBSSL + config.h +
+
+
+
+ HAVE_MEMORY_H + config.h +
+
+
+
+ HAVE_MEMSET + config.h +
+
+
+
+ HAVE_STDARG_H + config.h +
+
+
+
+ HAVE_STDBOOL_H + config.h +
+
+
+
+ HAVE_STDINT_H + config.h +
+
+
+
+ HAVE_STDIO_H + config.h +
+
+
+
+ HAVE_STDLIB_H + config.h +
+
+
+
+ HAVE_STRING_H + config.h +
+
+
+
+ HAVE_STRINGS_H + config.h +
+
+
+
+ HAVE_SYS_STAT_H + config.h +
+
+
+
+ HAVE_SYS_TYPES_H + config.h +
+
+
+
+ HAVE_SYSLOG_H + config.h +
+
+
+
+ HAVE_UNISTD_H + config.h +
+
+
+
+ header + HttpMessage +
+
+
+
+ header.c +
+
+
+
+ header.h +
+
+ + +
+
+ http.c +
+
+
+
+ http.h +
+
+
+
+ http.h +
+
+
+ +
+
+
+ HTTP_MESSAGE_BUFFERED + message.h +
+
+
+
+ HTTP_MESSAGE_DONE + parser.h +
+
+
+
+ HTTP_MESSAGE_GARBAGE + parser.h +
+
+
+
+ HTTP_MESSAGE_HEADERS_DONE + parser.h +
+
+
+
+ HTTP_MESSAGE_INTRO_DONE + parser.h +
+
+
+
+ HTTP_MESSAGE_PIPED + message.h +
+
+
+
+ HTTP_MESSAGE_QUEUE_MAX + queue.h +
+
+
+
+ HTTP_MESSAGE_START + parser.h +
+
+ +
+
+ HTTP_WRITER_DONE + writer.h +
+
+
+
+ HTTP_WRITER_GET + writer.h +
+
+
+
+ HTTP_WRITER_WRITE + writer.h +
+
+
+ +
+
+
+ httpCookieToString + cookie.h +
+
+ +
+ +
+ + + +
+ +
+ + + + + + +
+
+ HttpMessageState + parser.h +
+
+
+
+ HttpMessageType + message.h +
+
+
+ +
+ + + + + + +
+ +
+ +
+ +
+ + + + + +
+
+ httpResponseMe + response.h +
+
+ + +
+
+ httpStringToCookie + cookie.h +
+
+
+ +
+ + + + +
+ +
+
+
+ HttpWriterState + writer.h +
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/all_69.html b/assets/html/doc/search/all_69.html new file mode 100644 index 0000000..faa58fa --- /dev/null +++ b/assets/html/doc/search/all_69.html @@ -0,0 +1,267 @@ + + + + + + + +
+
Loading...
+
+
+ i_Auth +
+
+
+
+ i_Class +
+
+
+
+ i_class.c +
+
+
+ +
+ +
+ +
+
+
+ i_Logger +
+
+
+ +
+
+ +
+ + +
+
+ i_Subject +
+
+ +
+
+ IFACE + interface.h +
+
+
+
+ IFACE_GET + class.h +
+
+
+ +
+
+
+ iface_impl_ptr + interface.h +
+
+
+
+ iface_ptr + interface.h +
+
+
+
+ impl + iface_impl +
+
+
+ +
+
+ +
+
+
+ incomplete + HttpParser +
+
+
+
+ init + class +
+
+
+
+ INIT_CLASS + class.h +
+
+
+
+ INIT_IFACE +
+ INIT_IFACE(): interface.h + INIT_IFACE(Class, credentialCtor, credentialDtor, NULL): credential.c + INIT_IFACE(Class, authLdapCtor, authLdapDtor, NULL): ldap.c + INIT_IFACE(Auth, authLdapAuthenticate): ldap.c + INIT_IFACE(Class, cbufCtor, cbufDtor, NULL): cbuf.c + INIT_IFACE(Class, hashCtor, hashDtor, NULL): hash.c + INIT_IFACE(Class, hashValueCtor, hashValueDtor, NULL): value.c + INIT_IFACE(Hashable, hashValueGetHash, hashValueHandleDouble): value.c + INIT_IFACE(Class, httpCookieCtor, httpCookieDtor, NULL): cookie.c + INIT_IFACE(Hashable, httpCookieGetHash, httpCookieHandleDouble): cookie.c + INIT_IFACE(Class, httpHeaderCtor, httpHeaderDtor, NULL): header.c + INIT_IFACE(Hashable, httpHeaderGetHash, httpHeaderHandleDouble): header.c + INIT_IFACE(Class, messageQueueCtor, messageQueueDtor, NULL): queue.c + INIT_IFACE(Class, httpMessageCtor, httpMessageDtor, NULL): message.c + INIT_IFACE(Class, httpParserCtor, httpParserDtor, NULL): parser.c + INIT_IFACE(StreamReader, httpParserParse): parser.c + INIT_IFACE(Class, httpRequestCtor, httpRequestDtor, NULL): request.c + INIT_IFACE(HttpIntro, sizeGet, toString): request.c + INIT_IFACE(Class, httpResponseCtor, httpResponseDtor, NULL): response.c + INIT_IFACE(HttpIntro, sizeGet, toString): response.c + INIT_IFACE(Class, httpWorkerCtor, httpWorkerDtor, httpWorkerClone): worker.c + INIT_IFACE(StreamReader, httpWorkerProcess): worker.c + INIT_IFACE(StreamWriter, httpWorkerWrite): worker.c + INIT_IFACE(Class, httpWriterCtor, httpWriterDtor, NULL): writer.c + INIT_IFACE(StreamWriter, httpWriterWrite): writer.c + INIT_IFACE(Class, loggerCtor, loggerDtor, NULL): logger.c + INIT_IFACE(Logger, logStderr): stderr.c + INIT_IFACE(Logger, logSyslog): syslog.c + INIT_IFACE(Class, serverCtor, serverDtor, NULL): server.c + INIT_IFACE(Class, sessionCtor, sessionDtor, NULL): session.c + INIT_IFACE(Class, socketCtor, socketDtor, NULL): socket.c + INIT_IFACE(Class, streamCtor, streamDtor, NULL): stream.c +
+
+
+
+
+ INIT_IFACE_IMPL + interface.h +
+
+ +
+
+ INSTANCE_OF + class.h +
+
+
+
+ interface +
+
+
+ +
+
+ +
+ +
+ +
+
+ +
+
+
+ IS_OBJECT + class.h +
+
+ +
+
+ isize + HttpParser +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/all_6b.html b/assets/html/doc/search/all_6b.html new file mode 100644 index 0000000..575e923 --- /dev/null +++ b/assets/html/doc/search/all_6b.html @@ -0,0 +1,29 @@ + + + + + + + +
+
Loading...
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/all_6c.html b/assets/html/doc/search/all_6c.html new file mode 100644 index 0000000..b7421b0 --- /dev/null +++ b/assets/html/doc/search/all_6c.html @@ -0,0 +1,192 @@ + + + + + + + +
+
Loading...
+
+
+ ldap + AuthLdap +
+
+
+
+ ldap.c +
+
+
+
+ ldap.h +
+
+
+
+ listen.c +
+
+
+
+ livetime + Session +
+
+
+
+ lock + Cbuf +
+
+
+
+ lock.c +
+
+ +
+ +
+
+
+ logger.c +
+
+
+
+ logger.h +
+
+
+
+ logger.h +
+
+
+
+ logger.h +
+
+
+
+ LOGGER_ALERT + logger.h +
+
+
+
+ LOGGER_CRIT + logger.h +
+
+
+
+ LOGGER_DEBUG + logger.h +
+
+
+
+ LOGGER_EMERG + logger.h +
+
+
+
+ LOGGER_ERR + logger.h +
+
+
+
+ LOGGER_INFO + logger.h +
+
+ + +
+
+ LOGGER_NOTICE + logger.h +
+
+
+
+ LOGGER_WARNING + logger.h +
+
+ +
+ +
+
+ +
+
+ +
+
+
+ LT_OBJDIR + config.h +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/all_6d.html b/assets/html/doc/search/all_6d.html new file mode 100644 index 0000000..0011f29 --- /dev/null +++ b/assets/html/doc/search/all_6d.html @@ -0,0 +1,108 @@ + + + + + + + +
+
Loading...
+
+
+ magic + class +
+
+
+
+ main + webgameserver.c +
+
+
+
+ MAX + commons.h +
+
+
+
+ max_age + HttpCookie +
+
+
+
+ max_fds + Server +
+
+
+
+ MAX_IFACE + interface.h +
+
+
+
+ memchr.c +
+
+
+
+ memory.c +
+
+
+
+ memory.h +
+
+
+
+ message.c +
+
+
+
+ message.h +
+
+
+
+ method + HttpRequest +
+
+ +
+
+ min_level + Logger +
+
+
+
+ msgs + HttpMessageQueue +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/all_6e.html b/assets/html/doc/search/all_6e.html new file mode 100644 index 0000000..6440caa --- /dev/null +++ b/assets/html/doc/search/all_6e.html @@ -0,0 +1,155 @@ + + + + + + + +
+
Loading...
+
+
+ N_HTTP_METHOD + request.h +
+
+
+
+ N_VALUES + header.h +
+
+ +
+
+ nbase_dn + AuthLdap +
+
+ +
+
+ new + class.h +
+
+
+ +
+
+
+ nfds + Server +
+
+
+
+ nheader + HttpWriter +
+
+
+
+ nimpl + iface_impl +
+
+ +
+
+ nmethods + interface +
+
+
+
+ nmsgs + HttpMessageQueue +
+
+
+
+ nname + HttpHeader +
+
+ +
+
+ npass + Credential +
+
+
+
+ nullhandler + webgameserver.c +
+
+
+
+ NUMARGS + interface.h +
+
+
+
+ nuser + Credential +
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/all_6f.html b/assets/html/doc/search/all_6f.html new file mode 100644 index 0000000..567ff8a --- /dev/null +++ b/assets/html/doc/search/all_6f.html @@ -0,0 +1,54 @@ + + + + + + + +
+
Loading...
+
+
+ object_size + class +
+
+
+ +
+
+ +
+ + +
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/all_70.html b/assets/html/doc/search/all_70.html new file mode 100644 index 0000000..a7d5531 --- /dev/null +++ b/assets/html/doc/search/all_70.html @@ -0,0 +1,176 @@ + + + + + + + +
+
Loading...
+
+
+ p_body.c +
+
+
+ +
+
+ +
+ +
+
+ PACKAGE + config.h +
+
+
+
+ PACKAGE_BUGREPORT + config.h +
+
+
+
+ PACKAGE_NAME + config.h +
+
+
+
+ PACKAGE_STRING + config.h +
+
+
+
+ PACKAGE_TARNAME + config.h +
+
+
+
+ PACKAGE_URL + config.h +
+
+
+
+ PACKAGE_VERSION + config.h +
+
+
+
+ parent + class +
+
+
+
+ PARENTCALL + class.h +
+
+
+
+ parse.c +
+
+
+
+ parser + HttpWorker +
+
+
+
+ parser.c +
+
+
+
+ parser.h +
+
+
+
+ PARSER_MAX_BUF + parser.h +
+
+
+
+ pass + Credential +
+
+ +
+
+ pbuf + HttpWorker +
+
+
+
+ poll.c +
+
+
+
+ POLLFD + poll.c +
+
+
+
+ port + Sock +
+
+
+
+ post + HttpRequest +
+
+
+
+ process.c +
+
+
+
+ pwd + Credential +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/all_71.html b/assets/html/doc/search/all_71.html new file mode 100644 index 0000000..c7a612f --- /dev/null +++ b/assets/html/doc/search/all_71.html @@ -0,0 +1,39 @@ + + + + + + + +
+
Loading...
+ +
+
+ queue.c +
+
+
+
+ queue.h +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/all_72.html b/assets/html/doc/search/all_72.html new file mode 100644 index 0000000..65eace4 --- /dev/null +++ b/assets/html/doc/search/all_72.html @@ -0,0 +1,123 @@ + + + + + + + +
+
Loading...
+
+
+ randval +
+
+
+
+ randval.c +
+
+ +
+
+ read.c +
+
+
+
+ read.c +
+
+
+
+ read.c +
+
+
+
+ reader.c +
+
+
+
+ reader.h +
+
+
+
+ reason + HttpResponse +
+
+
+
+ release.c +
+
+
+
+ request.c +
+
+
+
+ request.h +
+
+ +
+ +
+
+ +
+
+
+ RETCALL + class.h +
+
+
+
+ root + Hash +
+
+
+
+ run.c +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/all_73.html b/assets/html/doc/search/all_73.html new file mode 100644 index 0000000..9bb2506 --- /dev/null +++ b/assets/html/doc/search/all_73.html @@ -0,0 +1,425 @@ + + + + + + + +
+
Loading...
+ +
+
+ Server +
+
+
+
+ server.c +
+
+
+
+ server.h +
+
+ + + + + + + +
+
+ session.c +
+
+
+
+ session.c +
+
+
+
+ session.h +
+
+
+
+ SESSION_LIVETIME + session.h +
+
+ + + +
+ +
+
+
+ shm_name + Cbuf +
+
+ + +
+
+ simpl + iface_impl +
+
+
+
+ size + HttpHeader +
+
+
+
+ sizeGet + i_HttpIntro +
+
+ + +
+
+ socket.c +
+
+
+
+ socket.h +
+
+ + + +
+
+ sockSSL + Server +
+
+
+
+ sroot + HttpWorker +
+
+
+
+ ssl + Stream +
+
+ +
+
+ status + HttpResponse +
+
+
+
+ STDC_HEADERS + config.h +
+
+
+
+ stderr.c +
+
+
+ +
+
+
+ stream.c +
+
+
+
+ stream.h +
+
+
+
+ stream.h +
+
+
+
+ STREAM_FD + stream.h +
+
+
+
+ STREAM_SSL + stream.h +
+
+
+
+ StreamHandleType + stream.h +
+
+ + + + +
+
+ subject.c +
+
+
+
+ subject.h +
+
+ + + +
+
+ SWAP + commons.h +
+
+
+
+ SWAP_FUN + commons.h +
+
+
+
+ syslog.c +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/all_74.html b/assets/html/doc/search/all_74.html new file mode 100644 index 0000000..5b9ca07 --- /dev/null +++ b/assets/html/doc/search/all_74.html @@ -0,0 +1,62 @@ + + + + + + + +
+
Loading...
+ +
+
+ timestamp + randval +
+
+
+ +
+
+
+ toString + i_HttpIntro +
+
+
+
+ TRUE + commons.h +
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/all_75.html b/assets/html/doc/search/all_75.html new file mode 100644 index 0000000..40852fb --- /dev/null +++ b/assets/html/doc/search/all_75.html @@ -0,0 +1,44 @@ + + + + + + + +
+
Loading...
+
+
+ uri + HttpRequest +
+
+
+
+ url + AuthLdap +
+
+
+
+ user + Credential +
+
+
+
+ username + Session +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/all_76.html b/assets/html/doc/search/all_76.html new file mode 100644 index 0000000..324669b --- /dev/null +++ b/assets/html/doc/search/all_76.html @@ -0,0 +1,57 @@ + + + + + + + +
+
Loading...
+
+
+ val + HttpWorker +
+
+ +
+
+ value.c +
+
+
+
+ value.h +
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/all_77.html b/assets/html/doc/search/all_77.html new file mode 100644 index 0000000..f92db9d --- /dev/null +++ b/assets/html/doc/search/all_77.html @@ -0,0 +1,117 @@ + + + + + + + +
+
Loading...
+
+
+ wbuf + HttpWorker +
+
+ + +
+
+ worker.c +
+
+
+
+ worker.h +
+
+ +
+
+ write.c +
+
+
+
+ write.c +
+
+
+
+ write.c +
+
+
+
+ write.c +
+
+
+
+ writer + HttpWorker +
+
+
+
+ writer.c +
+
+
+
+ writer.c +
+
+
+
+ writer.h +
+
+
+
+ writer.h +
+
+
+
+ WRITER_MAX_BUF + writer.h +
+
+
+
+ written + HttpWriter +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/classes_61.html b/assets/html/doc/search/classes_61.html new file mode 100644 index 0000000..f4bd992 --- /dev/null +++ b/assets/html/doc/search/classes_61.html @@ -0,0 +1,30 @@ + + + + + + + +
+
Loading...
+
+
+ Auth +
+
+
+
+ AuthLdap +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/classes_63.html b/assets/html/doc/search/classes_63.html new file mode 100644 index 0000000..6a419d9 --- /dev/null +++ b/assets/html/doc/search/classes_63.html @@ -0,0 +1,40 @@ + + + + + + + +
+
Loading...
+
+
+ Cbuf +
+
+
+
+ class +
+
+
+
+ conns +
+
+
+ +
+
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/classes_68.html b/assets/html/doc/search/classes_68.html new file mode 100644 index 0000000..5b1c6b8 --- /dev/null +++ b/assets/html/doc/search/classes_68.html @@ -0,0 +1,75 @@ + + + + + + + +
+
Loading...
+
+
+ Hash +
+
+
+
+ HashValue +
+
+
+ +
+
+ +
+
+ +
+ +
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/classes_69.html b/assets/html/doc/search/classes_69.html new file mode 100644 index 0000000..e02c3e1 --- /dev/null +++ b/assets/html/doc/search/classes_69.html @@ -0,0 +1,75 @@ + + + + + + + +
+
Loading...
+
+
+ i_Auth +
+
+
+
+ i_Class +
+
+
+ +
+
+ +
+
+
+ i_Logger +
+
+
+ +
+ + +
+
+ i_Subject +
+
+
+ +
+
+
+ interface +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/classes_6c.html b/assets/html/doc/search/classes_6c.html new file mode 100644 index 0000000..253f5b9 --- /dev/null +++ b/assets/html/doc/search/classes_6c.html @@ -0,0 +1,35 @@ + + + + + + + +
+
Loading...
+
+
+ Logger +
+
+
+ +
+
+ +
+
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/classes_72.html b/assets/html/doc/search/classes_72.html new file mode 100644 index 0000000..9d78497 --- /dev/null +++ b/assets/html/doc/search/classes_72.html @@ -0,0 +1,25 @@ + + + + + + + +
+
Loading...
+
+
+ randval +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/classes_73.html b/assets/html/doc/search/classes_73.html new file mode 100644 index 0000000..34d3df9 --- /dev/null +++ b/assets/html/doc/search/classes_73.html @@ -0,0 +1,40 @@ + + + + + + + +
+
Loading...
+
+
+ Server +
+
+
+
+ Session +
+
+
+
+ Sock +
+
+
+
+ Stream +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/defines_5f.html b/assets/html/doc/search/defines_5f.html new file mode 100644 index 0000000..8ed5f34 --- /dev/null +++ b/assets/html/doc/search/defines_5f.html @@ -0,0 +1,61 @@ + + + + + + + +
+
Loading...
+
+
+ _CALL + class.h +
+
+ +
+
+ _ISOC99_SOURCE + class.h +
+
+
+
+ _NULL + class.h +
+
+
+
+ _POSIX_C_SOURCE + cbuf.c +
+
+
+
+ _POSIX_SOURCE + cbuf.c +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/defines_62.html b/assets/html/doc/search/defines_62.html new file mode 100644 index 0000000..4a74e7c --- /dev/null +++ b/assets/html/doc/search/defines_62.html @@ -0,0 +1,26 @@ + + + + + + + +
+
Loading...
+
+
+ Bool + commons.h +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/defines_63.html b/assets/html/doc/search/defines_63.html new file mode 100644 index 0000000..58e9818 --- /dev/null +++ b/assets/html/doc/search/defines_63.html @@ -0,0 +1,62 @@ + + + + + + + +
+
Loading...
+
+
+ CALL + class.h +
+
+
+
+ CLASS + class.h +
+
+
+
+ CLASS_MAGIC + class.h +
+
+
+
+ clone + class.h +
+
+
+
+ CREATE_CLASS + class.h +
+
+
+
+ CRED_PWD + credential.h +
+
+
+
+ CSTRA + memory.h +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/defines_64.html b/assets/html/doc/search/defines_64.html new file mode 100644 index 0000000..73764be --- /dev/null +++ b/assets/html/doc/search/defines_64.html @@ -0,0 +1,38 @@ + + + + + + + +
+
Loading...
+
+
+ DEFAULT_SECS + webgameserver.c +
+
+
+
+ DEFAULT_USECS + webgameserver.c +
+
+
+
+ delete + class.h +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/defines_65.html b/assets/html/doc/search/defines_65.html new file mode 100644 index 0000000..edf2694 --- /dev/null +++ b/assets/html/doc/search/defines_65.html @@ -0,0 +1,32 @@ + + + + + + + +
+
Loading...
+
+
+ ECBUFOVFL + cbuf.h +
+
+
+
+ EXTENDS + class.h +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/defines_66.html b/assets/html/doc/search/defines_66.html new file mode 100644 index 0000000..cd125e2 --- /dev/null +++ b/assets/html/doc/search/defines_66.html @@ -0,0 +1,32 @@ + + + + + + + +
+
Loading...
+
+
+ FALSE + commons.h +
+
+
+
+ FREE + memory.h +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/defines_67.html b/assets/html/doc/search/defines_67.html new file mode 100644 index 0000000..4e5b305 --- /dev/null +++ b/assets/html/doc/search/defines_67.html @@ -0,0 +1,26 @@ + + + + + + + +
+
Loading...
+
+
+ GET_CLASS + class.h +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/defines_68.html b/assets/html/doc/search/defines_68.html new file mode 100644 index 0000000..b5dc210 --- /dev/null +++ b/assets/html/doc/search/defines_68.html @@ -0,0 +1,140 @@ + + + + + + + +
+
Loading...
+
+
+ HAS_PARENT + class.h +
+
+
+
+ HAVE__BOOL + config.h +
+
+
+
+ HAVE_DLFCN_H + config.h +
+
+
+
+ HAVE_INTTYPES_H + config.h +
+
+
+
+ HAVE_JSON_JSON_H + config.h +
+
+
+
+ HAVE_LIBSSL + config.h +
+
+
+
+ HAVE_MEMORY_H + config.h +
+
+
+
+ HAVE_MEMSET + config.h +
+
+
+
+ HAVE_STDARG_H + config.h +
+
+
+
+ HAVE_STDBOOL_H + config.h +
+
+
+
+ HAVE_STDINT_H + config.h +
+
+
+
+ HAVE_STDIO_H + config.h +
+
+
+
+ HAVE_STDLIB_H + config.h +
+
+
+
+ HAVE_STRING_H + config.h +
+
+
+
+ HAVE_STRINGS_H + config.h +
+
+
+
+ HAVE_SYS_STAT_H + config.h +
+
+
+
+ HAVE_SYS_TYPES_H + config.h +
+
+
+
+ HAVE_SYSLOG_H + config.h +
+
+
+
+ HAVE_UNISTD_H + config.h +
+
+
+
+ HTTP_MESSAGE_QUEUE_MAX + queue.h +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/defines_69.html b/assets/html/doc/search/defines_69.html new file mode 100644 index 0000000..4388e10 --- /dev/null +++ b/assets/html/doc/search/defines_69.html @@ -0,0 +1,62 @@ + + + + + + + +
+
Loading...
+
+
+ IFACE + interface.h +
+
+
+
+ IFACE_GET + class.h +
+
+
+
+ INIT_CLASS + class.h +
+
+
+
+ INIT_IFACE + interface.h +
+
+
+
+ INIT_IFACE_IMPL + interface.h +
+
+
+
+ INSTANCE_OF + class.h +
+
+
+
+ IS_OBJECT + class.h +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/defines_6c.html b/assets/html/doc/search/defines_6c.html new file mode 100644 index 0000000..ff4649f --- /dev/null +++ b/assets/html/doc/search/defines_6c.html @@ -0,0 +1,26 @@ + + + + + + + +
+
Loading...
+
+
+ LT_OBJDIR + config.h +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/defines_6d.html b/assets/html/doc/search/defines_6d.html new file mode 100644 index 0000000..510aaf3 --- /dev/null +++ b/assets/html/doc/search/defines_6d.html @@ -0,0 +1,41 @@ + + + + + + + +
+
Loading...
+
+
+ MAX + commons.h +
+
+
+
+ MAX_IFACE + interface.h +
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/defines_6e.html b/assets/html/doc/search/defines_6e.html new file mode 100644 index 0000000..849265f --- /dev/null +++ b/assets/html/doc/search/defines_6e.html @@ -0,0 +1,44 @@ + + + + + + + +
+
Loading...
+
+
+ N_HTTP_METHOD + request.h +
+
+
+
+ N_VALUES + header.h +
+
+
+
+ new + class.h +
+
+
+
+ NUMARGS + interface.h +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/defines_70.html b/assets/html/doc/search/defines_70.html new file mode 100644 index 0000000..f1d5726 --- /dev/null +++ b/assets/html/doc/search/defines_70.html @@ -0,0 +1,80 @@ + + + + + + + +
+
Loading...
+
+
+ PACKAGE + config.h +
+
+
+
+ PACKAGE_BUGREPORT + config.h +
+
+
+
+ PACKAGE_NAME + config.h +
+
+
+
+ PACKAGE_STRING + config.h +
+
+
+
+ PACKAGE_TARNAME + config.h +
+
+
+
+ PACKAGE_URL + config.h +
+
+
+
+ PACKAGE_VERSION + config.h +
+
+
+
+ PARENTCALL + class.h +
+
+
+
+ PARSER_MAX_BUF + parser.h +
+
+
+
+ POLLFD + poll.c +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/defines_72.html b/assets/html/doc/search/defines_72.html new file mode 100644 index 0000000..43f9853 --- /dev/null +++ b/assets/html/doc/search/defines_72.html @@ -0,0 +1,37 @@ + + + + + + + +
+
Loading...
+ +
+
+ RETCALL + class.h +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/defines_73.html b/assets/html/doc/search/defines_73.html new file mode 100644 index 0000000..d1f8a94 --- /dev/null +++ b/assets/html/doc/search/defines_73.html @@ -0,0 +1,44 @@ + + + + + + + +
+
Loading...
+
+
+ SESSION_LIVETIME + session.h +
+
+
+
+ STDC_HEADERS + config.h +
+
+
+
+ SWAP + commons.h +
+
+
+
+ SWAP_FUN + commons.h +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/defines_74.html b/assets/html/doc/search/defines_74.html new file mode 100644 index 0000000..c790438 --- /dev/null +++ b/assets/html/doc/search/defines_74.html @@ -0,0 +1,26 @@ + + + + + + + +
+
Loading...
+
+
+ TRUE + commons.h +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/defines_76.html b/assets/html/doc/search/defines_76.html new file mode 100644 index 0000000..05ed933 --- /dev/null +++ b/assets/html/doc/search/defines_76.html @@ -0,0 +1,26 @@ + + + + + + + +
+
Loading...
+
+
+ VERSION + config.h +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/defines_77.html b/assets/html/doc/search/defines_77.html new file mode 100644 index 0000000..121128d --- /dev/null +++ b/assets/html/doc/search/defines_77.html @@ -0,0 +1,26 @@ + + + + + + + +
+
Loading...
+
+
+ WRITER_MAX_BUF + writer.h +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/enums_65.html b/assets/html/doc/search/enums_65.html new file mode 100644 index 0000000..4b4c2bb --- /dev/null +++ b/assets/html/doc/search/enums_65.html @@ -0,0 +1,56 @@ + + + + + + + +
+
Loading...
+
+
+ e_AuthModule + auth.h +
+
+
+
+ e_CredentialType + credential.h +
+
+
+
+ e_HttpMessageState + parser.h +
+
+
+
+ e_HttpMessageType + message.h +
+
+
+
+ e_HttpWriterState + writer.h +
+
+
+
+ e_StreamHandleType + stream.h +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/enums_6c.html b/assets/html/doc/search/enums_6c.html new file mode 100644 index 0000000..0b87bf8 --- /dev/null +++ b/assets/html/doc/search/enums_6c.html @@ -0,0 +1,26 @@ + + + + + + + +
+
Loading...
+
+
+ logger_level + logger.h +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/enumvalues_61.html b/assets/html/doc/search/enumvalues_61.html new file mode 100644 index 0000000..c354a47 --- /dev/null +++ b/assets/html/doc/search/enumvalues_61.html @@ -0,0 +1,26 @@ + + + + + + + +
+
Loading...
+
+
+ AUTH_LDAP + auth.h +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/enumvalues_63.html b/assets/html/doc/search/enumvalues_63.html new file mode 100644 index 0000000..637882b --- /dev/null +++ b/assets/html/doc/search/enumvalues_63.html @@ -0,0 +1,26 @@ + + + + + + + +
+
Loading...
+
+
+ CRED_PASSWORD + credential.h +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/enumvalues_68.html b/assets/html/doc/search/enumvalues_68.html new file mode 100644 index 0000000..ddb28bd --- /dev/null +++ b/assets/html/doc/search/enumvalues_68.html @@ -0,0 +1,80 @@ + + + + + + + +
+
Loading...
+
+
+ HTTP_MESSAGE_BUFFERED + message.h +
+
+
+
+ HTTP_MESSAGE_DONE + parser.h +
+
+
+
+ HTTP_MESSAGE_GARBAGE + parser.h +
+
+
+
+ HTTP_MESSAGE_HEADERS_DONE + parser.h +
+
+
+
+ HTTP_MESSAGE_INTRO_DONE + parser.h +
+
+
+
+ HTTP_MESSAGE_PIPED + message.h +
+
+
+
+ HTTP_MESSAGE_START + parser.h +
+
+
+
+ HTTP_WRITER_DONE + writer.h +
+
+
+
+ HTTP_WRITER_GET + writer.h +
+
+
+
+ HTTP_WRITER_WRITE + writer.h +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/enumvalues_6c.html b/assets/html/doc/search/enumvalues_6c.html new file mode 100644 index 0000000..c3497dc --- /dev/null +++ b/assets/html/doc/search/enumvalues_6c.html @@ -0,0 +1,68 @@ + + + + + + + +
+
Loading...
+
+
+ LOGGER_ALERT + logger.h +
+
+
+
+ LOGGER_CRIT + logger.h +
+
+
+
+ LOGGER_DEBUG + logger.h +
+
+
+
+ LOGGER_EMERG + logger.h +
+
+
+
+ LOGGER_ERR + logger.h +
+
+
+
+ LOGGER_INFO + logger.h +
+
+
+
+ LOGGER_NOTICE + logger.h +
+
+
+
+ LOGGER_WARNING + logger.h +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/enumvalues_73.html b/assets/html/doc/search/enumvalues_73.html new file mode 100644 index 0000000..1f71cfb --- /dev/null +++ b/assets/html/doc/search/enumvalues_73.html @@ -0,0 +1,32 @@ + + + + + + + +
+
Loading...
+
+
+ STREAM_FD + stream.h +
+
+
+
+ STREAM_SSL + stream.h +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/files_33.html b/assets/html/doc/search/files_33.html new file mode 100644 index 0000000..5ba38d8 --- /dev/null +++ b/assets/html/doc/search/files_33.html @@ -0,0 +1,25 @@ + + + + + + + +
+
Loading...
+
+
+ 304.c +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/files_34.html b/assets/html/doc/search/files_34.html new file mode 100644 index 0000000..5757660 --- /dev/null +++ b/assets/html/doc/search/files_34.html @@ -0,0 +1,30 @@ + + + + + + + +
+
Loading...
+
+
+ 403.c +
+
+
+
+ 404.c +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/files_61.html b/assets/html/doc/search/files_61.html new file mode 100644 index 0000000..028e6b6 --- /dev/null +++ b/assets/html/doc/search/files_61.html @@ -0,0 +1,75 @@ + + + + + + + +
+
Loading...
+
+
+ accept.c +
+
+
+
+ add.c +
+
+
+
+ add.c +
+
+ +
+ +
+
+
+ answer.c +
+
+
+
+ asset.c +
+
+
+
+ auth.c +
+
+
+
+ auth.h +
+
+
+
+ auth.h +
+
+
+
+ auth.h +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/files_63.html b/assets/html/doc/search/files_63.html new file mode 100644 index 0000000..c8450b8 --- /dev/null +++ b/assets/html/doc/search/files_63.html @@ -0,0 +1,85 @@ + + + + + + + +
+
Loading...
+
+
+ cbuf.c +
+
+
+
+ cbuf.h +
+
+
+
+ class.h +
+
+
+
+ class.h +
+
+
+
+ class.h +
+
+
+ +
+
+
+ commons.h +
+
+
+
+ config.h +
+
+
+
+ connect.c +
+
+ + +
+ +
+
+ +
+
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/files_64.html b/assets/html/doc/search/files_64.html new file mode 100644 index 0000000..5ea938a --- /dev/null +++ b/assets/html/doc/search/files_64.html @@ -0,0 +1,35 @@ + + + + + + + +
+
Loading...
+
+ +
+
+
+ delete.c +
+
+
+
+ delete.c +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/files_65.html b/assets/html/doc/search/files_65.html new file mode 100644 index 0000000..8a8f028 --- /dev/null +++ b/assets/html/doc/search/files_65.html @@ -0,0 +1,30 @@ + + + + + + + +
+
Loading...
+
+
+ each.c +
+
+
+
+ empty.c +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/files_67.html b/assets/html/doc/search/files_67.html new file mode 100644 index 0000000..dbf72fc --- /dev/null +++ b/assets/html/doc/search/files_67.html @@ -0,0 +1,65 @@ + + + + + + + +
+
Loading...
+
+
+ get.c +
+
+
+
+ get.c +
+
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/files_68.html b/assets/html/doc/search/files_68.html new file mode 100644 index 0000000..d7e43d3 --- /dev/null +++ b/assets/html/doc/search/files_68.html @@ -0,0 +1,115 @@ + + + + + + + +
+
Loading...
+ + + + +
+
+ hash.c +
+
+
+
+ hash.c +
+
+
+
+ hash.h +
+
+
+
+ hash.h +
+
+
+
+ hash.h +
+
+
+ +
+
+ +
+
+
+ header.c +
+
+
+
+ header.h +
+
+ + +
+
+ http.c +
+
+
+
+ http.h +
+
+
+
+ http.h +
+
+
+ +
+
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/files_69.html b/assets/html/doc/search/files_69.html new file mode 100644 index 0000000..3664978 --- /dev/null +++ b/assets/html/doc/search/files_69.html @@ -0,0 +1,65 @@ + + + + + + + +
+
Loading...
+
+
+ i_class.c +
+
+ +
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/files_6c.html b/assets/html/doc/search/files_6c.html new file mode 100644 index 0000000..2578199 --- /dev/null +++ b/assets/html/doc/search/files_6c.html @@ -0,0 +1,65 @@ + + + + + + + +
+
Loading...
+
+
+ ldap.c +
+
+
+
+ ldap.h +
+
+
+
+ listen.c +
+
+
+
+ lock.c +
+
+
+
+ logger.c +
+
+
+
+ logger.h +
+
+
+
+ logger.h +
+
+
+
+ logger.h +
+
+
+ +
+
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/files_6d.html b/assets/html/doc/search/files_6d.html new file mode 100644 index 0000000..255f077 --- /dev/null +++ b/assets/html/doc/search/files_6d.html @@ -0,0 +1,45 @@ + + + + + + + +
+
Loading...
+
+
+ memchr.c +
+
+
+
+ memory.c +
+
+
+
+ memory.h +
+
+
+
+ message.c +
+
+
+
+ message.h +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/files_6e.html b/assets/html/doc/search/files_6e.html new file mode 100644 index 0000000..734cc5a --- /dev/null +++ b/assets/html/doc/search/files_6e.html @@ -0,0 +1,25 @@ + + + + + + + +
+
Loading...
+
+ +
+
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/files_6f.html b/assets/html/doc/search/files_6f.html new file mode 100644 index 0000000..f80935a --- /dev/null +++ b/assets/html/doc/search/files_6f.html @@ -0,0 +1,30 @@ + + + + + + + +
+
Loading...
+
+ +
+
+ +
+
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/files_70.html b/assets/html/doc/search/files_70.html new file mode 100644 index 0000000..ac9c04f --- /dev/null +++ b/assets/html/doc/search/files_70.html @@ -0,0 +1,65 @@ + + + + + + + +
+
Loading...
+
+
+ p_body.c +
+
+
+ +
+
+ +
+ +
+
+ parse.c +
+
+
+
+ parser.c +
+
+
+
+ parser.h +
+
+
+
+ poll.c +
+
+
+
+ process.c +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/files_71.html b/assets/html/doc/search/files_71.html new file mode 100644 index 0000000..4e5ff5f --- /dev/null +++ b/assets/html/doc/search/files_71.html @@ -0,0 +1,30 @@ + + + + + + + +
+
Loading...
+
+
+ queue.c +
+
+
+
+ queue.h +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/files_72.html b/assets/html/doc/search/files_72.html new file mode 100644 index 0000000..d97e9bd --- /dev/null +++ b/assets/html/doc/search/files_72.html @@ -0,0 +1,80 @@ + + + + + + + +
+
Loading...
+
+
+ randval.c +
+
+
+
+ read.c +
+
+
+
+ read.c +
+
+
+
+ read.c +
+
+
+
+ reader.c +
+
+
+
+ reader.h +
+
+
+
+ release.c +
+
+
+
+ request.c +
+
+
+
+ request.h +
+
+
+ +
+
+ +
+
+
+ run.c +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/files_73.html b/assets/html/doc/search/files_73.html new file mode 100644 index 0000000..3eb8e13 --- /dev/null +++ b/assets/html/doc/search/files_73.html @@ -0,0 +1,110 @@ + + + + + + + +
+
Loading...
+
+
+ server.c +
+
+
+
+ server.h +
+
+
+
+ session.c +
+
+
+
+ session.c +
+
+
+
+ session.h +
+
+
+ +
+ + + +
+
+ socket.c +
+
+
+
+ socket.h +
+
+
+
+ stderr.c +
+
+
+
+ stream.c +
+
+
+
+ stream.h +
+
+
+
+ stream.h +
+
+
+
+ subject.c +
+
+
+
+ subject.h +
+
+
+
+ syslog.c +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/files_74.html b/assets/html/doc/search/files_74.html new file mode 100644 index 0000000..7cc33a3 --- /dev/null +++ b/assets/html/doc/search/files_74.html @@ -0,0 +1,25 @@ + + + + + + + +
+
Loading...
+
+ +
+
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/files_76.html b/assets/html/doc/search/files_76.html new file mode 100644 index 0000000..aa49943 --- /dev/null +++ b/assets/html/doc/search/files_76.html @@ -0,0 +1,30 @@ + + + + + + + +
+
Loading...
+
+
+ value.c +
+
+
+
+ value.h +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/files_77.html b/assets/html/doc/search/files_77.html new file mode 100644 index 0000000..d35fe64 --- /dev/null +++ b/assets/html/doc/search/files_77.html @@ -0,0 +1,75 @@ + + + + + + + +
+
Loading...
+ +
+
+ worker.c +
+
+
+
+ worker.h +
+
+
+
+ write.c +
+
+
+
+ write.c +
+
+
+
+ write.c +
+
+
+
+ write.c +
+
+
+
+ writer.c +
+
+
+
+ writer.c +
+
+
+
+ writer.h +
+
+
+
+ writer.h +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/functions_61.html b/assets/html/doc/search/functions_61.html new file mode 100644 index 0000000..d29b181 --- /dev/null +++ b/assets/html/doc/search/functions_61.html @@ -0,0 +1,41 @@ + + + + + + + +
+
Loading...
+
+
+ authCreateById + auth.h +
+
+
+
+ authCreateLdap + auth.h +
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/functions_63.html b/assets/html/doc/search/functions_63.html new file mode 100644 index 0000000..db658b8 --- /dev/null +++ b/assets/html/doc/search/functions_63.html @@ -0,0 +1,237 @@ + + + + + + + +
+
Loading...
+ + + + + + + + + + + + + + + + + + + + + + +
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/functions_64.html b/assets/html/doc/search/functions_64.html new file mode 100644 index 0000000..0052431 --- /dev/null +++ b/assets/html/doc/search/functions_64.html @@ -0,0 +1,29 @@ + + + + + + + +
+
Loading...
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/functions_65.html b/assets/html/doc/search/functions_65.html new file mode 100644 index 0000000..7597e12 --- /dev/null +++ b/assets/html/doc/search/functions_65.html @@ -0,0 +1,31 @@ + + + + + + + +
+
Loading...
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/functions_66.html b/assets/html/doc/search/functions_66.html new file mode 100644 index 0000000..2c9e6fa --- /dev/null +++ b/assets/html/doc/search/functions_66.html @@ -0,0 +1,29 @@ + + + + + + + +
+
Loading...
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/functions_68.html b/assets/html/doc/search/functions_68.html new file mode 100644 index 0000000..d59ecb7 --- /dev/null +++ b/assets/html/doc/search/functions_68.html @@ -0,0 +1,344 @@ + + + + + + + +
+
Loading...
+ + + + + + +
+
+ httpCookieToString + cookie.h +
+
+ + + + + + + + + + + + + + + + + + + + + +
+
+ httpResponseMe + response.h +
+
+ + +
+
+ httpStringToCookie + cookie.h +
+
+ + + + + +
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/functions_69.html b/assets/html/doc/search/functions_69.html new file mode 100644 index 0000000..f45a1d4 --- /dev/null +++ b/assets/html/doc/search/functions_69.html @@ -0,0 +1,85 @@ + + + + + + + +
+
Loading...
+
+
+ INIT_IFACE +
+ INIT_IFACE(Class, credentialCtor, credentialDtor, NULL): credential.c + INIT_IFACE(Class, authLdapCtor, authLdapDtor, NULL): ldap.c + INIT_IFACE(Auth, authLdapAuthenticate): ldap.c + INIT_IFACE(Class, cbufCtor, cbufDtor, NULL): cbuf.c + INIT_IFACE(Class, hashCtor, hashDtor, NULL): hash.c + INIT_IFACE(Class, hashValueCtor, hashValueDtor, NULL): value.c + INIT_IFACE(Hashable, hashValueGetHash, hashValueHandleDouble): value.c + INIT_IFACE(Class, httpCookieCtor, httpCookieDtor, NULL): cookie.c + INIT_IFACE(Hashable, httpCookieGetHash, httpCookieHandleDouble): cookie.c + INIT_IFACE(Class, httpHeaderCtor, httpHeaderDtor, NULL): header.c + INIT_IFACE(Hashable, httpHeaderGetHash, httpHeaderHandleDouble): header.c + INIT_IFACE(Class, messageQueueCtor, messageQueueDtor, NULL): queue.c + INIT_IFACE(Class, httpMessageCtor, httpMessageDtor, NULL): message.c + INIT_IFACE(Class, httpParserCtor, httpParserDtor, NULL): parser.c + INIT_IFACE(StreamReader, httpParserParse): parser.c + INIT_IFACE(Class, httpRequestCtor, httpRequestDtor, NULL): request.c + INIT_IFACE(HttpIntro, sizeGet, toString): request.c + INIT_IFACE(Class, httpResponseCtor, httpResponseDtor, NULL): response.c + INIT_IFACE(HttpIntro, sizeGet, toString): response.c + INIT_IFACE(Class, httpWorkerCtor, httpWorkerDtor, httpWorkerClone): worker.c + INIT_IFACE(StreamReader, httpWorkerProcess): worker.c + INIT_IFACE(StreamWriter, httpWorkerWrite): worker.c + INIT_IFACE(Class, httpWriterCtor, httpWriterDtor, NULL): writer.c + INIT_IFACE(StreamWriter, httpWriterWrite): writer.c + INIT_IFACE(Class, loggerCtor, loggerDtor, NULL): logger.c + INIT_IFACE(Logger, logStderr): stderr.c + INIT_IFACE(Logger, logSyslog): syslog.c + INIT_IFACE(Class, serverCtor, serverDtor, NULL): server.c + INIT_IFACE(Class, sessionCtor, sessionDtor, NULL): session.c + INIT_IFACE(Class, socketCtor, socketDtor, NULL): socket.c + INIT_IFACE(Class, streamCtor, streamDtor, NULL): stream.c +
+
+
+ + + +
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/functions_6c.html b/assets/html/doc/search/functions_6c.html new file mode 100644 index 0000000..53692ae --- /dev/null +++ b/assets/html/doc/search/functions_6c.html @@ -0,0 +1,29 @@ + + + + + + + +
+
Loading...
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/functions_6d.html b/assets/html/doc/search/functions_6d.html new file mode 100644 index 0000000..3c94d8f --- /dev/null +++ b/assets/html/doc/search/functions_6d.html @@ -0,0 +1,26 @@ + + + + + + + +
+
Loading...
+
+
+ main + webgameserver.c +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/functions_6e.html b/assets/html/doc/search/functions_6e.html new file mode 100644 index 0000000..1c2203d --- /dev/null +++ b/assets/html/doc/search/functions_6e.html @@ -0,0 +1,26 @@ + + + + + + + +
+
Loading...
+
+
+ nullhandler + webgameserver.c +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/functions_6f.html b/assets/html/doc/search/functions_6f.html new file mode 100644 index 0000000..48ff3d9 --- /dev/null +++ b/assets/html/doc/search/functions_6f.html @@ -0,0 +1,29 @@ + + + + + + + +
+
Loading...
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/functions_73.html b/assets/html/doc/search/functions_73.html new file mode 100644 index 0000000..3ad42d2 --- /dev/null +++ b/assets/html/doc/search/functions_73.html @@ -0,0 +1,203 @@ + + + + + + + +
+
Loading...
+ + + + + + + + + + + + + + + + + + + + +
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/functions_74.html b/assets/html/doc/search/functions_74.html new file mode 100644 index 0000000..a99358c --- /dev/null +++ b/assets/html/doc/search/functions_74.html @@ -0,0 +1,29 @@ + + + + + + + +
+
Loading...
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/nomatches.html b/assets/html/doc/search/nomatches.html new file mode 100644 index 0000000..b1ded27 --- /dev/null +++ b/assets/html/doc/search/nomatches.html @@ -0,0 +1,12 @@ + + + + + + + +
+
No Matches
+
+ + diff --git a/assets/html/doc/search/typedefs_61.html b/assets/html/doc/search/typedefs_61.html new file mode 100644 index 0000000..ee481bb --- /dev/null +++ b/assets/html/doc/search/typedefs_61.html @@ -0,0 +1,26 @@ + + + + + + + +
+
Loading...
+
+
+ AuthModule + auth.h +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/typedefs_63.html b/assets/html/doc/search/typedefs_63.html new file mode 100644 index 0000000..89247e0 --- /dev/null +++ b/assets/html/doc/search/typedefs_63.html @@ -0,0 +1,32 @@ + + + + + + + +
+
Loading...
+
+
+ class_ptr + class.h +
+
+
+
+ CredentialType + credential.h +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/typedefs_66.html b/assets/html/doc/search/typedefs_66.html new file mode 100644 index 0000000..25fd748 --- /dev/null +++ b/assets/html/doc/search/typedefs_66.html @@ -0,0 +1,116 @@ + + + + + + + +
+
Loading...
+
+
+ fptr_authenticate + auth.h +
+
+
+
+ fptr_classInit + class.h +
+
+
+
+ fptr_clone + class.h +
+
+
+
+ fptr_ctor + class.h +
+
+
+
+ fptr_dtor + class.h +
+
+
+
+ fptr_hashableGetHash + hashable.h +
+
+
+
+ fptr_hashableHandleDouble + hashable.h +
+
+
+
+ fptr_httpIntroSizeGet + http_intro.h +
+
+
+
+ fptr_httpIntroToString + http_intro.h +
+
+
+
+ fptr_log + logger.h +
+
+
+
+ fptr_observerNotify + observer.h +
+
+
+
+ fptr_streamReaderRead + reader.h +
+
+
+
+ fptr_streamWriterWrite + writer.h +
+
+
+
+ fptr_subjectAttach + subject.h +
+
+
+
+ fptr_subjectDetach + subject.h +
+
+
+
+ fptr_subjectNotify + subject.h +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/typedefs_68.html b/assets/html/doc/search/typedefs_68.html new file mode 100644 index 0000000..a457cce --- /dev/null +++ b/assets/html/doc/search/typedefs_68.html @@ -0,0 +1,38 @@ + + + + + + + +
+
Loading...
+
+
+ HttpMessageState + parser.h +
+
+
+
+ HttpMessageType + message.h +
+
+
+
+ HttpWriterState + writer.h +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/typedefs_69.html b/assets/html/doc/search/typedefs_69.html new file mode 100644 index 0000000..ff27746 --- /dev/null +++ b/assets/html/doc/search/typedefs_69.html @@ -0,0 +1,32 @@ + + + + + + + +
+
Loading...
+
+
+ iface_impl_ptr + interface.h +
+
+
+
+ iface_ptr + interface.h +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/typedefs_6c.html b/assets/html/doc/search/typedefs_6c.html new file mode 100644 index 0000000..ad6036d --- /dev/null +++ b/assets/html/doc/search/typedefs_6c.html @@ -0,0 +1,26 @@ + + + + + + + +
+
Loading...
+
+
+ logger_level + logger.h +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/typedefs_73.html b/assets/html/doc/search/typedefs_73.html new file mode 100644 index 0000000..8af7ffd --- /dev/null +++ b/assets/html/doc/search/typedefs_73.html @@ -0,0 +1,26 @@ + + + + + + + +
+
Loading...
+
+
+ StreamHandleType + stream.h +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/variables_5f.html b/assets/html/doc/search/variables_5f.html new file mode 100644 index 0000000..63b27c0 --- /dev/null +++ b/assets/html/doc/search/variables_5f.html @@ -0,0 +1,36 @@ + + + + + + + +
+
Loading...
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/variables_61.html b/assets/html/doc/search/variables_61.html new file mode 100644 index 0000000..be1ddbf --- /dev/null +++ b/assets/html/doc/search/variables_61.html @@ -0,0 +1,38 @@ + + + + + + + +
+
Loading...
+
+
+ attach + i_Subject +
+
+
+
+ auth + HttpWorker +
+
+
+
+ authenticate + i_Auth +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/variables_62.html b/assets/html/doc/search/variables_62.html new file mode 100644 index 0000000..4912bc3 --- /dev/null +++ b/assets/html/doc/search/variables_62.html @@ -0,0 +1,53 @@ + + + + + + + +
+
Loading...
+
+
+ base_dn + AuthLdap +
+
+
+
+ body + HttpMessage +
+
+
+
+ bsize + Cbuf +
+
+ +
+
+ bused + Cbuf +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/variables_63.html b/assets/html/doc/search/variables_63.html new file mode 100644 index 0000000..1a0b965 --- /dev/null +++ b/assets/html/doc/search/variables_63.html @@ -0,0 +1,71 @@ + + + + + + + +
+
Loading...
+
+
+ clone + i_Class +
+
+
+
+ conns + Server +
+
+
+
+ cookies + HttpRequest +
+
+
+
+ cred + Credential +
+
+
+
+ ctor + i_Class +
+
+
+
+ ctx + Server +
+
+ +
+
+ cvalue + HttpHeader +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/variables_64.html b/assets/html/doc/search/variables_64.html new file mode 100644 index 0000000..ed6ac24 --- /dev/null +++ b/assets/html/doc/search/variables_64.html @@ -0,0 +1,59 @@ + + + + + + + +
+
Loading...
+
+
+ data + Cbuf +
+
+
+
+ dbody + HttpMessage +
+
+
+
+ detach + i_Subject +
+
+
+
+ domain + HttpCookie +
+
+ +
+
+ dtor + i_Class +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/variables_65.html b/assets/html/doc/search/variables_65.html new file mode 100644 index 0000000..116adb4 --- /dev/null +++ b/assets/html/doc/search/variables_65.html @@ -0,0 +1,26 @@ + + + + + + + +
+
Loading...
+
+
+ expires + HttpCookie +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/variables_66.html b/assets/html/doc/search/variables_66.html new file mode 100644 index 0000000..1ef7c6c --- /dev/null +++ b/assets/html/doc/search/variables_66.html @@ -0,0 +1,32 @@ + + + + + + + +
+
Loading...
+
+
+ fd + Stream +
+
+
+
+ fds + Server +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/variables_67.html b/assets/html/doc/search/variables_67.html new file mode 100644 index 0000000..9b98f14 --- /dev/null +++ b/assets/html/doc/search/variables_67.html @@ -0,0 +1,32 @@ + + + + + + + +
+
Loading...
+
+
+ get + HttpRequest +
+
+
+
+ getHash + i_Hashable +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/variables_68.html b/assets/html/doc/search/variables_68.html new file mode 100644 index 0000000..1b366a5 --- /dev/null +++ b/assets/html/doc/search/variables_68.html @@ -0,0 +1,61 @@ + + + + + + + +
+
Loading...
+ +
+
+ handleDouble + i_Hashable +
+
+ +
+
+ header + HttpMessage +
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/variables_69.html b/assets/html/doc/search/variables_69.html new file mode 100644 index 0000000..cf50c4b --- /dev/null +++ b/assets/html/doc/search/variables_69.html @@ -0,0 +1,53 @@ + + + + + + + +
+
Loading...
+ +
+
+ impl + iface_impl +
+
+
+
+ incomplete + HttpParser +
+
+
+
+ init + class +
+
+
+
+ isize + HttpParser +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/variables_6b.html b/assets/html/doc/search/variables_6b.html new file mode 100644 index 0000000..575e923 --- /dev/null +++ b/assets/html/doc/search/variables_6b.html @@ -0,0 +1,29 @@ + + + + + + + +
+
Loading...
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/variables_6c.html b/assets/html/doc/search/variables_6c.html new file mode 100644 index 0000000..7ff5bff --- /dev/null +++ b/assets/html/doc/search/variables_6c.html @@ -0,0 +1,62 @@ + + + + + + + +
+
Loading...
+
+
+ ldap + AuthLdap +
+
+
+
+ livetime + Session +
+
+
+
+ lock + Cbuf +
+
+ +
+
+ logger + Server +
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/variables_6d.html b/assets/html/doc/search/variables_6d.html new file mode 100644 index 0000000..95b7478 --- /dev/null +++ b/assets/html/doc/search/variables_6d.html @@ -0,0 +1,56 @@ + + + + + + + +
+
Loading...
+
+
+ magic + class +
+
+
+
+ max_age + HttpCookie +
+
+
+
+ max_fds + Server +
+
+
+
+ method + HttpRequest +
+
+
+
+ min_level + Logger +
+
+
+
+ msgs + HttpMessageQueue +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/variables_6e.html b/assets/html/doc/search/variables_6e.html new file mode 100644 index 0000000..0a120c3 --- /dev/null +++ b/assets/html/doc/search/variables_6e.html @@ -0,0 +1,120 @@ + + + + + + + +
+
Loading...
+ +
+
+ nbase_dn + AuthLdap +
+
+ +
+
+ nfds + Server +
+
+
+
+ nheader + HttpWriter +
+
+
+
+ nimpl + iface_impl +
+
+ +
+
+ nmethods + interface +
+
+
+
+ nmsgs + HttpMessageQueue +
+
+
+
+ nname + HttpHeader +
+
+ +
+
+ npass + Credential +
+
+
+
+ nuser + Credential +
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/variables_6f.html b/assets/html/doc/search/variables_6f.html new file mode 100644 index 0000000..3db80fc --- /dev/null +++ b/assets/html/doc/search/variables_6f.html @@ -0,0 +1,35 @@ + + + + + + + +
+
Loading...
+
+
+ object_size + class +
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/variables_70.html b/assets/html/doc/search/variables_70.html new file mode 100644 index 0000000..1bd59e4 --- /dev/null +++ b/assets/html/doc/search/variables_70.html @@ -0,0 +1,71 @@ + + + + + + + +
+
Loading...
+
+
+ parent + class +
+
+
+
+ parser + HttpWorker +
+
+
+
+ pass + Credential +
+
+ +
+
+ pbuf + HttpWorker +
+
+
+
+ port + Sock +
+
+
+
+ post + HttpRequest +
+
+
+
+ pwd + Credential +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/variables_71.html b/assets/html/doc/search/variables_71.html new file mode 100644 index 0000000..62f7ca2 --- /dev/null +++ b/assets/html/doc/search/variables_71.html @@ -0,0 +1,29 @@ + + + + + + + +
+
Loading...
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/variables_72.html b/assets/html/doc/search/variables_72.html new file mode 100644 index 0000000..339cd67 --- /dev/null +++ b/assets/html/doc/search/variables_72.html @@ -0,0 +1,41 @@ + + + + + + + +
+
Loading...
+ +
+
+ reason + HttpResponse +
+
+
+
+ root + Hash +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/variables_73.html b/assets/html/doc/search/variables_73.html new file mode 100644 index 0000000..54a82b4 --- /dev/null +++ b/assets/html/doc/search/variables_73.html @@ -0,0 +1,98 @@ + + + + + + + +
+
Loading...
+
+
+ session + HttpWorker +
+
+
+
+ shm_name + Cbuf +
+
+
+
+ simpl + iface_impl +
+
+
+
+ size + HttpHeader +
+
+
+
+ sizeGet + i_HttpIntro +
+
+ +
+
+ sockSSL + Server +
+
+
+
+ sroot + HttpWorker +
+
+
+
+ ssl + Stream +
+
+ +
+
+ status + HttpResponse +
+
+
+
+ stream + conns +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/variables_74.html b/assets/html/doc/search/variables_74.html new file mode 100644 index 0000000..dfcfe7d --- /dev/null +++ b/assets/html/doc/search/variables_74.html @@ -0,0 +1,42 @@ + + + + + + + +
+
Loading...
+
+
+ timestamp + randval +
+
+
+
+ toString + i_HttpIntro +
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/variables_75.html b/assets/html/doc/search/variables_75.html new file mode 100644 index 0000000..40852fb --- /dev/null +++ b/assets/html/doc/search/variables_75.html @@ -0,0 +1,44 @@ + + + + + + + +
+
Loading...
+
+
+ uri + HttpRequest +
+
+
+
+ url + AuthLdap +
+
+
+
+ user + Credential +
+
+
+
+ username + Session +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/variables_76.html b/assets/html/doc/search/variables_76.html new file mode 100644 index 0000000..331d4e1 --- /dev/null +++ b/assets/html/doc/search/variables_76.html @@ -0,0 +1,46 @@ + + + + + + + +
+
Loading...
+
+
+ val + HttpWorker +
+
+ + +
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/search/variables_77.html b/assets/html/doc/search/variables_77.html new file mode 100644 index 0000000..5521562 --- /dev/null +++ b/assets/html/doc/search/variables_77.html @@ -0,0 +1,56 @@ + + + + + + + +
+
Loading...
+
+
+ wbuf + HttpWorker +
+
+ + +
+
+ writer + HttpWorker +
+
+
+
+ written + HttpWriter +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/assets/html/doc/server_2read_8c.html b/assets/html/doc/server_2read_8c.html new file mode 100644 index 0000000..5adfa04 --- /dev/null +++ b/assets/html/doc/server_2read_8c.html @@ -0,0 +1,276 @@ + + + + +Server: src/server/read.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/server/read.c File Reference

+
+
+
#include "server.h"
+#include "logger.h"
+#include "stream.h"
+
+Include dependency graph for read.c:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + + +

+Functions

void serverCloseConn (Server, unsigned int)
ssize_t serverRead (Server this, unsigned int i)
+

Detailed Description

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file read.c.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
void serverCloseConn (Server ,
unsigned int 
)
+
+
+ +

Definition at line 31 of file close_conn.c.

+
{
+        int    fd = (this->fds)[i].fd;
+        Stream st = (this->conns[fd]).stream;
+
+        delete((this->conns)[fd].sock);
+        delete((this->conns)[fd].worker);
+
+        if (NULL != st && STREAM_SSL == st->type) {
+                SSL_shutdown((st->handle).ssl);
+                SSL_free((st->handle).ssl);
+        }
+
+        delete(st);
+
+        memset(&(this->fds[i]), 0, sizeof(struct pollfd));
+}
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
ssize_t serverRead (Server this,
unsigned int i 
)
+
+
+ +

normal close: this must be mapped to -2 within the underlying read call.

+
Todo:
make sure all pending writes will be done before close.
+

+ +

Definition at line 30 of file read.c.

+
{
+        int     fd = (this->fds)[i].fd;
+        ssize_t size;
+
+        if (NULL == (this->conns)[fd].worker) {
+                loggerLog(
+                                this->logger,
+                                LOGGER_INFO,
+                                "initialization error: NULL reader");
+                return -1;
+        }
+
+        switch ((size = streamReaderRead(
+                                        (this->conns)[fd].worker,
+                                        (this->conns)[fd].stream)))
+        {
+                case -2:
+                        // DROP-THROUGH
+
+                case -1: 
+                        /*
+                         * read failure / close connection
+                         */
+                        loggerLog(this->logger, LOGGER_INFO,
+                                        "connection[%d] closed...%s",
+                                        fd,
+                                        inet_ntoa((((this->conns)[fd].sock)->addr).sin_addr));
+                        serverCloseConn(this, i);
+                        break;
+
+                case 0:
+                        break;
+
+                default:
+                        (this->fds)[i].events |= POLLOUT;
+                        break;
+        }
+
+        return size;
+}
+
+

+Here is the call graph for this function:
+
+
+ + +
+

+ +

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/server_2read_8c_source.html b/assets/html/doc/server_2read_8c_source.html new file mode 100644 index 0000000..4465171 --- /dev/null +++ b/assets/html/doc/server_2read_8c_source.html @@ -0,0 +1,162 @@ + + + + +Server: src/server/read.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/server/read.c

+
+
+Go to the documentation of this file.
00001 
+00023 #include "server.h"
+00024 #include "logger.h"
+00025 #include "stream.h"
+00026 
+00027 void    serverCloseConn(Server, unsigned int);
+00028 
+00029 ssize_t
+00030 serverRead(Server this, unsigned int i)
+00031 {
+00032         int     fd = (this->fds)[i].fd;
+00033         ssize_t size;
+00034 
+00035         if (NULL == (this->conns)[fd].worker) {
+00036                 loggerLog(
+00037                                 this->logger,
+00038                                 LOGGER_INFO,
+00039                                 "initialization error: NULL reader");
+00040                 return -1;
+00041         }
+00042 
+00043         switch ((size = streamReaderRead(
+00044                                         (this->conns)[fd].worker,
+00045                                         (this->conns)[fd].stream)))
+00046         {
+00047                 case -2:
+00055                         // DROP-THROUGH
+00056 
+00057                 case -1: 
+00058                         /*
+00059                          * read failure / close connection
+00060                          */
+00061                         loggerLog(this->logger, LOGGER_INFO,
+00062                                         "connection[%d] closed...%s",
+00063                                         fd,
+00064                                         inet_ntoa((((this->conns)[fd].sock)->addr).sin_addr));
+00065                         serverCloseConn(this, i);
+00066                         break;
+00067 
+00068                 case 0:
+00069                         break;
+00070 
+00071                 default:
+00072                         (this->fds)[i].events |= POLLOUT;
+00073                         break;
+00074         }
+00075 
+00076         return size;
+00077 }
+00078 
+00079 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/server_2write_8c.html b/assets/html/doc/server_2write_8c.html new file mode 100644 index 0000000..e3c251f --- /dev/null +++ b/assets/html/doc/server_2write_8c.html @@ -0,0 +1,272 @@ + + + + +Server: src/server/write.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/server/write.c File Reference

+
+
+
#include "server.h"
+#include "logger.h"
+#include "stream.h"
+
+Include dependency graph for write.c:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + + +

+Functions

void serverCloseConn (Server, unsigned int)
ssize_t serverWrite (Server this, unsigned int i)
+

Detailed Description

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file write.c.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
void serverCloseConn (Server ,
unsigned int 
)
+
+
+ +

Definition at line 31 of file close_conn.c.

+
{
+        int    fd = (this->fds)[i].fd;
+        Stream st = (this->conns[fd]).stream;
+
+        delete((this->conns)[fd].sock);
+        delete((this->conns)[fd].worker);
+
+        if (NULL != st && STREAM_SSL == st->type) {
+                SSL_shutdown((st->handle).ssl);
+                SSL_free((st->handle).ssl);
+        }
+
+        delete(st);
+
+        memset(&(this->fds[i]), 0, sizeof(struct pollfd));
+}
+
+

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
ssize_t serverWrite (Server this,
unsigned int i 
)
+
+
+ +

Definition at line 30 of file write.c.

+
{
+        int     fd = (this->fds)[i].fd;
+        ssize_t remaining;
+
+        if (NULL == (this->conns)[fd].worker) {
+                loggerLog(
+                                this->logger,
+                                LOGGER_INFO,
+                                "initialization error: NULL worker");
+                return -1;
+        }
+
+        remaining = streamWriterWrite(
+                        (this->conns)[fd].worker,
+                        (this->conns)[fd].stream);
+
+        switch(remaining) {
+                case -1:
+                        serverCloseConn(this, i);
+                        break;
+
+                case 0:
+                        (this->fds)[i].events &= ~POLLOUT;
+                        break;
+
+                default:
+                        break;
+        }
+
+        return remaining;
+}
+
+

+Here is the call graph for this function:
+
+
+ + +
+

+ +

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/server_2write_8c_source.html b/assets/html/doc/server_2write_8c_source.html new file mode 100644 index 0000000..3c96409 --- /dev/null +++ b/assets/html/doc/server_2write_8c_source.html @@ -0,0 +1,153 @@ + + + + +Server: src/server/write.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/server/write.c

+
+
+Go to the documentation of this file.
00001 
+00023 #include "server.h"
+00024 #include "logger.h"
+00025 #include "stream.h"
+00026 
+00027 void serverCloseConn(Server, unsigned int);
+00028 
+00029 ssize_t
+00030 serverWrite(Server this, unsigned int i)
+00031 {
+00032         int     fd = (this->fds)[i].fd;
+00033         ssize_t remaining;
+00034 
+00035         if (NULL == (this->conns)[fd].worker) {
+00036                 loggerLog(
+00037                                 this->logger,
+00038                                 LOGGER_INFO,
+00039                                 "initialization error: NULL worker");
+00040                 return -1;
+00041         }
+00042 
+00043         remaining = streamWriterWrite(
+00044                         (this->conns)[fd].worker,
+00045                         (this->conns)[fd].stream);
+00046 
+00047         switch(remaining) {
+00048                 case -1:
+00049                         serverCloseConn(this, i);
+00050                         break;
+00051 
+00052                 case 0:
+00053                         (this->fds)[i].events &= ~POLLOUT;
+00054                         break;
+00055 
+00056                 default:
+00057                         break;
+00058         }
+00059 
+00060         return remaining;
+00061 }
+00062 
+00063 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/server_8c.html b/assets/html/doc/server_8c.html new file mode 100644 index 0000000..d1627ac --- /dev/null +++ b/assets/html/doc/server_8c.html @@ -0,0 +1,265 @@ + + + + +Server: src/server/server.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/server/server.c File Reference

+
+
+
#include <fcntl.h>
+#include <unistd.h>
+#include <stdlib.h>
+#include <openssl/ssl.h>
+#include <openssl/err.h>
+#include "class.h"
+#include "server.h"
+#include "socket.h"
+#include "logger.h"
+#include "utils/memory.h"
+
+Include dependency graph for server.c:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + + + +

+Functions

void serverCloseConn (Server, unsigned int)
 INIT_IFACE (Class, serverCtor, serverDtor, NULL)
 CREATE_CLASS (Server, NULL, IFACE(Class))
+

Detailed Description

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file server.c.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
CREATE_CLASS (Server ,
NULL ,
IFACE(Class)  
)
+
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
INIT_IFACE (Class ,
serverCtor ,
serverDtor ,
NULL  
)
+
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
void serverCloseConn (Server ,
unsigned int 
)
+
+
+ +

Definition at line 31 of file close_conn.c.

+
{
+        int    fd = (this->fds)[i].fd;
+        Stream st = (this->conns[fd]).stream;
+
+        delete((this->conns)[fd].sock);
+        delete((this->conns)[fd].worker);
+
+        if (NULL != st && STREAM_SSL == st->type) {
+                SSL_shutdown((st->handle).ssl);
+                SSL_free((st->handle).ssl);
+        }
+
+        delete(st);
+
+        memset(&(this->fds[i]), 0, sizeof(struct pollfd));
+}
+
+
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/server_8c_source.html b/assets/html/doc/server_8c_source.html new file mode 100644 index 0000000..8ccee2d --- /dev/null +++ b/assets/html/doc/server_8c_source.html @@ -0,0 +1,214 @@ + + + + +Server: src/server/server.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/server/server.c

+
+
+Go to the documentation of this file.
00001 
+00023 #include <fcntl.h>
+00024 #include <unistd.h>
+00025 #include <stdlib.h>
+00026 
+00027 #include <openssl/ssl.h>
+00028 #include <openssl/err.h>
+00029 
+00030 #include "class.h"
+00031 #include "server.h"
+00032 #include "socket.h"
+00033 #include "logger.h"
+00034 
+00035 #include "utils/memory.h"
+00036 
+00037 
+00038 void serverCloseConn(Server, unsigned int);
+00039 
+00040 
+00041 static
+00042 int
+00043 serverCtor(void * _this, va_list * params)
+00044 {
+00045         Server       this = _this;
+00046         in_port_t    port;
+00047         unsigned int backlog;
+00048         int          flags;
+00049 
+00050         this->max_fds = sysconf(_SC_OPEN_MAX);
+00051         if (this->max_fds <= 10) {      // reserve 10 handles for internal use.
+00055                 return -1;
+00056         }
+00057         this->max_fds -= 10;
+00058 
+00059         this->logger = va_arg(* params, Logger);
+00060         this->worker = va_arg(* params, void *);
+00061         port         = va_arg(* params, int);
+00062         backlog      = va_arg(* params, unsigned int);
+00063 
+00064         this->fds     = calloc(sizeof(struct pollfd), this->max_fds);
+00065         this->conns   = calloc(sizeof(struct conns), this->max_fds);
+00066 
+00067         this->sock    = new(Sock, this->logger, port);
+00068         flags = fcntl(this->sock->handle, F_GETFL, 0);
+00069         fcntl(this->sock->handle, F_SETFL, flags | O_NONBLOCK);
+00070 
+00071         this->sockSSL = new(Sock, this->logger, port+1);
+00072         flags = fcntl(this->sockSSL->handle, F_GETFL, 0);
+00073         fcntl(this->sockSSL->handle, F_SETFL, flags | O_NONBLOCK);
+00074 
+00075         SSL_library_init();
+00076         SSL_load_error_strings();
+00077         this->ctx = SSL_CTX_new(SSLv23_server_method());
+00078         SSL_CTX_use_certificate_file(
+00079                         this->ctx,
+00080                         "./certs/server.crt",
+00081                         SSL_FILETYPE_PEM);
+00082 
+00083         SSL_CTX_use_RSAPrivateKey_file(
+00084                         this->ctx,
+00085                         "./certs/server.key",
+00086                         SSL_FILETYPE_PEM);
+00087 
+00088         socketListen(this->sock, backlog);
+00089         socketListen(this->sockSSL, backlog);
+00090 
+00091         (this->fds)[0].fd     = this->sock->handle;
+00092         (this->fds)[0].events = POLLIN;
+00093         (this->fds)[1].fd     = this->sockSSL->handle;
+00094         (this->fds)[1].events = POLLIN;
+00095         this->nfds = 2;
+00096 
+00097         return 0;
+00098 }
+00099 
+00100 static
+00101 void
+00102 serverDtor(void * _this)
+00103 {
+00104         Server this = _this;
+00105     int    i;
+00106 
+00107     for (i=0; i<this->nfds; i++) {
+00108                 if (this->sock->handle != (this->fds)[i].fd &&
+00109                                 this->sockSSL->handle != (this->fds)[i].fd) {
+00110                         serverCloseConn(this, i);
+00111                 }
+00112     }
+00113 
+00114         FREE(this->fds);
+00115         FREE(this->conns);
+00116 
+00117         delete(this->sock);
+00118         delete(this->sockSSL);
+00119 
+00120         SSL_CTX_free(this->ctx);
+00121         ERR_free_strings();
+00122 }
+00123 
+00124 INIT_IFACE(Class, serverCtor, serverDtor, NULL);
+00125 CREATE_CLASS(Server, NULL, IFACE(Class));
+00126 
+00127 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/server_8h.html b/assets/html/doc/server_8h.html new file mode 100644 index 0000000..8428546 --- /dev/null +++ b/assets/html/doc/server_8h.html @@ -0,0 +1,241 @@ + + + + +Server: include/server.h File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

include/server.h File Reference

+
+
+
#include <stdio.h>
+#include <poll.h>
+#include <openssl/ssl.h>
+#include "class.h"
+#include "socket.h"
+#include "logger.h"
+#include "stream.h"
+
+Include dependency graph for server.h:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + + + + +

+Data Structures

struct  conns
struct  Server

+Functions

void serverRun (Server this)
+

Detailed Description

+

Server class. Handles acceptance and closing of connection and uses a class that has to implement the stream reader and writer interface to handle incoming reads and outgoing writes.

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file server.h.

+

Function Documentation

+ +
+
+ + + + + + + + +
void serverRun (Server this)
+
+
+ +

until error or signal

+

handle accept

+

handle accept SSL

+

handle reads

+

handle writes

+

+ +

Definition at line 35 of file run.c.

+
{
+    loggerLog(this->logger, LOGGER_INFO, "service started");
+
+    while (!doShutdown) 
+    {
+                int          events;
+                unsigned int i;
+                int          naccs = 10;
+
+                events = serverPoll(this);
+                if (doShutdown || 0 >= events) break;
+
+                if (0 != ((this->fds)[0].revents & POLLIN)) {
+                        events--;
+                        while(-1 != serverHandleAccept(this, 0) && 0 < naccs) {
+                                naccs--;
+                        }
+                }
+
+                if (0 != ((this->fds)[1].revents & POLLIN)) {
+                        events--;
+                        while(-1 != serverHandleAccept(this, 1) && 0 < naccs) {
+                                naccs--;
+                        }
+                }
+
+                for (i=2; i < this->nfds; i++) {
+                        int nreads = 10, nwrites = 10;
+
+                        if (0 != ((this->fds)[i].revents & POLLIN) && 0 < nreads) {
+                                events--;
+                                nreads--;
+
+                                serverRead(this, i);
+                        }
+
+                        if (0 != ((this->fds)[i].revents & POLLOUT) && 0 < nwrites) {
+                                events--;
+                                nwrites--;
+
+                                serverWrite(this, i);
+                        }
+
+                        if (0 > events)
+                                break; // no more events to handle
+                }
+    }
+}
+
+

+Here is the call graph for this function:
+
+
+ + +
+

+ +

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/server_8h_source.html b/assets/html/doc/server_8h_source.html new file mode 100644 index 0000000..31599eb --- /dev/null +++ b/assets/html/doc/server_8h_source.html @@ -0,0 +1,150 @@ + + + + +Server: include/server.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

include/server.h

+
+
+Go to the documentation of this file.
00001 
+00026 #ifndef __SERVER_H__
+00027 #define __SERVER_H__
+00028 
+00029 #include <stdio.h>      // for printf() and fprintf()
+00030 #include <poll.h>       // for poll system call and related
+00031 
+00032 #include <openssl/ssl.h>
+00033 
+00034 #include "class.h"
+00035 #include "socket.h"
+00036 #include "logger.h"
+00037 #include "stream.h"
+00038 
+00039 struct conns {
+00040         Sock   sock;
+00041         Stream stream;
+00042         void * worker;
+00043 };
+00044 
+00045 CLASS(Server) {
+00046         Logger          logger;
+00047         Sock            sock;
+00048         Sock            sockSSL;
+00049         SSL_CTX *       ctx;
+00050         void *          worker;
+00051 
+00052         nfds_t          nfds;
+00053         struct pollfd * fds;
+00054         long            max_fds;
+00055 
+00056         struct conns  * conns;
+00057 };
+00058 
+00059 void serverRun(Server this);
+00060 
+00061 #endif // __SERVER_H__
+00062 
+00063 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/session_2add_8c.html b/assets/html/doc/session_2add_8c.html new file mode 100644 index 0000000..aa779e0 --- /dev/null +++ b/assets/html/doc/session_2add_8c.html @@ -0,0 +1,193 @@ + + + + +Server: src/session/add.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/session/add.c File Reference

+
+
+
#include <search.h>
+#include "session.h"
+#include "class.h"
+
+Include dependency graph for add.c:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + +

+Functions

Session sessionAdd (const Session *root, Session session)
+

Detailed Description

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file add.c.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
Session sessionAdd (const Sessionroot,
Session session 
)
+
+
+ +

Todo:
this should not happen, so do some logging here.
+

+ +

Definition at line 40 of file add.c.

+
{
+        Session * found = tsearch(session, (void**)root, sessionAddComp);
+
+        if (NULL == found) {
+                return NULL;
+        }
+
+        if (*found != session) {
+                delete(session);
+        }
+
+        return *found;
+}
+
+

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/session_2add_8c_source.html b/assets/html/doc/session_2add_8c_source.html new file mode 100644 index 0000000..54fd367 --- /dev/null +++ b/assets/html/doc/session_2add_8c_source.html @@ -0,0 +1,145 @@ + + + + +Server: src/session/add.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/session/add.c

+
+
+Go to the documentation of this file.
00001 
+00023 #include <search.h>
+00024 
+00025 #include "session.h"
+00026 #include "class.h"
+00027 
+00028 
+00029 static
+00030 inline
+00031 int
+00032 sessionAddComp(const void * _a, const void * _b)
+00033 {
+00034         Session a = (Session)_a;
+00035         Session b = (Session)_b;
+00036         return (a->id < b->id)? -1 : (a->id > b->id)? 1 : 0;
+00037 }
+00038 
+00039 Session
+00040 sessionAdd(const Session * root, Session session)
+00041 {
+00042         Session * found = tsearch(session, (void**)root, sessionAddComp);
+00043 
+00044         if (NULL == found) {
+00045                 return NULL;
+00046         }
+00047 
+00048         if (*found != session) {
+00052                 delete(session);
+00053         }
+00054 
+00055         return *found;
+00056 }
+00057 
+00058 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/session_2delete_8c.html b/assets/html/doc/session_2delete_8c.html new file mode 100644 index 0000000..e4b6c30 --- /dev/null +++ b/assets/html/doc/session_2delete_8c.html @@ -0,0 +1,180 @@ + + + + +Server: src/session/delete.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/session/delete.c File Reference

+
+
+
#include <search.h>
+#include "session.h"
+#include "class.h"
+
+Include dependency graph for delete.c:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + +

+Functions

void sessionDelete (const Session *root, const unsigned long id)
+

Detailed Description

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file delete.c.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
void sessionDelete (const Sessionroot,
const unsigned long id 
)
+
+
+ +

Definition at line 40 of file delete.c.

+
{
+        tdelete(&id, (void**)root, sessionDeleteComp);
+}
+
+

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/session_2delete_8c_source.html b/assets/html/doc/session_2delete_8c_source.html new file mode 100644 index 0000000..8ceb7a4 --- /dev/null +++ b/assets/html/doc/session_2delete_8c_source.html @@ -0,0 +1,135 @@ + + + + +Server: src/session/delete.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/session/delete.c

+
+
+Go to the documentation of this file.
00001 
+00023 #include <search.h>
+00024 
+00025 #include "session.h"
+00026 #include "class.h"
+00027 
+00028 
+00029 static
+00030 inline
+00031 int
+00032 sessionDeleteComp(const void * _a, const void * _b)
+00033 {
+00034         unsigned long a = *(unsigned long *)_a;
+00035         Session       b = (Session)_b;
+00036         return (a < b->id)? -1 : (a > b->id)? 1 : 0;
+00037 }
+00038 
+00039 void
+00040 sessionDelete(const Session * root, const unsigned long id)
+00041 {
+00042         tdelete(&id, (void**)root, sessionDeleteComp);
+00043 }
+00044 
+00045 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/session_2get_8c.html b/assets/html/doc/session_2get_8c.html new file mode 100644 index 0000000..dbe2d46 --- /dev/null +++ b/assets/html/doc/session_2get_8c.html @@ -0,0 +1,186 @@ + + + + +Server: src/session/get.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/session/get.c File Reference

+
+
+
#include <search.h>
+#include <time.h>
+#include "session.h"
+
+Include dependency graph for get.c:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + +

+Functions

Session sessionGet (const Session *root, const unsigned long id)
+

Detailed Description

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file get.c.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
Session sessionGet (const Sessionroot,
const unsigned long id 
)
+
+
+ +

Definition at line 40 of file get.c.

+
{
+        Session * found = tfind(&id, (void**)root, sessionGetComp);
+
+        if (NULL == found) {
+                return NULL;
+        }
+
+        return *found;
+}
+
+

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/session_2get_8c_source.html b/assets/html/doc/session_2get_8c_source.html new file mode 100644 index 0000000..72bd880 --- /dev/null +++ b/assets/html/doc/session_2get_8c_source.html @@ -0,0 +1,141 @@ + + + + +Server: src/session/get.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/session/get.c

+
+
+Go to the documentation of this file.
00001 
+00023 #include <search.h>
+00024 #include <time.h>
+00025 
+00026 #include "session.h"
+00027 
+00028 
+00029 static
+00030 inline
+00031 int
+00032 sessionGetComp(const void * _a, const void * _b)
+00033 {
+00034         unsigned long a = *(unsigned long *)_a;
+00035         Session       b = (Session)_b;
+00036         return (a < b->id)? -1 : (a > b->id)? 1 : 0;
+00037 }
+00038 
+00039 Session
+00040 sessionGet(const Session * root, const unsigned long id)
+00041 {
+00042         Session * found = tfind(&id, (void**)root, sessionGetComp);
+00043 
+00044         if (NULL == found) {
+00045                 return NULL;
+00046         }
+00047 
+00048         return *found;
+00049 }
+00050 
+00051 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/session_2session_8c.html b/assets/html/doc/session_2session_8c.html new file mode 100644 index 0000000..98c382c --- /dev/null +++ b/assets/html/doc/session_2session_8c.html @@ -0,0 +1,219 @@ + + + + +Server: src/session/session.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/session/session.c File Reference

+
+
+
#include <time.h>
+#include <stdarg.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include "session.h"
+#include "class.h"
+#include "utils/hash.h"
+#include "utils/memory.h"
+
+Include dependency graph for session.c:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + + +

+Functions

 INIT_IFACE (Class, sessionCtor, sessionDtor, NULL)
 CREATE_CLASS (Session, NULL, IFACE(Class))
+

Detailed Description

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file session.c.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
CREATE_CLASS (Session ,
NULL ,
IFACE(Class)  
)
+
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
INIT_IFACE (Class ,
sessionCtor ,
sessionDtor ,
NULL  
)
+
+
+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/session_2session_8c_source.html b/assets/html/doc/session_2session_8c_source.html new file mode 100644 index 0000000..a73f8db --- /dev/null +++ b/assets/html/doc/session_2session_8c_source.html @@ -0,0 +1,157 @@ + + + + +Server: src/session/session.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/session/session.c

+
+
+Go to the documentation of this file.
00001 
+00023 #include <time.h>
+00024 #include <stdarg.h>
+00025 #include <stdlib.h>
+00026 #include <string.h>
+00027 #include <stdio.h>
+00028 #include <sys/types.h>
+00029 
+00030 #include "session.h"
+00031 #include "class.h"
+00032 
+00033 #include "utils/hash.h"
+00034 #include "utils/memory.h"
+00035 
+00036 
+00037 static
+00038 int
+00039 sessionCtor(void * _this, va_list * params)
+00040 {
+00041         Session this  = _this;
+00042         char * uname  = va_arg(* params, char *);
+00043         size_t nuname = va_arg(* params, size_t);
+00044 
+00045         this->livetime = time(NULL) + SESSION_LIVETIME;
+00046         this->id       = sdbm((unsigned char *)uname, nuname) ^ this->livetime;
+00047 
+00048         this->username = malloc(nuname + 1);
+00049         this->username[nuname] = 0;
+00050         memcpy(this->username, uname, nuname);
+00051 
+00052         return 0;
+00053 }
+00054 
+00055 static
+00056 void
+00057 sessionDtor(void * _this)
+00058 {
+00059         Session this = _this;
+00060 
+00061         FREE(this->username);
+00062 }
+00063 
+00064 INIT_IFACE(Class, sessionCtor, sessionDtor, NULL);
+00065 CREATE_CLASS(Session, NULL, IFACE(Class));
+00066 
+00067 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/session_8h.html b/assets/html/doc/session_8h.html new file mode 100644 index 0000000..55a5cd6 --- /dev/null +++ b/assets/html/doc/session_8h.html @@ -0,0 +1,307 @@ + + + + +Server: include/session.h File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

include/session.h File Reference

+
+
+
#include <time.h>
+#include <sys/types.h>
+#include "class.h"
+
+Include dependency graph for session.h:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + + + + + + + +

+Data Structures

struct  Session

+Defines

#define SESSION_LIVETIME   30

+Functions

Session sessionAdd (const Session *, Session)
Session sessionGet (const Session *, const unsigned long id)
void sessionDelete (const Session *, const unsigned long id)
+

Detailed Description

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file session.h.

+

Define Documentation

+ +
+
+ + + + +
#define SESSION_LIVETIME   30
+
+
+ +

Definition at line 31 of file session.h.

+ +
+
+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
Session sessionAdd (const Session,
Session  
)
+
+
+ +

Todo:
this should not happen, so do some logging here.
+

+ +

Definition at line 40 of file add.c.

+
{
+        Session * found = tsearch(session, (void**)root, sessionAddComp);
+
+        if (NULL == found) {
+                return NULL;
+        }
+
+        if (*found != session) {
+                delete(session);
+        }
+
+        return *found;
+}
+
+

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
void sessionDelete (const Session,
const unsigned long id 
)
+
+
+ +

Definition at line 40 of file delete.c.

+
{
+        tdelete(&id, (void**)root, sessionDeleteComp);
+}
+
+

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
Session sessionGet (const Session,
const unsigned long id 
)
+
+
+ +

Definition at line 40 of file get.c.

+
{
+        Session * found = tfind(&id, (void**)root, sessionGetComp);
+
+        if (NULL == found) {
+                return NULL;
+        }
+
+        return *found;
+}
+
+

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/session_8h_source.html b/assets/html/doc/session_8h_source.html new file mode 100644 index 0000000..6c8034f --- /dev/null +++ b/assets/html/doc/session_8h_source.html @@ -0,0 +1,137 @@ + + + + +Server: include/session.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

include/session.h

+
+
+Go to the documentation of this file.
00001 
+00023 #ifndef __SESSION_H__
+00024 #define __SESSION_H__
+00025 
+00026 #include <time.h>
+00027 #include <sys/types.h>
+00028 
+00029 #include "class.h"
+00030 
+00031 #define SESSION_LIVETIME        30
+00032 
+00033 
+00034 CLASS(Session) {
+00035         unsigned long id;
+00036         time_t        livetime;
+00037 
+00038         char *        username;
+00039 };
+00040 
+00041 Session sessionAdd(const Session *, Session);
+00042 Session sessionGet(const Session *, const unsigned long id);
+00043 void    sessionDelete(const Session *, const unsigned long id);
+00044 
+00045 #endif // __SESSION_H__
+00046 
+00047 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/set__data_8c.html b/assets/html/doc/set__data_8c.html new file mode 100644 index 0000000..e008235 --- /dev/null +++ b/assets/html/doc/set__data_8c.html @@ -0,0 +1,206 @@ + + + + +Server: src/cbuf/set_data.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/cbuf/set_data.c File Reference

+
+
+
#include <sys/types.h>
+#include <string.h>
+#include <errno.h>
+#include "cbuf.h"
+
+Include dependency graph for set_data.c:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + +

+Functions

char * cbufSetData (Cbuf this, const void *src, size_t n)
+

Detailed Description

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file set_data.c.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
char* cbufSetData (Cbuf this,
const void * src,
size_t n 
)
+
+
+ +

Definition at line 30 of file set_data.c.

+
{
+        char * addr;
+
+        if (n > cbufGetFree(this)) {
+                errno = ECBUFOVFL;
+                return (char *)-1;
+        }
+
+        addr = memcpy(cbufGetWrite(this), src, n);
+        cbufIncWrite(this, n);
+
+        return addr;
+}
+
+

+Here is the call graph for this function:
+
+
+ + +
+

+ +

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/set__data_8c_source.html b/assets/html/doc/set__data_8c_source.html new file mode 100644 index 0000000..f12f0bd --- /dev/null +++ b/assets/html/doc/set__data_8c_source.html @@ -0,0 +1,135 @@ + + + + +Server: src/cbuf/set_data.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/cbuf/set_data.c

+
+
+Go to the documentation of this file.
00001 
+00023 #include <sys/types.h>
+00024 #include <string.h>
+00025 #include <errno.h>
+00026 
+00027 #include "cbuf.h"
+00028 
+00029 char *
+00030 cbufSetData(Cbuf this, const void * src, size_t n)
+00031 {
+00032         char * addr;
+00033 
+00034         if (n > cbufGetFree(this)) {
+00035                 errno = ECBUFOVFL;
+00036                 return (char *)-1;
+00037         }
+00038 
+00039         addr = memcpy(cbufGetWrite(this), src, n);
+00040         cbufIncWrite(this, n);
+00041 
+00042         return addr;
+00043 }
+00044 
+00045 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/signalHandling_8c.html b/assets/html/doc/signalHandling_8c.html new file mode 100644 index 0000000..77105a8 --- /dev/null +++ b/assets/html/doc/signalHandling_8c.html @@ -0,0 +1,241 @@ + + + + +Server: src/utils/signalHandling.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/utils/signalHandling.c File Reference

+
+
+
#include <signal.h>
+
+Include dependency graph for signalHandling.c:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + + + + +

+Functions

void terminate (int signum)
void init_signals (void)

+Variables

volatile int doShutdown
+

Detailed Description

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file signalHandling.c.

+

Function Documentation

+ +
+
+ + + + + + + + +
void init_signals (void )
+
+
+ +

Definition at line 36 of file signalHandling.c.

+
{
+    signal(SIGTERM, terminate);
+    signal(SIGHUP, SIG_IGN);
+    signal(SIGINT, terminate);
+    signal(SIGQUIT, terminate);
+    signal(SIGABRT, terminate);
+    signal(SIGALRM, SIG_IGN);
+    signal(SIGURG, SIG_IGN);
+
+    signal(SIGPIPE, SIG_IGN);
+}
+
+

+Here is the call graph for this function:
+
+
+ + +
+

+ +

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+ +
+
+ + + + + + + + +
void terminate (int signum)
+
+
+ +

Definition at line 27 of file signalHandling.c.

+
{
+    signal(signum, SIG_IGN);
+    /*
+     * \todo do logging here
+     */
+    doShutdown = 1;
+}
+
+

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+

Variable Documentation

+ +
+
+ + + + +
volatile int doShutdown
+
+
+ +

Definition at line 25 of file signalHandling.c.

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/signalHandling_8c_source.html b/assets/html/doc/signalHandling_8c_source.html new file mode 100644 index 0000000..03be7b5 --- /dev/null +++ b/assets/html/doc/signalHandling_8c_source.html @@ -0,0 +1,137 @@ + + + + +Server: src/utils/signalHandling.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/utils/signalHandling.c

+
+
+Go to the documentation of this file.
00001 
+00023 #include <signal.h>     // for signal() and signal names
+00024 
+00025 volatile int doShutdown;
+00026 
+00027 void terminate(int signum)
+00028 {
+00029     signal(signum, SIG_IGN);
+00030     /*
+00031      * \todo do logging here
+00032      */
+00033     doShutdown = 1;
+00034 }
+00035 
+00036 void init_signals(void)
+00037 {
+00038     signal(SIGTERM, terminate);
+00039     signal(SIGHUP, SIG_IGN);
+00040     signal(SIGINT, terminate);
+00041     signal(SIGQUIT, terminate);
+00042     signal(SIGABRT, terminate);
+00043     signal(SIGALRM, SIG_IGN);
+00044     signal(SIGURG, SIG_IGN);
+00045 
+00046     signal(SIGPIPE, SIG_IGN);
+00047 }
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/signalHandling_8h.html b/assets/html/doc/signalHandling_8h.html new file mode 100644 index 0000000..a02860c --- /dev/null +++ b/assets/html/doc/signalHandling_8h.html @@ -0,0 +1,234 @@ + + + + +Server: include/utils/signalHandling.h File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

include/utils/signalHandling.h File Reference

+
+
+ +

Go to the source code of this file.

+ + + + + + +

+Functions

void terminate (int signum)
void init_signals (void)

+Variables

volatile int doShutdown
+

Detailed Description

+

Functions to handle varios signals send to the application.

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file signalHandling.h.

+

Function Documentation

+ +
+
+ + + + + + + + +
void init_signals (void )
+
+
+ +

Definition at line 36 of file signalHandling.c.

+
{
+    signal(SIGTERM, terminate);
+    signal(SIGHUP, SIG_IGN);
+    signal(SIGINT, terminate);
+    signal(SIGQUIT, terminate);
+    signal(SIGABRT, terminate);
+    signal(SIGALRM, SIG_IGN);
+    signal(SIGURG, SIG_IGN);
+
+    signal(SIGPIPE, SIG_IGN);
+}
+
+

+Here is the call graph for this function:
+
+
+ + +
+

+ +

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+ +
+
+ + + + + + + + +
void terminate (int signum)
+
+
+ +

Definition at line 27 of file signalHandling.c.

+
{
+    signal(signum, SIG_IGN);
+    /*
+     * \todo do logging here
+     */
+    doShutdown = 1;
+}
+
+

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+

Variable Documentation

+ +
+
+ + + + +
volatile int doShutdown
+
+
+ +

Definition at line 25 of file signalHandling.c.

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/signalHandling_8h_source.html b/assets/html/doc/signalHandling_8h_source.html new file mode 100644 index 0000000..16a5ff9 --- /dev/null +++ b/assets/html/doc/signalHandling_8h_source.html @@ -0,0 +1,122 @@ + + + + +Server: include/utils/signalHandling.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

include/utils/signalHandling.h

+
+
+Go to the documentation of this file.
00001 
+00024 #ifndef __UTILS_SIGNAL_HANDLING_H__
+00025 #define __UTILS_SIGNAL_HANDLING_H__
+00026 
+00027 extern volatile int doShutdown;
+00028 
+00029 void terminate(int signum);
+00030 void init_signals(void);
+00031 
+00032 #endif // __UTILS_SIGNAL_HANDLING_H__
+00033 
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/skip__non__alpha_8c.html b/assets/html/doc/skip__non__alpha_8c.html new file mode 100644 index 0000000..7da1ef3 --- /dev/null +++ b/assets/html/doc/skip__non__alpha_8c.html @@ -0,0 +1,179 @@ + + + + +Server: src/cbuf/skip_non_alpha.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/cbuf/skip_non_alpha.c File Reference

+
+
+
#include <ctype.h>
+#include "cbuf.h"
+
+Include dependency graph for skip_non_alpha.c:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + +

+Functions

void cbufSkipNonAlpha (Cbuf this)
+

Detailed Description

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file skip_non_alpha.c.

+

Function Documentation

+ +
+
+ + + + + + + + +
void cbufSkipNonAlpha (Cbuf this)
+
+
+ +

Definition at line 28 of file skip_non_alpha.c.

+
{
+        while(0 < this->bused && !isalpha(*cbufGetRead(this)))
+                cbufIncRead(this, 1);
+}
+
+

+Here is the call graph for this function:
+
+
+ + +
+

+ +

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/skip__non__alpha_8c_source.html b/assets/html/doc/skip__non__alpha_8c_source.html new file mode 100644 index 0000000..8bfa3e2 --- /dev/null +++ b/assets/html/doc/skip__non__alpha_8c_source.html @@ -0,0 +1,124 @@ + + + + +Server: src/cbuf/skip_non_alpha.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/cbuf/skip_non_alpha.c

+
+
+Go to the documentation of this file.
00001 
+00023 #include <ctype.h>
+00024 
+00025 #include "cbuf.h"
+00026 
+00027 void
+00028 cbufSkipNonAlpha(Cbuf this)
+00029 {
+00030         while(0 < this->bused && !isalpha(*cbufGetRead(this)))
+00031                 cbufIncRead(this, 1);
+00032 }
+00033 
+00034 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/socket_8c.html b/assets/html/doc/socket_8c.html new file mode 100644 index 0000000..c27ef32 --- /dev/null +++ b/assets/html/doc/socket_8c.html @@ -0,0 +1,215 @@ + + + + +Server: src/socket/socket.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/socket/socket.c File Reference

+
+
+
#include <errno.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include "socket.h"
+#include "logger.h"
+#include "class.h"
+
+Include dependency graph for socket.c:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + + +

+Functions

 INIT_IFACE (Class, socketCtor, socketDtor, NULL)
 CREATE_CLASS (Sock, NULL, IFACE(Class))
+

Detailed Description

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file socket.c.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
CREATE_CLASS (Sock ,
NULL ,
IFACE(Class)  
)
+
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
INIT_IFACE (Class ,
socketCtor ,
socketDtor ,
NULL  
)
+
+
+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/socket_8c_source.html b/assets/html/doc/socket_8c_source.html new file mode 100644 index 0000000..497b1fa --- /dev/null +++ b/assets/html/doc/socket_8c_source.html @@ -0,0 +1,165 @@ + + + + +Server: src/socket/socket.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/socket/socket.c

+
+
+Go to the documentation of this file.
00001 
+00023 #include <errno.h>
+00024 #include <stdlib.h>
+00025 #include <unistd.h>
+00026 
+00027 #include "socket.h"
+00028 #include "logger.h"
+00029 #include "class.h"
+00030 
+00031 static
+00032 int
+00033 socketCtor(void * _this, va_list * params)
+00034 {
+00035         Sock this = _this;
+00036         int reUse   = 1;     
+00037         int port;
+00038 
+00039         this->log  = va_arg(* params, Logger);
+00040         port       = va_arg(* params, int);
+00041 
+00043         if (-1 == port) {
+00044                 return 0;
+00045         } else {
+00046                 this->port = port;
+00047         }
+00048 
+00050         if (-1 == (this->handle = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP))) {
+00051                 loggerLog(this->log, LOGGER_CRIT,
+00052                                 "error opening socket: %s - service terminated",
+00053                                 strerror(errno));
+00054                 return -1;
+00055         }
+00056 
+00058         setsockopt(this->handle, SOL_SOCKET, SO_REUSEADDR, &reUse, sizeof(reUse));
+00059 
+00060         return 0;
+00061 }
+00062 
+00063 static
+00064 void
+00065 socketDtor(void * _this)
+00066 {
+00067         Sock this = _this;
+00068 
+00069         if (STDERR_FILENO < this->handle) {
+00070                 shutdown(this->handle, SHUT_RDWR);
+00071                 close(this->handle);
+00072         }
+00073 }
+00074 
+00075 INIT_IFACE(Class, socketCtor, socketDtor, NULL);
+00076 CREATE_CLASS(Sock, NULL, IFACE(Class));
+00077 
+00078 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/socket_8h.html b/assets/html/doc/socket_8h.html new file mode 100644 index 0000000..6e87326 --- /dev/null +++ b/assets/html/doc/socket_8h.html @@ -0,0 +1,352 @@ + + + + +Server: include/socket.h File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

include/socket.h File Reference

+
+
+
#include <arpa/inet.h>
+#include "class.h"
+#include "logger.h"
+
+Include dependency graph for socket.h:
+
+
+ + +
+
+This graph shows which files directly or indirectly include this file:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + + + + + +

+Data Structures

struct  Sock

+Functions

void socketConnect (Sock this, const char *addr, char(*)[16])
void socketListen (Sock this, int backlog)
Sock socketAccept (Sock this, char(*remoteAddr)[16])
+

Detailed Description

+

Abstraction layer above BSD sockets. Capsules and simplifies connect accept and listen.

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file socket.h.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
Sock socketAccept (Sock this,
char(*) remoteAddr[16] 
)
+
+
+ +

Todo:
Uhh, this is bad. we open a new socket additionally to the one we get from the accept call. i have to change the socket constructor to be able to create the data structure without creation of a socket at all. For now i simply close the socket here.... :D
+

+ +

Definition at line 31 of file accept.c.

+
{
+    Sock         sock;   // Socket for client
+    unsigned int len;    // Length of client address data structure
+
+    // Set the size of the in-out parameter
+    len = sizeof(this->addr);
+
+        sock = new(Sock, this->log, -1);
+
+    // Wait for a client to connect
+    sock->handle = accept(this->handle, (struct sockaddr *) &(sock->addr), &len);
+    if (-1 == sock->handle) {
+        loggerLog(this->log, LOGGER_WARNING,
+                "error accepting connection: %s", strerror(errno));
+    } else {
+                strcpy(*remoteAddr, inet_ntoa((sock->addr).sin_addr));
+
+        loggerLog(this->log, LOGGER_INFO,
+                                "handling client %s\n", inet_ntoa((sock->addr).sin_addr));
+    }
+
+    return sock;
+}
+
+

+Here is the call graph for this function:
+
+
+ + +
+

+ +

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void socketConnect (Sock this,
const char * addr,
char(*) [16] 
)
+
+
+ +

Definition at line 32 of file connect.c.

+
{
+        inet_pton(AF_INET, addr, &((this->addr).sin_addr));
+    (this->addr).sin_family = AF_INET;           // Internet address family
+    (this->addr).sin_port   = htons(this->port); // Local port
+
+        if (-1 == connect(
+                                this->handle,
+                                (struct sockaddr*) &(this->addr),
+                                sizeof(this->addr)))
+        {
+        loggerLog(this->log, LOGGER_CRIT,
+                "error connection socket: %s - service terminated",
+                strerror(errno));
+        exit(EXIT_FAILURE);
+    } else {
+                strcpy(*remoteAddr, inet_ntoa((this->addr).sin_addr));
+
+        loggerLog(this->log, LOGGER_INFO,
+                                "handling connection %s\n", inet_ntoa((this->addr).sin_addr));
+    }
+}
+
+

+Here is the call graph for this function:
+
+
+ + +
+

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
void socketListen (Sock this,
int backlog 
)
+
+
+ +

Bind to the local address

+

Mark the socket so it will listen for incoming connections

+

+ +

Definition at line 32 of file listen.c.

+
{
+    (this->addr).sin_family      = AF_INET;           // Internet address family
+    (this->addr).sin_addr.s_addr = htonl(INADDR_ANY); // Any incoming interface
+    (this->addr).sin_port        = htons(this->port); // Local port
+
+    if (-1 == bind(this->handle, (struct sockaddr *) &(this->addr), sizeof(this->addr))) {
+        loggerLog(this->log, LOGGER_CRIT,
+                "error binding socket: %s - service terminated",
+                strerror(errno));
+        exit(EXIT_FAILURE);
+    }
+
+    if (-1 == listen(this->handle, backlog)) {
+        loggerLog(this->log, LOGGER_CRIT,
+                "error binding socket: %s - service terminated",
+                strerror(errno));
+        exit(EXIT_FAILURE);
+    }
+}
+
+

+Here is the call graph for this function:
+
+
+ + +
+

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/socket_8h_source.html b/assets/html/doc/socket_8h_source.html new file mode 100644 index 0000000..e290b6f --- /dev/null +++ b/assets/html/doc/socket_8h_source.html @@ -0,0 +1,135 @@ + + + + +Server: include/socket.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

include/socket.h

+
+
+Go to the documentation of this file.
00001 
+00025 #ifndef __SOCKET_H__
+00026 #define __SOCKET_H__
+00027 
+00028 #include <arpa/inet.h>  // for in_port_t
+00029 
+00030 #include "class.h"
+00031 #include "logger.h"
+00032 
+00033 CLASS(Sock) {
+00034         Logger             log;
+00035         in_port_t          port;
+00036         struct sockaddr_in addr;
+00037         int                handle;
+00038 };
+00039 
+00040 void socketConnect(Sock this, const char * addr, char (*)[16]);
+00041 void socketListen(Sock this, int backlog);
+00042 Sock socketAccept(Sock this, char (*remoteAddr)[16]);
+00043 
+00044 #endif // __SOCKET_H__
+00045 
+00046 // vim: set ts=4 sw=4:
+00047 
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/stderr_8c.html b/assets/html/doc/stderr_8c.html new file mode 100644 index 0000000..a006340 --- /dev/null +++ b/assets/html/doc/stderr_8c.html @@ -0,0 +1,200 @@ + + + + +Server: src/logger/stderr.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/logger/stderr.c File Reference

+
+
+
#include <stdio.h>
+#include "logger/logger.h"
+#include "logger/interface/logger.h"
+
+Include dependency graph for stderr.c:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + + +

+Functions

 INIT_IFACE (Logger, logStderr)
 CREATE_CLASS (LoggerStderr, Logger, IFACE(Logger))
+

Detailed Description

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file stderr.c.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
CREATE_CLASS (LoggerStderr ,
Logger ,
IFACE(Logger 
)
+
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
INIT_IFACE (Logger ,
logStderr  
)
+
+
+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/stderr_8c_source.html b/assets/html/doc/stderr_8c_source.html new file mode 100644 index 0000000..b950276 --- /dev/null +++ b/assets/html/doc/stderr_8c_source.html @@ -0,0 +1,128 @@ + + + + +Server: src/logger/stderr.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/logger/stderr.c

+
+
+Go to the documentation of this file.
00001 
+00023 #include <stdio.h>
+00024 
+00025 #include "logger/logger.h"
+00026 #include "logger/interface/logger.h"
+00027 
+00028 static
+00029 void
+00030 logStderr(void * this, logger_level level, const char * const msg)
+00031 {
+00032         fprintf(stderr, "[%s] %s\n", logger_level_str[level], msg);
+00033 }
+00034 
+00035 INIT_IFACE(Logger, logStderr);
+00036 CREATE_CLASS(LoggerStderr, Logger, IFACE(Logger));
+00037 
+00038 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/stream_2interface_2writer_8c.html b/assets/html/doc/stream_2interface_2writer_8c.html new file mode 100644 index 0000000..373b0e7 --- /dev/null +++ b/assets/html/doc/stream_2interface_2writer_8c.html @@ -0,0 +1,184 @@ + + + + +Server: src/stream/interface/writer.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/stream/interface/writer.c File Reference

+
+
+
#include "class.h"
+#include "stream/stream.h"
+#include "stream/interface/writer.h"
+
+Include dependency graph for writer.c:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + +

+Functions

ssize_t streamWriterWrite (void *object, Stream st)
+

Detailed Description

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file writer.c.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
ssize_t streamWriterWrite (void * object,
Stream st 
)
+
+
+ +

Definition at line 34 of file writer.c.

+
{
+        ssize_t ret;
+
+        RETCALL(object, StreamWriter, write, ret, st);
+
+        return ret;
+}
+
+

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/stream_2interface_2writer_8c_source.html b/assets/html/doc/stream_2interface_2writer_8c_source.html new file mode 100644 index 0000000..194b4fc --- /dev/null +++ b/assets/html/doc/stream_2interface_2writer_8c_source.html @@ -0,0 +1,133 @@ + + + + +Server: src/stream/interface/writer.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/stream/interface/writer.c

+
+
+Go to the documentation of this file.
00001 
+00023 #include "class.h"
+00024 
+00025 #include "stream/stream.h"
+00026 #include "stream/interface/writer.h"
+00027 
+00028 const struct interface i_StreamWriter = {
+00029         "streamWriter",
+00030         1
+00031 };
+00032 
+00033 ssize_t
+00034 streamWriterWrite(void * object, Stream st)
+00035 {
+00036         ssize_t ret;
+00037 
+00038         RETCALL(object, StreamWriter, write, ret, st);
+00039 
+00040         return ret;
+00041 }
+00042 
+00043 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/stream_2interface_2writer_8h.html b/assets/html/doc/stream_2interface_2writer_8h.html new file mode 100644 index 0000000..e1317ea --- /dev/null +++ b/assets/html/doc/stream_2interface_2writer_8h.html @@ -0,0 +1,215 @@ + + + + +Server: include/stream/interface/writer.h File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

include/stream/interface/writer.h File Reference

+
+
+
#include <sys/types.h>
+#include "stream/stream.h"
+
+Include dependency graph for writer.h:
+
+
+ + +
+
+This graph shows which files directly or indirectly include this file:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + + + + + +

+Data Structures

struct  i_StreamWriter

+Typedefs

typedef ssize_t(* fptr_streamWriterWrite )(void *, Stream)

+Functions

ssize_t streamWriterWrite (void *, Stream)
+

Detailed Description

+

Interface whose implementations can write from a stream given as a handle.

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file writer.h.

+

Typedef Documentation

+ +
+
+ + + + +
typedef ssize_t(* fptr_streamWriterWrite)(void *, Stream)
+
+
+ +

Definition at line 32 of file writer.h.

+ +
+
+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
ssize_t streamWriterWrite (void * ,
Stream  
)
+
+
+ +

Definition at line 34 of file writer.c.

+
{
+        ssize_t ret;
+
+        RETCALL(object, StreamWriter, write, ret, st);
+
+        return ret;
+}
+
+

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/stream_2interface_2writer_8h_source.html b/assets/html/doc/stream_2interface_2writer_8h_source.html new file mode 100644 index 0000000..e453dc6 --- /dev/null +++ b/assets/html/doc/stream_2interface_2writer_8h_source.html @@ -0,0 +1,133 @@ + + + + +Server: include/stream/interface/writer.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

include/stream/interface/writer.h

+
+
+Go to the documentation of this file.
00001 
+00025 #ifndef __STREAM_INTERFACE_WRITER_H__
+00026 #define __STREAM_INTERFACE_WRITER_H__
+00027 
+00028 #include <sys/types.h>
+00029 
+00030 #include "stream/stream.h"
+00031 
+00032 typedef ssize_t (* fptr_streamWriterWrite)(void *, Stream);
+00033 
+00034 extern const struct interface i_StreamWriter;
+00035 
+00036 struct i_StreamWriter {
+00037         const struct interface * const _;
+00038         fptr_streamWriterWrite         write;
+00039 };
+00040 
+00041 extern ssize_t streamWriterWrite(void *, Stream);
+00042 
+00043 #endif // __STREAM_INTERFACE_WRITER_H__
+00044 
+00045 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/stream_2read_8c.html b/assets/html/doc/stream_2read_8c.html new file mode 100644 index 0000000..faaed3a --- /dev/null +++ b/assets/html/doc/stream_2read_8c.html @@ -0,0 +1,201 @@ + + + + +Server: src/stream/read.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/stream/read.c File Reference

+
+
+
#include <openssl/ssl.h>
+#include <unistd.h>
+#include "stream.h"
+
+Include dependency graph for read.c:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + +

+Functions

ssize_t streamRead (Stream this, void *buf, size_t count)
+

Detailed Description

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file read.c.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
ssize_t streamRead (Stream this,
void * buf,
size_t count 
)
+
+
+ +

Definition at line 29 of file read.c.

+
{
+        ssize_t done;
+
+        switch(this->type) {
+                case STREAM_FD:
+                        done = read((this->handle).fd, buf, count);
+                        break;
+
+                case STREAM_SSL:
+                        done = SSL_read((this->handle).ssl, buf, count);
+                        break;
+
+                default:
+                        break;
+        }
+
+        return done;
+}
+
+

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/stream_2read_8c_source.html b/assets/html/doc/stream_2read_8c_source.html new file mode 100644 index 0000000..bf17f17 --- /dev/null +++ b/assets/html/doc/stream_2read_8c_source.html @@ -0,0 +1,139 @@ + + + + +Server: src/stream/read.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/stream/read.c

+
+
+Go to the documentation of this file.
00001 
+00023 #include <openssl/ssl.h>
+00024 #include <unistd.h>
+00025 
+00026 #include "stream.h"
+00027 
+00028 ssize_t
+00029 streamRead(Stream this, void * buf, size_t count)
+00030 {
+00031         ssize_t done;
+00032 
+00033         switch(this->type) {
+00034                 case STREAM_FD:
+00035                         done = read((this->handle).fd, buf, count);
+00036                         break;
+00037 
+00038                 case STREAM_SSL:
+00039                         done = SSL_read((this->handle).ssl, buf, count);
+00040                         break;
+00041 
+00042                 default:
+00043                         break;
+00044         }
+00045 
+00046         return done;
+00047 }
+00048 
+00049 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/stream_2stream_8h.html b/assets/html/doc/stream_2stream_8h.html new file mode 100644 index 0000000..2a5b8b6 --- /dev/null +++ b/assets/html/doc/stream_2stream_8h.html @@ -0,0 +1,327 @@ + + + + +Server: include/stream/stream.h File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

include/stream/stream.h File Reference

+
+
+
#include <sys/types.h>
+#include <openssl/ssl.h>
+#include "class.h"
+
+Include dependency graph for stream.h:
+
+
+ + +
+
+This graph shows which files directly or indirectly include this file:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + + + + + + + + +

+Data Structures

struct  Stream

+Typedefs

typedef enum e_StreamHandleType StreamHandleType

+Enumerations

enum  e_StreamHandleType { STREAM_FD = 0, +STREAM_SSL + }

+Functions

ssize_t streamRead (Stream, void *, size_t)
ssize_t streamWrite (Stream, void *, size_t)
+

Detailed Description

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file stream.h.

+

Typedef Documentation

+ +
+
+ + + + +
typedef enum e_StreamHandleType StreamHandleType
+
+
+ +
+
+

Enumeration Type Documentation

+ +
+
+ + + + +
enum e_StreamHandleType
+
+
+
Enumerator:
+ + +
STREAM_FD  +
STREAM_SSL  +
+
+
+ +

Definition at line 31 of file stream.h.

+ +
+
+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
ssize_t streamRead (Stream ,
void * ,
size_t  
)
+
+
+ +

Definition at line 29 of file read.c.

+
{
+        ssize_t done;
+
+        switch(this->type) {
+                case STREAM_FD:
+                        done = read((this->handle).fd, buf, count);
+                        break;
+
+                case STREAM_SSL:
+                        done = SSL_read((this->handle).ssl, buf, count);
+                        break;
+
+                default:
+                        break;
+        }
+
+        return done;
+}
+
+

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
ssize_t streamWrite (Stream ,
void * ,
size_t  
)
+
+
+ +

Definition at line 29 of file write.c.

+
{
+        ssize_t done;
+
+        switch(this->type) {
+                case STREAM_FD:
+                        done = write((this->handle).fd, buf, count);
+                        break;
+
+                case STREAM_SSL:
+                        done = SSL_write((this->handle).ssl, buf, count);
+                        break;
+
+                default:
+                        break;
+        }
+
+        return done;
+}
+
+

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/stream_2stream_8h_source.html b/assets/html/doc/stream_2stream_8h_source.html new file mode 100644 index 0000000..41a94c2 --- /dev/null +++ b/assets/html/doc/stream_2stream_8h_source.html @@ -0,0 +1,139 @@ + + + + +Server: include/stream/stream.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

include/stream/stream.h

+
+
+Go to the documentation of this file.
00001 
+00023 #ifndef __STREAM_STREAM_H__
+00024 #define __STREAM_STREAM_H__
+00025 
+00026 #include <sys/types.h>
+00027 #include <openssl/ssl.h>
+00028 
+00029 #include "class.h"
+00030 
+00031 typedef enum e_StreamHandleType {
+00032         STREAM_FD = 0,
+00033         STREAM_SSL
+00034 } StreamHandleType;
+00035 
+00036 CLASS(Stream) {
+00037         StreamHandleType type;
+00038         union {
+00039                 int   fd;
+00040                 SSL * ssl;
+00041         }              handle;
+00042 };
+00043 
+00044 ssize_t streamRead(Stream, void *, size_t);
+00045 ssize_t streamWrite(Stream, void *, size_t);
+00046 
+00047 #endif // __STREAM_STREAM_H__
+00048 
+00049 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/stream_2write_8c.html b/assets/html/doc/stream_2write_8c.html new file mode 100644 index 0000000..328f83e --- /dev/null +++ b/assets/html/doc/stream_2write_8c.html @@ -0,0 +1,201 @@ + + + + +Server: src/stream/write.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/stream/write.c File Reference

+
+
+
#include <openssl/ssl.h>
+#include <unistd.h>
+#include "stream.h"
+
+Include dependency graph for write.c:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + +

+Functions

ssize_t streamWrite (Stream this, void *buf, size_t count)
+

Detailed Description

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file write.c.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
ssize_t streamWrite (Stream this,
void * buf,
size_t count 
)
+
+
+ +

Definition at line 29 of file write.c.

+
{
+        ssize_t done;
+
+        switch(this->type) {
+                case STREAM_FD:
+                        done = write((this->handle).fd, buf, count);
+                        break;
+
+                case STREAM_SSL:
+                        done = SSL_write((this->handle).ssl, buf, count);
+                        break;
+
+                default:
+                        break;
+        }
+
+        return done;
+}
+
+

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/stream_2write_8c_source.html b/assets/html/doc/stream_2write_8c_source.html new file mode 100644 index 0000000..b16f92f --- /dev/null +++ b/assets/html/doc/stream_2write_8c_source.html @@ -0,0 +1,139 @@ + + + + +Server: src/stream/write.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/stream/write.c

+
+
+Go to the documentation of this file.
00001 
+00023 #include <openssl/ssl.h>
+00024 #include <unistd.h>
+00025 
+00026 #include "stream.h"
+00027 
+00028 ssize_t
+00029 streamWrite(Stream this, void * buf, size_t count)
+00030 {
+00031         ssize_t done;
+00032 
+00033         switch(this->type) {
+00034                 case STREAM_FD:
+00035                         done = write((this->handle).fd, buf, count);
+00036                         break;
+00037 
+00038                 case STREAM_SSL:
+00039                         done = SSL_write((this->handle).ssl, buf, count);
+00040                         break;
+00041 
+00042                 default:
+00043                         break;
+00044         }
+00045 
+00046         return done;
+00047 }
+00048 
+00049 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/stream_8c.html b/assets/html/doc/stream_8c.html new file mode 100644 index 0000000..6496fe7 --- /dev/null +++ b/assets/html/doc/stream_8c.html @@ -0,0 +1,213 @@ + + + + +Server: src/stream/stream.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/stream/stream.c File Reference

+
+
+
#include <stdarg.h>
+#include <openssl/ssl.h>
+#include "class.h"
+#include "stream/stream.h"
+
+Include dependency graph for stream.c:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + + +

+Functions

 INIT_IFACE (Class, streamCtor, streamDtor, NULL)
 CREATE_CLASS (Stream, NULL, IFACE(Class))
+

Detailed Description

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file stream.c.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
CREATE_CLASS (Stream ,
NULL ,
IFACE(Class)  
)
+
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
INIT_IFACE (Class ,
streamCtor ,
streamDtor ,
NULL  
)
+
+
+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/stream_8c_source.html b/assets/html/doc/stream_8c_source.html new file mode 100644 index 0000000..1fed6bf --- /dev/null +++ b/assets/html/doc/stream_8c_source.html @@ -0,0 +1,152 @@ + + + + +Server: src/stream/stream.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/stream/stream.c

+
+
+Go to the documentation of this file.
00001 
+00023 #include <stdarg.h>
+00024 #include <openssl/ssl.h>
+00025 
+00026 #include "class.h"
+00027 #include "stream/stream.h"
+00028 
+00029 
+00030 static
+00031 int
+00032 streamCtor(void * _this, va_list * params)
+00033 {
+00034         Stream this = _this;
+00035         this->type  = va_arg(* params, StreamHandleType);
+00036 
+00037         switch(this->type) {
+00038                 case STREAM_FD:
+00039                         (this->handle).fd = va_arg(* params, int);
+00040                         break;
+00041 
+00042                 case STREAM_SSL:
+00043                         (this->handle).ssl = va_arg(* params, SSL*);
+00044                         break;
+00045 
+00046                 default:
+00047                         return -1;
+00048         }
+00049 
+00050         return 0;
+00051 }
+00052 
+00053 static
+00054 void
+00055 streamDtor(void * _this)
+00056 {
+00057 }
+00058 
+00059 INIT_IFACE(Class, streamCtor, streamDtor, NULL);
+00060 CREATE_CLASS(Stream, NULL, IFACE(Class));
+00061 
+00062 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/stream_8h.html b/assets/html/doc/stream_8h.html new file mode 100644 index 0000000..f312f2a --- /dev/null +++ b/assets/html/doc/stream_8h.html @@ -0,0 +1,132 @@ + + + + +Server: include/stream.h File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

include/stream.h File Reference

+
+
+
+Include dependency graph for stream.h:
+
+
+ + +
+
+This graph shows which files directly or indirectly include this file:
+
+
+ + +
+
+

Go to the source code of this file.

+ +
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/stream_8h_source.html b/assets/html/doc/stream_8h_source.html new file mode 100644 index 0000000..d504726 --- /dev/null +++ b/assets/html/doc/stream_8h_source.html @@ -0,0 +1,121 @@ + + + + +Server: include/stream.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

include/stream.h

+
+
+Go to the documentation of this file.
00001 #ifndef __STREAM_H__
+00002 #define __STREAM_H__
+00003 
+00004 #include "stream/stream.h"
+00005 #include "stream/interface/reader.h"
+00006 #include "stream/interface/writer.h"
+00007 
+00008 #endif // __STREAM_H__
+00009 
+00010 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/structAuth.html b/assets/html/doc/structAuth.html new file mode 100644 index 0000000..123f767 --- /dev/null +++ b/assets/html/doc/structAuth.html @@ -0,0 +1,122 @@ + + + + +Server: Auth Struct Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

Auth Struct Reference

+
+
+ +

#include <auth.h>

+ +
+

Detailed Description

+
+

Definition at line 37 of file auth.h.

+

The documentation for this struct was generated from the following file: +
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/structAuthLdap.html b/assets/html/doc/structAuthLdap.html new file mode 100644 index 0000000..dd92744 --- /dev/null +++ b/assets/html/doc/structAuthLdap.html @@ -0,0 +1,207 @@ + + + + +Server: AuthLdap Struct Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

AuthLdap Struct Reference

+
+
+ +

#include <ldap.h>

+ + + + + + + +

+Data Fields

LDAP * ldap
char * url
char * base_dn
int version
size_t nbase_dn
+

Detailed Description

+
+

Definition at line 31 of file ldap.h.

+

Field Documentation

+ +
+
+ + + + +
char* AuthLdap::base_dn
+
+
+ +

Definition at line 46 of file ldap.h.

+ +
+
+ +
+
+ + + + +
LDAP* AuthLdap::ldap
+
+
+ +

Definition at line 44 of file ldap.h.

+ +
+
+ +
+
+ + + + +
size_t AuthLdap::nbase_dn
+
+
+ +

Definition at line 48 of file ldap.h.

+ +
+
+ +
+
+ + + + +
char* AuthLdap::url
+
+
+ +

Definition at line 45 of file ldap.h.

+ +
+
+ +
+
+ + + + +
int AuthLdap::version
+
+
+ +

Definition at line 47 of file ldap.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/structCbuf.html b/assets/html/doc/structCbuf.html new file mode 100644 index 0000000..e27e516 --- /dev/null +++ b/assets/html/doc/structCbuf.html @@ -0,0 +1,239 @@ + + + + +Server: Cbuf Struct Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

Cbuf Struct Reference

+
+
+ +

#include <cbuf.h>

+ + + + + + + + + +

+Data Fields

char * shm_name
char * data
Bool lock
size_t bsize
size_t bused
size_t write
size_t read
+

Detailed Description

+
+

Definition at line 45 of file cbuf.h.

+

Field Documentation

+ +
+
+ + + + +
size_t Cbuf::bsize
+
+
+ +

Definition at line 89 of file cbuf.h.

+ +
+
+ +
+
+ + + + +
size_t Cbuf::bused
+
+
+ +

Definition at line 90 of file cbuf.h.

+ +
+
+ +
+
+ + + + +
char* Cbuf::data
+
+
+ +

Definition at line 86 of file cbuf.h.

+ +
+
+ +
+
+ + + + +
Bool Cbuf::lock
+
+
+ +

Definition at line 87 of file cbuf.h.

+ +
+
+ +
+
+ + + + +
size_t Cbuf::read
+
+
+ +

Definition at line 93 of file cbuf.h.

+ +
+
+ +
+
+ + + + +
char* Cbuf::shm_name
+
+
+ +

Definition at line 84 of file cbuf.h.

+ +
+
+ +
+
+ + + + +
size_t Cbuf::write
+
+
+ +

Definition at line 92 of file cbuf.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/structCredential.html b/assets/html/doc/structCredential.html new file mode 100644 index 0000000..4200411 --- /dev/null +++ b/assets/html/doc/structCredential.html @@ -0,0 +1,237 @@ + + + + +Server: Credential Struct Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

Credential Struct Reference

+
+
+ +

#include <credential.h>

+ + + + + + + + + + + +

+Data Fields

CredentialType type
union {
   struct {
      char *   user
      size_t   nuser
      char *   pass
      size_t   npass
   }   pwd
cred
+

Detailed Description

+
+

Definition at line 37 of file credential.h.

+

Field Documentation

+ +
+
+ + + + +
union { ... } Credential::cred
+
+
+ +
+
+ +
+
+ + + + +
size_t Credential::npass
+
+
+ +

Definition at line 65 of file credential.h.

+ +
+
+ +
+
+ + + + +
size_t Credential::nuser
+
+
+ +

Definition at line 63 of file credential.h.

+ +
+
+ +
+
+ + + + +
char* Credential::pass
+
+
+ +

Definition at line 64 of file credential.h.

+ +
+
+ +
+
+ + + + +
struct { ... } Credential::pwd
+
+
+ +
+
+ +
+ +
+ +

Definition at line 57 of file credential.h.

+ +
+
+ +
+
+ + + + +
char* Credential::user
+
+
+ +

Definition at line 62 of file credential.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/structHash.html b/assets/html/doc/structHash.html new file mode 100644 index 0000000..d96c2ef --- /dev/null +++ b/assets/html/doc/structHash.html @@ -0,0 +1,143 @@ + + + + +Server: Hash Struct Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

Hash Struct Reference

+
+
+ +

#include <hash.h>

+ + + +

+Data Fields

void * root
+

Detailed Description

+
+

Definition at line 31 of file hash.h.

+

Field Documentation

+ +
+
+ + + + +
void* Hash::root
+
+
+ +

Definition at line 45 of file hash.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/structHashValue.html b/assets/html/doc/structHashValue.html new file mode 100644 index 0000000..7b29d82 --- /dev/null +++ b/assets/html/doc/structHashValue.html @@ -0,0 +1,207 @@ + + + + +Server: HashValue Struct Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

HashValue Struct Reference

+
+
+ +

#include <value.h>

+ + + + + + + +

+Data Fields

unsigned long hash
char * key
void * value
size_t nkey
size_t nvalue
+

Detailed Description

+
+

Definition at line 30 of file value.h.

+

Field Documentation

+ +
+
+ + + + +
unsigned long HashValue::hash
+
+
+ +

Definition at line 45 of file value.h.

+ +
+
+ +
+
+ + + + +
char* HashValue::key
+
+
+ +

Definition at line 47 of file value.h.

+ +
+
+ +
+
+ + + + +
size_t HashValue::nkey
+
+
+ +

Definition at line 50 of file value.h.

+ +
+
+ +
+
+ + + + +
size_t HashValue::nvalue
+
+
+ +

Definition at line 51 of file value.h.

+ +
+
+ +
+
+ + + + +
void* HashValue::value
+
+
+ +

Definition at line 48 of file value.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/structHttpCookie.html b/assets/html/doc/structHttpCookie.html new file mode 100644 index 0000000..3a397ab --- /dev/null +++ b/assets/html/doc/structHttpCookie.html @@ -0,0 +1,271 @@ + + + + +Server: HttpCookie Struct Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

HttpCookie Struct Reference

+
+
+ +

#include <cookie.h>

+ + + + + + + + + + + +

+Data Fields

unsigned long hash
char * key
char * value
char * domain
char * path
time_t expires
time_t max_age
size_t nkey
size_t nvalue
+

Detailed Description

+
+

Definition at line 31 of file cookie.h.

+

Field Documentation

+ +
+
+ + + + +
char* HttpCookie::domain
+
+
+ +

Definition at line 58 of file cookie.h.

+ +
+
+ +
+
+ + + + +
time_t HttpCookie::expires
+
+
+ +

Definition at line 61 of file cookie.h.

+ +
+
+ +
+
+ + + + +
unsigned long HttpCookie::hash
+
+
+ +

Definition at line 54 of file cookie.h.

+ +
+
+ +
+
+ + + + +
char* HttpCookie::key
+
+
+ +

Definition at line 56 of file cookie.h.

+ +
+
+ +
+
+ + + + +
time_t HttpCookie::max_age
+
+
+ +

Definition at line 62 of file cookie.h.

+ +
+
+ +
+
+ + + + +
size_t HttpCookie::nkey
+
+
+ +

Definition at line 64 of file cookie.h.

+ +
+
+ +
+
+ + + + +
size_t HttpCookie::nvalue
+
+
+ +

Definition at line 65 of file cookie.h.

+ +
+
+ +
+
+ + + + +
char* HttpCookie::path
+
+
+ +

Definition at line 59 of file cookie.h.

+ +
+
+ +
+
+ + + + +
char* HttpCookie::value
+
+
+ +

Definition at line 57 of file cookie.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/structHttpHeader.html b/assets/html/doc/structHttpHeader.html new file mode 100644 index 0000000..0e8a975 --- /dev/null +++ b/assets/html/doc/structHttpHeader.html @@ -0,0 +1,251 @@ + + + + +Server: HttpHeader Struct Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

HttpHeader Struct Reference

+
+
+ +

#include <header.h>

+ + + + + + + + + + + + + +

+Data Fields

unsigned long hash
char * name
char * value [N_VALUES]
size_t nname
 len of name without \0
size_t nvalue [N_VALUES]
 len of value without \0
size_t cvalue
 count of values up to N_VALUE
size_t size
 full size of this header
+

Detailed Description

+
+

Definition at line 34 of file header.h.

+

Field Documentation

+ +
+
+ + + + +
size_t HttpHeader::cvalue
+
+
+ +

count of values up to N_VALUE

+ +

Definition at line 56 of file header.h.

+ +
+
+ +
+
+ + + + +
unsigned long HttpHeader::hash
+
+
+ +

Definition at line 51 of file header.h.

+ +
+
+ +
+
+ + + + +
char* HttpHeader::name
+
+
+ +

Definition at line 52 of file header.h.

+ +
+
+ +
+
+ + + + +
size_t HttpHeader::nname
+
+
+ +

len of name without \0

+ +

Definition at line 54 of file header.h.

+ +
+
+ +
+
+ + + + +
size_t HttpHeader::nvalue[N_VALUES]
+
+
+ +

len of value without \0

+ +

Definition at line 55 of file header.h.

+ +
+
+ +
+
+ + + + +
size_t HttpHeader::size
+
+
+ +

full size of this header

+ +

Definition at line 57 of file header.h.

+ +
+
+ +
+
+ + + + +
char* HttpHeader::value[N_VALUES]
+
+
+ +

Definition at line 53 of file header.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/structHttpMessage.html b/assets/html/doc/structHttpMessage.html new file mode 100644 index 0000000..d8bba13 --- /dev/null +++ b/assets/html/doc/structHttpMessage.html @@ -0,0 +1,246 @@ + + + + +Server: HttpMessage Struct Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

HttpMessage Struct Reference

+
+
+ +

#include <message.h>

+
+Collaboration diagram for HttpMessage:
+
+
Collaboration graph
+ + +
[legend]
+ + + + + + + + + +

+Data Fields

char * version
Hash header
HttpMessageType type
Stream handle
char * body
int nbody
int dbody
+

Detailed Description

+
+

Definition at line 37 of file message.h.

+

Field Documentation

+ +
+
+ + + + +
char* HttpMessage::body
+
+
+ +

Definition at line 67 of file message.h.

+ +
+
+ +
+
+ + + + +
int HttpMessage::dbody
+
+
+ +

Definition at line 69 of file message.h.

+ +
+
+ +
+ +
+ +

Definition at line 66 of file message.h.

+ +
+
+ +
+ +
+ +

Definition at line 63 of file message.h.

+ +
+
+ +
+
+ + + + +
int HttpMessage::nbody
+
+
+ +

Definition at line 68 of file message.h.

+ +
+
+ +
+ +
+ +

Definition at line 65 of file message.h.

+ +
+
+ +
+
+ + + + +
char* HttpMessage::version
+
+
+ +

Definition at line 61 of file message.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/structHttpMessageQueue.html b/assets/html/doc/structHttpMessageQueue.html new file mode 100644 index 0000000..86b9a17 --- /dev/null +++ b/assets/html/doc/structHttpMessageQueue.html @@ -0,0 +1,166 @@ + + + + +Server: HttpMessageQueue Struct Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

HttpMessageQueue Struct Reference

+
+
+ +

#include <queue.h>

+
+Collaboration diagram for HttpMessageQueue:
+
+
Collaboration graph
+ + +
[legend]
+ + + + +

+Data Fields

HttpMessage msgs [HTTP_MESSAGE_QUEUE_MAX]
size_t nmsgs
+

Detailed Description

+
+

Definition at line 35 of file queue.h.

+

Field Documentation

+ +
+
+ + + + +
HttpMessage HttpMessageQueue::msgs[HTTP_MESSAGE_QUEUE_MAX]
+
+
+ +

Definition at line 45 of file queue.h.

+ +
+
+ +
+
+ + + + +
size_t HttpMessageQueue::nmsgs
+
+
+ +

Definition at line 46 of file queue.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/structHttpParser.html b/assets/html/doc/structHttpParser.html new file mode 100644 index 0000000..dd7c293 --- /dev/null +++ b/assets/html/doc/structHttpParser.html @@ -0,0 +1,246 @@ + + + + +Server: HttpParser Struct Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

HttpParser Struct Reference

+
+
+ +

#include <parser.h>

+
+Collaboration diagram for HttpParser:
+
+
Collaboration graph
+ + +
[legend]
+ + + + + + + + + +

+Data Fields

Cbuf buffer
Bool ourLock
char * incomplete
size_t isize
HttpMessageQueue queue
HttpMessage current
HttpMessageState state
+

Detailed Description

+
+

Definition at line 47 of file parser.h.

+

Field Documentation

+ +
+ +
+ +

Definition at line 73 of file parser.h.

+ +
+
+ +
+ +
+ +

Definition at line 80 of file parser.h.

+ +
+
+ +
+
+ + + + +
char* HttpParser::incomplete
+
+
+ +

Definition at line 76 of file parser.h.

+ +
+
+ +
+
+ + + + +
size_t HttpParser::isize
+
+
+ +

Definition at line 77 of file parser.h.

+ +
+
+ +
+
+ + + + +
Bool HttpParser::ourLock
+
+
+ +

Definition at line 74 of file parser.h.

+ +
+
+ +
+ +
+ +

Definition at line 79 of file parser.h.

+ +
+
+ +
+ +
+ +

Definition at line 82 of file parser.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/structHttpRequest.html b/assets/html/doc/structHttpRequest.html new file mode 100644 index 0000000..1ac862a --- /dev/null +++ b/assets/html/doc/structHttpRequest.html @@ -0,0 +1,252 @@ + + + + +Server: HttpRequest Struct Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

HttpRequest Struct Reference

+
+
+ +

#include <request.h>

+
+Collaboration diagram for HttpRequest:
+
+
Collaboration graph
+ + +
[legend]
+ + + + + + + + + + +

+Public Member Functions

 EXTENDS (HttpMessage)

+Data Fields

char * method
char * uri
char * path
Hash get
Hash post
Hash cookies
+

Detailed Description

+
+

Definition at line 35 of file request.h.

+

Member Function Documentation

+ +
+
+ + + + + + + + +
HttpRequest::EXTENDS (HttpMessage )
+
+
+ +
+
+

Field Documentation

+ +
+ +
+ +

Definition at line 62 of file request.h.

+ +
+
+ +
+
+ + + + +
Hash HttpRequest::get
+
+
+ +

Definition at line 60 of file request.h.

+ +
+
+ +
+
+ + + + +
char* HttpRequest::method
+
+
+ +

Definition at line 56 of file request.h.

+ +
+
+ +
+
+ + + + +
char* HttpRequest::path
+
+
+ +

Definition at line 58 of file request.h.

+ +
+
+ +
+
+ + + + +
Hash HttpRequest::post
+
+
+ +

Definition at line 61 of file request.h.

+ +
+
+ +
+
+ + + + +
char* HttpRequest::uri
+
+
+ +

Definition at line 57 of file request.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/structHttpResponse.html b/assets/html/doc/structHttpResponse.html new file mode 100644 index 0000000..60588e4 --- /dev/null +++ b/assets/html/doc/structHttpResponse.html @@ -0,0 +1,181 @@ + + + + +Server: HttpResponse Struct Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

HttpResponse Struct Reference

+
+
+ +

#include <response.h>

+ + + + + + +

+Public Member Functions

 EXTENDS (HttpMessage)

+Data Fields

unsigned int status
char * reason
+

Detailed Description

+
+

Definition at line 35 of file response.h.

+

Member Function Documentation

+ +
+
+ + + + + + + + +
HttpResponse::EXTENDS (HttpMessage )
+
+
+ +
+
+

Field Documentation

+ +
+
+ + + + +
char* HttpResponse::reason
+
+
+ +

Definition at line 65 of file response.h.

+ +
+
+ +
+
+ + + + +
unsigned int HttpResponse::status
+
+
+ +

Definition at line 64 of file response.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/structHttpWorker.html b/assets/html/doc/structHttpWorker.html new file mode 100644 index 0000000..a198e9c --- /dev/null +++ b/assets/html/doc/structHttpWorker.html @@ -0,0 +1,278 @@ + + + + +Server: HttpWorker Struct Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

HttpWorker Struct Reference

+
+
+ +

#include <worker.h>

+
+Collaboration diagram for HttpWorker:
+
+
Collaboration graph
+ + +
[legend]
+ + + + + + + + + + + +

+Data Fields

char * id
struct randvalval
Cbuf pbuf
Cbuf wbuf
HttpParser parser
HttpWriter writer
Session session
Sessionsroot
void * auth
+

Detailed Description

+
+

Definition at line 44 of file worker.h.

+

Field Documentation

+ +
+
+ + + + +
void* HttpWorker::auth
+
+
+ +

Definition at line 75 of file worker.h.

+ +
+
+ +
+
+ + + + +
char* HttpWorker::id
+
+
+ +

Definition at line 64 of file worker.h.

+ +
+
+ +
+ +
+ +

Definition at line 70 of file worker.h.

+ +
+
+ +
+
+ + + + +
Cbuf HttpWorker::pbuf
+
+
+ +

Definition at line 67 of file worker.h.

+ +
+
+ +
+ +
+ +

Definition at line 72 of file worker.h.

+ +
+
+ +
+ +
+ +

Definition at line 73 of file worker.h.

+ +
+
+ +
+
+ + + + +
struct randval* HttpWorker::val
+
+
+ +

Definition at line 65 of file worker.h.

+ +
+
+ +
+
+ + + + +
Cbuf HttpWorker::wbuf
+
+
+ +

Definition at line 68 of file worker.h.

+ +
+
+ +
+ +
+ +

Definition at line 71 of file worker.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/structHttpWriter.html b/assets/html/doc/structHttpWriter.html new file mode 100644 index 0000000..facff8e --- /dev/null +++ b/assets/html/doc/structHttpWriter.html @@ -0,0 +1,262 @@ + + + + +Server: HttpWriter Struct Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

HttpWriter Struct Reference

+
+
+ +

#include <writer.h>

+
+Collaboration diagram for HttpWriter:
+
+
Collaboration graph
+ + +
[legend]
+ + + + + + + + + + +

+Data Fields

Cbuf buffer
Bool ourLock
HttpMessageQueue queue
HttpMessage current
size_t nheader
size_t nbody
size_t written
HttpWriterState state
+

Detailed Description

+
+

Definition at line 47 of file writer.h.

+

Field Documentation

+ +
+ +
+ +

Definition at line 68 of file writer.h.

+ +
+
+ +
+ +
+ +

Definition at line 72 of file writer.h.

+ +
+
+ +
+
+ + + + +
size_t HttpWriter::nbody
+
+
+ +

Definition at line 75 of file writer.h.

+ +
+
+ +
+
+ + + + +
size_t HttpWriter::nheader
+
+
+ +

Definition at line 74 of file writer.h.

+ +
+
+ +
+
+ + + + +
Bool HttpWriter::ourLock
+
+
+ +

Definition at line 69 of file writer.h.

+ +
+
+ +
+ +
+ +

Definition at line 71 of file writer.h.

+ +
+
+ +
+ +
+ +

Definition at line 78 of file writer.h.

+ +
+
+ +
+
+ + + + +
size_t HttpWriter::written
+
+
+ +

Definition at line 76 of file writer.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/structLogger.html b/assets/html/doc/structLogger.html new file mode 100644 index 0000000..ca2f2cb --- /dev/null +++ b/assets/html/doc/structLogger.html @@ -0,0 +1,143 @@ + + + + +Server: Logger Struct Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

Logger Struct Reference

+
+
+ +

#include <logger.h>

+ + + +

+Data Fields

logger_level min_level
+

Detailed Description

+
+

Definition at line 43 of file logger.h.

+

Field Documentation

+ +
+ +
+ +

Definition at line 60 of file logger.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/structLoggerStderr.html b/assets/html/doc/structLoggerStderr.html new file mode 100644 index 0000000..608c2c7 --- /dev/null +++ b/assets/html/doc/structLoggerStderr.html @@ -0,0 +1,145 @@ + + + + +Server: LoggerStderr Struct Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

LoggerStderr Struct Reference

+
+
+ +

#include <logger.h>

+ + + +

+Public Member Functions

 EXTENDS (Logger)
+

Detailed Description

+
+

Definition at line 63 of file logger.h.

+

Member Function Documentation

+ +
+
+ + + + + + + + +
LoggerStderr::EXTENDS (Logger )
+
+
+ +
+
+
The documentation for this struct was generated from the following file: +
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/structLoggerSyslog.html b/assets/html/doc/structLoggerSyslog.html new file mode 100644 index 0000000..5431409 --- /dev/null +++ b/assets/html/doc/structLoggerSyslog.html @@ -0,0 +1,145 @@ + + + + +Server: LoggerSyslog Struct Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

LoggerSyslog Struct Reference

+
+
+ +

#include <logger.h>

+ + + +

+Public Member Functions

 EXTENDS (Logger)
+

Detailed Description

+
+

Definition at line 79 of file logger.h.

+

Member Function Documentation

+ +
+
+ + + + + + + + +
LoggerSyslog::EXTENDS (Logger )
+
+
+ +
+
+
The documentation for this struct was generated from the following file: +
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/structServer.html b/assets/html/doc/structServer.html new file mode 100644 index 0000000..a359f1b --- /dev/null +++ b/assets/html/doc/structServer.html @@ -0,0 +1,278 @@ + + + + +Server: Server Struct Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

Server Struct Reference

+
+
+ +

#include <server.h>

+
+Collaboration diagram for Server:
+
+
Collaboration graph
+ + +
[legend]
+ + + + + + + + + + + +

+Data Fields

Logger logger
Sock sock
Sock sockSSL
SSL_CTX * ctx
void * worker
nfds_t nfds
struct pollfd * fds
long max_fds
struct connsconns
+

Detailed Description

+
+

Definition at line 45 of file server.h.

+

Field Documentation

+ +
+
+ + + + +
struct conns* Server::conns
+
+
+ +

Definition at line 76 of file server.h.

+ +
+
+ +
+
+ + + + +
SSL_CTX* Server::ctx
+
+
+ +

Definition at line 69 of file server.h.

+ +
+
+ +
+
+ + + + +
struct pollfd* Server::fds
+
+
+ +

Definition at line 73 of file server.h.

+ +
+
+ +
+
+ + + + +
Logger Server::logger
+
+
+ +

Definition at line 66 of file server.h.

+ +
+
+ +
+
+ + + + +
long Server::max_fds
+
+
+ +

Definition at line 74 of file server.h.

+ +
+
+ +
+
+ + + + +
nfds_t Server::nfds
+
+
+ +

Definition at line 72 of file server.h.

+ +
+
+ +
+
+ + + + +
Sock Server::sock
+
+
+ +

Definition at line 67 of file server.h.

+ +
+
+ +
+
+ + + + +
Sock Server::sockSSL
+
+
+ +

Definition at line 68 of file server.h.

+ +
+
+ +
+
+ + + + +
void* Server::worker
+
+
+ +

Definition at line 70 of file server.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/structSession.html b/assets/html/doc/structSession.html new file mode 100644 index 0000000..bc0ad28 --- /dev/null +++ b/assets/html/doc/structSession.html @@ -0,0 +1,175 @@ + + + + +Server: Session Struct Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

Session Struct Reference

+
+
+ +

#include <session.h>

+ + + + + +

+Data Fields

unsigned long id
time_t livetime
char * username
+

Detailed Description

+
+

Definition at line 34 of file session.h.

+

Field Documentation

+ +
+
+ + + + +
unsigned long Session::id
+
+
+ +

Definition at line 50 of file session.h.

+ +
+
+ +
+
+ + + + +
time_t Session::livetime
+
+
+ +

Definition at line 51 of file session.h.

+ +
+
+ +
+
+ + + + +
char* Session::username
+
+
+ +

Definition at line 53 of file session.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/structSock.html b/assets/html/doc/structSock.html new file mode 100644 index 0000000..5445fb4 --- /dev/null +++ b/assets/html/doc/structSock.html @@ -0,0 +1,182 @@ + + + + +Server: Sock Struct Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

Sock Struct Reference

+
+
+ +

#include <socket.h>

+
+Collaboration diagram for Sock:
+
+
Collaboration graph
+ + +
[legend]
+ + + + + +

+Data Fields

Logger log
in_port_t port
int handle
+

Detailed Description

+
+

Definition at line 33 of file socket.h.

+

Field Documentation

+ +
+
+ + + + +
int Sock::handle
+
+
+ +

Definition at line 53 of file socket.h.

+ +
+
+ +
+
+ + + + +
Logger Sock::log
+
+
+ +

Definition at line 50 of file socket.h.

+ +
+
+ +
+
+ + + + +
in_port_t Sock::port
+
+
+ +

Definition at line 51 of file socket.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/structStream.html b/assets/html/doc/structStream.html new file mode 100644 index 0000000..196548c --- /dev/null +++ b/assets/html/doc/structStream.html @@ -0,0 +1,190 @@ + + + + +Server: Stream Struct Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

Stream Struct Reference

+
+
+ +

#include <stream.h>

+ + + + + + + +

+Data Fields

StreamHandleType type
union {
   int   fd
   SSL *   ssl
handle
+

Detailed Description

+
+

Definition at line 36 of file stream.h.

+

Field Documentation

+ +
+
+ + + + +
int Stream::fd
+
+
+ +

Definition at line 54 of file stream.h.

+ +
+
+ +
+
+ + + + +
union { ... } Stream::handle
+
+
+ +
+
+ +
+
+ + + + +
SSL* Stream::ssl
+
+
+ +

Definition at line 55 of file stream.h.

+ +
+
+ +
+ +
+ +

Definition at line 52 of file stream.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/structclass.html b/assets/html/doc/structclass.html new file mode 100644 index 0000000..d89e510 --- /dev/null +++ b/assets/html/doc/structclass.html @@ -0,0 +1,198 @@ + + + + +Server: class Struct Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

class Struct Reference

+
+
+ +

#include <class.h>

+
+Collaboration diagram for class:
+
+
Collaboration graph
+ + +
[legend]
+ + + + + + +

+Data Fields

const int magic
class_ptr parent
size_t object_size
fptr_classInit init
+

Detailed Description

+
+

Definition at line 118 of file class.h.

+

Field Documentation

+ +
+ +
+ +

Definition at line 122 of file class.h.

+ +
+
+ +
+
+ + + + +
const int class::magic
+
+
+ +

Definition at line 119 of file class.h.

+ +
+
+ +
+
+ + + + +
size_t class::object_size
+
+
+ +

Definition at line 121 of file class.h.

+ +
+
+ +
+ +
+ +

Definition at line 120 of file class.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/structconns.html b/assets/html/doc/structconns.html new file mode 100644 index 0000000..4213aa8 --- /dev/null +++ b/assets/html/doc/structconns.html @@ -0,0 +1,183 @@ + + + + +Server: conns Struct Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

conns Struct Reference

+
+
+ +

#include <server.h>

+
+Collaboration diagram for conns:
+
+
Collaboration graph
+ + +
[legend]
+ + + + + +

+Data Fields

home georg data git server
+include server h Sock 
sock
Stream stream
void * worker
+

Detailed Description

+
+

Definition at line 39 of file server.h.

+

Field Documentation

+ +
+
+ + + + +
home georg data git server include server h Sock conns::sock
+
+
+ +

Definition at line 41 of file server.h.

+ +
+
+ +
+
+ + + + +
Stream conns::stream
+
+
+ +

Definition at line 42 of file server.h.

+ +
+
+ +
+
+ + + + +
void* conns::worker
+
+
+ +

Definition at line 43 of file server.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/structi__Auth.html b/assets/html/doc/structi__Auth.html new file mode 100644 index 0000000..86d4c5a --- /dev/null +++ b/assets/html/doc/structi__Auth.html @@ -0,0 +1,166 @@ + + + + +Server: i_Auth Struct Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

i_Auth Struct Reference

+
+
+ +

#include <auth.h>

+
+Collaboration diagram for i_Auth:
+
+
Collaboration graph
+ + +
[legend]
+ + + + +

+Data Fields

struct interface *const _
fptr_authenticate authenticate
+

Detailed Description

+
+

Definition at line 40 of file auth.h.

+

Field Documentation

+ +
+
+ + + + +
struct interface* const i_Auth::_
+
+
+ +

Definition at line 41 of file auth.h.

+ +
+
+ +
+ +
+ +

Definition at line 42 of file auth.h.

+ +
+
+
The documentation for this struct was generated from the following file:
    +
  • include/auth/interface/auth.h
  • +
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/structi__Class.html b/assets/html/doc/structi__Class.html new file mode 100644 index 0000000..48e9c2d --- /dev/null +++ b/assets/html/doc/structi__Class.html @@ -0,0 +1,198 @@ + + + + +Server: i_Class Struct Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

i_Class Struct Reference

+
+
+ +

#include <class.h>

+
+Collaboration diagram for i_Class:
+
+
Collaboration graph
+ + +
[legend]
+ + + + + + +

+Data Fields

struct interface *const _
fptr_ctor ctor
fptr_dtor dtor
fptr_clone clone
+

Detailed Description

+
+

Definition at line 40 of file class.h.

+

Field Documentation

+ +
+
+ + + + +
struct interface* const i_Class::_
+
+
+ +

Definition at line 41 of file class.h.

+ +
+
+ +
+ +
+ +

Definition at line 44 of file class.h.

+ +
+
+ +
+ +
+ +

Definition at line 42 of file class.h.

+ +
+
+ +
+ +
+ +

Definition at line 43 of file class.h.

+ +
+
+
The documentation for this struct was generated from the following file:
    +
  • include/class/interface/class.h
  • +
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/structi__Hashable.html b/assets/html/doc/structi__Hashable.html new file mode 100644 index 0000000..dc3ee1d --- /dev/null +++ b/assets/html/doc/structi__Hashable.html @@ -0,0 +1,182 @@ + + + + +Server: i_Hashable Struct Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

i_Hashable Struct Reference

+
+
+ +

#include <hashable.h>

+
+Collaboration diagram for i_Hashable:
+
+
Collaboration graph
+ + +
[legend]
+ + + + + +

+Data Fields

struct interface *const _
fptr_hashableGetHash getHash
fptr_hashableHandleDouble handleDouble
+

Detailed Description

+
+

Definition at line 34 of file hashable.h.

+

Field Documentation

+ +
+
+ + + + +
struct interface* const i_Hashable::_
+
+
+ +

Definition at line 35 of file hashable.h.

+ +
+
+ +
+ +
+ +

Definition at line 36 of file hashable.h.

+ +
+
+ +
+ +
+ +

Definition at line 37 of file hashable.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/structi__HttpIntro.html b/assets/html/doc/structi__HttpIntro.html new file mode 100644 index 0000000..022ecdf --- /dev/null +++ b/assets/html/doc/structi__HttpIntro.html @@ -0,0 +1,182 @@ + + + + +Server: i_HttpIntro Struct Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

i_HttpIntro Struct Reference

+
+
+ +

#include <http_intro.h>

+
+Collaboration diagram for i_HttpIntro:
+
+
Collaboration graph
+ + +
[legend]
+ + + + + +

+Data Fields

struct interface *const _
fptr_httpIntroSizeGet sizeGet
fptr_httpIntroToString toString
+

Detailed Description

+
+

Definition at line 36 of file http_intro.h.

+

Field Documentation

+ +
+
+ + + + +
struct interface* const i_HttpIntro::_
+
+
+ +

Definition at line 37 of file http_intro.h.

+ +
+
+ +
+ +
+ +

Definition at line 38 of file http_intro.h.

+ +
+
+ +
+ +
+ +

Definition at line 39 of file http_intro.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/structi__Logger.html b/assets/html/doc/structi__Logger.html new file mode 100644 index 0000000..7975eea --- /dev/null +++ b/assets/html/doc/structi__Logger.html @@ -0,0 +1,166 @@ + + + + +Server: i_Logger Struct Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

i_Logger Struct Reference

+
+
+ +

#include <logger.h>

+
+Collaboration diagram for i_Logger:
+
+
Collaboration graph
+ + +
[legend]
+ + + + +

+Data Fields

struct interface *const _
fptr_log log
+

Detailed Description

+
+

Definition at line 36 of file logger.h.

+

Field Documentation

+ +
+
+ + + + +
struct interface* const i_Logger::_
+
+
+ +

Definition at line 37 of file logger.h.

+ +
+
+ +
+
+ + + + +
fptr_log i_Logger::log
+
+
+ +

Definition at line 38 of file logger.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/structi__Observer.html b/assets/html/doc/structi__Observer.html new file mode 100644 index 0000000..04e6915 --- /dev/null +++ b/assets/html/doc/structi__Observer.html @@ -0,0 +1,166 @@ + + + + +Server: i_Observer Struct Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

i_Observer Struct Reference

+
+
+ +

#include <observer.h>

+
+Collaboration diagram for i_Observer:
+
+
Collaboration graph
+ + +
[legend]
+ + + + +

+Data Fields

struct interface *const _
fptr_observerNotify notify
+

Detailed Description

+
+

Definition at line 31 of file observer.h.

+

Field Documentation

+ +
+
+ + + + +
struct interface* const i_Observer::_
+
+
+ +

Definition at line 32 of file observer.h.

+ +
+
+ +
+ +
+ +

Definition at line 33 of file observer.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/structi__StreamReader.html b/assets/html/doc/structi__StreamReader.html new file mode 100644 index 0000000..414d32f --- /dev/null +++ b/assets/html/doc/structi__StreamReader.html @@ -0,0 +1,166 @@ + + + + +Server: i_StreamReader Struct Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

i_StreamReader Struct Reference

+
+
+ +

#include <reader.h>

+
+Collaboration diagram for i_StreamReader:
+
+
Collaboration graph
+ + +
[legend]
+ + + + +

+Data Fields

struct interface *const _
fptr_streamReaderRead read
+

Detailed Description

+
+

Definition at line 36 of file reader.h.

+

Field Documentation

+ +
+
+ + + + +
struct interface* const i_StreamReader::_
+
+
+ +

Definition at line 37 of file reader.h.

+ +
+
+ +
+ +
+ +

Definition at line 38 of file reader.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/structi__StreamWriter.html b/assets/html/doc/structi__StreamWriter.html new file mode 100644 index 0000000..af34b01 --- /dev/null +++ b/assets/html/doc/structi__StreamWriter.html @@ -0,0 +1,166 @@ + + + + +Server: i_StreamWriter Struct Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

i_StreamWriter Struct Reference

+
+
+ +

#include <writer.h>

+
+Collaboration diagram for i_StreamWriter:
+
+
Collaboration graph
+ + +
[legend]
+ + + + +

+Data Fields

struct interface *const _
fptr_streamWriterWrite write
+

Detailed Description

+
+

Definition at line 36 of file writer.h.

+

Field Documentation

+ +
+
+ + + + +
struct interface* const i_StreamWriter::_
+
+
+ +

Definition at line 37 of file writer.h.

+ +
+
+ +
+ +
+ +

Definition at line 38 of file writer.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/structi__Subject.html b/assets/html/doc/structi__Subject.html new file mode 100644 index 0000000..867aca0 --- /dev/null +++ b/assets/html/doc/structi__Subject.html @@ -0,0 +1,198 @@ + + + + +Server: i_Subject Struct Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

i_Subject Struct Reference

+
+
+ +

#include <subject.h>

+
+Collaboration diagram for i_Subject:
+
+
Collaboration graph
+ + +
[legend]
+ + + + + + +

+Data Fields

struct interface *const _
fptr_subjectAttach attach
fptr_subjectDetach detach
fptr_subjectNotify notify
+

Detailed Description

+
+

Definition at line 33 of file subject.h.

+

Field Documentation

+ +
+
+ + + + +
struct interface* const i_Subject::_
+
+
+ +

Definition at line 34 of file subject.h.

+ +
+
+ +
+ +
+ +

Definition at line 35 of file subject.h.

+ +
+
+ +
+ +
+ +

Definition at line 36 of file subject.h.

+ +
+
+ +
+ +
+ +

Definition at line 37 of file subject.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/structiface__impl.html b/assets/html/doc/structiface__impl.html new file mode 100644 index 0000000..ba70832 --- /dev/null +++ b/assets/html/doc/structiface__impl.html @@ -0,0 +1,175 @@ + + + + +Server: iface_impl Struct Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

iface_impl Struct Reference

+
+
+ +

#include <interface.h>

+ + + + + +

+Data Fields

const size_t nimpl
char simpl
const void * impl [MAX_IFACE]
+

Detailed Description

+
+

Definition at line 48 of file interface.h.

+

Field Documentation

+ +
+
+ + + + +
const void* iface_impl::impl[MAX_IFACE]
+
+
+ +

Definition at line 51 of file interface.h.

+ +
+
+ +
+
+ + + + +
const size_t iface_impl::nimpl
+
+
+ +

Definition at line 49 of file interface.h.

+ +
+
+ +
+
+ + + + +
char iface_impl::simpl
+
+
+ +

Definition at line 50 of file interface.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/structinterface.html b/assets/html/doc/structinterface.html new file mode 100644 index 0000000..c3f93de --- /dev/null +++ b/assets/html/doc/structinterface.html @@ -0,0 +1,159 @@ + + + + +Server: interface Struct Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

interface Struct Reference

+
+
+ +

#include <interface.h>

+ + + + +

+Data Fields

const char * name
const size_t nmethods
+

Detailed Description

+
+

Definition at line 42 of file interface.h.

+

Field Documentation

+ +
+
+ + + + +
const char* interface::name
+
+
+ +

Definition at line 43 of file interface.h.

+ +
+
+ +
+
+ + + + +
const size_t interface::nmethods
+
+
+ +

Definition at line 44 of file interface.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/structrandval.html b/assets/html/doc/structrandval.html new file mode 100644 index 0000000..b51f587 --- /dev/null +++ b/assets/html/doc/structrandval.html @@ -0,0 +1,159 @@ + + + + +Server: randval Struct Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

randval Struct Reference

+
+
+ +

#include <worker.h>

+ + + + +

+Data Fields

time_t timestamp
int value
+

Detailed Description

+
+

Definition at line 38 of file worker.h.

+

Field Documentation

+ +
+
+ + + + +
time_t randval::timestamp
+
+
+ +

Definition at line 39 of file worker.h.

+ +
+
+ +
+
+ + + + +
int randval::value
+
+
+ +

Definition at line 40 of file worker.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/subject_8c.html b/assets/html/doc/subject_8c.html new file mode 100644 index 0000000..d6bb67c --- /dev/null +++ b/assets/html/doc/subject_8c.html @@ -0,0 +1,226 @@ + + + + +Server: src/interface/subject.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/interface/subject.c File Reference

+
+
+
#include "class.h"
+#include "interface/subject.h"
+
+Include dependency graph for subject.c:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + + + +

+Functions

void subjectAttach (void *subject, void *observer)
void subjectDetach (void *subject, void *observer)
void subjectNotify (void *subject)
+

Detailed Description

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file subject.c.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
void subjectAttach (void * subject,
void * observer 
)
+
+
+ +

Definition at line 32 of file subject.c.

+
{
+        CALL(subject, Subject, attach, observer);
+}
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
void subjectDetach (void * subject,
void * observer 
)
+
+
+ +

Definition at line 38 of file subject.c.

+
{
+        CALL(subject, Subject, detach, observer);
+}
+
+
+
+ +
+
+ + + + + + + + +
void subjectNotify (void * subject)
+
+
+ +

Definition at line 44 of file subject.c.

+
{
+        CALL(subject, Subject, notify);
+}
+
+
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/subject_8c_source.html b/assets/html/doc/subject_8c_source.html new file mode 100644 index 0000000..8bb973c --- /dev/null +++ b/assets/html/doc/subject_8c_source.html @@ -0,0 +1,139 @@ + + + + +Server: src/interface/subject.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/interface/subject.c

+
+
+Go to the documentation of this file.
00001 
+00023 #include "class.h"
+00024 #include "interface/subject.h"
+00025 
+00026 const struct interface i_Subject = {
+00027         "subject",
+00028         3
+00029 };
+00030 
+00031 void
+00032 subjectAttach(void * subject, void * observer)
+00033 {
+00034         CALL(subject, Subject, attach, observer);
+00035 }
+00036 
+00037 void
+00038 subjectDetach(void * subject, void * observer)
+00039 {
+00040         CALL(subject, Subject, detach, observer);
+00041 }
+00042 
+00043 void
+00044 subjectNotify(void * subject)
+00045 {
+00046         CALL(subject, Subject, notify);
+00047 }
+00048 
+00049 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/subject_8h.html b/assets/html/doc/subject_8h.html new file mode 100644 index 0000000..608e741 --- /dev/null +++ b/assets/html/doc/subject_8h.html @@ -0,0 +1,274 @@ + + + + +Server: include/interface/subject.h File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

include/interface/subject.h File Reference

+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + +

+Data Structures

struct  i_Subject

+Typedefs

typedef void(* fptr_subjectAttach )(void *, void *)
typedef void(* fptr_subjectDetach )(void *, void *)
typedef void(* fptr_subjectNotify )(void *)

+Functions

void subjectAttach (void *, void *)
void subjectDetach (void *, void *)
void subjectNotify (void *)
+

Detailed Description

+

Definition of the subject pattern implementation.

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file subject.h.

+

Typedef Documentation

+ +
+
+ + + + +
typedef void(* fptr_subjectAttach)(void *, void *)
+
+
+ +

Definition at line 27 of file subject.h.

+ +
+
+ +
+
+ + + + +
typedef void(* fptr_subjectDetach)(void *, void *)
+
+
+ +

Definition at line 28 of file subject.h.

+ +
+
+ +
+
+ + + + +
typedef void(* fptr_subjectNotify)(void *)
+
+
+ +

Definition at line 29 of file subject.h.

+ +
+
+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
void subjectAttach (void * ,
void *  
)
+
+
+ +

Definition at line 32 of file subject.c.

+
{
+        CALL(subject, Subject, attach, observer);
+}
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
void subjectDetach (void * ,
void *  
)
+
+
+ +

Definition at line 38 of file subject.c.

+
{
+        CALL(subject, Subject, detach, observer);
+}
+
+
+
+ +
+
+ + + + + + + + +
void subjectNotify (void * )
+
+
+ +

Definition at line 44 of file subject.c.

+
{
+        CALL(subject, Subject, notify);
+}
+
+
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/subject_8h_source.html b/assets/html/doc/subject_8h_source.html new file mode 100644 index 0000000..0cb4cfb --- /dev/null +++ b/assets/html/doc/subject_8h_source.html @@ -0,0 +1,135 @@ + + + + +Server: include/interface/subject.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

include/interface/subject.h

+
+
+Go to the documentation of this file.
00001 
+00024 #ifndef __SUBJECT_H__
+00025 #define __SUBJECT_H__
+00026 
+00027 typedef void (* fptr_subjectAttach)(void *, void *);
+00028 typedef void (* fptr_subjectDetach)(void *, void *);
+00029 typedef void (* fptr_subjectNotify)(void *);
+00030 
+00031 extern const struct interface i_Subject;
+00032 
+00033 struct i_Subject {
+00034         const struct interface * const _;
+00035         fptr_subjectAttach       attach;
+00036         fptr_subjectDetach       detach;
+00037         fptr_subjectNotify       notify;
+00038 };
+00039 
+00040 extern void subjectAttach(void *, void *);
+00041 extern void subjectDetach(void *, void *);
+00042 extern void subjectNotify(void *);
+00043 
+00044 #endif // __SUBJECT_H__
+00045 
+00046 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/syslog_8c.html b/assets/html/doc/syslog_8c.html new file mode 100644 index 0000000..1013ebb --- /dev/null +++ b/assets/html/doc/syslog_8c.html @@ -0,0 +1,200 @@ + + + + +Server: src/logger/syslog.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/logger/syslog.c File Reference

+
+
+
#include <syslog.h>
+#include "logger/logger.h"
+#include "logger/interface/logger.h"
+
+Include dependency graph for syslog.c:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + + +

+Functions

 INIT_IFACE (Logger, logSyslog)
 CREATE_CLASS (LoggerSyslog, Logger, IFACE(Logger))
+

Detailed Description

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file syslog.c.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
CREATE_CLASS (LoggerSyslog ,
Logger ,
IFACE(Logger 
)
+
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
INIT_IFACE (Logger ,
logSyslog  
)
+
+
+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/syslog_8c_source.html b/assets/html/doc/syslog_8c_source.html new file mode 100644 index 0000000..0908a96 --- /dev/null +++ b/assets/html/doc/syslog_8c_source.html @@ -0,0 +1,141 @@ + + + + +Server: src/logger/syslog.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/logger/syslog.c

+
+
+Go to the documentation of this file.
00001 
+00023 #include <syslog.h>
+00024 
+00025 #include "logger/logger.h"
+00026 #include "logger/interface/logger.h"
+00027 
+00028 static
+00029 const
+00030 int syslog_priority[] = {
+00031     LOG_USER | LOG_DEBUG,
+00032     LOG_USER | LOG_INFO,
+00033     LOG_USER | LOG_NOTICE,
+00034     LOG_USER | LOG_WARNING,
+00035     LOG_USER | LOG_ERR,
+00036     LOG_USER | LOG_CRIT,
+00037     LOG_USER | LOG_ALERT,
+00038     LOG_USER | LOG_EMERG
+00039 };
+00040 
+00041 static
+00042 void
+00043 logSyslog(void * this, logger_level level, const char * const msg)
+00044 {
+00045     syslog(syslog_priority[level], "[%s] %s", logger_level_str[level], msg);
+00046 }
+00047 
+00048 INIT_IFACE(Logger, logSyslog);
+00049 CREATE_CLASS(LoggerSyslog, Logger, IFACE(Logger));
+00050 
+00051 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/to__string_8c.html b/assets/html/doc/to__string_8c.html new file mode 100644 index 0000000..7f03cb0 --- /dev/null +++ b/assets/html/doc/to__string_8c.html @@ -0,0 +1,188 @@ + + + + +Server: src/http/header/to_string.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/http/header/to_string.c File Reference

+
+
+
#include <string.h>
+#include "http/header.h"
+
+Include dependency graph for to_string.c:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + +

+Functions

size_t httpHeaderToString (HttpHeader header, char *string)
+

Detailed Description

+

Convert the given Header to string.

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file to_string.c.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
size_t httpHeaderToString (HttpHeader header,
char * string 
)
+
+
+ +

Definition at line 29 of file to_string.c.

+
{
+        size_t size = header->size;
+        int    i;
+
+        for (i=0; i<header->cvalue; i++) {
+                memcpy(string, header->name, header->nname);
+                string += header->nname;
+
+                *string++ = ':';
+                *string++ = ' ';
+
+                memcpy(string, header->value[i], header->nvalue[i]);
+                string += header->nvalue[i];
+
+                *string++ = '\r';
+                *string++ = '\n';
+        }
+
+        return size;
+}
+
+
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/to__string_8c_source.html b/assets/html/doc/to__string_8c_source.html new file mode 100644 index 0000000..fdd1a59 --- /dev/null +++ b/assets/html/doc/to__string_8c_source.html @@ -0,0 +1,140 @@ + + + + +Server: src/http/header/to_string.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/http/header/to_string.c

+
+
+Go to the documentation of this file.
00001 
+00024 #include <string.h>
+00025 
+00026 #include "http/header.h"
+00027 
+00028 size_t
+00029 httpHeaderToString(HttpHeader header, char * string)
+00030 {
+00031         size_t size = header->size;
+00032         int    i;
+00033 
+00034         for (i=0; i<header->cvalue; i++) {
+00035                 memcpy(string, header->name, header->nname);
+00036                 string += header->nname;
+00037 
+00038                 *string++ = ':';
+00039                 *string++ = ' ';
+00040 
+00041                 memcpy(string, header->value[i], header->nvalue[i]);
+00042                 string += header->nvalue[i];
+00043 
+00044                 *string++ = '\r';
+00045                 *string++ = '\n';
+00046         }
+00047 
+00048         return size;
+00049 }
+00050 
+00051 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/todo.html b/assets/html/doc/todo.html new file mode 100644 index 0000000..38ca00f --- /dev/null +++ b/assets/html/doc/todo.html @@ -0,0 +1,141 @@ + + + + +Server: Todo List + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ +
+
+ +
+
+
+ +
+
+
+

Todo List

+
+
+

+
+
Global _CALL (_class, _iface, method,...)
+
actually i use gcc feature ## for variadoc... think about a way to make this standard.
+
+

+
+
Global httpParserPostVars (HttpParser this)
+
this is very similar to other pair parsing things... key1=val1<delim>key2=val2<delim>...keyn=valn Generalize this!!!!
+
+

+
+
Global httpWorkerProcess (HttpWorker this, Stream st)
+

store the cookie count in the request to make a simple check possible to prevent this lookup if no cookies exists at all

+

This is an application authorization not an HTTP authorization...anyway think about sending HTTP 401 messages if authorization is required and think about sending the credentials via header as described in the HTTP protocol. Most likely this will lead to hacky thing with javascript as i am not sure how far this is implemented within browsers. Anyway, for now we simply ignore a failed login within the response except that no session is initialized. We send an empty 200 OK

+
+
+

+
+
File queue.h
+
change this to a real queue.
+
+

+
+
Global serverRead (Server, unsigned int)
+
make sure all pending writes will be done before close.
+
+

+
+
Global sessionAdd (const Session *root, Session session)
+
this should not happen, so do some logging here.
+
+

+
+
Global socketAccept (Sock this, char(*remoteAddr)[16])
+
Uhh, this is bad. we open a new socket additionally to the one we get from the accept call. i have to change the socket constructor to be able to create the data structure without creation of a socket at all. For now i simply close the socket here.... :D
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/utils_2hash_8c.html b/assets/html/doc/utils_2hash_8c.html new file mode 100644 index 0000000..6911781 --- /dev/null +++ b/assets/html/doc/utils_2hash_8c.html @@ -0,0 +1,189 @@ + + + + +Server: src/utils/hash.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/utils/hash.c File Reference

+
+
+
#include <ctype.h>
+#include <sys/types.h>
+#include "utils/hash.h"
+
+Include dependency graph for hash.c:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + +

+Functions

unsigned long sdbm (const unsigned char *str, size_t len)
+

Detailed Description

+
Author:
Georg Hopp
+
+Unknown (find out)
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file hash.c.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
unsigned long sdbm (const unsigned char * str,
size_t len 
)
+
+
+

SDBM hashing algorithm:

+

this algorithm was created for sdbm (a public-domain reimplementation of ndbm) database library. it was found to do well in scrambling bits, causing better distribution of the keys and fewer splits. it also happens to be a good general hashing function with good distribution. the actual function is hash(i) = hash(i - 1) * 65599 + str[i]; what is included below is the faster version used in gawk. [there is even a faster, duff-device version] the magic constant 65599 was picked out of thin air while experimenting with different constants, and turns out to be a prime. this is one of the algorithms used in berkeley db (see sleepycat) and elsewhere.

+ +

Definition at line 43 of file hash.c.

+
{
+        unsigned long hash = 0;
+
+        for(; 0 < len; str++, len--)
+                hash = tolower(*str) + (hash << 6) + (hash << 16) - hash;
+
+        return hash;
+}
+
+

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/utils_2hash_8c_source.html b/assets/html/doc/utils_2hash_8c_source.html new file mode 100644 index 0000000..b9d0dcd --- /dev/null +++ b/assets/html/doc/utils_2hash_8c_source.html @@ -0,0 +1,129 @@ + + + + +Server: src/utils/hash.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/utils/hash.c

+
+
+Go to the documentation of this file.
00001 
+00024 #include <ctype.h>
+00025 #include <sys/types.h>
+00026 
+00027 #include "utils/hash.h"
+00028 
+00042 unsigned long
+00043 sdbm(const unsigned char * str, size_t len)
+00044 {
+00045         unsigned long hash = 0;
+00046 
+00047         for(; 0 < len; str++, len--)
+00048                 hash = tolower(*str) + (hash << 6) + (hash << 16) - hash;
+00049 
+00050         return hash;
+00051 }
+00052 
+00053 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/utils_2hash_8h.html b/assets/html/doc/utils_2hash_8h.html new file mode 100644 index 0000000..615172c --- /dev/null +++ b/assets/html/doc/utils_2hash_8h.html @@ -0,0 +1,186 @@ + + + + +Server: include/utils/hash.h File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

include/utils/hash.h File Reference

+
+
+
#include <sys/types.h>
+
+Include dependency graph for hash.h:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + +

+Functions

unsigned long sdbm (const unsigned char *, size_t)
+

Detailed Description

+

Functions to handle varios signals send to the application.

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file hash.h.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
unsigned long sdbm (const unsigned char * str,
size_t len 
)
+
+
+

SDBM hashing algorithm:

+

this algorithm was created for sdbm (a public-domain reimplementation of ndbm) database library. it was found to do well in scrambling bits, causing better distribution of the keys and fewer splits. it also happens to be a good general hashing function with good distribution. the actual function is hash(i) = hash(i - 1) * 65599 + str[i]; what is included below is the faster version used in gawk. [there is even a faster, duff-device version] the magic constant 65599 was picked out of thin air while experimenting with different constants, and turns out to be a prime. this is one of the algorithms used in berkeley db (see sleepycat) and elsewhere.

+ +

Definition at line 43 of file hash.c.

+
{
+        unsigned long hash = 0;
+
+        for(; 0 < len; str++, len--)
+                hash = tolower(*str) + (hash << 6) + (hash << 16) - hash;
+
+        return hash;
+}
+
+

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/utils_2hash_8h_source.html b/assets/html/doc/utils_2hash_8h_source.html new file mode 100644 index 0000000..2377fea --- /dev/null +++ b/assets/html/doc/utils_2hash_8h_source.html @@ -0,0 +1,122 @@ + + + + +Server: include/utils/hash.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

include/utils/hash.h

+
+
+Go to the documentation of this file.
00001 
+00024 #ifndef __UTILS_HASH_H__
+00025 #define __UTILS_HASH_H__
+00026 
+00027 #include <sys/types.h>
+00028 
+00029 unsigned long sdbm(const unsigned char *, size_t);
+00030 
+00031 #endif // __UTILS_HASH_H__
+00032 
+00033 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/utils_2http_8h.html b/assets/html/doc/utils_2http_8h.html new file mode 100644 index 0000000..f83cb17 --- /dev/null +++ b/assets/html/doc/utils_2http_8h.html @@ -0,0 +1,277 @@ + + + + +Server: include/utils/http.h File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

include/utils/http.h File Reference

+
+
+
#include <sys/types.h>
+#include "http/message.h"
+
+Include dependency graph for http.h:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + + +

+Functions

char isHttpVersion (const char *, size_t)
HttpMessage httpGetMessage (const char *, size_t, const char *, size_t, const char *, size_t)
+

Detailed Description

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file http.h.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
HttpMessage httpGetMessage (const char * ,
size_t ,
const char * ,
size_t ,
const char * ,
size_t  
)
+
+
+ +

Definition at line 51 of file http.c.

+
{
+        if (isHttpVersion(part1, len1)) {
+                return new(HttpResponse,
+                                part1, len1,
+                                strtoul(part2, NULL, 10),
+                                part3, len3);
+        }
+
+        if (isHttpVersion(part3, len3)) {
+                return new(HttpRequest,
+                                part1, len1,
+                                part2, len2,
+                                part3, len3);
+        }
+
+        return NULL;
+}
+
+

+Here is the call graph for this function:
+
+
+ + +
+

+ +

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
char isHttpVersion (const char * ,
size_t  
)
+
+
+ +

Definition at line 36 of file http.c.

+
{
+        if (NULL == str)
+                return FALSE;
+
+        if (8 > len)
+                return FALSE;
+
+        if (0 != memcmp("HTTP/", str, sizeof("HTTP/")-1))
+                return FALSE;
+
+        return TRUE;
+}
+
+

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/utils_2http_8h_source.html b/assets/html/doc/utils_2http_8h_source.html new file mode 100644 index 0000000..988dc09 --- /dev/null +++ b/assets/html/doc/utils_2http_8h_source.html @@ -0,0 +1,128 @@ + + + + +Server: include/utils/http.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

include/utils/http.h

+
+
+Go to the documentation of this file.
00001 
+00023 #ifndef __UTILS_HTTP_H__
+00024 #define __UTILS_HTTP_H__
+00025 
+00026 #include <sys/types.h>
+00027 
+00028 #include "http/message.h"
+00029 
+00030 char        isHttpVersion(const char *, size_t);
+00031 HttpMessage httpGetMessage(
+00032                 const char *, size_t,
+00033                 const char *, size_t,
+00034                 const char *, size_t);
+00035 
+00036 #endif // __UTILS_HTTP_H__
+00037 
+00038 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/value_8c.html b/assets/html/doc/value_8c.html new file mode 100644 index 0000000..107e3e6 --- /dev/null +++ b/assets/html/doc/value_8c.html @@ -0,0 +1,259 @@ + + + + +Server: src/hash/value.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/hash/value.c File Reference

+
+
+
#include <stdarg.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/types.h>
+#include "class.h"
+#include "utils/hash.h"
+#include "utils/memory.h"
+#include "commons.h"
+#include "hash/value.h"
+#include "hash/interface/hashable.h"
+
+Include dependency graph for value.c:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + + + +

+Functions

 INIT_IFACE (Class, hashValueCtor, hashValueDtor, NULL)
 INIT_IFACE (Hashable, hashValueGetHash, hashValueHandleDouble)
 CREATE_CLASS (HashValue, NULL, IFACE(Class), IFACE(Hashable))
+

Detailed Description

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file value.c.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CREATE_CLASS (HashValue ,
NULL ,
IFACE(Class) ,
IFACE(Hashable)  
)
+
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
INIT_IFACE (Class ,
hashValueCtor ,
hashValueDtor ,
NULL  
)
+
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
INIT_IFACE (Hashable ,
hashValueGetHash ,
hashValueHandleDouble  
)
+
+
+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/value_8c_source.html b/assets/html/doc/value_8c_source.html new file mode 100644 index 0000000..6d582ad --- /dev/null +++ b/assets/html/doc/value_8c_source.html @@ -0,0 +1,194 @@ + + + + +Server: src/hash/value.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/hash/value.c

+
+
+Go to the documentation of this file.
00001 
+00023 #include <stdarg.h>
+00024 #include <stdlib.h>
+00025 #include <string.h>
+00026 #include <sys/types.h>
+00027 
+00028 #include "class.h"
+00029 #include "utils/hash.h"
+00030 #include "utils/memory.h"
+00031 #include "commons.h"
+00032 
+00033 #include "hash/value.h"
+00034 #include "hash/interface/hashable.h"
+00035 
+00036 static
+00037 int
+00038 hashValueCtor(void * _this, va_list * params)
+00039 {
+00040         HashValue this = _this;
+00041         char * key     = va_arg(* params, char*);
+00042         void * value;
+00043         
+00044         this->nkey   = va_arg(* params, size_t);
+00045         value        = va_arg(* params, void*);
+00046         this->nvalue = va_arg(* params, size_t);
+00047 
+00048         this->key = malloc(this->nkey + 1);
+00049         this->key[this->nkey] = 0;
+00050         memcpy(this->key, key, this->nkey);
+00051 
+00052         this->hash = sdbm((unsigned char *)this->key, this->nkey);
+00053 
+00054         if (NULL != value) {
+00055                 this->value = malloc(this->nvalue + 1);
+00056                 ((char*)this->value)[this->nvalue] = 0;
+00057                 memcpy(this->value, value, this->nvalue);
+00058         }
+00059 
+00060         return 0;
+00061 }
+00062 
+00063 static
+00064 void
+00065 hashValueDtor(void * _this)
+00066 {
+00067         HashValue this = _this;
+00068 
+00069         FREE(this->key);
+00070         FREE(this->value);
+00071 }
+00072 
+00073 static
+00074 unsigned long
+00075 hashValueGetHash(void * _this)
+00076 {
+00077         HashValue this = _this;
+00078 
+00079         return this->hash;
+00080 }
+00081 
+00082 static
+00083 void
+00084 hashValueHandleDouble(void * _this, void * _double)
+00085 {
+00086         HashValue this = _this;
+00087         HashValue doub = _double;
+00088         void * tmp_value;
+00089         size_t tmp_nvalue;
+00090 
+00097         tmp_value   = this->value;
+00098         this->value = doub->value;
+00099         doub->value = tmp_value;
+00100 
+00101         tmp_nvalue   = this->nvalue;
+00102         this->nvalue = doub->nvalue;
+00103         doub->nvalue = tmp_nvalue;
+00104 }
+00105 
+00106 INIT_IFACE(Class, hashValueCtor, hashValueDtor, NULL);
+00107 INIT_IFACE(Hashable, hashValueGetHash, hashValueHandleDouble);
+00108 CREATE_CLASS(HashValue, NULL, IFACE(Class), IFACE(Hashable));
+00109 
+00110 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/value_8h.html b/assets/html/doc/value_8h.html new file mode 100644 index 0000000..9857f64 --- /dev/null +++ b/assets/html/doc/value_8h.html @@ -0,0 +1,144 @@ + + + + +Server: include/hash/value.h File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

include/hash/value.h File Reference

+
+
+
#include <sys/types.h>
+#include "class.h"
+
+Include dependency graph for value.h:
+
+
+ + +
+
+This graph shows which files directly or indirectly include this file:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + +

+Data Structures

struct  HashValue
+

Detailed Description

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file value.h.

+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/value_8h_source.html b/assets/html/doc/value_8h_source.html new file mode 100644 index 0000000..bc081d4 --- /dev/null +++ b/assets/html/doc/value_8h_source.html @@ -0,0 +1,132 @@ + + + + +Server: include/hash/value.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

include/hash/value.h

+
+
+Go to the documentation of this file.
00001 
+00023 #ifndef __HASH_VALUE_H__
+00024 #define __HASH_VALUE_H__
+00025 
+00026 #include <sys/types.h>
+00027 
+00028 #include "class.h"
+00029 
+00030 CLASS(HashValue) {
+00031         unsigned long hash;
+00032 
+00033         char *        key;
+00034         void *        value;
+00035 
+00036         size_t        nkey;
+00037         size_t        nvalue;
+00038 };
+00039 
+00040 #endif // __HASH_VALUE_H__
+00041 
+00042 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/webgameserver_8c.html b/assets/html/doc/webgameserver_8c.html new file mode 100644 index 0000000..76f349b --- /dev/null +++ b/assets/html/doc/webgameserver_8c.html @@ -0,0 +1,428 @@ + + + + +Server: src/webgameserver.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/webgameserver.c File Reference

+
+
+
#include <unistd.h>
+#include <stdlib.h>
+#include <fcntl.h>
+#include <sys/time.h>
+#include <sys/resource.h>
+#include <sys/types.h>
+#include <sys/wait.h>
+#include <sys/signal.h>
+#include <sys/param.h>
+#include <sys/stat.h>
+#include <sys/mman.h>
+#include <errno.h>
+#include "server.h"
+#include "logger.h"
+#include "http/worker.h"
+#include "auth/ldap.h"
+#include "interface/class.h"
+#include "interface/logger.h"
+#include "utils/signalHandling.h"
+#include "utils/memory.h"
+
+Include dependency graph for webgameserver.c:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + + + + + + +

+Defines

#define DEFAULT_SECS   10
#define DEFAULT_USECS   0

+Functions

void nullhandler ()
void daemonize (void)
int main ()
+

Detailed Description

+
Author:
Georg Hopp
+

Copyright (C) 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file webgameserver.c.

+

Define Documentation

+ +
+
+ + + + +
#define DEFAULT_SECS   10
+
+
+ +

Definition at line 49 of file webgameserver.c.

+ +
+
+ +
+
+ + + + +
#define DEFAULT_USECS   0
+
+
+ +

Definition at line 52 of file webgameserver.c.

+ +
+
+

Function Documentation

+ +
+
+ + + + + + + + +
void daemonize (void )
+
+
+ +

Definition at line 30 of file daemonize.c.

+
                     {
+    pid_t pid;
+
+    if (0 > ((pid = fork()))) {
+        perror("deamoinze[fork]");
+        exit(EXIT_FAILURE);
+    } else if (0 != pid) {
+        exit(EXIT_SUCCESS);
+    }
+
+    // make new child session leader
+    setsid();
+
+    // connect all standard streams to /dev/null
+    stderr = freopen("/dev/null", "w", stderr);
+    stdin  = freopen("/dev/null", "r", stdin);
+    stdout = freopen("/dev/null", "w", stdout);
+}
+
+
+
+ +
+
+ + + + + + + +
int main ()
+
+
+ +

Definition at line 59 of file webgameserver.c.

+
{
+        pid_t            pid;
+        long             psize  = sysconf(_SC_PAGESIZE);
+        int              status;
+        int              shm;
+        struct randval * value;
+
+        struct rlimit limit = {RLIM_INFINITY, RLIM_INFINITY};
+        setrlimit(RLIMIT_CPU, &limit);
+
+        getrlimit(RLIMIT_NOFILE, &limit);
+        limit.rlim_cur = limit.rlim_max;
+        setrlimit(RLIMIT_NOFILE, &limit);
+
+        init_signals();
+
+        shm   = shm_open("/fooshm", O_RDWR|O_CREAT, S_IRWXU);
+        ftruncate(shm, psize);
+
+        switch((pid = fork())) {
+                case -1:
+                        break;
+
+                case 0:
+                        {
+                                sigset_t block_these, pause_mask;
+                                struct sigaction s;
+                                struct itimerval interval;
+
+                                value = mmap (0, sizeof(struct randval), PROT_READ|PROT_WRITE,
+                                                MAP_SHARED, shm, 0);
+                                value->timestamp = 0;
+                                value->value     = 0;
+
+                                close(shm);
+
+                                // Block SIGALRM
+                                sigemptyset(&block_these);
+                                sigaddset(&block_these, SIGALRM);
+                                sigprocmask(SIG_BLOCK, &block_these, &pause_mask);
+
+                                // Set up handler for SIGALRM
+                                sigemptyset(&s.sa_mask);
+                                sigaddset(&s.sa_mask, SIGINT);
+                                s.sa_flags = 0;
+                                s.sa_handler = nullhandler;
+                                if (sigaction(SIGALRM, &s, NULL) < 0) {
+                                        perror("sigaction SIGALRM");
+                                        exit (1);
+                                }
+
+                                interval.it_value.tv_sec     = DEFAULT_SECS;
+                                interval.it_value.tv_usec    = DEFAULT_USECS;
+                                interval.it_interval.tv_sec  = DEFAULT_SECS;
+                                interval.it_interval.tv_usec = DEFAULT_USECS;
+
+                                setitimer(ITIMER_REAL, &interval, NULL);
+
+                                // child
+                                while(!doShutdown) {
+                                        value->timestamp = time(NULL);
+                                        value->value     = rand() % 100;
+                                        sigsuspend(&pause_mask);
+                                }
+
+                                _exit(EXIT_SUCCESS);
+                        }
+
+                default:
+                        {
+                                Logger     logger;
+                                AuthLdap   auth;
+                                HttpWorker worker;
+                                Server     server;
+
+                                value = mmap (0, sizeof(int), PROT_READ|PROT_WRITE,
+                                                MAP_SHARED, shm, 0);
+
+                                shm_unlink("/fooshm");
+                                close(shm);
+
+                                logger = new(LoggerSyslog, LOGGER_DEBUG);
+                                auth   = new(AuthLdap,
+                                                "ldap://localhost/",
+                                                CSTRA("ou=user,dc=yabrog,dc=weird-web-workers,dc=org"));
+                                worker = new(HttpWorker, "testserver", value, auth);
+                                server = new(Server, logger, worker, 11212, SOMAXCONN);
+
+                                //daemonize();
+                                if (NULL != server) {
+                                        serverRun(server);
+                                }
+                                else {
+                                        doShutdown = 1;
+                                        kill(pid, SIGINT);
+                                }
+
+                                do {
+                                        pid_t w;
+
+                                        w = waitpid(pid, &status, 0);
+
+                                        while (w == -1) {
+                                                switch(errno) {
+                                                        case EINTR: w = waitpid(pid, &status, 0);
+                                                                                break;
+                                                        case ECHILD: perror("no child");
+                                                                                 // DROP THROUGH
+                                                        default: w = 0;
+                                                }
+                                        }
+
+                                        if (0 < w) {
+                                                if (WIFEXITED(status)) {
+                                                        loggerLog(logger, LOGGER_INFO,
+                                                                        "child exited, status=%d\n",
+                                                                        WEXITSTATUS(status));
+                                                } else if (WIFSIGNALED(status)) {
+                                                        loggerLog(logger, LOGGER_INFO,
+                                                                        "killed by signal %d\n",
+                                                                        WTERMSIG(status));
+                                                } else if (WIFSTOPPED(status)) {
+                                                        loggerLog(logger, LOGGER_INFO,
+                                                                        "stopped by signal %d\n",
+                                                                        WSTOPSIG(status));
+                                                } else if (WIFCONTINUED(status)) {
+                                                        loggerLog(logger, LOGGER_INFO, "continued\n");
+                                                }
+                                        }
+                                } while (!WIFEXITED(status) && !WIFSIGNALED(status));
+
+                                if (NULL != server) delete(server);
+                                if (NULL != worker) delete(worker);
+                                if (NULL != auth)   delete(auth);
+                                if (NULL != logger) delete(logger);
+                        }
+
+                        break;
+        }
+
+        return 0;
+}
+
+

+Here is the call graph for this function:
+
+
+ + +
+

+ +
+
+ +
+
+ + + + + + + +
void nullhandler ()
+
+
+ +

Definition at line 54 of file webgameserver.c.

+
{}
+
+

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/webgameserver_8c_source.html b/assets/html/doc/webgameserver_8c_source.html new file mode 100644 index 0000000..1ed1e6a --- /dev/null +++ b/assets/html/doc/webgameserver_8c_source.html @@ -0,0 +1,293 @@ + + + + +Server: src/webgameserver.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/webgameserver.c

+
+
+Go to the documentation of this file.
00001 
+00023 #include <unistd.h>
+00024 #include <stdlib.h>
+00025 #include <fcntl.h>
+00026 
+00027 #include <sys/time.h>
+00028 #include <sys/resource.h>
+00029 #include <sys/types.h>
+00030 #include <sys/wait.h>
+00031 #include <sys/time.h>
+00032 #include <sys/signal.h>
+00033 #include <sys/param.h>
+00034 #include <sys/stat.h>
+00035 #include <sys/mman.h>
+00036 #include <errno.h>
+00037 
+00038 #include "server.h"
+00039 #include "logger.h"
+00040 #include "http/worker.h"
+00041 #include "auth/ldap.h"
+00042 
+00043 #include "interface/class.h"
+00044 #include "interface/logger.h"
+00045 
+00046 #include "utils/signalHandling.h"
+00047 #include "utils/memory.h"
+00048 
+00049 #define DEFAULT_SECS    10
+00050 //#define DEFAULT_USECS (1000000 / HZ * 2)
+00051 //#define DEFAULT_SECS  1
+00052 #define DEFAULT_USECS   0
+00053 
+00054 void nullhandler() {}
+00055 
+00056 void daemonize(void);
+00057 
+00058 int
+00059 main()
+00060 {
+00061         pid_t            pid;
+00062         long             psize  = sysconf(_SC_PAGESIZE);
+00063         int              status;
+00064         int              shm;
+00065         struct randval * value;
+00066 
+00067         struct rlimit limit = {RLIM_INFINITY, RLIM_INFINITY};
+00068         setrlimit(RLIMIT_CPU, &limit);
+00069 
+00070         getrlimit(RLIMIT_NOFILE, &limit);
+00071         limit.rlim_cur = limit.rlim_max;
+00072         setrlimit(RLIMIT_NOFILE, &limit);
+00073 
+00074         init_signals();
+00075 
+00076         shm   = shm_open("/fooshm", O_RDWR|O_CREAT, S_IRWXU);
+00077         ftruncate(shm, psize);
+00078 
+00079         switch((pid = fork())) {
+00080                 case -1:
+00081                         break;
+00082 
+00083                 case 0:
+00084                         {
+00085                                 sigset_t block_these, pause_mask;
+00086                                 struct sigaction s;
+00087                                 struct itimerval interval;
+00088 
+00089                                 value = mmap (0, sizeof(struct randval), PROT_READ|PROT_WRITE,
+00090                                                 MAP_SHARED, shm, 0);
+00091                                 value->timestamp = 0;
+00092                                 value->value     = 0;
+00093 
+00094                                 close(shm);
+00095 
+00096                                 // Block SIGALRM
+00097                                 sigemptyset(&block_these);
+00098                                 sigaddset(&block_these, SIGALRM);
+00099                                 sigprocmask(SIG_BLOCK, &block_these, &pause_mask);
+00100 
+00101                                 // Set up handler for SIGALRM
+00102                                 sigemptyset(&s.sa_mask);
+00103                                 sigaddset(&s.sa_mask, SIGINT);
+00104                                 s.sa_flags = 0;
+00105                                 s.sa_handler = nullhandler;
+00106                                 if (sigaction(SIGALRM, &s, NULL) < 0) {
+00107                                         perror("sigaction SIGALRM");
+00108                                         exit (1);
+00109                                 }
+00110 
+00111                                 interval.it_value.tv_sec     = DEFAULT_SECS;
+00112                                 interval.it_value.tv_usec    = DEFAULT_USECS;
+00113                                 interval.it_interval.tv_sec  = DEFAULT_SECS;
+00114                                 interval.it_interval.tv_usec = DEFAULT_USECS;
+00115 
+00116                                 setitimer(ITIMER_REAL, &interval, NULL);
+00117 
+00118                                 // child
+00119                                 while(!doShutdown) {
+00120                                         value->timestamp = time(NULL);
+00121                                         value->value     = rand() % 100;
+00122                                         sigsuspend(&pause_mask);
+00123                                 }
+00124 
+00125                                 _exit(EXIT_SUCCESS);
+00126                         }
+00127 
+00128                 default:
+00129                         {
+00130                                 Logger     logger;
+00131                                 AuthLdap   auth;
+00132                                 HttpWorker worker;
+00133                                 Server     server;
+00134 
+00135                                 value = mmap (0, sizeof(int), PROT_READ|PROT_WRITE,
+00136                                                 MAP_SHARED, shm, 0);
+00137 
+00138                                 shm_unlink("/fooshm");
+00139                                 close(shm);
+00140 
+00141                                 logger = new(LoggerSyslog, LOGGER_DEBUG);
+00142                                 auth   = new(AuthLdap,
+00143                                                 "ldap://localhost/",
+00144                                                 CSTRA("ou=user,dc=yabrog,dc=weird-web-workers,dc=org"));
+00145                                 worker = new(HttpWorker, "testserver", value, auth);
+00146                                 server = new(Server, logger, worker, 11212, SOMAXCONN);
+00147 
+00148                                 //daemonize();
+00149                                 if (NULL != server) {
+00150                                         serverRun(server);
+00151                                 }
+00152                                 else {
+00153                                         doShutdown = 1;
+00154                                         kill(pid, SIGINT);
+00155                                 }
+00156 
+00157                                 do {
+00158                                         pid_t w;
+00159 
+00160                                         w = waitpid(pid, &status, 0);
+00161 
+00162                                         while (w == -1) {
+00163                                                 switch(errno) {
+00164                                                         case EINTR: w = waitpid(pid, &status, 0);
+00165                                                                                 break;
+00166                                                         case ECHILD: perror("no child");
+00167                                                                                  // DROP THROUGH
+00168                                                         default: w = 0;
+00169                                                 }
+00170                                         }
+00171 
+00172                                         if (0 < w) {
+00173                                                 if (WIFEXITED(status)) {
+00174                                                         loggerLog(logger, LOGGER_INFO,
+00175                                                                         "child exited, status=%d\n",
+00176                                                                         WEXITSTATUS(status));
+00177                                                 } else if (WIFSIGNALED(status)) {
+00178                                                         loggerLog(logger, LOGGER_INFO,
+00179                                                                         "killed by signal %d\n",
+00180                                                                         WTERMSIG(status));
+00181                                                 } else if (WIFSTOPPED(status)) {
+00182                                                         loggerLog(logger, LOGGER_INFO,
+00183                                                                         "stopped by signal %d\n",
+00184                                                                         WSTOPSIG(status));
+00185                                                 } else if (WIFCONTINUED(status)) {
+00186                                                         loggerLog(logger, LOGGER_INFO, "continued\n");
+00187                                                 }
+00188                                         }
+00189                                 } while (!WIFEXITED(status) && !WIFSIGNALED(status));
+00190 
+00191                                 if (NULL != server) delete(server);
+00192                                 if (NULL != worker) delete(worker);
+00193                                 if (NULL != auth)   delete(auth);
+00194                                 if (NULL != logger) delete(logger);
+00195                         }
+00196 
+00197                         break;
+00198         }
+00199 
+00200         return 0;
+00201 }
+00202 
+00203 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/worker_8c.html b/assets/html/doc/worker_8c.html new file mode 100644 index 0000000..2156bec --- /dev/null +++ b/assets/html/doc/worker_8c.html @@ -0,0 +1,364 @@ + + + + +Server: src/http/worker.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/http/worker.c File Reference

+
+
+
#include <stdarg.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdio.h>
+#include <search.h>
+#include "class.h"
+#include "stream.h"
+#include "http/worker.h"
+#include "http/parser.h"
+#include "http/writer.h"
+#include "utils/memory.h"
+
+Include dependency graph for worker.c:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + + + + + + + + +

+Defines

#define _GNU_SOURCE

+Functions

ssize_t httpWorkerProcess (void *, Stream)
ssize_t httpWorkerWrite (void *, Stream)
 INIT_IFACE (Class, httpWorkerCtor, httpWorkerDtor, httpWorkerClone)
 INIT_IFACE (StreamReader, httpWorkerProcess)
 INIT_IFACE (StreamWriter, httpWorkerWrite)
 CREATE_CLASS (HttpWorker, NULL, IFACE(Class), IFACE(StreamReader), IFACE(StreamWriter))
+

Detailed Description

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file worker.c.

+

Define Documentation

+ +
+
+ + + + +
#define _GNU_SOURCE
+
+
+ +

Definition at line 23 of file worker.c.

+ +
+
+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CREATE_CLASS (HttpWorker ,
NULL ,
IFACE(Class) ,
IFACE(StreamReader) ,
IFACE(StreamWriter)  
)
+
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
ssize_t httpWorkerProcess (void * ,
Stream  
)
+
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
ssize_t httpWorkerWrite (void * ,
Stream  
)
+
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
INIT_IFACE (StreamWriter ,
httpWorkerWrite  
)
+
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
INIT_IFACE (StreamReader ,
httpWorkerProcess  
)
+
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
INIT_IFACE (Class ,
httpWorkerCtor ,
httpWorkerDtor ,
httpWorkerClone  
)
+
+
+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/worker_8c_source.html b/assets/html/doc/worker_8c_source.html new file mode 100644 index 0000000..43ac30f --- /dev/null +++ b/assets/html/doc/worker_8c_source.html @@ -0,0 +1,212 @@ + + + + +Server: src/http/worker.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/http/worker.c

+
+
+Go to the documentation of this file.
00001 
+00023 #define _GNU_SOURCE
+00024 
+00025 #include <stdarg.h>
+00026 #include <stdlib.h>
+00027 #include <string.h>
+00028 #include <stdio.h>
+00029 #include <search.h>
+00030 
+00031 #include "class.h"
+00032 #include "stream.h"
+00033 #include "http/worker.h"
+00034 #include "http/parser.h"
+00035 #include "http/writer.h"
+00036 
+00037 #include "utils/memory.h"
+00038 
+00039 static
+00040 int
+00041 httpWorkerCtor(void * _this, va_list * params)
+00042 {
+00043         HttpWorker this = _this;
+00044         char *     id   = va_arg(*params, char *);
+00045         char       cbuf_id[100];
+00046 
+00047         this->id  = malloc(strlen(id) + 1);
+00048         strcpy(this->id, id);
+00049 
+00050         this->val = va_arg(*params, struct randval *);
+00051 
+00052         sprintf(cbuf_id, "%s_%s", "parser", id);
+00053         this->pbuf   = new(Cbuf, cbuf_id, PARSER_MAX_BUF);
+00054 
+00055         sprintf(cbuf_id, "%s_%s", "writer", id);
+00056         this->wbuf   = new(Cbuf, cbuf_id, WRITER_MAX_BUF);
+00057 
+00058         this->parser = new(HttpParser, this->pbuf);
+00059         this->writer = new(HttpWriter, this->wbuf);
+00060 
+00061         this->sroot  = &(this->session);
+00062         this->auth   = va_arg(* params, void *);
+00063 
+00064         return 0;
+00065 }
+00066 
+00067 static
+00068 inline
+00069 void
+00070 tDelete(void * node)
+00071 {
+00072         delete(node);
+00073 }
+00074 
+00075 static
+00076 void
+00077 httpWorkerDtor(void * _this)
+00078 {
+00079         HttpWorker this = _this;
+00080 
+00081         FREE(this->id);
+00082 
+00083         delete(this->parser);
+00084         delete(this->writer);
+00085 
+00086         if (NULL != this->pbuf) {
+00087                 delete(this->pbuf); 
+00088                 delete(this->wbuf); 
+00089                 tdestroy(*(this->sroot), tDelete);
+00090         }
+00091 }
+00092 
+00093 static
+00094 void
+00095 httpWorkerClone(void * _this, void * _base)
+00096 {
+00097         HttpWorker this = _this;
+00098         HttpWorker base = _base;
+00099 
+00100         this->val  = base->val;
+00101 
+00102         this->parser = new(HttpParser, base->pbuf);
+00103         this->writer = new(HttpWriter, base->wbuf);
+00104 
+00105         this->sroot  = &(base->session);
+00106         this->auth   = base->auth;
+00107 }
+00108 
+00109 ssize_t httpWorkerProcess(void *, Stream);
+00110 ssize_t httpWorkerWrite(void *, Stream);
+00111 
+00112 INIT_IFACE(Class, httpWorkerCtor, httpWorkerDtor, httpWorkerClone);
+00113 INIT_IFACE(StreamReader, httpWorkerProcess);
+00114 INIT_IFACE(StreamWriter, httpWorkerWrite);
+00115 CREATE_CLASS(
+00116                 HttpWorker,
+00117                 NULL, 
+00118                 IFACE(Class),
+00119                 IFACE(StreamReader),
+00120                 IFACE(StreamWriter));
+00121 
+00122 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/worker_8h.html b/assets/html/doc/worker_8h.html new file mode 100644 index 0000000..08e3cc9 --- /dev/null +++ b/assets/html/doc/worker_8h.html @@ -0,0 +1,152 @@ + + + + +Server: include/http/worker.h File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

include/http/worker.h File Reference

+
+
+
#include <sys/types.h>
+#include <time.h>
+#include "class.h"
+#include "http/parser.h"
+#include "http/writer.h"
+#include "cbuf.h"
+#include "session.h"
+#include "commons.h"
+
+Include dependency graph for worker.h:
+
+
+ + +
+
+This graph shows which files directly or indirectly include this file:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + + +

+Data Structures

struct  randval
struct  HttpWorker
+

Detailed Description

+

Worker for processing HTTP request, response cycles.

+
Author:
Georg Hopp
+

Copyright © 2012 Georg Hopp

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program 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.

+

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

+ +

Definition in file worker.h.

+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/doc/worker_8h_source.html b/assets/html/doc/worker_8h_source.html new file mode 100644 index 0000000..ab11177 --- /dev/null +++ b/assets/html/doc/worker_8h_source.html @@ -0,0 +1,150 @@ + + + + +Server: include/http/worker.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Server 0.0.1
+
HTTP/REST server implementation
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

include/http/worker.h

+
+
+Go to the documentation of this file.
00001 
+00024 #ifndef __HTTP_WORKER_H__
+00025 #define __HTTP_WORKER_H__
+00026 
+00027 #include <sys/types.h>
+00028 #include <time.h>
+00029 
+00030 #include "class.h"
+00031 #include "http/parser.h"
+00032 #include "http/writer.h"
+00033 #include "cbuf.h"
+00034 #include "session.h"
+00035 
+00036 #include "commons.h"
+00037 
+00038 struct randval {
+00039         time_t timestamp;
+00040         int    value;
+00041 };
+00042 
+00043 
+00044 CLASS(HttpWorker) {
+00045         char           * id;
+00046         struct randval * val;
+00047 
+00048         Cbuf       pbuf;
+00049         Cbuf       wbuf;
+00050 
+00051         HttpParser parser;
+00052         HttpWriter writer;
+00053         Session    session;
+00054         Session  * sroot;
+00055 
+00056         void *     auth;
+00057 };
+00058 
+00059 #endif // __HTTP_WORKER_H__
+00060 
+00061 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/assets/html/documentation.html b/assets/html/documentation.html index bca8844..e3bdd10 100644 --- a/assets/html/documentation.html +++ b/assets/html/documentation.html @@ -63,10 +63,25 @@

[GH] Currently this is more a changelog and a description - how to use new features. + how to use new features.


+

API Doc and test coverage

+ +

+ There is the beginning of a api doc and automated + test coverage reports.
+ Both don't cover the complete code.
+ + There is the beginning of a generated API doc + here.
+ + I also started automated regression tests. The + results can be seen + here. +

+

Version 0.1.5

diff --git a/assets/html/download.html b/assets/html/download.html index 416e168..bd83fe8 100644 --- a/assets/html/download.html +++ b/assets/html/download.html @@ -80,7 +80,7 @@

  • taskrambler-0.1
  • taskrambler-0.1.3
  • taskrambler-0.1.4
  • -
  • taskrambler-0.1.5
  • +
  • taskrambler-0.1.5
  • Project page