Remove releaseCOrrespondingRequest

This commit is contained in:
Tobe O 2018-08-20 21:57:26 -04:00
parent 15e5cef691
commit 2b1a548cf9
7 changed files with 221 additions and 183 deletions

View file

@ -3,8 +3,12 @@
<component name="ChangeListManager"> <component name="ChangeListManager">
<list default="true" id="7b89ff1e-1260-4dcf-9c3d-345de0471ea1" name="Default" comment=""> <list default="true" id="7b89ff1e-1260-4dcf-9c3d-345de0471ea1" name="Default" comment="">
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" /> <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/CHANGELOG.md" beforeDir="false" afterPath="$PROJECT_DIR$/CHANGELOG.md" afterDir="false" />
<change beforePath="$PROJECT_DIR$/lib/src/core/response_context.dart" beforeDir="false" afterPath="$PROJECT_DIR$/lib/src/core/response_context.dart" afterDir="false" /> <change beforePath="$PROJECT_DIR$/lib/src/core/response_context.dart" beforeDir="false" afterPath="$PROJECT_DIR$/lib/src/core/response_context.dart" afterDir="false" />
<change beforePath="$PROJECT_DIR$/lib/src/core/server.dart" beforeDir="false" afterPath="$PROJECT_DIR$/lib/src/core/server.dart" afterDir="false" />
<change beforePath="$PROJECT_DIR$/lib/src/http/angel_http.dart" beforeDir="false" afterPath="$PROJECT_DIR$/lib/src/http/angel_http.dart" afterDir="false" />
<change beforePath="$PROJECT_DIR$/lib/src/http/http_response_context.dart" beforeDir="false" afterPath="$PROJECT_DIR$/lib/src/http/http_response_context.dart" afterDir="false" /> <change beforePath="$PROJECT_DIR$/lib/src/http/http_response_context.dart" beforeDir="false" afterPath="$PROJECT_DIR$/lib/src/http/http_response_context.dart" afterDir="false" />
<change beforePath="$PROJECT_DIR$/test/routing_test.dart" beforeDir="false" afterPath="$PROJECT_DIR$/test/routing_test.dart" afterDir="false" />
</list> </list>
<ignored path="$PROJECT_DIR$/.tmp/" /> <ignored path="$PROJECT_DIR$/.tmp/" />
<ignored path="$PROJECT_DIR$/temp/" /> <ignored path="$PROJECT_DIR$/temp/" />
@ -27,35 +31,65 @@
</component> </component>
<component name="FileEditorManager"> <component name="FileEditorManager">
<leaf SIDE_TABS_SIZE_LIMIT_KEY="300"> <leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
<file leaf-file-name="CHANGELOG.md" pinned="false" current-in-tab="false"> <file leaf-file-name="main.dart" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/CHANGELOG.md"> <entry file="file://$PROJECT_DIR$/example/main.dart">
<provider selected="true" editor-type-id="split-provider[text-editor;markdown-preview-editor]"> <provider selected="true" editor-type-id="text-editor">
<state split_layout="SPLIT"> <state relative-caret-position="301">
<first_editor relative-caret-position="588"> <caret line="24" column="16" selection-start-line="24" selection-start-column="16" selection-end-line="24" selection-end-column="16" />
<caret line="58" column="75" selection-start-line="58" selection-start-column="75" selection-end-line="58" selection-end-column="75" /> <folding>
</first_editor> <element signature="e#0#46#0" expanded="true" />
<second_editor /> </folding>
</state> </state>
</provider> </provider>
</entry> </entry>
</file> </file>
<file leaf-file-name="response_context.dart" pinned="false" current-in-tab="true"> <file leaf-file-name="routing_test.dart" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/lib/src/core/response_context.dart"> <entry file="file://$PROJECT_DIR$/test/routing_test.dart">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="260"> <state relative-caret-position="182">
<caret line="394" column="8" lean-forward="true" selection-start-line="394" selection-start-column="8" selection-end-line="394" selection-end-column="8" /> <caret line="27" column="13" selection-start-line="27" selection-start-column="13" selection-end-line="27" selection-end-column="13" />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="angel_http.dart" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/lib/src/http/angel_http.dart">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="252">
<caret line="286" column="39" selection-start-line="286" selection-start-column="39" selection-end-line="286" selection-end-column="39" />
<folding> <folding>
<element signature="e#48#68#0" expanded="true" /> <element signature="e#0#20#0" expanded="true" />
</folding> </folding>
</state> </state>
</provider> </provider>
</entry> </entry>
</file> </file>
<file leaf-file-name="server.dart" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/lib/src/core/server.dart">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-1483">
<caret line="153" column="15" selection-start-line="153" selection-start-column="15" selection-end-line="153" selection-end-column="15" />
<folding>
<element signature="e#38#58#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="json.dart" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/example/json.dart">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-282">
<caret column="20" selection-start-column="20" selection-end-column="20" />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="http_response_context.dart" pinned="false" current-in-tab="false"> <file leaf-file-name="http_response_context.dart" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/lib/src/http/http_response_context.dart"> <entry file="file://$PROJECT_DIR$/lib/src/http/http_response_context.dart">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="176"> <state relative-caret-position="129">
<caret line="13" column="43" selection-start-line="13" selection-start-column="43" selection-end-line="13" selection-end-column="43" /> <caret line="56" column="19" lean-forward="true" selection-start-line="56" selection-start-column="19" selection-end-line="56" selection-end-column="19" />
<folding> <folding>
<element signature="e#0#20#0" expanded="true" /> <element signature="e#0#20#0" expanded="true" />
</folding> </folding>
@ -63,6 +97,30 @@
</provider> </provider>
</entry> </entry>
</file> </file>
<file leaf-file-name="CHANGELOG.md" pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/CHANGELOG.md">
<provider selected="true" editor-type-id="split-provider[text-editor;markdown-preview-editor]">
<state split_layout="SPLIT">
<first_editor relative-caret-position="283">
<caret line="62" column="49" selection-start-line="62" selection-start-column="49" selection-end-line="62" selection-end-column="49" />
</first_editor>
<second_editor />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="response_context.dart" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/lib/src/core/response_context.dart">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="258">
<caret line="119" column="9" selection-start-line="119" selection-start-column="9" selection-end-line="119" selection-end-column="9" />
<folding>
<element signature="e#48#68#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
</leaf> </leaf>
</component> </component>
<component name="FileTemplateManagerImpl"> <component name="FileTemplateManagerImpl">
@ -75,12 +133,8 @@
</component> </component>
<component name="FindInProjectRecents"> <component name="FindInProjectRecents">
<findStrings> <findStrings>
<find>reflector</find>
<find>Angel(M</find>
<find>pool</find>
<find>super</find> <find>super</find>
<find>close()</find> <find>close()</find>
<find>close(</find>
<find>DEFUNC</find> <find>DEFUNC</find>
<find>const</find> <find>const</find>
<find>dart2_constant/convert.dart</find> <find>dart2_constant/convert.dart</find>
@ -105,9 +159,12 @@
<find>injecti</find> <find>injecti</find>
<find>debug</find> <find>debug</find>
<find>handle(</find> <find>handle(</find>
<find>lock</find>
<find>add(</find>
<find>close(</find>
<find>end()</find>
</findStrings> </findStrings>
<replaceStrings> <replaceStrings>
<replace>'server'</replace>
<replace>FutureOr</replace> <replace>FutureOr</replace>
<replace>var body = await getBody(rs);</replace> <replace>var body = await getBody(rs);</replace>
<replace /> <replace />
@ -137,6 +194,7 @@
<replace>));</replace> <replace>));</replace>
<replace>req</replace> <replace>req</replace>
<replace>req.container</replace> <replace>req.container</replace>
<replace>close()</replace>
</replaceStrings> </replaceStrings>
<dirStrings> <dirStrings>
<dir>C:\Users\thosa\Source\Angel\framework\lib</dir> <dir>C:\Users\thosa\Source\Angel\framework\lib</dir>
@ -202,15 +260,15 @@
<option value="$PROJECT_DIR$/lib/src/core/routable.dart" /> <option value="$PROJECT_DIR$/lib/src/core/routable.dart" />
<option value="$PROJECT_DIR$/lib/src/http/controller.dart" /> <option value="$PROJECT_DIR$/lib/src/http/controller.dart" />
<option value="$PROJECT_DIR$/example/handle_error.dart" /> <option value="$PROJECT_DIR$/example/handle_error.dart" />
<option value="$PROJECT_DIR$/test/routing_test.dart" />
<option value="$PROJECT_DIR$/test/server_test.dart" /> <option value="$PROJECT_DIR$/test/server_test.dart" />
<option value="$PROJECT_DIR$/example/json.dart" />
<option value="$PROJECT_DIR$/lib/src/core/response_context.dart" />
<option value="$PROJECT_DIR$/test/routing_test.dart" />
<option value="$PROJECT_DIR$/lib/src/core/server.dart" /> <option value="$PROJECT_DIR$/lib/src/core/server.dart" />
<option value="$PROJECT_DIR$/example/main.dart" /> <option value="$PROJECT_DIR$/example/main.dart" />
<option value="$PROJECT_DIR$/lib/src/http/angel_http.dart" /> <option value="$PROJECT_DIR$/lib/src/http/angel_http.dart" />
<option value="$PROJECT_DIR$/example/json.dart" />
<option value="$PROJECT_DIR$/CHANGELOG.md" />
<option value="$PROJECT_DIR$/lib/src/http/http_response_context.dart" /> <option value="$PROJECT_DIR$/lib/src/http/http_response_context.dart" />
<option value="$PROJECT_DIR$/lib/src/core/response_context.dart" /> <option value="$PROJECT_DIR$/CHANGELOG.md" />
</list> </list>
</option> </option>
</component> </component>
@ -247,6 +305,11 @@
<item name="Root" type="cbb8eebc:String" user="Root" /> <item name="Root" type="cbb8eebc:String" user="Root" />
<item name="framework" type="cbb8eebc:String" user="framework" /> <item name="framework" type="cbb8eebc:String" user="framework" />
</path> </path>
<path>
<item name="Root" type="cbb8eebc:String" user="Root" />
<item name="framework" type="cbb8eebc:String" user="framework" />
<item name="example" type="cbb8eebc:String" user="example" />
</path>
<path> <path>
<item name="Root" type="cbb8eebc:String" user="Root" /> <item name="Root" type="cbb8eebc:String" user="Root" />
<item name="framework" type="cbb8eebc:String" user="framework" /> <item name="framework" type="cbb8eebc:String" user="framework" />
@ -313,7 +376,7 @@
</list> </list>
</option> </option>
</component> </component>
<component name="RunManager" selected="Dart Command Line App.performance::hello::raw"> <component name="RunManager" selected="Dart Command Line App.main.dart">
<configuration name="Can serialize function result as JSON in routing_test.dart" type="DartTestRunConfigurationType" factoryName="Dart Test" nameIsGenerated="true"> <configuration name="Can serialize function result as JSON in routing_test.dart" type="DartTestRunConfigurationType" factoryName="Dart Test" nameIsGenerated="true">
<option name="filePath" value="$PROJECT_DIR$/test/routing_test.dart" /> <option name="filePath" value="$PROJECT_DIR$/test/routing_test.dart" />
<option name="scope" value="GROUP_OR_TEST_BY_NAME" /> <option name="scope" value="GROUP_OR_TEST_BY_NAME" />
@ -613,21 +676,7 @@
<workItem from="1534009494986" duration="594000" /> <workItem from="1534009494986" duration="594000" />
<workItem from="1534546784803" duration="353000" /> <workItem from="1534546784803" duration="353000" />
<workItem from="1534547885788" duration="9908000" /> <workItem from="1534547885788" duration="9908000" />
<workItem from="1534793956753" duration="8159000" /> <workItem from="1534793956753" duration="9486000" />
</task>
<task id="LOCAL-00106" summary="Bump version -&gt; 1.1.5">
<created>1531409300283</created>
<option name="number" value="00106" />
<option name="presentableId" value="LOCAL-00106" />
<option name="project" value="LOCAL" />
<updated>1531409300283</updated>
</task>
<task id="LOCAL-00107" summary="Patched another cast bug">
<created>1533353912000</created>
<option name="number" value="00107" />
<option name="presentableId" value="LOCAL-00107" />
<option name="project" value="LOCAL" />
<updated>1533353912001</updated>
</task> </task>
<task id="LOCAL-00108" summary="Removed random_string dependency"> <task id="LOCAL-00108" summary="Removed random_string dependency">
<created>1534547008912</created> <created>1534547008912</created>
@ -958,7 +1007,21 @@
<option name="project" value="LOCAL" /> <option name="project" value="LOCAL" />
<updated>1534814859355</updated> <updated>1534814859355</updated>
</task> </task>
<option name="localTasksCounter" value="155" /> <task id="LOCAL-00155" summary="Make LockableBytesBuilder public">
<created>1534815148128</created>
<option name="number" value="00155" />
<option name="presentableId" value="LOCAL-00155" />
<option name="project" value="LOCAL" />
<updated>1534815148128</updated>
</task>
<task id="LOCAL-00156" summary="Remove ResponseContext.dispose">
<created>1534815933898</created>
<option name="number" value="00156" />
<option name="presentableId" value="LOCAL-00156" />
<option name="project" value="LOCAL" />
<updated>1534815933898</updated>
</task>
<option name="localTasksCounter" value="157" />
<servers /> <servers />
</component> </component>
<component name="TestHistory"> <component name="TestHistory">
@ -994,7 +1057,7 @@
</history-entry> </history-entry>
</component> </component>
<component name="TimeTrackingManager"> <component name="TimeTrackingManager">
<option name="totallyTimeSpent" value="180366000" /> <option name="totallyTimeSpent" value="181693000" />
</component> </component>
<component name="TodoView"> <component name="TodoView">
<todo-panel id="selected-file"> <todo-panel id="selected-file">
@ -1030,7 +1093,7 @@
<window_info id="Image Layers" order="2" /> <window_info id="Image Layers" order="2" />
<window_info anchor="right" id="Capture Analysis" order="3" /> <window_info anchor="right" id="Capture Analysis" order="3" />
<window_info anchor="bottom" id="Version Control" order="7" weight="0.32905984" /> <window_info anchor="bottom" id="Version Control" order="7" weight="0.32905984" />
<window_info anchor="bottom" id="Run" order="2" sideWeight="0.4964476" weight="0.3973799" /> <window_info active="true" anchor="bottom" id="Run" order="2" sideWeight="0.4964476" visible="true" weight="0.3973799" />
<window_info anchor="bottom" id="Terminal" order="7" weight="0.44978166" /> <window_info anchor="bottom" id="Terminal" order="7" weight="0.44978166" />
<window_info content_ui="combo" id="Project" order="0" weight="0.27846155" /> <window_info content_ui="combo" id="Project" order="0" weight="0.27846155" />
<window_info anchor="bottom" id="Find" order="1" weight="0.32905984" /> <window_info anchor="bottom" id="Find" order="1" weight="0.32905984" />
@ -1057,8 +1120,6 @@
</component> </component>
<component name="VcsManagerConfiguration"> <component name="VcsManagerConfiguration">
<option name="CHECK_CODE_SMELLS_BEFORE_PROJECT_COMMIT" value="false" /> <option name="CHECK_CODE_SMELLS_BEFORE_PROJECT_COMMIT" value="false" />
<MESSAGE value="Add more to parseId" />
<MESSAGE value="Make parseId static + docs" />
<MESSAGE value="Make RequestContext generic" /> <MESSAGE value="Make RequestContext generic" />
<MESSAGE value="Completely remove RequestContext.io" /> <MESSAGE value="Completely remove RequestContext.io" />
<MESSAGE value="Completely remove ResponseContext.io" /> <MESSAGE value="Completely remove ResponseContext.io" />
@ -1082,7 +1143,9 @@
<MESSAGE value="Add flags to Angel constructor" /> <MESSAGE value="Add flags to Angel constructor" />
<MESSAGE value="Catch sync errors when using zone" /> <MESSAGE value="Catch sync errors when using zone" />
<MESSAGE value="ResponseContext.isBuffered" /> <MESSAGE value="ResponseContext.isBuffered" />
<option name="LAST_COMMIT_MESSAGE" value="ResponseContext.isBuffered" /> <MESSAGE value="Make LockableBytesBuilder public" />
<MESSAGE value="Remove ResponseContext.dispose" />
<option name="LAST_COMMIT_MESSAGE" value="Remove ResponseContext.dispose" />
</component> </component>
<component name="XDebuggerManager"> <component name="XDebuggerManager">
<breakpoint-manager> <breakpoint-manager>
@ -1245,16 +1308,6 @@
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/lib/src/core/request_context.dart">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="257">
<caret line="160" column="31" lean-forward="true" selection-start-line="160" selection-start-column="31" selection-end-line="160" selection-end-column="31" />
<folding>
<element signature="e#47#67#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$USER_HOME$/.pub-cache/hosted/pub.dartlang.org/http_parser-3.1.3/lib/src/utils.dart"> <entry file="file://$USER_HOME$/.pub-cache/hosted/pub.dartlang.org/http_parser-3.1.3/lib/src/utils.dart">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="181"> <state relative-caret-position="181">
@ -1290,16 +1343,6 @@
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/lib/src/http/http_request_context.dart">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="262">
<caret line="96" column="14" selection-start-line="96" selection-start-column="14" selection-end-line="96" selection-end-column="14" />
<folding>
<element signature="e#0#20#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/lib/src/core/hooked_service.dart"> <entry file="file://$PROJECT_DIR$/lib/src/core/hooked_service.dart">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state> <state>
@ -1320,16 +1363,6 @@
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/example/main.dart">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="42">
<caret line="22" column="10" lean-forward="true" selection-start-line="22" selection-start-column="10" selection-end-line="22" selection-end-column="10" />
<folding>
<element signature="e#0#46#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file:///usr/local/Cellar/dart/2.0.0/libexec/lib/async/zone.dart"> <entry file="file:///usr/local/Cellar/dart/2.0.0/libexec/lib/async/zone.dart">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="859"> <state relative-caret-position="859">
@ -1337,13 +1370,6 @@
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/test/routing_test.dart">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="182">
<caret line="195" column="18" lean-forward="true" selection-start-line="195" selection-start-column="18" selection-end-line="195" selection-end-column="18" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/test/server_test.dart"> <entry file="file://$PROJECT_DIR$/test/server_test.dart">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="160"> <state relative-caret-position="160">
@ -1351,16 +1377,6 @@
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/lib/src/core/server.dart">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="129">
<caret line="254" column="26" selection-start-line="254" selection-start-column="26" selection-end-line="254" selection-end-column="26" />
<folding>
<element signature="e#38#58#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file:///usr/local/opt/dart/libexec/lib/async/future_impl.dart"> <entry file="file:///usr/local/opt/dart/libexec/lib/async/future_impl.dart">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="129"> <state relative-caret-position="129">
@ -1382,16 +1398,6 @@
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/lib/src/http/angel_http.dart">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="302">
<caret line="32" column="2" selection-start-line="32" selection-start-column="2" selection-end-line="32" selection-end-column="2" />
<folding>
<element signature="e#0#20#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/example/handle_error.dart"> <entry file="file://$PROJECT_DIR$/example/handle_error.dart">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="144"> <state relative-caret-position="144">
@ -1431,10 +1437,81 @@
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/lib/src/core/request_context.dart">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="257">
<caret line="20" column="15" selection-start-line="20" selection-start-column="15" selection-end-line="20" selection-end-column="15" />
<folding>
<element signature="e#47#67#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/lib/src/http/http_request_context.dart">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="80">
<caret line="5" column="46" lean-forward="true" selection-start-line="5" selection-start-column="46" selection-end-line="5" selection-end-column="46" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/lib/src/core/response_context.dart">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="258">
<caret line="119" column="9" selection-start-line="119" selection-start-column="9" selection-end-line="119" selection-end-column="9" />
<folding>
<element signature="e#48#68#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/example/json.dart"> <entry file="file://$PROJECT_DIR$/example/json.dart">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="294"> <state relative-caret-position="-282">
<caret line="37" lean-forward="true" selection-start-line="37" selection-end-line="37" /> <caret column="20" selection-start-column="20" selection-end-column="20" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/test/routing_test.dart">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="182">
<caret line="27" column="13" selection-start-line="27" selection-start-column="13" selection-end-line="27" selection-end-column="13" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/example/main.dart">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="301">
<caret line="24" column="16" selection-start-line="24" selection-start-column="16" selection-end-line="24" selection-end-column="16" />
<folding>
<element signature="e#0#46#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/lib/src/core/server.dart">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-1483">
<caret line="153" column="15" selection-start-line="153" selection-start-column="15" selection-end-line="153" selection-end-column="15" />
<folding>
<element signature="e#38#58#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/lib/src/http/angel_http.dart">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="252">
<caret line="286" column="39" selection-start-line="286" selection-start-column="39" selection-end-line="286" selection-end-column="39" />
<folding>
<element signature="e#0#20#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/lib/src/http/http_response_context.dart">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="129">
<caret line="56" column="19" lean-forward="true" selection-start-line="56" selection-start-column="19" selection-end-line="56" selection-end-column="19" />
<folding> <folding>
<element signature="e#0#20#0" expanded="true" /> <element signature="e#0#20#0" expanded="true" />
</folding> </folding>
@ -1444,33 +1521,13 @@
<entry file="file://$PROJECT_DIR$/CHANGELOG.md"> <entry file="file://$PROJECT_DIR$/CHANGELOG.md">
<provider selected="true" editor-type-id="split-provider[text-editor;markdown-preview-editor]"> <provider selected="true" editor-type-id="split-provider[text-editor;markdown-preview-editor]">
<state split_layout="SPLIT"> <state split_layout="SPLIT">
<first_editor relative-caret-position="588"> <first_editor relative-caret-position="283">
<caret line="58" column="75" selection-start-line="58" selection-start-column="75" selection-end-line="58" selection-end-column="75" /> <caret line="62" column="49" selection-start-line="62" selection-start-column="49" selection-end-line="62" selection-end-column="49" />
</first_editor> </first_editor>
<second_editor /> <second_editor />
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/lib/src/http/http_response_context.dart">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="176">
<caret line="13" column="43" selection-start-line="13" selection-start-column="43" selection-end-line="13" selection-end-column="43" />
<folding>
<element signature="e#0#20#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/lib/src/core/response_context.dart">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="260">
<caret line="394" column="8" lean-forward="true" selection-start-line="394" selection-start-column="8" selection-end-line="394" selection-end-column="8" />
<folding>
<element signature="e#48#68#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</component> </component>
<component name="masterDetails"> <component name="masterDetails">
<states> <states>

View file

@ -60,3 +60,5 @@ as in many cases it is unnecessary and slows down response time.
* Made `LockableBytesBuilder` public. * Made `LockableBytesBuilder` public.
* Removed the now-obsolete `ResponseContext.willCloseItself`. * Removed the now-obsolete `ResponseContext.willCloseItself`.
* Removed `ResponseContext.dispose`. * Removed `ResponseContext.dispose`.
* Removed the now-obsolete `ResponseContext.end`.
* Removed the now-obsolete `ResponseContext.releaseCorrespondingRequest`.

View file

@ -110,7 +110,7 @@ abstract class ResponseContext<RawResponse>
file.openRead().pipe(this); file.openRead().pipe(this);
} else { } else {
buffer.add(file.readAsBytesSync()); buffer.add(file.readAsBytesSync());
end(); close();
} }
} }
@ -126,15 +126,6 @@ abstract class ResponseContext<RawResponse>
return new Future.value(); return new Future.value();
} }
/// Prevents further request handlers from running on the response, except for response finalizers.
///
/// To disable response finalizers, see [willCloseItself].
///
/// This method should also set [!isOpen] to true.
void end() {
if (_done?.isCompleted == false) _done.complete();
}
/// Serializes JSON to the response. /// Serializes JSON to the response.
void json(value) => this void json(value) => this
..contentType = MediaType('application', 'json') ..contentType = MediaType('application', 'json')
@ -148,7 +139,7 @@ abstract class ResponseContext<RawResponse>
write("$callbackName(${serializer(value)})"); write("$callbackName(${serializer(value)})");
this.contentType = this.contentType =
contentType ?? new MediaType('application', 'javascript'); contentType ?? new MediaType('application', 'javascript');
end(); close();
} }
/// Renders a view to the response stream, and closes the response. /// Renders a view to the response stream, and closes the response.
@ -160,7 +151,7 @@ abstract class ResponseContext<RawResponse>
..addAll(data ?? <String, dynamic>{}))).then((content) { ..addAll(data ?? <String, dynamic>{}))).then((content) {
write(content); write(content);
headers['content-type'] = 'text/html'; headers['content-type'] = 'text/html';
end(); close();
}); });
} }
@ -196,7 +187,7 @@ abstract class ResponseContext<RawResponse>
</body> </body>
</html> </html>
'''); ''');
end(); close();
} }
/// Redirects to the given named [Route]. /// Redirects to the given named [Route].
@ -267,7 +258,7 @@ abstract class ResponseContext<RawResponse>
headers['content-type'] = lookupMimeType(file.path); headers['content-type'] = lookupMimeType(file.path);
buffer.add(file.readAsBytesSync()); buffer.add(file.readAsBytesSync());
end(); close();
} }
/// Serializes data to the response. /// Serializes data to the response.
@ -276,7 +267,7 @@ abstract class ResponseContext<RawResponse>
var text = serializer(value); var text = serializer(value);
if (text.isEmpty) return true; if (text.isEmpty) return true;
write(text); write(text);
end(); close();
return false; return false;
} }
@ -287,14 +278,6 @@ abstract class ResponseContext<RawResponse>
return file.openRead().pipe(this); return file.openRead().pipe(this);
} }
/// Releases critical resources from the [correspondingRequest].
void releaseCorrespondingRequest() {
if (!correspondingRequest.app.isProduction &&
correspondingRequest.app.logger != null) {
correspondingRequest.container.make<Stopwatch>().stop();
}
}
/// Configure the response to write to an intermediate response buffer, rather than to the stream directly. /// Configure the response to write to an intermediate response buffer, rather than to the stream directly.
void enableBuffer(); void enableBuffer();

