Graphisoft®

GSRootVersion: 1.0

IChannel Class

순차적 데이터 소스 (입력).

class IChannel

멤버

Protected 생성자

IChannel IChannel 생성자입니다.

바이너리 입력

ReadBin 입력 채널로부터 바이너리 데이터를 읽습니다.
CopyBin 입력 채널로부터 바이너리 데이터를 복사합니다.
Look 지정된 문자에 대해 입력 채널에서 미리 봅니다.
Skip 입력 채널 상의 바이너리 데이터를 건너뛰기(제거)합니다.
PushBack 입력 채널로 다시 데이터를 밀어 넣습니다.
DirectInputAccess 입력 채널의 내용에 직접 접근할 수 있게 해줍니다.
Available 입력 채널 상에 남아 있는 문자들의 개수를 결정하려고 합니다.
IsEOI 입력 끝에 이르렀는지 여부를 리턴합니다.

타입화된 입력

Read 입력 채널로부터 다음 심플 C++ 타입 (또는 Object)을 읽습니다.
ConvertObjectReadError 타입 구성 도중 오류 코드들을 변환합니다.
SetInputProtocol 주어진 입력 프로토콜 객체를 세트합니다.
GetInputProtocol 현재 입력 프로토콜 객체를 리턴합니다.
SetDefaultInputProtocol 기본 입력 프로토콜 객체를 세트합니다.

입력 상태 제어

GetInputStatus 입력 채널의 입력 상태를 리턴합니다.
ResetInputStatus 입력 채널의 입력 상태를 리셋합니다.

설명

IChannel은 순차적 데이터 소스(입력)를 의미하는 추상 베이스 클래스입니다. 이것은 무한한 문자들의 서열로 생각해도 됩니다. (문자 스트림) 문자 하나를 소비한 후에, 다음 읽기(접근) 동작에서 다음 문자를 이용할 수 있습니다.
IChannel은 2가지 레벨에서 사용할 수 있습니다.

하위 레벨은 바이너리 (또는 문자) 레벨입니다. 이것은 입력 시에 어떤 변환도 이루어지지 않았습니다. 입력 채널 뒤에 있는 데이터 소스로부터 읽은 대로 사용자에게 전달됩니다.

상위 레벨은 타입화된 레벨입니다. 이것은 입력 채널로부터 심플 C++ 타입(그리고 객체)들을 읽을 수 있습니다. 이 레벨에 속한 메소드들은 현재 입력 채널로 선택된 IProtocol (입력 프로토콜) 객체를 통해 읽기 동작을 수행합니다. 특정 타입을 읽기 위해 입력 채널이 호출되면, 그것은 채널의 바이너리 레벨을 사용하여 새로운 데이터를 얻는 현재의 IProtocol 객체에 그 요청을 전달하고, 그 요청된 타입을 구성하고 채널에게 리턴합니다. 그러면 채널이 호출자에게 리턴하게 될 것입니다.
이런 간접적인 방법은 사용자가 데이터 소스에서 심플 C++ 타입의 실제 표현과 관계없이 입력 채널을 통해 동일한 코드를 사용할 수 있게 해줍니다. 즉, 사용자는 적절한 입력 프로토콜이 세트된 후 항상 입력 채널에서 short나 double을 같은 방식으로 읽어야 합니다. 객체를 읽기 위한 요청 역시 입력 프로토콜을 통해 전달됩니다.
입력 프로토콜들은 바이트 순서를 변경하거나 데이터의 텍스트 표현을 해석하고 변환하거나 그 외의 작업들을 할 수 있습니다. 또한 입력 프로토콜들은 특정 타입이 실제 표현으로부터 어떻게 구성되어야 하는지 알고 있습니다. 모든 입력 채널은 기본 IProtocol 객체를 갖고 있어야 합니다.

오류 처리를 용이하게 하기 위해 입력 채널은 입력 상태를 저장합니다. 이 상태는 오류가 발생하기 전까지 NoError입니다. 그 후에 사용자가 입력 상태를 리셋할 때까지는 오류 코드를 저장해 놓습니다. (예. EndOfInput 또는 ReadError) 오류가 발생한 후에 읽기와 같은 동작들을 수행하는 메소드들은 아무것도 하지 않고 즉시 입력 상태와 함께 리턴합니다. 입력 상태를 리셋함으로써, 이 메소드들은 정상적으로 동작하고 다시 읽기를 시도하게 될 것입니다.

요구사항

네임스페이스: GS

헤더: Channel.hpp

참고사항

OChannel | IProtocol | Channel