Rewriting is happening in context of request and processing request data. There are more ways how to retrieve URL anyway. With approach I posted above, you could do:
var context = CMSHttpContext.Current;
var curUrl = context.Request.AppRelativeCurrentExecutionFilePath;
var urlArr = curUrl.Split('/');
Or you could use event arguments:
if (e.Parameters.RelativePath.StartsWith("/forum/"))
Or finally you could use something we use in URLRewriter:
RequestContext.RawURL = request.RawUrl;
string query = RequestContext.CurrentQueryString;
string actualExt = Path.GetExtension(relativePath).ToLowerCSafe();
string originalQuery = query;
As for RequestStatusEnum, this marks status of requests and it has planty of states. Without debug or testing it directly I can not say exactly what effect it will have on language. Rewrite class is very complex due to various reasons and main method has above 500lines of code which creates complex paths that I can not follow easily.
However I would say, that language may be processed as most condition checks are on different statuses, but than again this should be tested as languages add an extra layer of complexity.