OpenRTMFP/Cumulus Primer(12) IO 관리 IO 흐름(계속)
Author: 유대·Poechant(시계 초과)Email: zhongchao.ustc#gmail.com (#->@)
Blog: Blog.CSDN.net/Poechant
Date: April 24th, 2012
안내
본고에서 소개한 Cumulus 서버에서 사용하는 IO 흐름은 Cumulus 서버에서의 Memory IOS를 바탕으로 한 것으로 먼저 OpenRTMFP/Cumulus Primer(11) IO 관리 IO 흐름 한 문장을 읽은 다음에 본문을 읽을 수 있다.
1 입력 흐름
class MemoryInputStream: public MemoryIOS, public std::istream
{
public:
MemoryInputStream(const char* pBuffer,Poco::UInt32 bufferSize);
/// Creates a MemoryInputStream for the given memory area,
/// ready for reading.
MemoryInputStream(MemoryInputStream&);
~MemoryInputStream();
/// Destroys the MemoryInputStream.
char* current();
};
구조 함수, 복사 구조 함수, 분석 함수도 할 말이 없다. 메모리IOS와istream을 초기화한다.istream은 iostream의basicistream 별명(typedef).
MemoryInputStream::MemoryInputStream(const char* pBuffer, UInt32 bufferSize):
MemoryIOS(const_cast<char*>(pBuffer), bufferSize), istream(rdbuf()) {
}
MemoryInputStream::MemoryInputStream(MemoryInputStream& other):
MemoryIOS(other), istream(rdbuf()) {
}
MemoryInputStream::~MemoryInputStream() {
}
유일한 구성원 함수는current입니다. MemoryIOS의 MemoryStreamBuf 구성원을 봉인한 gCurrent 함수입니다.
inline char* MemoryInputStream::current() {
return rdbuf()->gCurrent();
}
2 출력 흐름
class MemoryOutputStream: public MemoryIOS, public std::ostream
/// An input stream for reading from a memory area.
{
public:
MemoryOutputStream(char* pBuffer,Poco::UInt32 bufferSize);
/// Creates a MemoryOutputStream for the given memory area,
/// ready for writing.
MemoryOutputStream(MemoryOutputStream&);
~MemoryOutputStream();
/// Destroys the MemoryInputStream.
Poco::UInt32 written();
void written(Poco::UInt32 size);
char* current();
};
2.1 구조 함수, 복사 구조 함수와 분석 함수
아래와 같이 군말하지 않겠다.
MemoryOutputStream::MemoryOutputStream(char* pBuffer, UInt32 bufferSize):
MemoryIOS(pBuffer, bufferSize), ostream(rdbuf()) {
}
MemoryOutputStream::MemoryOutputStream(MemoryOutputStream& other):
MemoryIOS(other), ostream(rdbuf()) {
}
MemoryOutputStream::~MemoryOutputStream(){
}
2.2 쓰기 바이트 읽기 및 설정
읽기:
inline Poco::UInt32 MemoryOutputStream::written() {
return rdbuf()->written();
}
설정:
inline void MemoryOutputStream::written(Poco::UInt32 size) {
rdbuf()->written(size);
}
2.3 현재 위치
MemoryInputStream의 패키지와 비슷합니다.
inline char* MemoryOutputStream::current() {
return rdbuf()->pCurrent();
}
-
전재는 유대에서 온 CSDN 블로그: Blog.CSDN.net/Poechant
-
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.