public Operation(IStreamProvider streamProvider, IStreamTransformer transformer, IStreamPersister persister) { if (streamProvider == null) { throw new ArgumentNullException(nameof(streamProvider)); } if (transformer == null) { throw new ArgumentNullException(nameof(transformer)); } if (persister == null) { throw new ArgumentNullException(nameof(persister)); } _streamProvider = streamProvider; _transformer = transformer; _persister = persister; }
async Task ProcessStreamCopyAsync(NetworkStream srcStream, NetworkStream dstStream, IStreamTransformer readTransformer, IStreamTransformer writeTransformer) { var count = 0; var buffer = new byte[_bufferSize]; do { try { count = await srcStream.ReadAsync(buffer, 0, buffer.Length); if (count == 0) { continue; } readTransformer?.Decode(buffer, 0, count); writeTransformer?.Encode(buffer, 0, count); await dstStream.WriteAsync(buffer, 0, count); } catch (Exception e) { break; } } while (count > 0); }
public void SetStreamTransformer(IStreamTransformer transformer) { //recieveStream = transformer.TransformInputStream(recieveStream); //sendStream = transformer.TransformOutputStream(sendStream); }
public void SetStreamTransformer(IStreamTransformer transformer) { throw new NotImplementedException(); }
public void Release(IStreamTransformer streamTransformer) { }