IChannel Class
순차적 데이터 소스 (입력).
class IChannel
멤버
Protected 생성자
바이너리 입력
타입화된 입력
입력 상태 제어
설명
IChannel은 순차적 데이터 소스(입력)를 의미하는 추상 베이스 클래스입니다.
이것은 무한한 문자들의 서열로 생각해도 됩니다. (문자 스트림)
문자 하나를 소비한 후에, 다음 읽기(접근) 동작에서 다음 문자를 이용할 수 있습니다.
IChannel은 2가지 레벨에서 사용할 수 있습니다.
하위 레벨은 바이너리 (또는 문자) 레벨입니다. 이것은 입력 시에 어떤 변환도 이루어지지 않았습니다.
입력 채널 뒤에 있는 데이터 소스로부터 읽은 대로 사용자에게 전달됩니다.
상위 레벨은 타입화된 레벨입니다. 이것은 입력 채널로부터 심플 C++ 타입(그리고 객체)들을 읽을 수 있습니다.
이 레벨에 속한 메소드들은 현재 입력 채널로 선택된 IProtocol (입력 프로토콜) 객체를 통해 읽기 동작을 수행합니다.
특정 타입을 읽기 위해 입력 채널이 호출되면,
그것은 채널의 바이너리 레벨을 사용하여 새로운 데이터를 얻는 현재의 IProtocol 객체에 그 요청을 전달하고,
그 요청된 타입을 구성하고 채널에게 리턴합니다. 그러면 채널이 호출자에게 리턴하게 될 것입니다.
이런 간접적인 방법은 사용자가 데이터 소스에서 심플 C++ 타입의 실제 표현과 관계없이 입력 채널을 통해 동일한 코드를 사용할 수 있게 해줍니다.
즉, 사용자는 적절한 입력 프로토콜이 세트된 후 항상 입력 채널에서 short나 double을 같은 방식으로 읽어야 합니다.
객체를 읽기 위한 요청 역시 입력 프로토콜을 통해 전달됩니다.
입력 프로토콜들은 바이트 순서를 변경하거나 데이터의 텍스트 표현을 해석하고 변환하거나 그 외의 작업들을 할 수 있습니다.
또한 입력 프로토콜들은 특정 타입이 실제 표현으로부터 어떻게 구성되어야 하는지 알고 있습니다.
모든 입력 채널은 기본 IProtocol 객체를 갖고 있어야 합니다.
오류 처리를 용이하게 하기 위해 입력 채널은 입력 상태를 저장합니다.
이 상태는 오류가 발생하기 전까지 NoError입니다.
그 후에 사용자가 입력 상태를 리셋할 때까지는 오류 코드를 저장해 놓습니다. (예. EndOfInput 또는 ReadError)
오류가 발생한 후에 읽기와 같은 동작들을 수행하는 메소드들은 아무것도 하지 않고 즉시 입력 상태와 함께 리턴합니다.
입력 상태를 리셋함으로써, 이 메소드들은 정상적으로 동작하고 다시 읽기를 시도하게 될 것입니다.
요구사항
네임스페이스: GS
헤더: Channel.hpp
참고사항
OChannel | IProtocol
| Channel