[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r19221 - in gnunet-java: . .idea .idea/inspectionProfiles l
From: |
gnunet |
Subject: |
[GNUnet-SVN] r19221 - in gnunet-java: . .idea .idea/inspectionProfiles lib src src/org/gnunet/construct src/org/gnunet/construct/parsers src/org/gnunet/service src/org/gnunet/util src/org/gnunet/util/getopt test/org/gnunet/construct test/org/gnunet/services |
Date: |
Wed, 18 Jan 2012 01:03:39 +0100 |
Author: dold
Date: 2012-01-18 01:03:38 +0100 (Wed, 18 Jan 2012)
New Revision: 19221
Added:
gnunet-java/resolver
gnunet-java/src/org/gnunet/construct/TaggedUnion.java
gnunet-java/src/org/gnunet/service/NetworkSizeEstimation.java
gnunet-java/src/org/gnunet/service/Resolver.java
gnunet-java/src/org/gnunet/util/getopt/
gnunet-java/src/org/gnunet/util/getopt/Argument.java
gnunet-java/src/org/gnunet/util/getopt/Parameter.java
gnunet-java/src/org/gnunet/util/getopt/Parser.java
gnunet-java/test/org/gnunet/construct/ByteFillMessage.java
Removed:
gnunet-java/lib/slf4j-jdk14-1.6.4.jar
gnunet-java/src/org/gnunet/service/NSE_StartMessage.java
gnunet-java/src/org/gnunet/service/NSE_UpdateMessage.java
gnunet-java/src/org/gnunet/service/NetworkSizeEstimationService.java
Modified:
gnunet-java/.idea/inspectionProfiles/Project_Default.xml
gnunet-java/.idea/misc.xml
gnunet-java/.idea/workspace.xml
gnunet-java/ISSUES
gnunet-java/gnunet-java.eml
gnunet-java/src/log4j.properties
gnunet-java/src/org/gnunet/construct/Construct.java
gnunet-java/src/org/gnunet/construct/MessageIdAnnotationProcessor.java
gnunet-java/src/org/gnunet/construct/MessageLoader.java
gnunet-java/src/org/gnunet/construct/MsgMap.txt
gnunet-java/src/org/gnunet/construct/Nested.java
gnunet-java/src/org/gnunet/construct/ZeroTerminatedString.java
gnunet-java/src/org/gnunet/construct/parsers/ByteFillParser.java
gnunet-java/src/org/gnunet/construct/parsers/DoubleParser.java
gnunet-java/src/org/gnunet/construct/parsers/FillParser.java
gnunet-java/src/org/gnunet/construct/parsers/FixedSizeArrayParser.java
gnunet-java/src/org/gnunet/construct/parsers/IntegerParser.java
gnunet-java/src/org/gnunet/construct/parsers/NestedParser.java
gnunet-java/src/org/gnunet/construct/parsers/Parser.java
gnunet-java/src/org/gnunet/construct/parsers/SequenceParser.java
gnunet-java/src/org/gnunet/construct/parsers/StringParser.java
gnunet-java/src/org/gnunet/construct/parsers/VariableSizeArrayParser.java
gnunet-java/src/org/gnunet/util/Client.java
gnunet-java/src/org/gnunet/util/Configuration.java
gnunet-java/src/org/gnunet/util/Program.java
gnunet-java/src/org/gnunet/util/Scheduler.java
gnunet-java/test/org/gnunet/construct/ConstructTest.java
gnunet-java/test/org/gnunet/services/NetworkSizeEstimationServiceTest.java
gnunet-java/update-msgtypes.sh
Log:
rudimentary version of resolve tool completed
Modified: gnunet-java/.idea/inspectionProfiles/Project_Default.xml
===================================================================
--- gnunet-java/.idea/inspectionProfiles/Project_Default.xml 2012-01-17
22:25:52 UTC (rev 19220)
+++ gnunet-java/.idea/inspectionProfiles/Project_Default.xml 2012-01-18
00:03:38 UTC (rev 19221)
@@ -81,7 +81,6 @@
<option name="reportWhenNoStatementFollow" value="false" />
</inspection_tool>
<inspection_tool class="ConstantAssertCondition" enabled="true"
level="WARNING" enabled_by_default="true" />
- <inspection_tool class="ContinueStatement" enabled="true" level="WARNING"
enabled_by_default="true" />
<inspection_tool class="ContinueStatementWithLabel" enabled="true"
level="WARNING" enabled_by_default="true" />
<inspection_tool class="CovariantCompareTo" enabled="true" level="WARNING"
enabled_by_default="true" />
<inspection_tool class="CovariantEquals" enabled="true" level="WARNING"
enabled_by_default="true" />
@@ -219,7 +218,6 @@
<inspection_tool class="NegatedIfElse" enabled="true" level="WARNING"
enabled_by_default="true">
<option name="m_ignoreNegatedNullComparison" value="true" />
</inspection_tool>
- <inspection_tool class="NestedAssignment" enabled="true" level="WARNING"
enabled_by_default="true" />
<inspection_tool class="NestedConditionalExpression" enabled="true"
level="WARNING" enabled_by_default="true" />
<inspection_tool class="NestedSwitchStatement" enabled="true"
level="WARNING" enabled_by_default="true" />
<inspection_tool class="NestedSynchronizedStatement" enabled="true"
level="WARNING" enabled_by_default="true" />
@@ -350,7 +348,6 @@
<inspection_tool class="SubstringZero" enabled="true" level="WARNING"
enabled_by_default="true" />
<inspection_tool class="SubtractionInCompareTo" enabled="true"
level="WARNING" enabled_by_default="true" />
<inspection_tool class="SuspiciousIndentAfterControlStatement"
enabled="true" level="WARNING" enabled_by_default="true" />
- <inspection_tool class="SwitchStatement" enabled="true" level="WARNING"
enabled_by_default="true" />
<inspection_tool class="SwitchStatementDensity" enabled="true"
level="WARNING" enabled_by_default="true">
<option name="m_limit" value="20" />
</inspection_tool>
Modified: gnunet-java/.idea/misc.xml
===================================================================
--- gnunet-java/.idea/misc.xml 2012-01-17 22:25:52 UTC (rev 19220)
+++ gnunet-java/.idea/misc.xml 2012-01-18 00:03:38 UTC (rev 19221)
@@ -2,6 +2,9 @@
<project version="4">
<component name="EntryPointsManager">
<entry_points version="2.0" />
+ <list size="1">
+ <item index="0" class="java.lang.String"
itemvalue="org.gnunet.construct.Nested" />
+ </list>
</component>
<component name="ProjectResources">
<default-html-doctype>http://www.w3.org/1999/xhtml</default-html-doctype>
@@ -10,6 +13,17 @@
<output url="file://$PROJECT_DIR$/out" />
</component>
<component name="SvnBranchConfigurationManager">
+ <option name="myConfigurationMap">
+ <map>
+ <entry key="$PROJECT_DIR$">
+ <value>
+ <SvnBranchConfiguration>
+ <option name="trunkUrl"
value="https://gnunet.org/svn/gnunet-java" />
+ </SvnBranchConfiguration>
+ </value>
+ </entry>
+ </map>
+ </option>
<option name="mySupportsUserInfoFilter" value="true" />
</component>
</project>
Modified: gnunet-java/.idea/workspace.xml
===================================================================
--- gnunet-java/.idea/workspace.xml 2012-01-17 22:25:52 UTC (rev 19220)
+++ gnunet-java/.idea/workspace.xml 2012-01-18 00:03:38 UTC (rev 19221)
@@ -1,18 +1,48 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ChangeListManager">
- <list default="true" readonly="true"
id="b4faf44d-8919-474e-bfab-5900bc40cc2b" name="Default" comment="">
- <change type="NEW" beforePath=""
afterPath="$PROJECT_DIR$/lib/junit-4.10.jar" />
- <change type="NEW" beforePath=""
afterPath="$PROJECT_DIR$/lib/log4j-1.2.16.jar" />
- <change type="NEW" beforePath=""
afterPath="$PROJECT_DIR$/lib/slf4j-log4j12-1.6.4.jar" />
- <change type="MODIFICATION"
beforePath="$PROJECT_DIR$/.idea/codeStyleSettings.xml"
afterPath="$PROJECT_DIR$/.idea/codeStyleSettings.xml" />
+ <list default="true" readonly="true"
id="b4faf44d-8919-474e-bfab-5900bc40cc2b" name="Default" comment="rudimentary
version of resolve tool completed">
+ <change type="NEW" beforePath=""
afterPath="$PROJECT_DIR$/src/org/gnunet/util/getopt" />
+ <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/resolver" />
+ <change type="NEW" beforePath=""
afterPath="$PROJECT_DIR$/src/org/gnunet/construct/TaggedUnion.java" />
+ <change type="NEW" beforePath=""
afterPath="$PROJECT_DIR$/src/org/gnunet/service/Resolver.java" />
+ <change type="NEW" beforePath=""
afterPath="$PROJECT_DIR$/src/org/gnunet/util/getopt/Argument.java" />
+ <change type="NEW" beforePath=""
afterPath="$PROJECT_DIR$/src/org/gnunet/util/getopt/Parameter.java" />
+ <change type="NEW" beforePath=""
afterPath="$PROJECT_DIR$/src/org/gnunet/util/getopt/Parser.java" />
+ <change type="NEW" beforePath=""
afterPath="$PROJECT_DIR$/test/org/gnunet/construct/ByteFillMessage.java" />
+ <change type="DELETED"
beforePath="$PROJECT_DIR$/src/org/gnunet/service/NSE_StartMessage.java"
afterPath="" />
+ <change type="DELETED"
beforePath="$PROJECT_DIR$/src/org/gnunet/service/NSE_UpdateMessage.java"
afterPath="" />
+ <change type="DELETED"
beforePath="$PROJECT_DIR$/lib/slf4j-jdk14-1.6.4.jar" afterPath="" />
+ <change type="MOVED"
beforePath="$PROJECT_DIR$/src/org/gnunet/service/NetworkSizeEstimationService.java"
afterPath="$PROJECT_DIR$/src/org/gnunet/service/NetworkSizeEstimation.java" />
+ <change type="MODIFICATION"
beforePath="$PROJECT_DIR$/.idea/inspectionProfiles/Project_Default.xml"
afterPath="$PROJECT_DIR$/.idea/inspectionProfiles/Project_Default.xml" />
+ <change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/misc.xml"
afterPath="$PROJECT_DIR$/.idea/misc.xml" />
<change type="MODIFICATION"
beforePath="$PROJECT_DIR$/.idea/workspace.xml"
afterPath="$PROJECT_DIR$/.idea/workspace.xml" />
- <change type="MODIFICATION"
beforePath="$PROJECT_DIR$/src/org/gnunet/service/NetworkSizeEstimationService.java"
afterPath="$PROJECT_DIR$/src/org/gnunet/service/NetworkSizeEstimationService.java"
/>
- <change type="MODIFICATION"
beforePath="$PROJECT_DIR$/src/org/gnunet/util/AbsoluteTime.java"
afterPath="$PROJECT_DIR$/src/org/gnunet/util/AbsoluteTime.java" />
- <change type="MODIFICATION"
beforePath="$PROJECT_DIR$/src/org/gnunet/util/AbsoluteTimeMessage.java"
afterPath="$PROJECT_DIR$/src/org/gnunet/util/AbsoluteTimeMessage.java" />
- <change type="MODIFICATION"
beforePath="$PROJECT_DIR$/src/org/gnunet/util/RelativeTime.java"
afterPath="$PROJECT_DIR$/src/org/gnunet/util/RelativeTime.java" />
- <change type="MODIFICATION"
beforePath="$PROJECT_DIR$/src/org/gnunet/util/RelativeTimeMessage.java"
afterPath="$PROJECT_DIR$/src/org/gnunet/util/RelativeTimeMessage.java" />
+ <change type="MODIFICATION" beforePath="$PROJECT_DIR$/ISSUES"
afterPath="$PROJECT_DIR$/ISSUES" />
+ <change type="MODIFICATION" beforePath="$PROJECT_DIR$/gnunet-java.eml"
afterPath="$PROJECT_DIR$/gnunet-java.eml" />
+ <change type="MODIFICATION"
beforePath="$PROJECT_DIR$/src/log4j.properties"
afterPath="$PROJECT_DIR$/src/log4j.properties" />
+ <change type="MODIFICATION"
beforePath="$PROJECT_DIR$/src/org/gnunet/construct/Construct.java"
afterPath="$PROJECT_DIR$/src/org/gnunet/construct/Construct.java" />
+ <change type="MODIFICATION"
beforePath="$PROJECT_DIR$/src/org/gnunet/construct/MessageIdAnnotationProcessor.java"
afterPath="$PROJECT_DIR$/src/org/gnunet/construct/MessageIdAnnotationProcessor.java"
/>
+ <change type="MODIFICATION"
beforePath="$PROJECT_DIR$/src/org/gnunet/construct/MessageLoader.java"
afterPath="$PROJECT_DIR$/src/org/gnunet/construct/MessageLoader.java" />
+ <change type="MODIFICATION"
beforePath="$PROJECT_DIR$/src/org/gnunet/construct/MsgMap.txt"
afterPath="$PROJECT_DIR$/src/org/gnunet/construct/MsgMap.txt" />
+ <change type="MODIFICATION"
beforePath="$PROJECT_DIR$/src/org/gnunet/construct/Nested.java"
afterPath="$PROJECT_DIR$/src/org/gnunet/construct/Nested.java" />
+ <change type="MODIFICATION"
beforePath="$PROJECT_DIR$/src/org/gnunet/construct/ZeroTerminatedString.java"
afterPath="$PROJECT_DIR$/src/org/gnunet/construct/ZeroTerminatedString.java" />
+ <change type="MODIFICATION"
beforePath="$PROJECT_DIR$/src/org/gnunet/construct/parsers/ByteFillParser.java"
afterPath="$PROJECT_DIR$/src/org/gnunet/construct/parsers/ByteFillParser.java"
/>
+ <change type="MODIFICATION"
beforePath="$PROJECT_DIR$/src/org/gnunet/construct/parsers/DoubleParser.java"
afterPath="$PROJECT_DIR$/src/org/gnunet/construct/parsers/DoubleParser.java" />
+ <change type="MODIFICATION"
beforePath="$PROJECT_DIR$/src/org/gnunet/construct/parsers/FillParser.java"
afterPath="$PROJECT_DIR$/src/org/gnunet/construct/parsers/FillParser.java" />
+ <change type="MODIFICATION"
beforePath="$PROJECT_DIR$/src/org/gnunet/construct/parsers/FixedSizeArrayParser.java"
afterPath="$PROJECT_DIR$/src/org/gnunet/construct/parsers/FixedSizeArrayParser.java"
/>
+ <change type="MODIFICATION"
beforePath="$PROJECT_DIR$/src/org/gnunet/construct/parsers/IntegerParser.java"
afterPath="$PROJECT_DIR$/src/org/gnunet/construct/parsers/IntegerParser.java" />
+ <change type="MODIFICATION"
beforePath="$PROJECT_DIR$/src/org/gnunet/construct/parsers/NestedParser.java"
afterPath="$PROJECT_DIR$/src/org/gnunet/construct/parsers/NestedParser.java" />
+ <change type="MODIFICATION"
beforePath="$PROJECT_DIR$/src/org/gnunet/construct/parsers/Parser.java"
afterPath="$PROJECT_DIR$/src/org/gnunet/construct/parsers/Parser.java" />
+ <change type="MODIFICATION"
beforePath="$PROJECT_DIR$/src/org/gnunet/construct/parsers/SequenceParser.java"
afterPath="$PROJECT_DIR$/src/org/gnunet/construct/parsers/SequenceParser.java"
/>
+ <change type="MODIFICATION"
beforePath="$PROJECT_DIR$/src/org/gnunet/construct/parsers/StringParser.java"
afterPath="$PROJECT_DIR$/src/org/gnunet/construct/parsers/StringParser.java" />
+ <change type="MODIFICATION"
beforePath="$PROJECT_DIR$/src/org/gnunet/construct/parsers/VariableSizeArrayParser.java"
afterPath="$PROJECT_DIR$/src/org/gnunet/construct/parsers/VariableSizeArrayParser.java"
/>
+ <change type="MODIFICATION"
beforePath="$PROJECT_DIR$/src/org/gnunet/util/Client.java"
afterPath="$PROJECT_DIR$/src/org/gnunet/util/Client.java" />
+ <change type="MODIFICATION"
beforePath="$PROJECT_DIR$/src/org/gnunet/util/Configuration.java"
afterPath="$PROJECT_DIR$/src/org/gnunet/util/Configuration.java" />
+ <change type="MODIFICATION"
beforePath="$PROJECT_DIR$/src/org/gnunet/util/Program.java"
afterPath="$PROJECT_DIR$/src/org/gnunet/util/Program.java" />
+ <change type="MODIFICATION"
beforePath="$PROJECT_DIR$/src/org/gnunet/util/Scheduler.java"
afterPath="$PROJECT_DIR$/src/org/gnunet/util/Scheduler.java" />
+ <change type="MODIFICATION"
beforePath="$PROJECT_DIR$/test/org/gnunet/construct/ConstructTest.java"
afterPath="$PROJECT_DIR$/test/org/gnunet/construct/ConstructTest.java" />
<change type="MODIFICATION"
beforePath="$PROJECT_DIR$/test/org/gnunet/services/NetworkSizeEstimationServiceTest.java"
afterPath="$PROJECT_DIR$/test/org/gnunet/services/NetworkSizeEstimationServiceTest.java"
/>
+ <change type="MODIFICATION"
beforePath="$PROJECT_DIR$/update-msgtypes.sh"
afterPath="$PROJECT_DIR$/update-msgtypes.sh" />
</list>
<ignored path="gnunet-java.iws" />
<ignored path=".idea/workspace.xml" />
@@ -70,91 +100,93 @@
</component>
<component name="FileEditorManager">
<leaf>
- <file leaf-file-name="StatisticsService.java" pinned="false"
current="false" current-in-tab="false">
- <entry
file="file://$PROJECT_DIR$/src/org/gnunet/service/StatisticsService.java">
+ <file leaf-file-name="Resolver.java" pinned="false" current="false"
current-in-tab="false">
+ <entry
file="file://$PROJECT_DIR$/src/org/gnunet/service/Resolver.java">
<provider selected="true" editor-type-id="text-editor">
- <state line="11" column="13" selection-start="245"
selection-end="245" vertical-scroll-proportion="0.0">
- <folding />
+ <state line="155" column="12" selection-start="4980"
selection-end="4980" vertical-scroll-proportion="0.0">
+ <folding>
+ <element signature="e#543#599#0" expanded="true" />
+ </folding>
</state>
</provider>
</entry>
</file>
- <file leaf-file-name="NetworkSizeEstimationServiceTest.java"
pinned="false" current="false" current-in-tab="false">
- <entry
file="file://$PROJECT_DIR$/test/org/gnunet/services/NetworkSizeEstimationServiceTest.java">
+ <file leaf-file-name="ISSUES" pinned="false" current="false"
current-in-tab="false">
+ <entry file="file://$PROJECT_DIR$/ISSUES">
<provider selected="true" editor-type-id="text-editor">
- <state line="23" column="5" selection-start="767"
selection-end="767" vertical-scroll-proportion="0.0">
+ <state line="154" column="41" selection-start="5164"
selection-end="5164" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
- <file leaf-file-name="IntegerParser.java" pinned="false" current="true"
current-in-tab="true">
- <entry
file="file://$PROJECT_DIR$/src/org/gnunet/construct/parsers/IntegerParser.java">
+ <file leaf-file-name="Construct.java" pinned="false" current="false"
current-in-tab="false">
+ <entry
file="file://$PROJECT_DIR$/src/org/gnunet/construct/Construct.java">
<provider selected="true" editor-type-id="text-editor">
- <state line="200" column="13" selection-start="6405"
selection-end="6405" vertical-scroll-proportion="0.07977208">
+ <state line="68" column="1" selection-start="2022"
selection-end="2449" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
- <file leaf-file-name="NestedParser.java" pinned="false" current="false"
current-in-tab="false">
- <entry
file="file://$PROJECT_DIR$/src/org/gnunet/construct/parsers/NestedParser.java">
+ <file leaf-file-name="Parser.java" pinned="false" current="true"
current-in-tab="true">
+ <entry
file="file://$PROJECT_DIR$/src/org/gnunet/util/getopt/Parser.java">
<provider selected="true" editor-type-id="text-editor">
- <state line="28" column="41" selection-start="825"
selection-end="825" vertical-scroll-proportion="0.0">
+ <state line="23" column="22" selection-start="700"
selection-end="700" vertical-scroll-proportion="0.46011397">
<folding />
</state>
</provider>
</entry>
</file>
- <file leaf-file-name="MessageLoader.java" pinned="false" current="false"
current-in-tab="false">
- <entry
file="file://$PROJECT_DIR$/src/org/gnunet/construct/MessageLoader.java">
+ <file leaf-file-name="Program.java" pinned="false" current="false"
current-in-tab="false">
+ <entry file="file://$PROJECT_DIR$/src/org/gnunet/util/Program.java">
<provider selected="true" editor-type-id="text-editor">
- <state line="89" column="0" selection-start="3088"
selection-end="3088" vertical-scroll-proportion="0.0">
+ <state line="28" column="10" selection-start="792"
selection-end="792" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
- <file leaf-file-name="Construct.java" pinned="false" current="false"
current-in-tab="false">
- <entry
file="file://$PROJECT_DIR$/src/org/gnunet/construct/Construct.java">
+ <file leaf-file-name="log4j.properties" pinned="false" current="false"
current-in-tab="false">
+ <entry file="file://$PROJECT_DIR$/src/log4j.properties">
<provider selected="true" editor-type-id="text-editor">
- <state line="43" column="24" selection-start="1457"
selection-end="1457" vertical-scroll-proportion="0.0">
+ <state line="2" column="50" selection-start="78"
selection-end="78" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
- <file leaf-file-name="QueryMessage.java" pinned="false" current="false"
current-in-tab="false">
- <entry
file="file://$PROJECT_DIR$/test/org/gnunet/construct/QueryMessage.java">
+ <file leaf-file-name="VarTestMessage.java" pinned="false"
current="false" current-in-tab="false">
+ <entry
file="file://$PROJECT_DIR$/test/org/gnunet/construct/VarTestMessage.java">
<provider selected="true" editor-type-id="text-editor">
- <state line="3" column="13" selection-start="62"
selection-end="62" vertical-scroll-proportion="0.0">
+ <state line="2" column="13" selection-start="44"
selection-end="44" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
- <file leaf-file-name="AbsoluteTimeMessage.java" pinned="false"
current="false" current-in-tab="false">
- <entry
file="file://$PROJECT_DIR$/src/org/gnunet/util/AbsoluteTimeMessage.java">
+ <file leaf-file-name="NetworkSizeEstimationServiceTest.java"
pinned="false" current="false" current-in-tab="false">
+ <entry
file="file://$PROJECT_DIR$/test/org/gnunet/services/NetworkSizeEstimationServiceTest.java">
<provider selected="true" editor-type-id="text-editor">
- <state line="21" column="5" selection-start="449"
selection-end="449" vertical-scroll-proportion="0.0">
+ <state line="13" column="13" selection-start="300"
selection-end="300" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
- <file leaf-file-name="RelativeTimeMessage.java" pinned="false"
current="false" current-in-tab="false">
- <entry
file="file://$PROJECT_DIR$/src/org/gnunet/util/RelativeTimeMessage.java">
+ <file leaf-file-name="ByteFillParser.java" pinned="false"
current="false" current-in-tab="false">
+ <entry
file="file://$PROJECT_DIR$/src/org/gnunet/construct/parsers/ByteFillParser.java">
<provider selected="true" editor-type-id="text-editor">
- <state line="19" column="51" selection-start="499"
selection-end="499" vertical-scroll-proportion="0.0">
+ <state line="55" column="9" selection-start="1668"
selection-end="1668" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
- <file leaf-file-name="SequenceParser.java" pinned="false"
current="false" current-in-tab="false">
- <entry
file="file://$PROJECT_DIR$/src/org/gnunet/construct/parsers/SequenceParser.java">
+ <file leaf-file-name="NestedParser.java" pinned="false" current="false"
current-in-tab="false">
+ <entry
file="file://$PROJECT_DIR$/src/org/gnunet/construct/parsers/NestedParser.java">
<provider selected="true" editor-type-id="text-editor">
- <state line="37" column="0" selection-start="875"
selection-end="875" vertical-scroll-proportion="0.0">
+ <state line="39" column="23" selection-start="1133"
selection-end="1133" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
@@ -170,22 +202,22 @@
<component name="IdeDocumentHistory">
<option name="changedFiles">
<list>
- <option
value="$PROJECT_DIR$/test/org/gnunet/services/StatisticsServiceTest.java" />
<option value="$PROJECT_DIR$/src/org/gnunet/util/Client.java" />
- <option
value="$PROJECT_DIR$/src/org/gnunet/construct/MessageIdAnnotationProcessor.java"
/>
- <option value="$PROJECT_DIR$/src/org/gnunet/util/Scheduler.java" />
- <option value="$PROJECT_DIR$/test/org/gnunet/services/ConfigUtil.java"
/>
- <option value="$PROJECT_DIR$/src/org/gnunet/util/IOContinuation.java"
/>
- <option
value="$PROJECT_DIR$/src/org/gnunet/util/RunaboutMessageReceiver.java" />
- <option value="$PROJECT_DIR$/src/org/gnunet/util/Configuration.java" />
- <option
value="$PROJECT_DIR$/src/org/gnunet/exceptions/InternalLogicError.java" />
+ <option value="$PROJECT_DIR$/src/org/gnunet/construct/Optional.java" />
+ <option value="$PROJECT_DIR$/src/org/gnunet/construct/Nested.java" />
+ <option
value="$PROJECT_DIR$/src/org/gnunet/construct/parsers/Parser.java" />
+ <option
value="$PROJECT_DIR$/src/org/gnunet/construct/parsers/SequenceParser.java" />
+ <option value="$PROJECT_DIR$/src/org/gnunet/construct/Construct.java"
/>
+ <option
value="$PROJECT_DIR$/src/org/gnunet/construct/parsers/ByteFillParser.java" />
+ <option
value="$PROJECT_DIR$/src/org/gnunet/construct/parsers/NestedParser.java" />
+ <option value="$PROJECT_DIR$/src/log4j.properties" />
+ <option value="$PROJECT_DIR$/src/org/gnunet/util/getopt/RestArgs.java"
/>
+ <option
value="$PROJECT_DIR$/src/org/gnunet/util/getopt/Arguments.java" />
+ <option value="$PROJECT_DIR$/src/org/gnunet/util/getopt/Argument.java"
/>
+ <option value="$PROJECT_DIR$/src/org/gnunet/service/Resolver.java" />
<option value="$PROJECT_DIR$/ISSUES" />
- <option value="$PROJECT_DIR$/src/org/gnunet/util/RelativeTime.java" />
- <option value="$PROJECT_DIR$/src/org/gnunet/util/AbsoluteTime.java" />
- <option
value="$PROJECT_DIR$/src/org/gnunet/service/NetworkSizeEstimationService.java"
/>
- <option
value="$PROJECT_DIR$/src/org/gnunet/util/RelativeTimeMessage.java" />
- <option
value="$PROJECT_DIR$/src/org/gnunet/util/AbsoluteTimeMessage.java" />
- <option
value="$PROJECT_DIR$/test/org/gnunet/services/NetworkSizeEstimationServiceTest.java"
/>
+ <option value="$PROJECT_DIR$/src/org/gnunet/util/Program.java" />
+ <option value="$PROJECT_DIR$/src/org/gnunet/util/getopt/Parser.java" />
</list>
</option>
</component>
@@ -345,6 +377,114 @@
<sortByType />
</navigator>
<panes>
+ <pane id="Scope">
+ <subPane subId="Project Files">
+ <PATH>
+ <PATH_ELEMENT USER_OBJECT="Root">
+ <option name="myItemId" value="" />
+ <option name="myItemType" value="" />
+ </PATH_ELEMENT>
+ <PATH_ELEMENT USER_OBJECT="gnunet-java">
+ <option name="myItemId" value="" />
+ <option name="myItemType" value="" />
+ </PATH_ELEMENT>
+ </PATH>
+ <PATH>
+ <PATH_ELEMENT USER_OBJECT="Root">
+ <option name="myItemId" value="" />
+ <option name="myItemType" value="" />
+ </PATH_ELEMENT>
+ <PATH_ELEMENT USER_OBJECT="gnunet-java">
+ <option name="myItemId" value="" />
+ <option name="myItemType" value="" />
+ </PATH_ELEMENT>
+ <PATH_ELEMENT USER_OBJECT="src">
+ <option name="myItemId" value="" />
+ <option name="myItemType" value="" />
+ </PATH_ELEMENT>
+ <PATH_ELEMENT USER_OBJECT="org">
+ <option name="myItemId" value="" />
+ <option name="myItemType" value="" />
+ </PATH_ELEMENT>
+ </PATH>
+ <PATH>
+ <PATH_ELEMENT USER_OBJECT="Root">
+ <option name="myItemId" value="" />
+ <option name="myItemType" value="" />
+ </PATH_ELEMENT>
+ <PATH_ELEMENT USER_OBJECT="gnunet-java">
+ <option name="myItemId" value="" />
+ <option name="myItemType" value="" />
+ </PATH_ELEMENT>
+ <PATH_ELEMENT USER_OBJECT="src">
+ <option name="myItemId" value="" />
+ <option name="myItemType" value="" />
+ </PATH_ELEMENT>
+ <PATH_ELEMENT USER_OBJECT="org">
+ <option name="myItemId" value="" />
+ <option name="myItemType" value="" />
+ </PATH_ELEMENT>
+ <PATH_ELEMENT USER_OBJECT="gnunet">
+ <option name="myItemId" value="" />
+ <option name="myItemType" value="" />
+ </PATH_ELEMENT>
+ </PATH>
+ <PATH>
+ <PATH_ELEMENT USER_OBJECT="Root">
+ <option name="myItemId" value="" />
+ <option name="myItemType" value="" />
+ </PATH_ELEMENT>
+ <PATH_ELEMENT USER_OBJECT="gnunet-java">
+ <option name="myItemId" value="" />
+ <option name="myItemType" value="" />
+ </PATH_ELEMENT>
+ <PATH_ELEMENT USER_OBJECT="src">
+ <option name="myItemId" value="" />
+ <option name="myItemType" value="" />
+ </PATH_ELEMENT>
+ <PATH_ELEMENT USER_OBJECT="org">
+ <option name="myItemId" value="" />
+ <option name="myItemType" value="" />
+ </PATH_ELEMENT>
+ <PATH_ELEMENT USER_OBJECT="gnunet">
+ <option name="myItemId" value="" />
+ <option name="myItemType" value="" />
+ </PATH_ELEMENT>
+ <PATH_ELEMENT USER_OBJECT="construct">
+ <option name="myItemId" value="" />
+ <option name="myItemType" value="" />
+ </PATH_ELEMENT>
+ </PATH>
+ </subPane>
+ </pane>
+ <pane id="PackagesPane">
+ <subPane>
+ <PATH>
+ <PATH_ELEMENT>
+ <option name="myItemId" value="gnunet-java" />
+ <option name="myItemType"
value="com.intellij.ide.projectView.impl.nodes.PackageViewProjectNode" />
+ </PATH_ELEMENT>
+ <PATH_ELEMENT>
+ <option name="myItemId" value="gnunet-java" />
+ <option name="myItemType"
value="com.intellij.ide.projectView.impl.nodes.PackageViewModuleNode" />
+ </PATH_ELEMENT>
+ </PATH>
+ <PATH>
+ <PATH_ELEMENT>
+ <option name="myItemId" value="gnunet-java" />
+ <option name="myItemType"
value="com.intellij.ide.projectView.impl.nodes.PackageViewProjectNode" />
+ </PATH_ELEMENT>
+ <PATH_ELEMENT>
+ <option name="myItemId" value="gnunet-java" />
+ <option name="myItemType"
value="com.intellij.ide.projectView.impl.nodes.PackageViewModuleNode" />
+ </PATH_ELEMENT>
+ <PATH_ELEMENT>
+ <option name="myItemId" value="org" />
+ <option name="myItemType"
value="com.intellij.ide.projectView.impl.nodes.PackageElementNode" />
+ </PATH_ELEMENT>
+ </PATH>
+ </subPane>
+ </pane>
<pane id="ProjectPane">
<subPane>
<PATH>
@@ -487,9 +627,13 @@
<option name="myItemType"
value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
- <option name="myItemId" value="service" />
+ <option name="myItemId" value="util" />
<option name="myItemType"
value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
+ <PATH_ELEMENT>
+ <option name="myItemId" value="getopt" />
+ <option name="myItemType"
value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+ </PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
@@ -512,6 +656,10 @@
<option name="myItemId" value="gnunet" />
<option name="myItemType"
value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
+ <PATH_ELEMENT>
+ <option name="myItemId" value="service" />
+ <option name="myItemType"
value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+ </PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
@@ -535,7 +683,7 @@
<option name="myItemType"
value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
- <option name="myItemId" value="construct" />
+ <option name="myItemId" value="exceptions" />
<option name="myItemType"
value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
@@ -564,10 +712,6 @@
<option name="myItemId" value="construct" />
<option name="myItemType"
value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
- <PATH_ELEMENT>
- <option name="myItemId" value="parsers" />
- <option name="myItemType"
value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
- </PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
@@ -585,114 +729,6 @@
</PATH>
</subPane>
</pane>
- <pane id="PackagesPane">
- <subPane>
- <PATH>
- <PATH_ELEMENT>
- <option name="myItemId" value="gnunet-java" />
- <option name="myItemType"
value="com.intellij.ide.projectView.impl.nodes.PackageViewProjectNode" />
- </PATH_ELEMENT>
- <PATH_ELEMENT>
- <option name="myItemId" value="gnunet-java" />
- <option name="myItemType"
value="com.intellij.ide.projectView.impl.nodes.PackageViewModuleNode" />
- </PATH_ELEMENT>
- </PATH>
- <PATH>
- <PATH_ELEMENT>
- <option name="myItemId" value="gnunet-java" />
- <option name="myItemType"
value="com.intellij.ide.projectView.impl.nodes.PackageViewProjectNode" />
- </PATH_ELEMENT>
- <PATH_ELEMENT>
- <option name="myItemId" value="gnunet-java" />
- <option name="myItemType"
value="com.intellij.ide.projectView.impl.nodes.PackageViewModuleNode" />
- </PATH_ELEMENT>
- <PATH_ELEMENT>
- <option name="myItemId" value="org" />
- <option name="myItemType"
value="com.intellij.ide.projectView.impl.nodes.PackageElementNode" />
- </PATH_ELEMENT>
- </PATH>
- </subPane>
- </pane>
- <pane id="Scope">
- <subPane subId="Project Files">
- <PATH>
- <PATH_ELEMENT USER_OBJECT="Root">
- <option name="myItemId" value="" />
- <option name="myItemType" value="" />
- </PATH_ELEMENT>
- <PATH_ELEMENT USER_OBJECT="gnunet-java">
- <option name="myItemId" value="" />
- <option name="myItemType" value="" />
- </PATH_ELEMENT>
- </PATH>
- <PATH>
- <PATH_ELEMENT USER_OBJECT="Root">
- <option name="myItemId" value="" />
- <option name="myItemType" value="" />
- </PATH_ELEMENT>
- <PATH_ELEMENT USER_OBJECT="gnunet-java">
- <option name="myItemId" value="" />
- <option name="myItemType" value="" />
- </PATH_ELEMENT>
- <PATH_ELEMENT USER_OBJECT="src">
- <option name="myItemId" value="" />
- <option name="myItemType" value="" />
- </PATH_ELEMENT>
- <PATH_ELEMENT USER_OBJECT="org">
- <option name="myItemId" value="" />
- <option name="myItemType" value="" />
- </PATH_ELEMENT>
- </PATH>
- <PATH>
- <PATH_ELEMENT USER_OBJECT="Root">
- <option name="myItemId" value="" />
- <option name="myItemType" value="" />
- </PATH_ELEMENT>
- <PATH_ELEMENT USER_OBJECT="gnunet-java">
- <option name="myItemId" value="" />
- <option name="myItemType" value="" />
- </PATH_ELEMENT>
- <PATH_ELEMENT USER_OBJECT="src">
- <option name="myItemId" value="" />
- <option name="myItemType" value="" />
- </PATH_ELEMENT>
- <PATH_ELEMENT USER_OBJECT="org">
- <option name="myItemId" value="" />
- <option name="myItemType" value="" />
- </PATH_ELEMENT>
- <PATH_ELEMENT USER_OBJECT="gnunet">
- <option name="myItemId" value="" />
- <option name="myItemType" value="" />
- </PATH_ELEMENT>
- </PATH>
- <PATH>
- <PATH_ELEMENT USER_OBJECT="Root">
- <option name="myItemId" value="" />
- <option name="myItemType" value="" />
- </PATH_ELEMENT>
- <PATH_ELEMENT USER_OBJECT="gnunet-java">
- <option name="myItemId" value="" />
- <option name="myItemType" value="" />
- </PATH_ELEMENT>
- <PATH_ELEMENT USER_OBJECT="src">
- <option name="myItemId" value="" />
- <option name="myItemType" value="" />
- </PATH_ELEMENT>
- <PATH_ELEMENT USER_OBJECT="org">
- <option name="myItemId" value="" />
- <option name="myItemType" value="" />
- </PATH_ELEMENT>
- <PATH_ELEMENT USER_OBJECT="gnunet">
- <option name="myItemId" value="" />
- <option name="myItemType" value="" />
- </PATH_ELEMENT>
- <PATH_ELEMENT USER_OBJECT="construct">
- <option name="myItemId" value="" />
- <option name="myItemType" value="" />
- </PATH_ELEMENT>
- </PATH>
- </subPane>
- </pane>
</panes>
</component>
<component name="PropertiesComponent">
@@ -705,20 +741,20 @@
<property name="GenerateAntBuildDialog.generateSingleFile" value="true" />
<property name="recentsLimit" value="5" />
<property name="MemberChooser.sorted" value="false" />
- <property name="options.lastSelected" value="preferences.sourceCode.Java"
/>
+ <property name="options.lastSelected" value="project.propCompiler" />
<property name="GenerateAntBuildDialog.inclineRuntiemClasspath"
value="true" />
<property name="GenerateAntBuildDialog.forceTargetJdk" value="false" />
<property name="project.structure.side.proportion" value="0.2" />
+ <property name="GenerateAntBuildDialog.outputFileNameProperty"
value="gnunet-java" />
<property name="MemberChooser.copyJavadoc" value="false" />
- <property name="GenerateAntBuildDialog.outputFileNameProperty"
value="gnunet-java" />
<property name="GenerateAntBuildDialog.enableUiFormCompile" value="false"
/>
<property name="GoToClass.toSaveIncludeLibraries" value="false" />
<property name="MemberChooser.showClasses" value="true" />
+ <property name="GenerateAntBuildDialog.backupFiles" value="false" />
<property name="GoToClass.includeLibraries" value="false" />
- <property name="GenerateAntBuildDialog.backupFiles" value="false" />
+ <property name="dynamic.classpath" value="false" />
+ <property name="options.splitter.details.proportions" value="0.2" />
<property name="options.searchVisible" value="true" />
- <property name="options.splitter.details.proportions" value="0.2" />
- <property name="dynamic.classpath" value="false" />
</component>
<component name="RecentsManager">
<key name="CopyFile.RECENT_KEYS">
@@ -733,7 +769,7 @@
<recent name="" />
</key>
</component>
- <component name="RunManager"
selected="JUnit.NetworkSizeEstimationServiceTest">
+ <component name="RunManager" selected="JUnit.ConstructTest">
<configuration default="false" name="StatisticsServiceTest" type="JUnit"
factoryName="JUnit" temporary="true">
<module name="gnunet-java" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
@@ -802,7 +838,13 @@
</option>
<envs />
<patterns />
+ <RunnerSettings RunnerId="Debug">
+ <option name="DEBUG_PORT" value="" />
+ <option name="TRANSPORT" value="0" />
+ <option name="LOCAL" value="true" />
+ </RunnerSettings>
<RunnerSettings RunnerId="Run" />
+ <ConfigurationWrapper RunnerId="Debug" />
<ConfigurationWrapper RunnerId="Run" />
<method />
</configuration>
@@ -880,10 +922,27 @@
<option name="Maven.BeforeRunTask" enabled="false" />
</method>
</configuration>
- <list size="3">
+ <configuration default="false" name="Resolver" type="Application"
factoryName="Application">
+ <option name="MAIN_CLASS_NAME" value="org.gnunet.service.Resolver" />
+ <option name="VM_PARAMETERS" value="-ea" />
+ <option name="PROGRAM_PARAMETERS" value="" />
+ <option name="WORKING_DIRECTORY" value="file://$PROJECT_DIR$" />
+ <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
+ <option name="ALTERNATIVE_JRE_PATH" value="" />
+ <option name="ENABLE_SWING_INSPECTOR" value="false" />
+ <option name="ENV_VARIABLES" />
+ <option name="PASS_PARENT_ENVS" value="true" />
+ <module name="gnunet-java" />
+ <envs />
+ <RunnerSettings RunnerId="Run" />
+ <ConfigurationWrapper RunnerId="Run" />
+ <method />
+ </configuration>
+ <list size="4">
<item index="0" class="java.lang.String"
itemvalue="JUnit.StatisticsServiceTest" />
<item index="1" class="java.lang.String"
itemvalue="JUnit.NetworkSizeEstimationServiceTest" />
<item index="2" class="java.lang.String" itemvalue="JUnit.ConstructTest"
/>
+ <item index="3" class="java.lang.String"
itemvalue="Application.Resolver" />
</list>
<configuration name="<template>" type="WebApp" default="true"
selected="false">
<Host>localhost</Host>
@@ -956,18 +1015,18 @@
<frame x="-6" y="17" width="1452" height="889" extended-state="0" />
<editor active="false" />
<layout>
- <window_info id="Messages" active="false" anchor="bottom"
auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false"
weight="0.37225273" sideWeight="0.49713057" order="7" side_tool="false"
content_ui="tabs" />
+ <window_info id="Messages" active="false" anchor="bottom"
auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false"
weight="0.119505495" sideWeight="0.49713057" order="7" side_tool="false"
content_ui="tabs" />
<window_info id="Changes" active="false" anchor="bottom"
auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false"
weight="0.32967034" sideWeight="0.5" order="7" side_tool="false"
content_ui="tabs" />
<window_info id="Palette" active="false" anchor="right"
auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false"
weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
<window_info id="TODO" active="false" anchor="bottom" auto_hide="false"
internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32967034"
sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
- <window_info id="Ant Build" active="false" anchor="right"
auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false"
weight="0.24166666" sideWeight="0.6710875" order="1" side_tool="false"
content_ui="tabs" />
- <window_info id="Structure" active="false" anchor="left"
auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false"
weight="0.25613275" sideWeight="0.58928573" order="1" side_tool="false"
content_ui="tabs" />
- <window_info id="Project" active="false" anchor="left" auto_hide="false"
internal_type="DOCKED" type="DOCKED" visible="true" weight="0.33477634"
sideWeight="0.62774724" order="0" side_tool="false" content_ui="tabs" />
- <window_info id="Debug" active="false" anchor="bottom" auto_hide="false"
internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25"
sideWeight="0.63708514" order="3" side_tool="false" content_ui="tabs" />
+ <window_info id="Ant Build" active="false" anchor="right"
auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false"
weight="0.24098124" sideWeight="0.6710875" order="1" side_tool="false"
content_ui="tabs" />
+ <window_info id="Structure" active="false" anchor="left"
auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false"
weight="0.23015873" sideWeight="0.58928573" order="1" side_tool="false"
content_ui="tabs" />
+ <window_info id="Project" active="true" anchor="left" auto_hide="false"
internal_type="DOCKED" type="DOCKED" visible="true" weight="0.24819624"
sideWeight="0.88049453" order="0" side_tool="false" content_ui="tabs" />
+ <window_info id="Debug" active="false" anchor="bottom" auto_hide="false"
internal_type="DOCKED" type="DOCKED" visible="false" weight="0.44230768"
sideWeight="0.63708514" order="3" side_tool="false" content_ui="tabs" />
<window_info id="Favorites" active="false" anchor="left"
auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false"
weight="0.33" sideWeight="0.5" order="2" side_tool="true" content_ui="tabs" />
<window_info id="Event Log" active="false" anchor="bottom"
auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false"
weight="0.45054945" sideWeight="0.35786435" order="7" side_tool="true"
content_ui="tabs" />
- <window_info id="Run" active="false" anchor="bottom" auto_hide="false"
internal_type="DOCKED" type="DOCKED" visible="false" weight="0.2857143"
sideWeight="0.9126984" order="2" side_tool="false" content_ui="tabs" />
- <window_info id="Version Control" active="false" anchor="bottom"
auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false"
weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
+ <window_info id="Run" active="false" anchor="bottom" auto_hide="false"
internal_type="DOCKED" type="DOCKED" visible="false" weight="0.41346154"
sideWeight="0.9126984" order="2" side_tool="false" content_ui="tabs" />
+ <window_info id="Version Control" active="false" anchor="bottom"
auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false"
weight="0.32967034" sideWeight="0.0" order="7" side_tool="false"
content_ui="tabs" />
<window_info id="Documentation" active="false" anchor="right"
auto_hide="false" internal_type="DOCKED" type="FLOATING" visible="true"
weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs"
x="88" y="109" width="1260" height="692" />
<window_info id="Cvs" active="false" anchor="bottom" auto_hide="false"
internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25"
sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
<window_info id="Message" active="false" anchor="bottom"
auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false"
weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
@@ -1011,7 +1070,7 @@
<option name="INCLUDE_TEXT_INTO_SHELF" value="false" />
<option name="CREATE_PATCH_EXPAND_DETAILS_DEFAULT" value="true" />
<option name="FORCE_NON_EMPTY_COMMENT" value="false" />
- <option name="LAST_COMMIT_MESSAGE" value="fix" />
+ <option name="LAST_COMMIT_MESSAGE" value="added libs" />
<option name="MAKE_NEW_CHANGELIST_ACTIVE" value="true" />
<option name="OPTIMIZE_IMPORTS_BEFORE_PROJECT_COMMIT" value="false" />
<option name="CHECK_FILES_UP_TO_DATE_BEFORE_COMMIT" value="false" />
@@ -1028,6 +1087,7 @@
<MESSAGE value="added MsgMap update shell script" />
<MESSAGE value="fixes / documentation" />
<MESSAGE value="fix" />
+ <MESSAGE value="added libs" />
</component>
<component name="XDebuggerManager">
<breakpoint-manager />
@@ -1037,84 +1097,94 @@
<option name="FILTER_TARGETS" value="false" />
</component>
<component name="editorHistoryManager">
- <entry file="file://$PROJECT_DIR$/src/org/gnunet/util/Client.java">
+ <entry
file="file://$PROJECT_DIR$/src/org/gnunet/construct/parsers/Parser.java">
<provider selected="true" editor-type-id="text-editor">
- <state line="373" column="40" selection-start="13033"
selection-end="13033" vertical-scroll-proportion="0.0" />
+ <state line="23" column="41" selection-start="540" selection-end="540"
vertical-scroll-proportion="0.0" />
</provider>
</entry>
- <entry
file="file://$PROJECT_DIR$/src/org/gnunet/exceptions/InternalLogicError.java">
+ <entry
file="file://$PROJECT_DIR$/src/org/gnunet/construct/parsers/SequenceParser.java">
<provider selected="true" editor-type-id="text-editor">
- <state line="11" column="41" selection-start="288" selection-end="288"
vertical-scroll-proportion="0.0" />
+ <state line="39" column="20" selection-start="1014"
selection-end="1014" vertical-scroll-proportion="0.0" />
</provider>
</entry>
- <entry
file="file://$PROJECT_DIR$/src/org/gnunet/util/RunaboutMessageReceiver.java">
+ <entry
file="file://$PROJECT_DIR$/src/org/gnunet/construct/parsers/IntegerParser.java">
<provider selected="true" editor-type-id="text-editor">
- <state line="5" column="22" selection-start="116" selection-end="116"
vertical-scroll-proportion="0.0" />
+ <state line="8" column="13" selection-start="202" selection-end="202"
vertical-scroll-proportion="0.0" />
</provider>
</entry>
- <entry file="file://$PROJECT_DIR$/src/org/gnunet/util/AbsoluteTime.java">
+ <entry
file="file://$PROJECT_DIR$/src/org/gnunet/construct/parsers/FixedSizeArrayParser.java">
<provider selected="true" editor-type-id="text-editor">
- <state line="200" column="11" selection-start="5769"
selection-end="5769" vertical-scroll-proportion="0.0" />
+ <state line="7" column="13" selection-start="155" selection-end="155"
vertical-scroll-proportion="0.0" />
</provider>
</entry>
- <entry file="file://$PROJECT_DIR$/src/org/gnunet/util/RelativeTime.java">
+ <entry
file="file://$PROJECT_DIR$/src/org/gnunet/construct/parsers/FillParser.java">
<provider selected="true" editor-type-id="text-editor">
- <state line="180" column="28" selection-start="5729"
selection-end="5729" vertical-scroll-proportion="0.0" />
+ <state line="17" column="4" selection-start="397" selection-end="397"
vertical-scroll-proportion="0.0" />
</provider>
</entry>
- <entry
file="file://$PROJECT_DIR$/src/org/gnunet/service/NetworkSizeEstimationService.java">
+ <entry
file="file://$PROJECT_DIR$/src/org/gnunet/util/getopt/Argument.java">
<provider selected="true" editor-type-id="text-editor">
- <state line="86" column="35" selection-start="2553"
selection-end="2553" vertical-scroll-proportion="0.0" />
+ <state line="11" column="15" selection-start="303" selection-end="303"
vertical-scroll-proportion="0.0" />
</provider>
</entry>
- <entry
file="file://$PROJECT_DIR$/src/org/gnunet/service/StatisticsService.java">
+ <entry file="file://$PROJECT_DIR$/src/log4j.properties">
<provider selected="true" editor-type-id="text-editor">
- <state line="11" column="13" selection-start="245" selection-end="245"
vertical-scroll-proportion="0.0" />
+ <state line="2" column="50" selection-start="78" selection-end="78"
vertical-scroll-proportion="0.0" />
</provider>
</entry>
- <entry
file="file://$PROJECT_DIR$/test/org/gnunet/services/NetworkSizeEstimationServiceTest.java">
+ <entry
file="file://$PROJECT_DIR$/test/org/gnunet/construct/VarTestMessage.java">
<provider selected="true" editor-type-id="text-editor">
- <state line="23" column="5" selection-start="767" selection-end="767"
vertical-scroll-proportion="0.0" />
+ <state line="2" column="13" selection-start="44" selection-end="44"
vertical-scroll-proportion="0.0" />
</provider>
</entry>
- <entry
file="file://$PROJECT_DIR$/src/org/gnunet/construct/parsers/NestedParser.java">
+ <entry
file="file://$PROJECT_DIR$/test/org/gnunet/services/NetworkSizeEstimationServiceTest.java">
<provider selected="true" editor-type-id="text-editor">
- <state line="28" column="41" selection-start="825" selection-end="825"
vertical-scroll-proportion="0.0" />
+ <state line="13" column="13" selection-start="300" selection-end="300"
vertical-scroll-proportion="0.0" />
</provider>
</entry>
- <entry
file="file://$PROJECT_DIR$/src/org/gnunet/construct/MessageLoader.java">
+ <entry
file="file://$PROJECT_DIR$/src/org/gnunet/construct/parsers/ByteFillParser.java">
<provider selected="true" editor-type-id="text-editor">
- <state line="89" column="0" selection-start="3088"
selection-end="3088" vertical-scroll-proportion="0.0" />
+ <state line="55" column="9" selection-start="1668"
selection-end="1668" vertical-scroll-proportion="0.0" />
</provider>
</entry>
- <entry file="file://$PROJECT_DIR$/src/org/gnunet/construct/Construct.java">
+ <entry
file="file://$PROJECT_DIR$/src/org/gnunet/construct/parsers/NestedParser.java">
<provider selected="true" editor-type-id="text-editor">
- <state line="43" column="24" selection-start="1457"
selection-end="1457" vertical-scroll-proportion="0.0" />
+ <state line="39" column="23" selection-start="1133"
selection-end="1133" vertical-scroll-proportion="0.0" />
</provider>
</entry>
- <entry
file="file://$PROJECT_DIR$/test/org/gnunet/construct/QueryMessage.java">
+ <entry file="file://$PROJECT_DIR$/src/org/gnunet/service/Resolver.java">
<provider selected="true" editor-type-id="text-editor">
- <state line="3" column="13" selection-start="62" selection-end="62"
vertical-scroll-proportion="0.0" />
+ <state line="155" column="12" selection-start="4980"
selection-end="4980" vertical-scroll-proportion="0.0">
+ <folding>
+ <element signature="e#543#599#0" expanded="true" />
+ </folding>
+ </state>
</provider>
</entry>
- <entry
file="file://$PROJECT_DIR$/src/org/gnunet/util/AbsoluteTimeMessage.java">
+ <entry file="file://$PROJECT_DIR$/ISSUES">
<provider selected="true" editor-type-id="text-editor">
- <state line="21" column="5" selection-start="449" selection-end="449"
vertical-scroll-proportion="0.0" />
+ <state line="154" column="41" selection-start="5164"
selection-end="5164" vertical-scroll-proportion="0.0">
+ <folding />
+ </state>
</provider>
</entry>
- <entry
file="file://$PROJECT_DIR$/src/org/gnunet/util/RelativeTimeMessage.java">
+ <entry file="file://$PROJECT_DIR$/src/org/gnunet/construct/Construct.java">
<provider selected="true" editor-type-id="text-editor">
- <state line="19" column="51" selection-start="499" selection-end="499"
vertical-scroll-proportion="0.0" />
+ <state line="68" column="1" selection-start="2022"
selection-end="2449" vertical-scroll-proportion="0.0">
+ <folding />
+ </state>
</provider>
</entry>
- <entry
file="file://$PROJECT_DIR$/src/org/gnunet/construct/parsers/SequenceParser.java">
+ <entry file="file://$PROJECT_DIR$/src/org/gnunet/util/Program.java">
<provider selected="true" editor-type-id="text-editor">
- <state line="37" column="0" selection-start="875" selection-end="875"
vertical-scroll-proportion="0.0" />
+ <state line="28" column="10" selection-start="792" selection-end="792"
vertical-scroll-proportion="0.0">
+ <folding />
+ </state>
</provider>
</entry>
- <entry
file="file://$PROJECT_DIR$/src/org/gnunet/construct/parsers/IntegerParser.java">
+ <entry file="file://$PROJECT_DIR$/src/org/gnunet/util/getopt/Parser.java">
<provider selected="true" editor-type-id="text-editor">
- <state line="200" column="13" selection-start="6405"
selection-end="6405" vertical-scroll-proportion="0.07977208">
+ <state line="23" column="22" selection-start="700" selection-end="700"
vertical-scroll-proportion="0.46011397">
<folding />
</state>
</provider>
@@ -1165,7 +1235,6 @@
<option name="proportions">
<list>
<option value="0.2" />
- <option value="0.5" />
</list>
</option>
</splitter-proportions>
Modified: gnunet-java/ISSUES
===================================================================
--- gnunet-java/ISSUES 2012-01-17 22:25:52 UTC (rev 19220)
+++ gnunet-java/ISSUES 2012-01-18 00:03:38 UTC (rev 19221)
@@ -130,4 +130,46 @@
* setAccessible in the runabout?
-* what about autoRetry in the middle of sending a message?
\ No newline at end of file
+* what about autoRetry in the middle of sending a message?
+
+
+=====
+
+Fixes:
+ * MessageId generation now works with nested classes
+ * Construct can now handle message inheritance correctly
+ * loading of default configuration (room left for improving path search)
+ * frameOffset now handled correctly in ByteFillParser
+
+Changes:
+ * @construct.String can now also be of null / 0-length if the maybe-parameter
is set to true
+ * @construct.Nested can be marked as optional: the target object is set to
null when there is no data left in the message
+ * (does this make optional string length obsolete?)
+ * Parser.parse now takes a (Message frameObj) parameter, making it possible
to refer to the size field
+ from a nested object
+
+
+Questions:
+ * problem with annotation-based parameter parsing: anonymous classes are
private (fields not accessible),
+ parameter fields have to be public, too => just make them public / don't
use anonymous classes
+ => currently solved with setAccessible
+ * what about unions in messages (example: ResolverRequest can have String,
socket address or nothing as payload)
+ * trivial solution: just use a byte array in this case
+ * @Maybe annotation (for resolver response message)
+ @Maybe @ZeroTerminatedString String str allows str to be null if there is
no space left
+ * @Union(tag="someField", keys={1, 2}, types={MessageTypeOne.class,
MessageTypeTwo.class})
+ * more dynamic variants possible
+ * could be used to implement MessageHeader:
+ * class GnunetMessage {
+ @Nested
+ MessageHeader header;
+ @DynUnion(tag="header.type", map=MessageLoader.class)
+ Message body;
+ }
+ * MessageSink would add the header to the body, filling out the type and
size fields
+ * Message declarations would look like this:
+ @GnunetMessage(type=321)
+ class NSEUpdateMessage extends Message {
+ @Uint32 reserved; @Nested RelativeTimeMsg ts; @Double double est;
@Double double dev;
+ }
+
Modified: gnunet-java/gnunet-java.eml
===================================================================
--- gnunet-java/gnunet-java.eml 2012-01-17 22:25:52 UTC (rev 19220)
+++ gnunet-java/gnunet-java.eml 2012-01-18 00:03:38 UTC (rev 19221)
@@ -1,7 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
-<component inherit-compiler-output="true">
- <output-test url="file://$MODULE_DIR$/out/test/gnunet-java"/>
+<component>
+ <output-test url="file://$MODULE_DIR$/bin"/>
<contentEntry url="file://$MODULE_DIR$">
<testFolder url="file://$MODULE_DIR$/test"/>
</contentEntry>
+ <lib name="slf4j-api-1.6.4.jar" scope="COMPILE">
+ <relative-module-cls
project-related="jar://$PROJECT_DIR$/lib/slf4j-api-1.6.4.jar!/"/>
+ </lib>
</component>
Deleted: gnunet-java/lib/slf4j-jdk14-1.6.4.jar
===================================================================
(Binary files differ)
Added: gnunet-java/resolver
===================================================================
--- gnunet-java/resolver (rev 0)
+++ gnunet-java/resolver 2012-01-18 00:03:38 UTC (rev 19221)
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+DIR=`dirname $0`
+
+java -ea -cp "$DIR/bin/:$DIR/lib/*" org.gnunet.service.Resolver "$@"
Property changes on: gnunet-java/resolver
___________________________________________________________________
Added: svn:executable
+ *
Modified: gnunet-java/src/log4j.properties
===================================================================
--- gnunet-java/src/log4j.properties 2012-01-17 22:25:52 UTC (rev 19220)
+++ gnunet-java/src/log4j.properties 2012-01-18 00:03:38 UTC (rev 19221)
@@ -1,9 +1,6 @@
-# Set root logger level to DEBUG and its only appender to A1.
-log4j.rootLogger=DEBUG, A1
+log4j.rootLogger=FATAL, A1
-# A1 is set to be a ConsoleAppender.
log4j.appender.A1=org.apache.log4j.ConsoleAppender
-# A1 uses PatternLayout.
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%-5p %c:\n%m%n
\ No newline at end of file
Modified: gnunet-java/src/org/gnunet/construct/Construct.java
===================================================================
--- gnunet-java/src/org/gnunet/construct/Construct.java 2012-01-17 22:25:52 UTC
(rev 19220)
+++ gnunet-java/src/org/gnunet/construct/Construct.java 2012-01-18 00:03:38 UTC
(rev 19221)
@@ -8,10 +8,7 @@
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
import java.math.BigInteger;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.LinkedList;
-import java.util.List;
+import java.util.*;
/**
* A version of Python's construct library for Java.
@@ -45,7 +42,7 @@
String.format("Cannot instantiate Message %s (illegal
access)", c));
}
- getParser(c).parse(data, offset, 0, m);
+ getParser(c).parse(data, offset, 0, m, m);
return m;
}
@@ -69,6 +66,15 @@
return p;
}
+ private static List<Field> getMessageFields(Class c) {
+ LinkedList<Field> fields = new
LinkedList<Field>(Arrays.asList(c.getDeclaredFields()));
+ while ((c = c.getSuperclass()) != null &&
Message.class.isAssignableFrom(c)) {
+ // fields of the superclass have to be parsed *before* the subclass
+ fields.addAll(0, Arrays.asList(c.getDeclaredFields()));
+ }
+ return fields;
+ }
+
private static Parser getParser(Class<? extends Message> c,
ParserGenerator pg) {
@@ -76,21 +82,17 @@
pg.c = c;
if (!Modifier.isPublic(c.getModifiers())) {
- throw new InterfaceViolationException("Construct messages must be
declared public");
+ throw new InterfaceViolationException(String.format("Construct
Message %s not declared public", c));
}
-
- Field[] fs = c.getDeclaredFields();
- for (Field f : fs) {
+
+ for (Field f : getMessageFields(c)) {
Annotation[] as = f.getAnnotations();
- if (Modifier.isStatic(f.getModifiers())) {
+ if (as.length == 0 || f.isSynthetic() ||
Modifier.isStatic(f.getModifiers())) {
continue;
}
if (!Modifier.isPublic(f.getModifiers())) {
- throw new InterfaceViolationException(String.format("field %s
of Message %s not declared public", f, c));
+ throw new InterfaceViolationException(String.format("Field %s
of Message %s not declared public", f, c));
}
- if (as.length == 0) {
- continue;
- }
pg.field = f;
pg.annotations = as;
pg.annotationsIdx = 0;
@@ -127,16 +129,16 @@
// where are we currently, seen from the root message object
List<Field> path = new LinkedList<Field>();
- // path of the object that has a total size field
- List<Field> total_size_path;
+ // path of the object that has a frame size field
+ List<Field> frameSizePath;
private ParserGenerator() {
}
public void visit(FrameSize ts) {
- total_size_path = new LinkedList<Field>(path);
- total_size_path.add(field);
+ frameSizePath = new LinkedList<Field>(path);
+ frameSizePath.add(field);
if (annotationsIdx != 0) {
throw new InterfaceViolationException(
@@ -189,7 +191,7 @@
}
public void visit(ZeroTerminatedString zts) {
- parser = new StringParser("UTF-8", field);
+ parser = new StringParser(zts.charset(), zts.optional(), field);
}
public void visit(Nested n) {
@@ -208,16 +210,16 @@
Parser p = getParser(ct, this);
path = old_path;
- parser = new NestedParser(p, old_f);
+ parser = new NestedParser(p, frameSizePath, n.optional(), old_f);
}
public void visit(ByteFill bf) {
- if (total_size_path == null) {
+ if (frameSizePath == null) {
throw new InterfaceViolationException(
"no total size found before variable size element");
}
- parser = new ByteFillParser(total_size_path, field);
+ parser = new ByteFillParser(frameSizePath, field);
}
public void visit(FixedSizeArray fsa) {
@@ -247,7 +249,6 @@
.getComponentType(), this);
try {
- System.out.println(c);
parser = new VariableSizeArrayParser(parser, old_c.getField(vsa
.lengthField()), f);
@@ -298,7 +299,7 @@
public static void patchSizeFields(Message m) {
Parser p = getParser(m.getClass());
- p.patchSizeFields(m, p.getSize(m));
+ p.patch(m, p.getSize(m));
}
// the following are utility methods for the java reflection api
Modified: gnunet-java/src/org/gnunet/construct/MessageIdAnnotationProcessor.java
===================================================================
--- gnunet-java/src/org/gnunet/construct/MessageIdAnnotationProcessor.java
2012-01-17 22:25:52 UTC (rev 19220)
+++ gnunet-java/src/org/gnunet/construct/MessageIdAnnotationProcessor.java
2012-01-18 00:03:38 UTC (rev 19221)
@@ -64,7 +64,7 @@
Annotation ann = e.getAnnotation(MessageId.class);
if (ann != null) {
int id = e.getAnnotation(MessageId.class).value();
- String fqn = e.asType().toString();
+ String fqn = getClassName(e);
if (msgmap.containsKey(id)) {
processingEnv.getMessager().printMessage(Diagnostic.Kind.ERROR,
String.format("duplicate @MessageId(%s) in %s
and %s found",
@@ -79,4 +79,21 @@
return false;
}
+
+ String getClassName(Element e) {
+ assert e.getKind().isClass();
+
+ String name = e.getSimpleName().toString();
+ String pkg =
processingEnv.getElementUtils().getPackageOf(e).getQualifiedName().toString() +
".";
+
+ String outer = "";
+
+ while ((e = e.getEnclosingElement()) != null && e.getKind().isClass())
{
+ outer = e.getSimpleName() + "$" + outer;
+ }
+
+
+ return pkg + outer + name;
+
+ }
}
Modified: gnunet-java/src/org/gnunet/construct/MessageLoader.java
===================================================================
--- gnunet-java/src/org/gnunet/construct/MessageLoader.java 2012-01-17
22:25:52 UTC (rev 19220)
+++ gnunet-java/src/org/gnunet/construct/MessageLoader.java 2012-01-18
00:03:38 UTC (rev 19221)
@@ -75,7 +75,6 @@
public static Message loadMessage(int type, byte[] data, int offset) {
String className = msgmap.get(type);
if (className == null) {
- // todo: error message
throw new MessageFormatException("don't know how to translate
message of type " + type);
}
Modified: gnunet-java/src/org/gnunet/construct/MsgMap.txt
===================================================================
--- gnunet-java/src/org/gnunet/construct/MsgMap.txt 2012-01-17 22:25:52 UTC
(rev 19220)
+++ gnunet-java/src/org/gnunet/construct/MsgMap.txt 2012-01-18 00:03:38 UTC
(rev 19221)
@@ -1,6 +1,7 @@
987=org.gnunet.construct.SizeTestMessage
291=org.gnunet.construct.QueryMessage
-323=org.gnunet.service.NSE_UpdateMessage
-321=org.gnunet.service.NSE_StartMessage
+323=org.gnunet.service.NetworkSizeEstimation$NSE_UpdateMessage
+5=org.gnunet.service.Resolver$ResolverResponse
+321=org.gnunet.service.NetworkSizeEstimation$NSE_StartMessage
3210=org.gnunet.construct.SimpleTestMessage
-# generated 2012/01/04 12:40:14
+# generated 2012/01/16 16:34:27
Modified: gnunet-java/src/org/gnunet/construct/Nested.java
===================================================================
--- gnunet-java/src/org/gnunet/construct/Nested.java 2012-01-17 22:25:52 UTC
(rev 19220)
+++ gnunet-java/src/org/gnunet/construct/Nested.java 2012-01-18 00:03:38 UTC
(rev 19221)
@@ -15,4 +15,5 @@
@Target(ElementType.FIELD)
public @interface Nested {
boolean newFrame() default false;
+ boolean optional() default false;
}
\ No newline at end of file
Added: gnunet-java/src/org/gnunet/construct/TaggedUnion.java
===================================================================
--- gnunet-java/src/org/gnunet/construct/TaggedUnion.java
(rev 0)
+++ gnunet-java/src/org/gnunet/construct/TaggedUnion.java 2012-01-18
00:03:38 UTC (rev 19221)
@@ -0,0 +1,16 @@
+package org.gnunet.construct;
+
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
address@hidden(RetentionPolicy.RUNTIME)
address@hidden(ElementType.FIELD)
+public @interface TaggedUnion {
+ // path to the tag
+ String tag();
+ String[] keys();
+ Class[] values();
+}
\ No newline at end of file
Modified: gnunet-java/src/org/gnunet/construct/ZeroTerminatedString.java
===================================================================
--- gnunet-java/src/org/gnunet/construct/ZeroTerminatedString.java
2012-01-17 22:25:52 UTC (rev 19220)
+++ gnunet-java/src/org/gnunet/construct/ZeroTerminatedString.java
2012-01-18 00:03:38 UTC (rev 19221)
@@ -13,4 +13,5 @@
@Retention(RetentionPolicy.RUNTIME)
public @interface ZeroTerminatedString {
String charset() default "UTF-8";
+ boolean optional() default false;
}
Modified: gnunet-java/src/org/gnunet/construct/parsers/ByteFillParser.java
===================================================================
--- gnunet-java/src/org/gnunet/construct/parsers/ByteFillParser.java
2012-01-17 22:25:52 UTC (rev 19220)
+++ gnunet-java/src/org/gnunet/construct/parsers/ByteFillParser.java
2012-01-18 00:03:38 UTC (rev 19221)
@@ -3,6 +3,8 @@
import org.gnunet.construct.Construct;
import org.gnunet.construct.Construct.ReflectionUtil;
import org.gnunet.construct.Message;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import java.lang.reflect.Array;
import java.lang.reflect.Field;
@@ -10,11 +12,18 @@
/**
* Parse an array that takes up all the available space.
+ * A 0-element array takes up no space.
+ * 'null' is an invalid value for a field of this type.
*
* @author Florian Dold
*
*/
public class ByteFillParser extends FieldParser {
+ private static final Logger logger = LoggerFactory
+ .getLogger(ByteFillParser.class);
+
+
+
private List<Field> totalSizePath;
private ReflectionUtil.NumFieldType totalSizeFieldType;
@@ -38,9 +47,14 @@
@Override
public int parse(final byte[] srcData, final int offset, int frameOffset,
- final Message dst) {
- int remaining = getSizeFieldValue(dst) - frameOffset;
+ Message frameObj, final Message dst) {
+ int remaining = (frameOffset + getSizeFieldValue(frameObj)) - offset;
+ if (remaining <= 0) {
+ setFieldValue(dst, new byte[0]);
+ return 0;
+ }
+
byte[] a = new byte[remaining];
System.arraycopy(srcData, offset, a, 0, remaining);
@@ -62,7 +76,7 @@
* field. This works, but is very redundant.
*/
@Override
- public void patchSizeFields(Message m, int frameSize) {
+ public void patch(Message m, int frameSize) {
Object obj = ReflectionUtil.followFieldPath(totalSizePath, m,
totalSizePath.size() - 1);
Field f = totalSizePath.get(totalSizePath.size() - 1);
Modified: gnunet-java/src/org/gnunet/construct/parsers/DoubleParser.java
===================================================================
--- gnunet-java/src/org/gnunet/construct/parsers/DoubleParser.java
2012-01-17 22:25:52 UTC (rev 19220)
+++ gnunet-java/src/org/gnunet/construct/parsers/DoubleParser.java
2012-01-18 00:03:38 UTC (rev 19221)
@@ -18,7 +18,7 @@
}
@Override
- public int parse(byte[] srcData, int offset, int frameOffset, Message
dstObj) {
+ public int parse(byte[] srcData, int offset, int frameOffset, Message
frameObj, Message dstObj) {
double d = ByteBuffer.wrap(srcData, offset, 8).getDouble();
try {
field.setDouble(dstObj, d);
@@ -41,6 +41,6 @@
}
@Override
- public void patchSizeFields(Message m, int frameSize) {
+ public void patch(Message m, int frameSize) {
}
}
Modified: gnunet-java/src/org/gnunet/construct/parsers/FillParser.java
===================================================================
--- gnunet-java/src/org/gnunet/construct/parsers/FillParser.java
2012-01-17 22:25:52 UTC (rev 19220)
+++ gnunet-java/src/org/gnunet/construct/parsers/FillParser.java
2012-01-18 00:03:38 UTC (rev 19221)
@@ -1,12 +1,12 @@
package org.gnunet.construct.parsers;
+import org.gnunet.construct.Construct.ReflectionUtil;
+import org.gnunet.construct.Message;
+
import java.lang.reflect.Array;
import java.lang.reflect.Field;
import java.util.List;
-import org.gnunet.construct.Construct.ReflectionUtil;
-import org.gnunet.construct.Message;
-
/**
* Parse an array that takes up all the available space.
*
@@ -50,7 +50,7 @@
@Override
public int parse(final byte[] srcData, final int offset, int frameOffset,
- final Message dstObj) {
+ Message frameObj, final Message dstObj) {
/*
int remaining = getSizeFieldValue(dstObj) - frameOffset;
@@ -108,7 +108,7 @@
* This works, but is very redundant.
*/
@Override
- public void patchSizeFields(Message m, int frameSize) {
+ public void patch(Message m, int frameSize) {
Object obj = ReflectionUtil.followFieldPath(totalSizePath, m,
totalSizePath.size() - 1);
Field f = totalSizePath.get(totalSizePath.size() - 1);
Modified: gnunet-java/src/org/gnunet/construct/parsers/FixedSizeArrayParser.java
===================================================================
--- gnunet-java/src/org/gnunet/construct/parsers/FixedSizeArrayParser.java
2012-01-17 22:25:52 UTC (rev 19220)
+++ gnunet-java/src/org/gnunet/construct/parsers/FixedSizeArrayParser.java
2012-01-18 00:03:38 UTC (rev 19221)
@@ -1,10 +1,10 @@
package org.gnunet.construct.parsers;
+import org.gnunet.construct.Message;
+
import java.lang.reflect.Array;
import java.lang.reflect.Field;
-import org.gnunet.construct.Message;
-
public class FixedSizeArrayParser extends FieldParser {
private final FieldParser elemParser;
@@ -35,7 +35,7 @@
@Override
public int parse(final byte[] srcData, final int offset, int frameOffset,
- final Message dstObj) {
+ Message frameObj, final Message dstObj) {
int size = 0;
final Object arr = Array.newInstance(getFieldType().getComponentType(),
@@ -56,7 +56,7 @@
Array.set(arr, i, elemObj);
size += elemParser.parse(srcData, offset + size,
- frameOffset - size, elemObj);
+ frameOffset - size, null, elemObj);
}
return size;
@@ -75,10 +75,10 @@
}
@Override
- public void patchSizeFields(Message m, int frameSize) {
+ public void patch(Message m, int frameSize) {
final Object arr = getFieldValue(m);
for (int i = 0; i < Array.getLength(arr); ++i) {
- elemParser.patchSizeFields((Message) Array.get(arr, i), frameSize);
+ elemParser.patch((Message) Array.get(arr, i), frameSize);
}
}
Modified: gnunet-java/src/org/gnunet/construct/parsers/IntegerParser.java
===================================================================
--- gnunet-java/src/org/gnunet/construct/parsers/IntegerParser.java
2012-01-17 22:25:52 UTC (rev 19220)
+++ gnunet-java/src/org/gnunet/construct/parsers/IntegerParser.java
2012-01-18 00:03:38 UTC (rev 19221)
@@ -33,7 +33,7 @@
@Override
public int parse(final byte[] srcData, int offset, int frameOffset,
- final Message dstObj) {
+ Message frameObj, final Message dstObj) {
try {
switch (ft) {
case BYTE_PRIM:
@@ -48,6 +48,8 @@
case LONG_PRIM:
field.setLong(dstObj, readLong(srcData, offset));
break;
+ case BIGNUM: case CHAR_PRIM:
+ throw new UnsupportedOperationException("not yet
implemented");
default:
throw new RuntimeException("invalid member type");
}
@@ -67,20 +69,22 @@
try {
switch (ft) {
- case BYTE_PRIM:
- writeInt(field.getInt(srcObj), dstData, offset);
- break;
- case INT_PRIM:
- writeInt(field.getInt(srcObj), dstData, offset);
- break;
- case SHORT_PRIM:
- writeShort(field.getShort(srcObj), dstData, offset);
- break;
- case LONG_PRIM:
- writeLong(field.getLong(srcObj), dstData, offset);
- break;
- default:
- throw new RuntimeException("invalid member type: ");
+ case BYTE_PRIM:
+ writeInt(field.getInt(srcObj), dstData, offset);
+ break;
+ case INT_PRIM:
+ writeInt(field.getInt(srcObj), dstData, offset);
+ break;
+ case SHORT_PRIM:
+ writeShort(field.getShort(srcObj), dstData, offset);
+ break;
+ case LONG_PRIM:
+ writeLong(field.getLong(srcObj), dstData, offset);
+ break;
+ case BIGNUM: case CHAR_PRIM:
+ throw new UnsupportedOperationException("not yet
implemented");
+ default:
+ throw new RuntimeException("invalid member type: ");
}
} catch (IllegalArgumentException e) {
throw new RuntimeException();
@@ -92,7 +96,7 @@
}
@Override
- public void patchSizeFields(Message m, int frameSize) {
+ public void patch(Message m, int frameSize) {
}
public void writeByte(byte val, byte[] data, int offset) {
Modified: gnunet-java/src/org/gnunet/construct/parsers/NestedParser.java
===================================================================
--- gnunet-java/src/org/gnunet/construct/parsers/NestedParser.java
2012-01-17 22:25:52 UTC (rev 19220)
+++ gnunet-java/src/org/gnunet/construct/parsers/NestedParser.java
2012-01-18 00:03:38 UTC (rev 19221)
@@ -1,26 +1,54 @@
package org.gnunet.construct.parsers;
+import org.gnunet.construct.Construct;
+import org.gnunet.construct.Message;
+import org.gnunet.exceptions.MessageFormatException;
+
import java.lang.reflect.Field;
+import java.util.List;
-import org.gnunet.construct.Message;
-
public class NestedParser extends FieldParser {
private final Parser nestedParser;
+ private List<Field> frameSizePath;
- public NestedParser(final Parser p, final Field f) {
+ boolean optional;
+
+ public NestedParser(final Parser p, List<Field> frameSizePath, boolean
optional, final Field f) {
super(f);
+ this.optional = optional;
this.nestedParser = p;
+ this.frameSizePath = frameSizePath;
}
@Override
public int getSize(final Message src) {
- return nestedParser.getSize((Message) getFieldValue(src));
+ Message inner = (Message) getFieldValue(src);
+ return nestedParser.getSize(inner);
}
+ private int getSizeFieldValue(Message m) {
+ Object obj = Construct.ReflectionUtil.followFieldPath(frameSizePath,
m);
+ return ((Number) obj).intValue();
+ }
+
@Override
public int parse(final byte[] src_data, final int offset,
- int frameOffset, final Message dstObj) {
+ int frameOffset, Message frameObj, final Message dstObj) {
+
+
+ if (optional) {
+ int remaining = (frameOffset + getSizeFieldValue(frameObj)) -
offset;
+ if (remaining <= 0) {
+ if (!optional) {
+ throw new MessageFormatException("not optional");
+ }
+ setFieldValue(dstObj, null);
+ return 0;
+ }
+ }
+
+
try {
setFieldValue(dstObj, getFieldType().newInstance());
} catch (InstantiationException e) {
@@ -29,8 +57,9 @@
throw new RuntimeException();
}
+
return nestedParser.parse(src_data, offset, frameOffset,
- (Message) getFieldValue(dstObj));
+ frameObj, (Message) getFieldValue(dstObj));
}
@Override
@@ -40,10 +69,10 @@
}
@Override
- public void patchSizeFields(Message m, int frameSize) {
+ public void patch(Message m, int frameSize) {
// todo: nested/opaque frames
- nestedParser.patchSizeFields(m, frameSize);
-
+ nestedParser.patch(m, frameSize);
+
}
}
Modified: gnunet-java/src/org/gnunet/construct/parsers/Parser.java
===================================================================
--- gnunet-java/src/org/gnunet/construct/parsers/Parser.java 2012-01-17
22:25:52 UTC (rev 19220)
+++ gnunet-java/src/org/gnunet/construct/parsers/Parser.java 2012-01-18
00:03:38 UTC (rev 19221)
@@ -14,15 +14,15 @@
/**
*
+ *
* @param srcData
* @param offset
- * @param frameOffset
- * @param dstObj
- * @return
+ * @param frameStart start of the current frame, relative to the beginning
of srcData
+ * @param frameObj
+ address@hidden dstObj @return
*/
- public int parse(byte[] srcData, int offset, int frameOffset, Message
dstObj);
+ public int parse(byte[] srcData, int offset, int frameStart, Message
frameObj, Message dstObj);
-
/**
*
* @param dstData
@@ -32,6 +32,6 @@
*/
public int write(byte[] dstData, int offset, Message srcObj);
- public void patchSizeFields(Message m, int frameSize);
+ public void patch(Message m, int frameSize);
}
Modified: gnunet-java/src/org/gnunet/construct/parsers/SequenceParser.java
===================================================================
--- gnunet-java/src/org/gnunet/construct/parsers/SequenceParser.java
2012-01-17 22:25:52 UTC (rev 19220)
+++ gnunet-java/src/org/gnunet/construct/parsers/SequenceParser.java
2012-01-18 00:03:38 UTC (rev 19221)
@@ -1,10 +1,10 @@
package org.gnunet.construct.parsers;
+import org.gnunet.construct.Message;
+
import java.util.LinkedList;
import java.util.List;
-import org.gnunet.construct.Message;
-
/**
* A Sequence of Parsers that operate on the same object.
* @author Florian Dold
@@ -32,10 +32,10 @@
@Override
public int parse(final byte[] src_data, final int offset, int frameOffset,
- final Message dst) {
+ Message frameObj, final Message dst) {
int size = 0;
for (final FieldParser p : childParsers) {
- size += p.parse(src_data, offset + size, frameOffset + size, dst);
+ size += p.parse(src_data, offset + size, frameOffset, frameObj,
dst);
}
return size;
}
@@ -50,9 +50,9 @@
}
@Override
- public void patchSizeFields(Message m, int frameSize) {
+ public void patch(Message m, int frameSize) {
for (final FieldParser p : childParsers) {
- p.patchSizeFields(m, frameSize);
+ p.patch(m, frameSize);
}
}
}
Modified: gnunet-java/src/org/gnunet/construct/parsers/StringParser.java
===================================================================
--- gnunet-java/src/org/gnunet/construct/parsers/StringParser.java
2012-01-17 22:25:52 UTC (rev 19220)
+++ gnunet-java/src/org/gnunet/construct/parsers/StringParser.java
2012-01-18 00:03:38 UTC (rev 19221)
@@ -1,22 +1,34 @@
package org.gnunet.construct.parsers;
+import org.gnunet.construct.Message;
+import org.gnunet.exceptions.InterfaceViolationException;
+import org.gnunet.exceptions.MessageFormatException;
+
import java.io.UnsupportedEncodingException;
import java.lang.reflect.Field;
-import org.gnunet.construct.Message;
-
public class StringParser extends FieldParser {
String cset;
- public StringParser(final String charset, final Field f) {
+ boolean optional;
+
+ public StringParser(final String charset, boolean optional, final Field f)
{
super(f);
+ this.optional = optional;
this.cset = charset;
}
@Override
public int getSize(final Message srcObj) {
final String s = (String) getFieldValue(srcObj);
+ if (s == null) {
+ if (optional) {
+ return 0;
+ } else {
+ throw new InterfaceViolationException("non-optional string
cannot be null");
+ }
+ }
try {
final byte[] b = s.getBytes(cset);
return b.length + 1;
@@ -26,7 +38,16 @@
}
@Override
- public int parse(final byte[] srcData, final int offset, int frameOffset,
final Message dstObj) {
+ public int parse(final byte[] srcData, final int offset, int frameOffset,
Message frameObj, final Message dstObj) {
+
+ if (srcData[offset] == 0) {
+ if (!optional) {
+ throw new MessageFormatException("no data received for
non-optional string");
+ }
+ setFieldValue(dstObj, null);
+ return 0;
+ }
+
int length = 0;
while (srcData[offset + length] != 0) {
length++;
@@ -49,8 +70,16 @@
}
@Override
- public int write(final byte[] dstData, final int offset, final Message
srcObj) {
- final String s = (String) getFieldValue(srcObj);
+ public int write(final byte[] dstData, final int offset, final Message
srcObj) {
+ String s = (String) getFieldValue(srcObj);
+
+ if (s == null) {
+ if (!optional) {
+ throw new InterfaceViolationException("non-optional string
cannot be null");
+ }
+ return 0;
+ }
+
byte[] b;
try {
b = s.getBytes(cset);
@@ -60,16 +89,15 @@
System.arraycopy(b, 0, dstData, offset, b.length);
- System.out.println(b.length);
+ dstData[offset + b.length] = 0;
- dstData[offset + b.length] = (byte) 0;
-
// +1 for the 0-byte
return b.length + 1;
}
@Override
- public void patchSizeFields(Message m, int frameSize) {
+ public void patch(Message m, int frameSize) {
+ // nothing to patch
}
}
Modified:
gnunet-java/src/org/gnunet/construct/parsers/VariableSizeArrayParser.java
===================================================================
--- gnunet-java/src/org/gnunet/construct/parsers/VariableSizeArrayParser.java
2012-01-17 22:25:52 UTC (rev 19220)
+++ gnunet-java/src/org/gnunet/construct/parsers/VariableSizeArrayParser.java
2012-01-18 00:03:38 UTC (rev 19221)
@@ -1,11 +1,11 @@
package org.gnunet.construct.parsers;
+import org.gnunet.construct.Construct.ReflectionUtil;
+import org.gnunet.construct.Message;
+
import java.lang.reflect.Array;
import java.lang.reflect.Field;
-import org.gnunet.construct.Construct.ReflectionUtil;
-import org.gnunet.construct.Message;
-
public class VariableSizeArrayParser extends FieldParser {
private final FieldParser elemParser;
private Field sizeField;
@@ -35,7 +35,7 @@
}
@Override
- public int parse(final byte[] srcData, final int offset, int frameOffset,
final Message dstObj) {
+ public int parse(final byte[] srcData, final int offset, int frameOffset,
Message frameObj, final Message dstObj) {
int elemNumber;
try {
elemNumber = ((Number) sizeField.get(dstObj)).intValue();
@@ -65,7 +65,7 @@
Array.set(arr, i, elemObj);
size += elemParser.parse(srcData, offset + size,
- frameOffset - size, elemObj);
+ frameOffset - size, null, elemObj);
}
return size;
@@ -83,7 +83,7 @@
}
@Override
- public void patchSizeFields(Message m, int frameSize) {
+ public void patch(Message m, int frameSize) {
int size = Array.getLength(getFieldValue(m));
ReflectionUtil.setNumField(m, ft, sizeField, size);
}
Deleted: gnunet-java/src/org/gnunet/service/NSE_StartMessage.java
===================================================================
--- gnunet-java/src/org/gnunet/service/NSE_StartMessage.java 2012-01-17
22:25:52 UTC (rev 19220)
+++ gnunet-java/src/org/gnunet/service/NSE_StartMessage.java 2012-01-18
00:03:38 UTC (rev 19221)
@@ -1,15 +0,0 @@
-package org.gnunet.service;
-
-import org.gnunet.construct.Message;
-import org.gnunet.construct.MessageHeader;
-import org.gnunet.construct.MessageId;
-import org.gnunet.construct.Nested;
-
address@hidden("InstanceVariableMayNotBeInitialized")
address@hidden(NSE_StartMessage.MSG_ID)
-public class NSE_StartMessage implements Message {
- public static final int MSG_ID = 321;
-
- @Nested
- public MessageHeader header;
-}
Deleted: gnunet-java/src/org/gnunet/service/NSE_UpdateMessage.java
===================================================================
--- gnunet-java/src/org/gnunet/service/NSE_UpdateMessage.java 2012-01-17
22:25:52 UTC (rev 19220)
+++ gnunet-java/src/org/gnunet/service/NSE_UpdateMessage.java 2012-01-18
00:03:38 UTC (rev 19221)
@@ -1,27 +0,0 @@
-package org.gnunet.service;
-
-import org.gnunet.construct.Double;
-import org.gnunet.construct.*;
-import org.gnunet.util.AbsoluteTimeMessage;
-
address@hidden("InstanceVariableMayNotBeInitialized")
address@hidden(NSE_UpdateMessage.MSG_ID)
-public class NSE_UpdateMessage implements Message {
- public static final int MSG_ID = 323;
-
- @Nested
- public MessageHeader header;
-
- @UInt32
- public int reserved;
-
- @Nested
- public AbsoluteTimeMessage timestamp;
-
- @Double
- public double sizeEstimate;
-
- @Double
- public double stdDeviation;
-
-}
\ No newline at end of file
Copied: gnunet-java/src/org/gnunet/service/NetworkSizeEstimation.java (from rev
19156, gnunet-java/src/org/gnunet/service/NetworkSizeEstimationService.java)
===================================================================
--- gnunet-java/src/org/gnunet/service/NetworkSizeEstimation.java
(rev 0)
+++ gnunet-java/src/org/gnunet/service/NetworkSizeEstimation.java
2012-01-18 00:03:38 UTC (rev 19221)
@@ -0,0 +1,196 @@
+package org.gnunet.service;
+
+
+import org.gnunet.construct.*;
+import org.gnunet.construct.Double;
+import org.gnunet.exceptions.MessageFormatException;
+import org.gnunet.util.*;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.Collection;
+import java.util.HashSet;
+
+
+/**
+ * An API for the network size estimation service.
+ *
+ * @author Florian Dold
+ */
+public class NetworkSizeEstimation {
+ private static final Logger logger = LoggerFactory
+ .getLogger(NetworkSizeEstimation.class);
+
+ private Collection<NSE_Subscriber> subscribers = new
HashSet<NSE_Subscriber>(1);
+ private boolean disconnected = false;
+
+ private Client client;
+
+
+
+ @SuppressWarnings("InstanceVariableMayNotBeInitialized")
+ @MessageId(NSE_StartMessage.MSG_ID)
+ public static class NSE_StartMessage implements Message {
+ public static final int MSG_ID = 321;
+
+ @Nested
+ public MessageHeader header;
+ }
+
+ @SuppressWarnings("InstanceVariableMayNotBeInitialized")
+ @MessageId(NSE_UpdateMessage.MSG_ID)
+ public static class NSE_UpdateMessage implements Message {
+ public static final int MSG_ID = 323;
+
+ @Nested
+ public MessageHeader header;
+
+ @UInt32
+ public int reserved;
+
+ @Nested
+ public AbsoluteTimeMessage timestamp;
+
+ @Double
+ public double sizeEstimate;
+
+ @Double
+ public double stdDeviation;
+
+ }
+
+
+
+ private class NSE_Receiver implements MessageReceiver {
+ @Override
+ public void process(Message msg) {
+ if (!(msg instanceof NSE_UpdateMessage)) {
+ throw new MessageFormatException("got unexcpected message");
+ }
+ NSE_UpdateMessage uMsg = (NSE_UpdateMessage) msg;
+ System.out.println("got message back!");
+
+ for (NSE_Subscriber s : subscribers) {
+ s.update(AbsoluteTime.fromNetwork(uMsg.timestamp),
uMsg.sizeEstimate, uMsg.stdDeviation);
+ }
+
+ if (!disconnected) {
+ client.receive(this, RelativeTime.FOREVER);
+ }
+ }
+
+ @Override
+ public void handleTimeout() {
+ // can't happen
+ throw new RuntimeException("unreachable");
+ }
+ }
+
+ private class NSE_Transmitter implements MessageTransmitter {
+
+ @Override
+ public void transmit(Client.MessageSink sink) {
+ logger.debug("ready to transmit");
+ NSE_StartMessage m = new NSE_StartMessage();
+ m.header = new MessageHeader();
+ m.header.messageType = NSE_StartMessage.MSG_ID;
+ m.header.messageSize = MessageHeader.SIZE;
+ sink.send(m);
+ client.receive(new NSE_Receiver(), RelativeTime.FOREVER);
+ }
+
+ @Override
+ public void handleTimeout() {
+ // can't happen
+ throw new AssertionError("unreachable");
+ }
+ }
+
+
+ /**
+ * A handle for a subscription to the network size estimation service, may
be used to cancel the
+ * subscription.
+ */
+ public class NSE_Subscription {
+ private NSE_Subscriber sub;
+
+ private NSE_Subscription(NSE_Subscriber sub) {
+ this.sub = sub;
+ }
+
+ /**
+ * Cancel the subscription.
+ */
+ public void cancel() {
+ subscribers.remove(sub);
+ }
+ }
+
+ /**
+ * A NSE_Subscriber receives updates from the service.
+ */
+ public interface NSE_Subscriber {
+
+
+ public void update(AbsoluteTime timestamp, double estimate, double
deviation);
+ }
+
+
+ /**
+ * Subscribe for updates from the service.
+ *
+ * @param s callback for updates
+ * @return a subscription handle that may be used to cancel the
subscription
+ */
+ public NSE_Subscription subscribe(NSE_Subscriber s) {
+ subscribers.add(s);
+ return new NSE_Subscription(s);
+ }
+
+
+ /**
+ * Create a connection to the network size estimation service.
+ *
+ * @param cfg the configuration to use for connecting with the service
+ */
+ public NetworkSizeEstimation(Configuration cfg) {
+ client = new Client("nse", cfg);
+ client.notifyTransmitReady(MessageHeader.SIZE, RelativeTime.FOREVER,
true, new NSE_Transmitter());
+ }
+
+ /**
+ * Cancel all subscriptions and disconnect from the service.
+ */
+ public void disconnect() {
+ disconnected = true;
+ client.disconnect();
+ }
+
+ public static void main (String[] args)
+ {
+ new Program (args) {
+
+ public int f_foo; // shortname: f, long name: foo, type: "int"
+
+ public boolean b_bar; // shortname: b, long name: bar, type:
boolean flag (present: true, absent: false)
+ // or with annotations...
+
+ public void run ()
+ {
+ final NetworkSizeEstimation svc = new
NetworkSizeEstimation(cfg);
+ NSE_Subscriber subscriber = new NSE_Subscriber() {
+ @Override
+ public void update(AbsoluteTime timestamp, double estimate,
double deviation) {
+ System.out.println("est:" + estimate + " dev: " +
deviation + " t: ");
+ svc.disconnect();
+ }
+ };
+ svc.subscribe(subscriber);
+
+ }
+ }.start();
+
+
+ }
+
+}
Deleted: gnunet-java/src/org/gnunet/service/NetworkSizeEstimationService.java
===================================================================
--- gnunet-java/src/org/gnunet/service/NetworkSizeEstimationService.java
2012-01-17 22:25:52 UTC (rev 19220)
+++ gnunet-java/src/org/gnunet/service/NetworkSizeEstimationService.java
2012-01-18 00:03:38 UTC (rev 19221)
@@ -1,168 +0,0 @@
-package org.gnunet.service;
-
-
-import java.util.Collection;
-import java.util.HashSet;
-
-import org.gnunet.construct.Message;
-import org.gnunet.construct.MessageHeader;
-import org.gnunet.exceptions.MessageFormatException;
-import org.gnunet.util.AbsoluteTime;
-import org.gnunet.util.Client;
-import org.gnunet.util.Configuration;
-import org.gnunet.util.MessageReceiver;
-import org.gnunet.util.MessageTransmitter;
-import org.gnunet.util.Program;
-import org.gnunet.util.RelativeTime;
-import org.gnunet.util.Scheduler;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-
-/**
- * An API for the network size estimation service.
- *
- * @author Florian Dold
- */
-public class NetworkSizeEstimationService {
- private static final Logger logger = LoggerFactory
- .getLogger(NetworkSizeEstimationService.class);
-
- private Collection<NSE_Subscriber> subscribers = new
HashSet<NSE_Subscriber>(1);
- private boolean disconnected = false;
-
- private Client client;
-
- private class NSE_Receiver implements MessageReceiver {
- @Override
- public void process(Message msg) {
- if (!(msg instanceof NSE_UpdateMessage)) {
- throw new MessageFormatException("got unexcpected message");
- }
- NSE_UpdateMessage uMsg = (NSE_UpdateMessage) msg;
- System.out.println("got message back!");
-
- for (NSE_Subscriber s : subscribers) {
- s.update(AbsoluteTime.fromNetwork(uMsg.timestamp),
uMsg.sizeEstimate, uMsg.stdDeviation);
- }
-
- if (!disconnected) {
- client.receive(this, RelativeTime.FOREVER);
- }
- }
-
- @Override
- public void handleTimeout() {
- // can't happen
- throw new RuntimeException("unreachable");
- }
- }
-
- private class NSE_Transmitter implements MessageTransmitter {
-
- @Override
- public void transmit(Client.MessageSink sink) {
- logger.debug("ready to transmit");
- NSE_StartMessage m = new NSE_StartMessage();
- m.header = new MessageHeader();
- m.header.messageType = NSE_StartMessage.MSG_ID;
- m.header.messageSize = MessageHeader.SIZE;
- sink.send(m);
- client.receive(new NSE_Receiver(), RelativeTime.FOREVER);
- }
-
- @Override
- public void handleTimeout() {
- // can't happen
- throw new AssertionError("unreachable");
- }
- }
-
-
- /**
- * A handle for a subscription to the network size estimation service, may
be used to cancel the
- * subscription.
- */
- public class NSE_Subscription {
- private NSE_Subscriber sub;
-
- private NSE_Subscription(NSE_Subscriber sub) {
- this.sub = sub;
- }
-
- /**
- * Cancel the subscription.
- */
- public void cancel() {
- subscribers.remove(sub);
- }
- }
-
- /**
- * A NSE_Subscriber receives updates from the service.
- */
- public interface NSE_Subscriber {
-
-
- public void update(AbsoluteTime timestamp, double estimate, double
deviation);
- }
-
-
- /**
- * Subscribe for updates from the service.
- *
- * @param s callback for updates
- * @return a subscription handle that may be used to cancel the
subscription
- */
- public NSE_Subscription subscribe(NSE_Subscriber s) {
- subscribers.add(s);
- return new NSE_Subscription(s);
- }
-
-
- /**
- * Create a connection to the network size estimation service.
- *
- * @param cfg the configuration to use for connecting with the service
- */
- public NetworkSizeEstimationService(Configuration cfg) {
- client = new Client("nse", cfg);
- client.notifyTransmitReady(MessageHeader.SIZE, RelativeTime.FOREVER,
true, new NSE_Transmitter());
- }
-
- /**
- * Cancel all subscriptions and disconnect from the service.
- */
- public void disconnect() {
- disconnected = true;
- client.disconnect();
- }
-
- public static void main (String[] args)
- {
- new Program (args) {
-
- public int f_foo; // shortname: f, long name: foo, type: "int"
-
- public boolean b_bar; // shortname: b, long name: bar, type:
boolean flag (present: true, absent: false)
- // or with annotations...
-
- public void run (String[] rargs)
- {
- final NetworkSizeEstimationService svc = new
NetworkSizeEstimationService(cfg);
- NSE_Subscriber subscriber = new NSE_Subscriber() {
- @Override
- public void update(AbsoluteTime timestamp, double estimate,
double deviation) {
- System.out.println("est:" + estimate + " dev: " +
deviation + " t: ");
- svc.disconnect();
- }
- };
- svc.subscribe(subscriber);
-
- }
- }.start();
-
-
- }
-
-}
Added: gnunet-java/src/org/gnunet/service/Resolver.java
===================================================================
--- gnunet-java/src/org/gnunet/service/Resolver.java
(rev 0)
+++ gnunet-java/src/org/gnunet/service/Resolver.java 2012-01-18 00:03:38 UTC
(rev 19221)
@@ -0,0 +1,190 @@
+package org.gnunet.service;
+
+
+import org.gnunet.construct.*;
+import org.gnunet.exceptions.InterfaceViolationException;
+import org.gnunet.exceptions.MessageFormatException;
+import org.gnunet.util.*;
+import org.gnunet.util.getopt.Argument;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.net.Inet4Address;
+import java.net.InetAddress;
+import java.net.UnknownHostException;
+import java.util.Arrays;
+
+public class Resolver {
+ private static final Logger logger = LoggerFactory
+ .getLogger(Resolver.class);
+
+ @SuppressWarnings("InstanceVariableMayNotBeInitialized")
+ public static class GetMessage implements Message {
+ final static int MSG_ID = 4;
+
+ static final int DIRECTION_GET_IP = 0;
+ static final int DIRECTION_GET_NAME = 1;
+ static final int AF_INET = 2;
+ // .. more constants to come
+
+ @Nested
+ public MessageHeader header;
+ @UInt32
+ public int direction;
+ @UInt32
+ public int domain;
+ @ByteFill
+ public byte[] addr;
+ }
+
+ @MessageId(ResolverResponse.MSG_ID)
+ public static class ResolverResponse implements Message {
+ final static int MSG_ID = 5;
+ @Nested
+ public MessageHeader header;
+ @Nested(optional = true)
+ public ResponseBody responseBody;
+ }
+
+ public static class ResponseBody implements Message {
+ @UInt32
+ public int domain;
+ @ByteFill
+ public byte[] addr;
+ }
+
+
+ public interface HostnameCallback {
+ public void onHostname(String hostname);
+
+ public void onFinished();
+ }
+
+ public interface AddressCallback {
+ public void onAddress(InetAddress addr);
+
+ public void onFinished();
+ }
+
+
+ Client client = null;
+
+ public void connect(Configuration cfg) {
+ if (client != null) {
+ throw new InterfaceViolationException("connect called twice");
+ }
+ client = new Client("resolver", new BootstrapResolver(), cfg);
+ }
+
+ public void resolveHostname(String hostname, RelativeTime timeout, final
AddressCallback cb) {
+ if (client == null) {
+ throw new InterfaceViolationException("must connect Resolver
before using");
+ }
+
+ final GetMessage req = new GetMessage();
+ req.header = new MessageHeader();
+ req.header.messageType = GetMessage.MSG_ID;
+ req.direction = GetMessage.DIRECTION_GET_IP;
+ req.domain = GetMessage.AF_INET;
+ byte[] addr = hostname.getBytes();
+ // add 0-byte
+ req.addr = Arrays.copyOf(addr, addr.length + 1);
+
+ req.header.messageSize = Construct.getSize(req);
+
+ logger.debug("" + req.header.messageSize);
+
+
+ client.notifyTransmitReady(
+ Construct.getSize(req),
+ RelativeTime.FOREVER, true,
+ new MessageTransmitter() {
+ @Override
+ public void transmit(Client.MessageSink sink) {
+ sink.send(req);
+
+ client.receive(new MessageReceiver() {
+ @Override
+ public void process(Message msg) {
+ ResolverResponse gmsg = (ResolverResponse) msg;
+ if (gmsg.responseBody != null) {
+ try {
+ InetAddress in_addr =
Inet4Address.getByAddress(
+
Arrays.copyOfRange(gmsg.responseBody.addr, 0, 4));
+ cb.onAddress(in_addr);
+ client.receive(this,
RelativeTime.FOREVER);
+ } catch (UnknownHostException e) {
+ throw new
MessageFormatException("malformed address");
+ }
+ } else {
+ cb.onFinished();
+ }
+ }
+
+ @Override
+ public void handleTimeout() {
+ throw new RuntimeException("unreachable");
+ }
+ }, RelativeTime.FOREVER);
+
+ }
+
+ @Override
+ public void handleTimeout() {
+ throw new RuntimeException("unreachable");
+ }
+ });
+
+ }
+
+ private static Resolver singletonInstance = null;
+
+ public static Resolver getInstance() {
+ if (singletonInstance == null) {
+ singletonInstance = new Resolver();
+ }
+ return singletonInstance;
+ }
+
+
+ public static void main(final String[] argv) {
+ new Program(argv) {
+ @Argument(name="HOSTNAME")
+ public String hostname;
+
+ @Override
+ public void run() {
+ System.out.println("resolving hostname '" + hostname + "'");
+ Resolver.getInstance().resolveHostname(hostname,
RelativeTime.FOREVER, new AddressCallback() {
+ @Override
+ public void onAddress(InetAddress addr) {
+ System.out.println(addr);
+ }
+
+ @Override
+ public void onFinished() {
+ System.out.println("done.");
+ }
+ });
+ }
+
+ }.start();
+ }
+
+
+ /**
+ * Resolver used to connect to the resolver service itselv, solving the
henn-egg-problem.
+ * Only loopback and ip addresses can be "resolved", no real domain names
+ */
+ private class BootstrapResolver extends Resolver {
+ public BootstrapResolver() {
+ }
+
+ @Override
+ public void connect(Configuration cfg) {
+ throw new UnsupportedOperationException("Bootstrap resolver does
not need to be connected");
+ }
+
+ }
+
+}
Modified: gnunet-java/src/org/gnunet/util/Client.java
===================================================================
--- gnunet-java/src/org/gnunet/util/Client.java 2012-01-17 22:25:52 UTC (rev
19220)
+++ gnunet-java/src/org/gnunet/util/Client.java 2012-01-18 00:03:38 UTC (rev
19221)
@@ -25,6 +25,7 @@
import org.gnunet.construct.MessageLoader;
import org.gnunet.exceptions.ConfigurationException;
import org.gnunet.exceptions.InterfaceViolationException;
+import org.gnunet.service.Resolver;
import org.gnunet.util.Scheduler.Task;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -37,6 +38,7 @@
import java.nio.channels.ClosedChannelException;
import java.nio.channels.SocketChannel;
import java.nio.channels.spi.SelectorProvider;
+import java.util.Arrays;
/**
@@ -61,6 +63,7 @@
private boolean connected = false;
private String serviceName;
private Configuration cfg;
+ private Resolver resolver;
/**
@@ -75,6 +78,7 @@
public interface MessageSink {
public int getRemaining();
+
public void send(Message m);
}
@@ -93,7 +97,11 @@
public void dispatchMessage() {
assert msgh != null;
- receiver.process(MessageLoader.loadMessage(msgh.messageType,
recvBuffer.array(), 0));
+ logger.debug("dispatching message with " + recvBuffer.position() +
" bytes");
+
+ // XXX: this is extremely slow, only preliminary for testing
+ byte[] buf = Arrays.copyOf(recvBuffer.array(),
recvBuffer.position());
+ receiver.process(MessageLoader.loadMessage(msgh.messageType, buf,
0));
}
@Override
@@ -104,7 +112,7 @@
} else if (ctx.reasons.contains(Scheduler.Reason.READ_READY)) {
try {
int n = chan.read(recvBuffer);
- logger.debug(String.format("read %s bytes", n));
+ logger.debug(String.format("chan read %s bytes", n));
} catch (IOException e) {
throw new RuntimeException("read failed");
}
@@ -150,7 +158,7 @@
public TransmitHelper(MessageTransmitter transmitter) {
this.transmitter = transmitter;
}
-
+
public void cancel() {
if (transmitTask != null) {
transmitTask.cancel();
@@ -160,11 +168,13 @@
@Override
public void run(Context ctx) {
try {
- chan.write(transmitBuffer);
+ int n = chan.write(transmitBuffer);
+ logger.debug("chan has written "+n + " bytes");
} catch (IOException e) {
throw new IOError(e);
}
if (transmitBuffer.remaining() == 0) {
+ logger.debug("sent " + transmitBuffer.position() + "bytes
complete message");
if (nextTransmitter == null) {
currentTransmit = null;
} else {
@@ -191,9 +201,8 @@
@Override
public void send(Message m) {
byte[] b = Construct.toBinary(m);
- logger.debug("msg size="+b.length);
- transmitBuffer.put(Construct.toBinary(m));
- logger.debug("sending message");
+ logger.debug("sending msg size=" + b.length);
+ transmitBuffer.put(b);
}
}
@@ -229,7 +238,6 @@
}
-
/**
* Get a connection with a service.
*
@@ -237,8 +245,22 @@
* @param cfg configuration to use
*/
public Client(String serviceName, Configuration cfg) {
+ this(serviceName, Resolver.getInstance(), cfg);
+ }
+
+
+ /**
+ * Get a connection with a service, using a specific resolver.
+ * Used mainly while the default resolver is not yet available / for
connecting to the resolver service.
+ *
+ * @param serviceName name of the service
+ * @param resolver the resolver to use
+ * @param cfg configuration to use
+ */
+ public Client(String serviceName, Resolver resolver, Configuration cfg) {
this.serviceName = serviceName;
this.cfg = cfg;
+ this.resolver = resolver;
do_connect();
}
@@ -260,7 +282,7 @@
chan.connect(new InetSocketAddress("::1" /*hostname*/, port));
} catch (IOException e) {
// todo: retry until connect possible
- logger.warn("Failed to connect to " + hostname + " at port " +
port);
+ logger.warn("Failed to connect to " + hostname + " at port " +
port);
throw new IOError(e);
}
ConnectHelper ct = new ConnectHelper();
@@ -301,7 +323,7 @@
currentReceive = new ReceiveHelper(receiver, timeout);
currentReceive.schedule();
}
-
+
private class TransmitTimeoutHelper implements Task {
private MessageTransmitter transmitter;
@@ -318,7 +340,7 @@
}
}
-
+
private void startTransmit(MessageTransmitter transmitter) {
TransmitHelper transmitHelper = new TransmitHelper(transmitter);
transmitBuffer.clear();
@@ -332,18 +354,17 @@
/**
* Ask the client to call us once the last transmission has completed.
*
- * @param size number of bytes to send
- * @param timeout after how long should we give up (and call
- * notify with buf NULL and size 0)?
- * @param autoRetry if the connection to the service dies, should we
- * automatically re-connect and retry (within the timeout period)
- * or should we immediately fail in this case? Pass GNUNET_YES
- * if the caller does not care about temporary connection errors,
- * for example because the protocol is stateless
+ * @param size number of bytes to send
+ * @param timeout after how long should we give up (and call
+ * notify with buf NULL and size 0)?
+ * @param autoRetry if the connection to the service dies, should we
+ * automatically re-connect and retry (within the
timeout period)
+ * or should we immediately fail in this case? Pass
GNUNET_YES
+ * if the caller does not care about temporary
connection errors,
+ * for example because the protocol is stateless
* @param transmitter ...
* @return a handle that can be used to cancel the transmit request
*/
-
public TransmitHandle notifyTransmitReady(int size, RelativeTime timeout,
boolean autoRetry, final
MessageTransmitter transmitter) {
if (nextTransmitter != null) {
@@ -359,8 +380,7 @@
return new TransmitHandle() {
@Override
public void cancel() {
- // do nothing
- // xxx: should we throw an exception here?
+ throw new InterfaceViolationException("cancel() called on
a completed transmit request");
}
};
} else {
@@ -374,10 +394,13 @@
public void cancel() {
if (nextTransmitter == transmitter) {
nextTransmitter = null;
+ if (nextTransmitTimeout != null) {
+ nextTransmitTimeout.cancel();
+ }
+ } else {
+ throw new InterfaceViolationException("cancel() called
on a completed transmit request");
}
- if (nextTransmitTimeout != null) {
- nextTransmitTimeout.cancel();
- }
+
}
};
}
Modified: gnunet-java/src/org/gnunet/util/Configuration.java
===================================================================
--- gnunet-java/src/org/gnunet/util/Configuration.java 2012-01-17 22:25:52 UTC
(rev 19220)
+++ gnunet-java/src/org/gnunet/util/Configuration.java 2012-01-18 00:03:38 UTC
(rev 19221)
@@ -245,13 +245,6 @@
}
/**
- * Start with defaults, the parse configuration file.
- */
- public boolean load(String filename) {
- throw new UnsupportedOperationException("not implemented");
- }
-
- /**
* Parse a configuration file, add all of the options in the file to the
* configuration environment.
*
@@ -360,6 +353,19 @@
w.close();
}
+
+ public void loadDefaults() {
+ final String[] dirs = {"/usr/share/", "/usr/local/share/"};
+ for (String d : dirs) {
+ File dir = new File(d + "gnunet/config.d/");
+ if (dir.exists() && dir.isDirectory()) {
+ for (File f : dir.listFiles()) {
+ parse(f.getAbsolutePath());
+ }
+ }
+ }
+ }
+
/**
* Write only configuration entries that have been changed to configuration
* file.
Modified: gnunet-java/src/org/gnunet/util/Program.java
===================================================================
--- gnunet-java/src/org/gnunet/util/Program.java 2012-01-17 22:25:52 UTC
(rev 19220)
+++ gnunet-java/src/org/gnunet/util/Program.java 2012-01-18 00:03:38 UTC
(rev 19221)
@@ -1,33 +1,62 @@
package org.gnunet.util;
+import org.gnunet.service.Resolver;
+import org.gnunet.util.getopt.Parameter;
+import org.gnunet.util.getopt.Parser;
+
public abstract class Program {
- protected final Configuration cfg = new Configuration();
-
- // FIMXE: annotations for cfg parser!
- public String cfg_file_name;
+ protected final Configuration cfg = new Configuration();
+
+
+
+ @Parameter(names = {"-c", "--config"}, description = "Path of the
configuration file")
+ public String cfgFileName;
+
- private String[] rargs;
-
- public Program (String[] args)
- {
- // rargs = GetOptParser.parse (args, this);
- cfg.parse(args[0]); // cfg_file_name!
- }
-
- public final void start ()
- {
- // FIXME: parse command-line arguments
+ protected final String[] unprocessedArgs;
+
+
+ /**
+ * A program with the desired environment for a gnunet utility.
+ * While executing the scheduler is guaranteed to run, command arguments
are parsed,
+ * the default configuration is loaded and the DNS Resolver is initialized.
+ *
+ * @param args
+ */
+ public Program(String[] args) {
+ // rargs = GetOptParser.parse (args, this);
+ unprocessedArgs = args;
+
+ try {
+ Parser.parse(this, unprocessedArgs);
+ } catch (Parser.ArgumentError e) {
+ System.err.println(e.getMessage());
+ System.exit(-1);
+ }
+
+ cfg.loadDefaults();
+ }
+
+ public Program() {
+ this(new String[]{});
+ }
+
+ /**
+ * Start the Program as the initial Task of the Scheduler.
+ */
+ public final void start() {
+ Resolver.getInstance().connect(cfg);
Scheduler.run(new Scheduler.Task() {
- public void run (Scheduler.Task.Context c)
- {
- Program.this.run (rargs);
- }
- });
- }
-
- public abstract void run (String[] rargs);
-
-
+ public void run(Scheduler.Task.Context c) {
+ Program.this.run();
+ }
+ });
+ }
+
+ /**
+ * Override to implement the behavior of the Program.
+ */
+ public abstract void run();
}
\ No newline at end of file
Modified: gnunet-java/src/org/gnunet/util/Scheduler.java
===================================================================
--- gnunet-java/src/org/gnunet/util/Scheduler.java 2012-01-17 22:25:52 UTC
(rev 19220)
+++ gnunet-java/src/org/gnunet/util/Scheduler.java 2012-01-18 00:03:38 UTC
(rev 19221)
@@ -441,7 +441,7 @@
} else {
logger.debug("starting to select with timeout");
selector.select(timeout.getMilliseconds());
- logger.debug("receive with timeout ended");
+ logger.debug("select with timeout ended");
}
} catch (IOException e) {
throw new IOError(e);
Added: gnunet-java/src/org/gnunet/util/getopt/Argument.java
===================================================================
--- gnunet-java/src/org/gnunet/util/getopt/Argument.java
(rev 0)
+++ gnunet-java/src/org/gnunet/util/getopt/Argument.java 2012-01-18
00:03:38 UTC (rev 19221)
@@ -0,0 +1,14 @@
+package org.gnunet.util.getopt;
+
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
address@hidden(RetentionPolicy.RUNTIME)
address@hidden(ElementType.FIELD)
+public @interface Argument {
+ String name();
+
+}
Added: gnunet-java/src/org/gnunet/util/getopt/Parameter.java
===================================================================
--- gnunet-java/src/org/gnunet/util/getopt/Parameter.java
(rev 0)
+++ gnunet-java/src/org/gnunet/util/getopt/Parameter.java 2012-01-18
00:03:38 UTC (rev 19221)
@@ -0,0 +1,14 @@
+package org.gnunet.util.getopt;
+
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
address@hidden(RetentionPolicy.RUNTIME)
address@hidden(ElementType.FIELD)
+public @interface Parameter {
+ public String[] names();
+ public String[] description();
+}
Added: gnunet-java/src/org/gnunet/util/getopt/Parser.java
===================================================================
--- gnunet-java/src/org/gnunet/util/getopt/Parser.java
(rev 0)
+++ gnunet-java/src/org/gnunet/util/getopt/Parser.java 2012-01-18 00:03:38 UTC
(rev 19221)
@@ -0,0 +1,82 @@
+package org.gnunet.util.getopt;
+
+import java.lang.reflect.Field;
+import java.lang.reflect.Modifier;
+import java.util.Arrays;
+import java.util.LinkedList;
+import java.util.List;
+
+
+public class Parser {
+
+ public static class ArgumentError extends RuntimeException {
+ public ArgumentError(String s) {
+ super(s);
+ }
+ }
+
+ // todo: unify with Construct.getMessageFields
+ private static List<Field> getFields(Class c) {
+ LinkedList<Field> fields = new
LinkedList<Field>(Arrays.asList(c.getDeclaredFields()));
+ while ((c = c.getSuperclass()) != null) {
+ fields.addAll(0, Arrays.asList(c.getDeclaredFields()));
+ }
+ return fields;
+ }
+
+ public static void parse(Object o, String[] args) {
+ LinkedList<String> posArgs = new LinkedList(Arrays.asList(args));
+ for (Field f : getFields(o.getClass())) {
+ if (f.isSynthetic() || Modifier.isStatic(f.getModifiers())) {
+ continue;
+ }
+ Argument a = f.getAnnotation(Argument.class);
+ if (a != null) {
+ if (posArgs.isEmpty()) {
+ throw new ArgumentError("argument " + a.name() + "
missing");
+ }
+ if (f.getType().equals(String.class)) {
+ try {
+ f.setAccessible(true);
+ f.set(o, posArgs.pollFirst());
+ } catch (IllegalAccessException e) {
+ throw new RuntimeException(e);
+ }
+ } else {
+ throw new RuntimeException("target type not yet
supported");
+ }
+ }
+ }
+
+ if (!posArgs.isEmpty()) {
+ throw new ArgumentError("too many arguments");
+ }
+
+
+/*
+ HashMap<String, ParserAction> longMap;
+ HashMap<String, ParserAction> shortMap;
+ Field restField;
+ for (Field f : Construct.getF) {
+ f.getAnnotation()
+ }
+
+
+ int p = 0;
+ while (p < args.length) {
+ if (args[p].equals("--")) {
+ // handle rest args
+ // TODO ...
+ } else if (args[p].startsWith("--")) {
+
+ } else if (args[0].startsWith("-")) {
+
+ } else {
+ // positional / rest arg
+ }
+ p++;
+ }
+ */
+ }
+
+}
Added: gnunet-java/test/org/gnunet/construct/ByteFillMessage.java
===================================================================
--- gnunet-java/test/org/gnunet/construct/ByteFillMessage.java
(rev 0)
+++ gnunet-java/test/org/gnunet/construct/ByteFillMessage.java 2012-01-18
00:03:38 UTC (rev 19221)
@@ -0,0 +1,20 @@
+package org.gnunet.construct;
+
+/**
+ * Created by IntelliJ IDEA.
+ * User: dold
+ * Date: 1/17/12
+ * Time: 10:20 PM
+ * To change this template use File | Settings | File Templates.
+ */
+public class ByteFillMessage implements Message {
+ @Nested
+ public MessageHeader header;
+
+ @UInt32
+ public int someValue;
+
+ @ByteFill
+ public byte[] rest;
+
+}
Modified: gnunet-java/test/org/gnunet/construct/ConstructTest.java
===================================================================
--- gnunet-java/test/org/gnunet/construct/ConstructTest.java 2012-01-17
22:25:52 UTC (rev 19220)
+++ gnunet-java/test/org/gnunet/construct/ConstructTest.java 2012-01-18
00:03:38 UTC (rev 19221)
@@ -6,8 +6,31 @@
import java.math.BigInteger;
public class ConstructTest {
+
+
+ @Test
+ public void test_ByteFillMessage() {
+ System.out.println("testing ByteFillMessage");
+
+ ByteFillMessage bfm = new ByteFillMessage();
+ bfm.header = new MessageHeader();
+ bfm.someValue = 42;
+ bfm.rest = new byte[] {1,2,3,4,5,6,7,100};
+
+ Construct.patchSizeFields(bfm);
+
+ bfm.header.messageSize = Construct.getSize(bfm);
+
+ System.out.println(bfm.header.messageSize);
+
+ byte[] data = Construct.toBinary(bfm);
+ ByteFillMessage bfm2 = Construct.parseAs(data, 0,
ByteFillMessage.class);
+
+ Assert.assertArrayEquals(bfm.rest, bfm2.rest);
+ }
+
@Test
public void test_VarTestMessage() {
VarTestMessage vtm = new VarTestMessage();
@@ -95,6 +118,8 @@
Construct.patchSizeFields(qm);
byte[] a = Construct.toBinary(qm);
+
+ Assert.assertEquals(a.length, qm.header.messageSize);
QueryMessage qm2 = Construct.parseAs(a, 0, QueryMessage.class);
Modified:
gnunet-java/test/org/gnunet/services/NetworkSizeEstimationServiceTest.java
===================================================================
--- gnunet-java/test/org/gnunet/services/NetworkSizeEstimationServiceTest.java
2012-01-17 22:25:52 UTC (rev 19220)
+++ gnunet-java/test/org/gnunet/services/NetworkSizeEstimationServiceTest.java
2012-01-18 00:03:38 UTC (rev 19221)
@@ -1,7 +1,7 @@
package org.gnunet.services;
-import org.gnunet.service.NetworkSizeEstimationService;
+import org.gnunet.service.NetworkSizeEstimation;
import org.gnunet.util.AbsoluteTime;
import org.gnunet.util.Configuration;
import org.gnunet.util.Scheduler;
@@ -12,9 +12,9 @@
import java.io.IOException;
public class NetworkSizeEstimationServiceTest{
- class TestSubscriber implements
NetworkSizeEstimationService.NSE_Subscriber {
+ class TestSubscriber implements NetworkSizeEstimation.NSE_Subscriber {
public boolean success = false;
- NetworkSizeEstimationService svc;
+ NetworkSizeEstimation svc;
@Override
public void update(AbsoluteTime timestamp, double estimate, double
deviation) {
System.out.println("est:" + estimate + " dev: " + deviation + " t:
");
@@ -38,7 +38,7 @@
Configuration cfg = new Configuration(tmpFile.getAbsolutePath());
- NetworkSizeEstimationService svc = new
NetworkSizeEstimationService(cfg);
+ NetworkSizeEstimation svc = new NetworkSizeEstimation(cfg);
TestSubscriber subscriber = new TestSubscriber();
subscriber.svc = svc;
Modified: gnunet-java/update-msgtypes.sh
===================================================================
--- gnunet-java/update-msgtypes.sh 2012-01-17 22:25:52 UTC (rev 19220)
+++ gnunet-java/update-msgtypes.sh 2012-01-18 00:03:38 UTC (rev 19221)
@@ -4,7 +4,7 @@
find ./src/ ./test/ -name "*.java" > sources.txt
# run annotation processor
-javac -cp "./out/production/gnunet-java/:./lib/*" -processor
org.gnunet.construct.MessageIdAnnotationProcessor -proc:only -s src @sources.txt
+javac -cp "./bin/:./lib/*" -processor
org.gnunet.construct.MessageIdAnnotationProcessor -proc:only -s src @sources.txt
if [ $? ] ; then
rm sources.txt
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r19221 - in gnunet-java: . .idea .idea/inspectionProfiles lib src src/org/gnunet/construct src/org/gnunet/construct/parsers src/org/gnunet/service src/org/gnunet/util src/org/gnunet/util/getopt test/org/gnunet/construct test/org/gnunet/services,
gnunet <=