Here are the examples of the csharp api class System.Collections.Concurrent.BlockingCollection.TryAdd(Revenj.Http.HttpSocketServer.RequestInfo) taken from open source projects. By voting up you can indicate which examples are most useful and appropriate.
4 Examples
0
1. Example
Project: revenj
Source File: HttpSocketServer.cs
Source File: HttpSocketServer.cs
private void SocketLoop(object state) { var ctx = Context.Value; var principal = Thread.CurrentPrincipal; ThreadContext.Request = ctx; ThreadContext.Response = ctx; var resetEvent = new ManualResetEvent(false); while (true) { var request = Requests.Take(); try { var socket = request.Socket; if (request.HasData) { ctx.Reset(); ProcessAllMessages(request, ctx, principal, resetEvent, true); } else if (socket.Available > 0 || request.TimeoutAt < Environment.TickCount) { ctx.Reset(); ProcessAllMessages(request, ctx, principal, resetEvent, true); } else { if (!Requests.TryAdd(request.Skipped())) request.Socket.Close(); Thread.Yield(); } } catch (Exception ex) { LogError(request.Socket, ctx, ex); } } }
0
2. Example
Project: revenj
Source File: HttpSocketServer.cs
Source File: HttpSocketServer.cs
private void ProcessInThread(object state) { var arg = (ThreadArgs)state; var request = arg.Request; var socket = request.Socket; var ctx = Context.Value; var semaphore = arg.ResetEvent; try { ctx.CopyFrom(arg.Context); arg.ResetEvent.Set(); var principal = arg.Auth.Principal; ThreadContext.Request = ctx; ThreadContext.Response = ctx; if (!IsSamePrincipal(Thread.CurrentPrincipal, principal)) Thread.CurrentPrincipal = principal; ctx.ForRouteWithAuth(arg.Match, principal); using (var stream = arg.Route.Handle(arg.Match.OrderedArgs, ctx, ctx, ctx.InputStream, ctx.OutputStream)) { var keepAlive = ctx.Return(stream, socket, true); if (!keepAlive) { socket.Close(); return; } else if (!ctx.Pipeline) { if (!Requests.TryAdd(request.Processed())) socket.Close(); return; } } ProcessAllMessages(request, ctx, principal, semaphore, false); } catch (Exception ex) { LogError(socket, ctx, ex); } }
0
3. Example
Project: revenj
Source File: HttpSocketServer.cs
Source File: HttpSocketServer.cs
private void ProcessAllMessages(RequestInfo request, HttpSocketContext ctx, IPrincipal principal, ManualResetEvent resetEvent, bool canReschedule) { RouteMatch? routeMatch; RouteHandler route; var socket = request.Socket; while (ctx.Parse(socket, out routeMatch, out route)) { var match = routeMatch.Value; var auth = Authentication.TryAuthorize(ctx.GetRequestHeader("authorization"), ctx.RawUrl, route); if (auth.Principal != null) { if (canReschedule && route.IsAsync) { resetEvent.Reset(); ThreadPool.QueueUserWorkItem(ProcessInThread, new ThreadArgs(request, ctx, resetEvent, auth, route, match)); Thread.Yield(); resetEvent.WaitOne(); return; } else { ctx.ForRouteWithAuth(match, auth.Principal); if (!IsSamePrincipal(principal, auth.Principal)) Thread.CurrentPrincipal = principal = auth.Principal; using (var stream = route.Handle(match.OrderedArgs, ctx, ctx, ctx.InputStream, ctx.OutputStream)) { var keepAlive = ctx.Return(stream, socket, !canReschedule); if (keepAlive) { if (ctx.Pipeline) continue; else if (socket.Connected && Requests.TryAdd(request.Processed())) return; } socket.Close(); return; } } } else { CheckAuth(socket, auth, ctx); return; } } }
0
4. Example
Project: revenj
Source File: HttpSocketServer.cs
Source File: HttpSocketServer.cs
public void Run() { try { var backlog = ConfigurationManager.AppSettings["Revenj.Backlog/n ..... /n //View Source file for more details /n }