View file

@ -151,7 +151,7 @@ class Angel extends Routable {
} }
res.write("</ul></body></html>"); res.write("</ul></body></html>");
res.end(); res.close();
}; };
@override @override

View file

@ -273,7 +273,7 @@ class AngelHttp {
res.statusCode = e.statusCode; res.statusCode = e.statusCode;
handleError = handleError =
new Future.sync(() => app.errorHandler(e, req, res)).then((result) { new Future.sync(() => app.errorHandler(e, req, res)).then((result) {
return app.executeHandler(result, req, res).then((_) => res.end()); return app.executeHandler(result, req, res).then((_) => res.close());
}); });
} }
@ -285,7 +285,15 @@ class AngelHttp {
Future sendResponse( Future sendResponse(
HttpRequest request, RequestContext req, ResponseContext res, HttpRequest request, RequestContext req, ResponseContext res,
{bool ignoreFinalizers: false}) { {bool ignoreFinalizers: false}) {
if (!res.isBuffered) return new Future.value(); void _cleanup(_) {
if (!app.isProduction && app.logger != null) {
var sw = req.container.make<Stopwatch>();
app.logger.info(
"${res.statusCode} ${req.method} ${req.uri} (${sw?.elapsedMilliseconds ?? 'unknown'} ms)");
}
}
if (!res.isBuffered) return res.close().then(_cleanup);
Future finalizers = ignoreFinalizers == true Future finalizers = ignoreFinalizers == true
? new Future.value() ? new Future.value()
@ -293,7 +301,7 @@ class AngelHttp {
new Future.value(), (out, f) => out.then((_) => f(req, res))); new Future.value(), (out, f) => out.then((_) => f(req, res)));
return finalizers.then((_) { return finalizers.then((_) {
if (res.isOpen) res.end(); if (res.isOpen) res.close();
for (var key in res.headers.keys) { for (var key in res.headers.keys) {
request.response.headers.add(key, res.headers[key]); request.response.headers.add(key, res.headers[key]);
@ -343,17 +351,7 @@ class AngelHttp {
..cookies.addAll(res.cookies) ..cookies.addAll(res.cookies)
..add(outputBuffer); ..add(outputBuffer);
return request.response.close().then((_) { return request.response.close().then(_cleanup);
if (!app.isProduction && app.logger != null) {
var sw = req.container.make<Stopwatch>();
if (sw.isRunning) {
sw?.stop();
app.logger.info(
"${res.statusCode} ${req.method} ${req.uri} (${sw?.elapsedMilliseconds ?? 'unknown'} ms)");
}
}
});
}); });
} }

View file

@ -5,6 +5,7 @@ import 'dart:io';
import '../core/core.dart'; import '../core/core.dart';
import 'http_request_context.dart'; import 'http_request_context.dart';
/// An implementation of [ResponseContext] that abstracts over an [HttpResponse].
class HttpResponseContext extends ResponseContext<HttpResponse> { class HttpResponseContext extends ResponseContext<HttpResponse> {
/// The underlying [HttpResponse] under this instance. /// The underlying [HttpResponse] under this instance.
@override @override
@ -53,21 +54,13 @@ class HttpResponseContext extends ResponseContext<HttpResponse> {
..statusCode = statusCode ..statusCode = statusCode
..cookies.addAll(cookies); ..cookies.addAll(cookies);
headers.forEach(rawResponse.headers.set); headers.forEach(rawResponse.headers.set);
_isClosed = true; //_isClosed = true;
releaseCorrespondingRequest();
return _streamInitialized = true; return _streamInitialized = true;
} }
return false; return false;
} }
@override
void end() {
_buffer?.lock();
_isClosed = true;
super.end();
}
@override @override
Future addStream(Stream<List<int>> stream) { Future addStream(Stream<List<int>> stream) {
if (_isClosed && isBuffered) throw ResponseContext.closed(); if (_isClosed && isBuffered) throw ResponseContext.closed();
@ -127,6 +120,7 @@ class HttpResponseContext extends ResponseContext<HttpResponse> {
@override @override
Future close() { Future close() {
if (!_isClosed) {
if (!isBuffered) { if (!isBuffered) {
try { try {
rawResponse.close(); rawResponse.close();
@ -134,9 +128,13 @@ class HttpResponseContext extends ResponseContext<HttpResponse> {
// This only seems to occur on `MockHttpRequest`, but // This only seems to occur on `MockHttpRequest`, but
// this try/catch prevents a crash. // this try/catch prevents a crash.
} }
} else {
_buffer.lock();
} }
_isClosed = true; _isClosed = true;
}
super.close(); super.close();
return new Future.value(); return new Future.value();
} }

View file

@ -25,7 +25,7 @@ class QueryService extends Service {
void interceptor(RequestContext req, ResponseContext res) { void interceptor(RequestContext req, ResponseContext res) {
res res
..write('Middleware') ..write('Middleware')
..end(); ..close();
} }
void interceptService(RequestContext req, ResponseContext res) { void interceptService(RequestContext req, ResponseContext res) {