BROADCAST-STREAM — 시스템 클래스(브로드캐스트 스트림)

BROADCAST-STREAM — 시스템 클래스(브로드캐스트 스트림)

여러 출력 스트림에 같은 내용을 동시에 보내고 싶을 때가 있어요. 로그를 화면과 파일에 함께 쓰는 식이죠. 그럴 때 쓰는 것이 broadcast-stream이에요. 이 스트림에 보낸 출력이 연결된 각 출력 스트림에 그대로 전달돼요. 이 문서는 시스템 클래스(system class) 문서예요.

출처: CLHS System Class BROADCAST-STREAM

본문

클래스 우선순위 리스트 (Class Precedence List)

broadcast-stream
stream
t

설명 (Description)

브로드캐스트 스트림은 0개 이상의 출력 스트림의 집합과 연관된 출력 스트림이에요. 브로드캐스트 스트림에 보낸 출력은 연관된 각 출력 스트림으로 출력으로서 전달돼요. (브로드캐스트 스트림에 component stream이 없으면, 그 스트림에 대한 모든 출력은 버려져요.)

브로드캐스트 스트림에 수행할 수 있는 연산의 집합은 연관된 출력 스트림들에 대한 연산 집합의 교집합이에요.

일부 출력 연산(예: fresh-line)은 연산 시점의 스트림 상태에 기반한 값을 반환해요. 그 값이 각 component stream마다 달라질 수 있으므로, 반환값을 구체적으로 설명하는 게 필요해요.

  • stream-element-type은 마지막 component stream의 값, 또는 component stream이 없으면 t를 반환해요.
  • fresh-line은 마지막 component stream의 값, 또는 component stream이 없으면 nil을 반환해요.
  • file-length, file-position, file-string-length, stream-external-format 함수는 마지막 component stream의 값을 반환해요. component stream이 없으면 file-lengthfile-position0, file-string-length1, stream-external-format:default를 반환해요.
  • streampoutput-stream-p 함수는 브로드캐스트 스트림에 대해 항상 참(true)을 반환해요.
  • open-stream-p 함수는 브로드캐스트 스트림 자체가 열려 있는지 검사하지, component stream들이 열려 있는지는 검사하지 않아요.
  • input-stream-pinteractive-stream-p 함수는 구현 정의된 일반화된 불리언 값(generalized boolean)을 반환해요.
  • 입력 연산 clear-input, listen, peek-char, read-byte, read-char-no-hang, read-char, read-line, unread-char를 브로드캐스트 스트림에 수행하면 결과가 정의되어 있지 않아요. 다만 구현이 그런 동작을 구현 의존 확장(implementation-dependent extension)으로 정의하는 것은 허용돼요.

위나 이 문서의 다른 곳에서 반환값이 명시적으로 주어지지 않은 출력 연산들에 대해서는, 그 연산이 반환하는 값은 마지막 component stream에 대해 수행한 결과예요. 앞의 모든 스트림에 수행한 값은 버려져요. component stream이 없으면 값은 구현 의존(implementation-dependent)이에요.

더 알아보기 (See Also)

  • broadcast-stream-streams
  • make-broadcast-stream