static void ProcessRequest(object obj) { try { 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()); } }
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; } } }