//Container constructor public Handler(string name) { IsContainer = true; IsDefaultHandler = false; IsChunkedHandler = false; Name = name; HandlerCallback = null; ArgumentTypes = null; Children = new List<Handler>(); Parent = null; }
//Default handler constructor public Handler(HandlerCallbackType handlerDelegate) { IsContainer = false; IsDefaultHandler = true; IsChunkedHandler = false; Name = null; HandlerCallback = 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, HandlerCallbackType handlerDelegate, params ArgumentType[] arguments) { IsContainer = false; IsDefaultHandler = false; IsChunkedHandler = false; Name = name; HandlerCallback = handlerDelegate; ChunkedCallbackDelegate = null; ArgumentTypes = arguments; Children = new List<Handler>(); Parent = null; }
//Constructor for chunked handlers void ChunkedHandlerInitialisation(string name, ChunkedHandlerCallbackType 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; HandlerCallback = null; ChunkedCallbackDelegate = chunkedHandlerDelegate; ArgumentTypes = arguments; Children = new List<Handler>(); Parent = null; }