Skip to content

Commit

Permalink
Fixing issues after merging new code
Browse files Browse the repository at this point in the history
- temporarily disable a race in asyncstreamreader
  • Loading branch information
JunTaoLuo committed Jul 18, 2013
1 parent 79236da commit 18962ae
Show file tree
Hide file tree
Showing 4 changed files with 15 additions and 12 deletions.
Expand Up @@ -56,7 +56,7 @@
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>D:\Git\CPP\SignalR\src\Microsoft.AspNet.SignalR.Client.Cpp;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>$(SolutionDir)packages\cpprestsdk.1.0.0\build\native\include;$(SolutionDir)src\Microsoft.AspNet.SignalR.Client.Cpp;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
Expand Down
Expand Up @@ -393,7 +393,9 @@
<SubType>Designer</SubType>
</Content>
</ItemGroup>
<ItemGroup />
<ItemGroup>
<Folder Include="ClientBin\" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\src\Microsoft.AspNet.SignalR.Core\Microsoft.AspNet.SignalR.Core.csproj">
<Project>{1B9A82C4-BCA1-4834-A33E-226F17BE070B}</Project>
Expand Down
19 changes: 10 additions & 9 deletions src/Microsoft.AspNet.SignalR.Client.Cpp/AsyncStreamReader.cpp
Expand Up @@ -9,10 +9,13 @@ AsyncStreamReader::AsyncStreamReader(streams::basic_istream<uint8_t> stream)

AsyncStreamReader::~AsyncStreamReader(void)
{
// potential race: after cancellation and the class is freed, Close(OperationCanceledException("readTask")) is called
mReadCts.cancel();
}

void AsyncStreamReader::Start()
{

State initial = State::Initial;

if (atomic_compare_exchange_strong<State>(&mReadingState, &initial, State::Processing))
Expand Down Expand Up @@ -59,7 +62,7 @@ void AsyncStreamReader::Process()
}
catch (task_canceled canceled)
{
Close(OperationCanceledException("readTask"));
//Close(OperationCanceledException("readTask"));
}
catch (exception& ex)
{
Expand All @@ -85,7 +88,7 @@ void AsyncStreamReader::ReadAsync(task<unsigned int> readTask)
}
catch (task_canceled canceled)
{
Close(OperationCanceledException("readTask"));
//Close(OperationCanceledException("readTask"));
}
catch (exception& ex)
{
Expand Down Expand Up @@ -134,18 +137,16 @@ void AsyncStreamReader::Close(exception& ex)

if(previousState != State::Stopped)
{
// cancel any ongoing reads
mReadCts.cancel();

if (Closed != nullptr)
{
Closed(ex);
}

{
lock_guard<mutex> lock(mBufferLock);
pReadBuffer.reset();
}
// pReadBuffer is a shared pointer and is freed automatically?
//{
// lock_guard<mutex> lock(mBufferLock);
// pReadBuffer.reset();
//}
}
}

Expand Down
Expand Up @@ -57,7 +57,7 @@
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>D:\Git\CPP\SignalR\src\Microsoft.AspNet.SignalR.Client.Cpp;D:\Git\CPP\SignalR\tests\Microsoft.AspNet.SignalR.Client.Cpp.Tests\UnitTestpp\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>$(SolutionDir)packages\cpprestsdk.1.0.0\build\native\include;D:\Git\CPP\SignalR\src\Microsoft.AspNet.SignalR.Client.Cpp;D:\Git\CPP\SignalR\tests\Microsoft.AspNet.SignalR.Client.Cpp.Tests\UnitTestpp\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
Expand Down

0 comments on commit 18962ae

Please sign in to comment.