[+] IPCPipe::ToFileStream
[+] IPCPipe::ToStreamReader [+] IPCPipe::ToStreamWriter
This commit is contained in:
parent
88094c48ae
commit
bd69ad6739
@ -57,6 +57,24 @@ namespace Aurora::IO::IPC
|
||||
* @return
|
||||
*/
|
||||
virtual bool Write(const Memory::MemoryViewStreamRead &read) = 0;
|
||||
|
||||
/**
|
||||
* @brief
|
||||
* @return
|
||||
*/
|
||||
virtual AuSPtr<IO::FS::IFileStream> ToFileStream() = 0;
|
||||
|
||||
/**
|
||||
* @brief
|
||||
* @return
|
||||
*/
|
||||
virtual AuSPtr<IStreamReader> ToStreamReader() = 0;
|
||||
|
||||
/**
|
||||
* @brief
|
||||
* @return
|
||||
*/
|
||||
virtual AuSPtr<IStreamWriter> ToStreamWriter() = 0;
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -101,6 +101,12 @@ namespace Aurora::IO::IPC
|
||||
AuStaticCast<AFileHandle>(this->fsHandle_)->bIsAsync = true;
|
||||
AuStaticCast<AFileHandle>(this->fsHandle_)->pIPCPipe = this;
|
||||
|
||||
this->fsBlockingStream_ = AuFS::OpenBlockingFileStreamFromHandle(this->fsHandle_);
|
||||
SysAssert(this->fsBlockingStream_);
|
||||
|
||||
this->fsStreamReader_ = AuMakeSharedPanic<AuFS::FileReader>(this->fsBlockingStream_);
|
||||
this->fsStreamWriter_ = AuMakeSharedPanic<AuFS::FileWriter>(this->fsBlockingStream_);
|
||||
|
||||
this->fsStream_->Init(this->fsHandle_);
|
||||
|
||||
TryConnect();
|
||||
@ -225,7 +231,6 @@ namespace Aurora::IO::IPC
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
OVERLAPPED a {};
|
||||
a.hEvent = CreateEventA(NULL, true, 0, NULL);
|
||||
|
||||
@ -335,6 +340,21 @@ namespace Aurora::IO::IPC
|
||||
AuString {};
|
||||
}
|
||||
|
||||
AuSPtr<IO::FS::IFileStream> IPCPipeImpl::ToFileStream()
|
||||
{
|
||||
return this->fsBlockingStream_;
|
||||
}
|
||||
|
||||
AuSPtr<IStreamReader> IPCPipeImpl::ToStreamReader()
|
||||
{
|
||||
return this->fsStreamReader_;
|
||||
}
|
||||
|
||||
AuSPtr<IStreamWriter> IPCPipeImpl::ToStreamWriter()
|
||||
{
|
||||
return this->fsStreamWriter_;
|
||||
}
|
||||
|
||||
AUKN_SYM AuSPtr<IPCPipe> NewPipeEx(AuUInt32 uBytesLength)
|
||||
{
|
||||
IPC::IPCHandle handle;
|
||||
|
@ -22,7 +22,9 @@ namespace Aurora::IO::IPC
|
||||
struct IPCHasConnectionEvent;
|
||||
struct IPCHandle;
|
||||
|
||||
struct IPCPipeImpl : IPCPipe, Loop::LSHandle, AuEnableSharedFromThis<IPCPipeImpl>
|
||||
struct IPCPipeImpl : IPCPipe,
|
||||
Loop::LSHandle,
|
||||
AuEnableSharedFromThis<IPCPipeImpl>
|
||||
{
|
||||
IPCPipeImpl(HANDLE clientHandle, HANDLE serverHandle, const IPCHandle &handle);
|
||||
~IPCPipeImpl();
|
||||
@ -39,6 +41,10 @@ namespace Aurora::IO::IPC
|
||||
virtual bool Write(const Memory::MemoryViewStreamRead &read) override;
|
||||
virtual AuString ExportToString() override;
|
||||
|
||||
virtual AuSPtr<IO::FS::IFileStream> ToFileStream() override;
|
||||
virtual AuSPtr<IStreamReader> ToStreamReader() override;
|
||||
virtual AuSPtr<IStreamWriter> ToStreamWriter() override;
|
||||
|
||||
bool IsSignaled() override;
|
||||
bool WaitOn(AuUInt32 timeout) override;
|
||||
Loop::ELoopSource GetType() override;
|
||||
@ -60,5 +66,8 @@ namespace Aurora::IO::IPC
|
||||
AuSPtr<IO::FS::NtAsyncFileStream> fsStream_;
|
||||
AuSPtr<IPCHasConnectionEvent> lshasConnection_;
|
||||
bool bFirstTime {true};
|
||||
AuSPtr<IO::FS::IFileStream> fsBlockingStream_;
|
||||
AuSPtr<IO::IStreamReader> fsStreamReader_;
|
||||
AuSPtr<IO::IStreamWriter> fsStreamWriter_;
|
||||
};
|
||||
}
|
@ -170,6 +170,12 @@ namespace Aurora::IO::IPC
|
||||
|
||||
this->fsHandle_->InitFromPairMove(fds2[0], fds2[1]);
|
||||
this->fsStream_->Init(this->fsHandle_);
|
||||
|
||||
this->fsBlockingStream_ = AuFS::OpenBlockingFileStreamFromHandle(this->fsHandle_);
|
||||
SysAssert(this->fsBlockingStream_);
|
||||
|
||||
this->fsStreamReader_ = AuMakeSharedPanic<AuFS::FileReader>(this->fsBlockingStream_);
|
||||
this->fsStreamWriter_ = AuMakeSharedPanic<AuFS::FileWriter>(this->fsBlockingStream_);
|
||||
}
|
||||
|
||||
AuSPtr<Loop::ILoopSource> IPCPipeImpl::AsReadChannelIsOpen()
|
||||
@ -364,6 +370,21 @@ namespace Aurora::IO::IPC
|
||||
return handle.ToString();
|
||||
}
|
||||
|
||||
AuSPtr<IO::FS::IFileStream> IPCPipeImpl::ToFileStream()
|
||||
{
|
||||
return this->fsBlockingStream_;
|
||||
}
|
||||
|
||||
AuSPtr<IStreamReader> IPCPipeImpl::ToStreamReader()
|
||||
{
|
||||
return this->fsStreamReader_;
|
||||
}
|
||||
|
||||
AuSPtr<IStreamWriter> IPCPipeImpl::ToStreamWriter()
|
||||
{
|
||||
return this->fsStreamWriter_;
|
||||
}
|
||||
|
||||
AUKN_SYM AuSPtr<IPCPipe> NewPipeEx(AuUInt32 uPipeLength)
|
||||
{
|
||||
IPCToken readEnd, writeEnd;
|
||||
|
@ -62,6 +62,10 @@ namespace Aurora::IO::IPC
|
||||
virtual bool Write(const Memory::MemoryViewStreamRead &read) override;
|
||||
virtual AuString ExportToString() override;
|
||||
|
||||
virtual AuSPtr<IO::FS::IFileStream> ToFileStream() override;
|
||||
virtual AuSPtr<IStreamReader> ToStreamReader() override;
|
||||
virtual AuSPtr<IStreamWriter> ToStreamWriter() override;
|
||||
|
||||
bool ReadEx(const Memory::MemoryViewStreamWrite &write, bool nonblock, bool bSide);
|
||||
|
||||
bool IsSignaled() override;
|
||||
@ -105,6 +109,10 @@ namespace Aurora::IO::IPC
|
||||
|
||||
bool bHasDied {};
|
||||
|
||||
AuSPtr<IO::FS::IFileStream> fsBlockingStream_;
|
||||
AuSPtr<IO::IStreamReader> fsStreamReader_;
|
||||
AuSPtr<IO::IStreamWriter> fsStreamWriter_;
|
||||
|
||||
void FinishFinalize();
|
||||
};
|
||||
}
|
Loading…
Reference in New Issue
Block a user