public AuthProcessor(AccountDBContext context, GenericRequest request) { this.request = request; this.context = context; context.Configuration.ProxyCreationEnabled = false; users = new GenericRepository<User>(new StorageContext<User>(context)); roles = new GenericRepository<Role>(new StorageContext<Role>(context)); userroles = new GenericRepository<UserRoles>(new StorageContext<UserRoles>(context)); }
private static void DoMessage(Object obj) { GenericRequest gen_req = obj as GenericRequest; ObjectMessageQueue queue = new ObjectMessageQueue(); queue.RequestGuid = gen_req.requester_guid; queue.RequestIP = gen_req.requester_ip; if (gen_req == null) { Console.WriteLine("Error processing request, it is not a request object!"); queue.sendObject(null, ObjectMessageQueue.AUTH_RESPONSE); } else { Console.WriteLine("Fetching data..."); AccountDBContext context = null; if (contextQueue.TryDequeue(out context) == false) { //Check if we are under the max count of contexts allowed bool createNew = false; lock (context_lock) { if (context_count < 25) { context_count++; createNew = true; } } //If we are allowed, create a context for ourself and the pool. if (createNew) { context = new AccountDBContext(); } else //Else, wait for a context to be available { while (contextQueue.TryDequeue(out context) == false) { Thread.Sleep(5); } } } AuthProcessor parser = new AuthProcessor(context, gen_req); try { Object result = typeof(AuthProcessor).GetMethod(gen_req.Method.ToString()).Invoke(parser, null); Console.WriteLine("It worked!"); queue.sendResponse(result, ObjectMessageQueue.AUTH_RESPONSE); } catch (SqlException) { Console.WriteLine("An error occurred."); } contextQueue.Enqueue(context); } }
static void Main(string[] args) { AppDomain.CurrentDomain.SetData("DataDirectory", Application.StartupPath); AccountDBContext context = new AccountDBContext(); ObjectMessageQueue queue = new ObjectMessageQueue(); ObjectMessageQueue.InitializeQueue(ObjectMessageQueue.AUTH_REQUEST); while (true) { try { Object obj = queue.receiveObject(ObjectMessageQueue.AUTH_REQUEST); GenericRequest gen_req = obj as GenericRequest; if (gen_req == null) { Console.WriteLine("Error processing request, it is not a request object!"); queue.sendObject(null, ObjectMessageQueue.AUTH_RESPONSE); } else { Console.WriteLine("Fetching data..."); AuthProcessor parser = new AuthProcessor(context, gen_req); try { Object result = typeof(AuthProcessor).GetMethod(gen_req.Method.ToString()).Invoke(parser, null); Console.WriteLine("It worked!"); queue.sendResponse(result, ObjectMessageQueue.AUTH_RESPONSE); } catch (SqlException) { Console.WriteLine("An error occurred."); } } } catch (Exception e) { Console.WriteLine(e.ToString()); continue; } } }
static void Main(string[] args) { AppDomain.CurrentDomain.SetData("DataDirectory", Application.StartupPath); context = new AccountDBContext(); ObjectMessageQueue.InitializeQueue(ObjectMessageQueue.AUTH_REQUEST); queue = new ObjectMessageQueue(); while (true) { try { Object obj = queue.receiveObject(ObjectMessageQueue.AUTH_REQUEST); new Thread(ProcessRequest).Start(obj); //ProcessRequest(obj); } catch (Exception e) { Console.WriteLine(e.ToString()); continue; } } }
static void Main(string[] args) { AppDomain.CurrentDomain.SetData("DataDirectory", Application.StartupPath); AccountDBContext context = new AccountDBContext(); ObjectMessageQueue queue = new ObjectMessageQueue(); ObjectMessageQueue.InitializeQueue(ObjectMessageQueue.AUTH_REQUEST); contextQueue = new ConcurrentQueue<AccountDBContext>(); context_lock = new object(); context_count = 0; ThreadPool.SetMaxThreads(25, 0); ThreadPool.SetMinThreads(5, 0); while (true) { try { Object obj = queue.receiveObject(ObjectMessageQueue.AUTH_REQUEST); GenericRequest gen_req = obj as GenericRequest; gen_req.requester_guid = queue.RequestGuid; gen_req.requester_ip = queue.RequestIP; ThreadPool.QueueUserWorkItem(DoMessage, obj); } catch (Exception e) { Console.WriteLine(e.ToString()); continue; } } }