//Container constructor public Handler(string name) { IsContainer = true; IsDefaultHandler = false; IsChunkedHandler = false; Name = name; HandlerDelegate = null; ArgumentTypes = null; Children = new List<Handler>(); Parent = null; }
//Default handler constructor public Handler(HandlerDelegateType handlerDelegate) { IsContainer = false; IsDefaultHandler = true; IsChunkedHandler = false; Name = null; HandlerDelegate = handlerDelegate; //Default handlers can't have arguments as they must match an empty routing list ArgumentTypes = null; Children = new List<Handler>(); Parent = null; }
//Constructor for regular handlers public Handler(string name, HandlerDelegateType handlerDelegate, params ArgumentType[] arguments) { IsContainer = false; IsDefaultHandler = false; IsChunkedHandler = false; Name = name; HandlerDelegate = handlerDelegate; ChunkedHandlerDelegate = null; ArgumentTypes = arguments; Children = new List<Handler>(); Parent = null; }
//Constructor for chunked handlers void ChunkedHandlerInitialisation(string name, ChunkedHandlerDelegateType chunkedHandlerDelegate, ContentType contentType = ContentType.Plain, params ArgumentType[] arguments) { IsContainer = false; IsDefaultHandler = false; IsChunkedHandler = true; //The reply code is currently not customisable because it's not a common use case for chunked handlers ChunkedReplyCode = ReplyCode.Ok; ChunkedContentType = contentType; Name = name; HandlerDelegate = null; ChunkedHandlerDelegate = chunkedHandlerDelegate; ArgumentTypes = arguments; Children = new List<Handler>(); Parent = null; }