public void Should_be_idempotent_when_calling_dispose() { var stream = new ResponseStream((arr, act) => false, () => { }); stream.Dispose(); stream.Dispose(); }
private static BodyDelegate GetResponseBodyBuilder(NancyContext result) { return (next, error, complete) => { // Wrap the completion delegate so the context is disposed on completion. // Technically we could just do this after the .Invoke below, but doing it // here gives scope for supporting async response body generation in the future. Action onComplete = () => { complete.Invoke(); result.Dispose(); }; using (var stream = new ResponseStream(next, onComplete)) { try { result.Response.Contents.Invoke(stream); } catch (Exception e) { error.Invoke(e); result.Dispose(); } } // Don't currently support cancelling, but if it gets called then dispose the context return result.Dispose; }; }