コード例 #1
0
ファイル: compression.go プロジェクト: tuhuayuan/goxmpp
func swapStreamRW(strm stream.Stream, compressor Compressor) error {
	return strm.UpdateRW(
		func(srwc io.ReadWriteCloser) (io.ReadWriteCloser, error) {
			writer := compressor.GetWriter(srwc)
			reader, err := compressor.GetReader(srwc)
			if err != nil {
				log.Println("Could not create compressed reader", err)
				if err := strm.WriteElement(&SetupFailedError{}); err != nil {
					return nil, err
				}
				return nil, err
			}

			return NewCompressionReadWriter(srwc, reader, writer), nil
		})
}