This commit is contained in:
Manoj Ampalam 2016-02-01 22:50:21 -08:00
parent 1a72ebe3a2
commit 72f943a679
4 changed files with 102 additions and 9 deletions

View File

@ -416,9 +416,19 @@ int throughput()
return 0; return 0;
} }
DWORD WINAPI ThreadProcedure(void* param)
{
Sleep(20*1000);
int writefd = *((int*)param);
close(writefd);
return 0;
}
int pipetest() int pipetest()
{ {
int pipefds[2]; int pipefds[2];
w32posix_initialize();
if (-1 == pipe(pipefds)) if (-1 == pipe(pipefds))
{ {
printf("creating pipe failed %d\n", errno); printf("creating pipe failed %d\n", errno);
@ -429,15 +439,21 @@ int pipetest()
int writefd = pipefds[1]; int writefd = pipefds[1];
char* buf = "test characters to write"; char* buf = "test characters to write";
char readbuf[512]; char readbuf[512];
int written = write(writefd, buf, strlen(buf)); CreateThread(0, 0, &ThreadProcedure, &readfd, 0, NULL);
if (written == -1) { int count = 0;
printf("write to pipe failed %d \n", errno); while (1) {
close(readfd); int written = write(writefd, buf, strlen(buf));
close(writefd); printf("Iteration %d Written %d\n", count++, written);
return -1; if (written == -1) {
printf("write to pipe failed %d \n", errno);
close(readfd);
close(writefd);
return -1;
}
} }
/*
int rd = read(readfd, readbuf, 512); int rd = read(readfd, readbuf, 512);
if (rd == -1) { if (rd == -1) {
printf("reading from pipe failed %d \n", errno); printf("reading from pipe failed %d \n", errno);
@ -445,12 +461,80 @@ int pipetest()
close(writefd); close(writefd);
return -1; return -1;
} }
*/
close(writefd);
close(readfd); close(readfd);
close(writefd);
return 0; return 0;
} }
int pipelinetest()
{
int pipe1[2];
if (-1 == pipe(pipe1))
{
printf("creating pipe failed %d\n", errno);
return -1;
}
int pipe1_out = pipe1[0];
int pipe1_in = pipe1[1];
int fd_flags = fcntl(pipe1_in, F_GETFL);
fcntl(pipe1_in, F_SETFL, fd_flags | O_NONBLOCK);
fd_flags = fcntl(pipe1_out, F_GETFL);
fcntl(pipe1_out, F_SETFL, fd_flags | O_NONBLOCK);
int max_fd = max(pipe1_in, pipe1_out) + 1;
fd_set read_set, write_set;
FD_ZERO(&read_set);
FD_ZERO(&write_set);
FD_SET(pipe1_out, &read_set);
FD_SET(pipe1_in, &write_set);
timeval time;
time.tv_sec = 60000;
time.tv_usec = 0;
char* input = "hi how are you?";
char read_buf[256];
while (-1 != select(max_fd, &read_set, &write_set, NULL, &time))
{
fd_set read_ret_set = read_set;
fd_set write_ret_set = write_set;
FD_ZERO(&read_set);
FD_ZERO(&write_set);
if (FD_ISSET(pipe1_in, &write_ret_set))
{
int to_write = strlen(input);
int written = write(pipe1_in, input, to_write);
if (written != to_write)
FD_SET(pipe1_in, &write_set);
else
FD_SET(pipe1_out, &read_set);
}
if (FD_ISSET(pipe1_out, &read_ret_set))
{
int bytes_read = read(pipe1_out, read_buf, 256);
if (bytes_read > 0)
{
read_buf[bytes_read] = '\0';
printf("Received %s \n", read_buf);
}
}
}
}
int __cdecl main(void) int __cdecl main(void)
{ {

View File

@ -14,6 +14,7 @@
<ProjectGuid>{D52F8255-C3A9-4416-A0A6-8CE63A4D7E43}</ProjectGuid> <ProjectGuid>{D52F8255-C3A9-4416-A0A6-8CE63A4D7E43}</ProjectGuid>
<Keyword>Win32Proj</Keyword> <Keyword>Win32Proj</Keyword>
<RootNamespace>SampleServer</RootNamespace> <RootNamespace>SampleServer</RootNamespace>
<ProjectName>SampleServer_</ProjectName>
</PropertyGroup> </PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
@ -56,7 +57,7 @@
<Link> <Link>
<SubSystem>Console</SubSystem> <SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation> <GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalDependencies>C:\openssh\Win32-OpenSSH_\contrib\win32\w32-posix-prototype\win32posix\Debug\win32posix.lib;%(AdditionalDependencies)</AdditionalDependencies> <AdditionalDependencies>C:\openssh\Win32-OpenSSH\contrib\win32\w32-posix-prototype\win32posix\Debug\win32posix.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link> </Link>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">

View File

@ -74,12 +74,14 @@
<Text Include="ReadMe.txt" /> <Text Include="ReadMe.txt" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="debug.c" />
<ClCompile Include="fileio.c" /> <ClCompile Include="fileio.c" />
<ClCompile Include="signal.c" /> <ClCompile Include="signal.c" />
<ClCompile Include="socketio.c" /> <ClCompile Include="socketio.c" />
<ClCompile Include="w32fd.c" /> <ClCompile Include="w32fd.c" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="debug.h" />
<ClInclude Include="defs.h" /> <ClInclude Include="defs.h" />
<ClInclude Include="w32fd.h" /> <ClInclude Include="w32fd.h" />
<ClInclude Include="w32posix.h" /> <ClInclude Include="w32posix.h" />

View File

@ -30,6 +30,9 @@
<ClCompile Include="fileio.c"> <ClCompile Include="fileio.c">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="debug.c">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="w32fd.h"> <ClInclude Include="w32fd.h">
@ -41,5 +44,8 @@
<ClInclude Include="defs.h"> <ClInclude Include="defs.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="debug.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup> </ItemGroup>
</Project> </Project>