System.Collections.Concurrent.BlockingCollection.TryAdd(Revenj.Http.HttpSocketServer.RequestInfo)

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 7

1. Example

Project: revenj
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);
				}
			}
		}

2. Example

Project: revenj
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);
			}
		}

3. Example

Project: revenj
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;
				}
			}
		}

4. Example

Project: revenj
Source File: HttpSocketServer.cs
public void Run()
		{
			try
			{
				var backlog = ConfigurationManager.AppSettings["Revenj.Backlog/n ..... /n //View Source file for more details /n }