public override string handlePOSTRequest(HttpProcessor p, StreamReader inputData)
        {
            Console.WriteLine("POST request: {0}", p.http_url);
            string xml_data = inputData.ReadToEnd(); //xml_data now contains XML from application

            XmlHandler xparser = new XmlHandler();
            Tuple<String, LinkedList<String>> parsed_info = xparser.getXmlParse(xml_data); //parsed_info contains method name and values of args
            string method_name = parsed_info.Item1;
            LinkedList<string> args_list = parsed_info.Item2;

            //switch declarations
            int forum_id = 0;
            int sub_forum_id = 0;
            LinkedList<Tuple<string, string>> xarguments_list = new LinkedList<Tuple<string, string>>();
            string username = null;
            string password = null;
            Tuple<string, string> succ_tuple = new Tuple<string, string>("", "");
            Tuple<string, string> msg_tuple = new Tuple<string, string>("", "");

            string response_xml = null;
            method_name.ToLower();

            switch (method_name)
            {
                case "login":
                    forum_id = Convert.ToInt32(args_list.ElementAt(0));
                    username = args_list.ElementAt(1);
                    password = args_list.ElementAt(2);
                    Tuple<string, string> login_success_usertype  = _forum_gen.login(forum_id, username, password);
                    succ_tuple = new Tuple<string,string>("success", login_success_usertype.Item1);
                    if (login_success_usertype.Item1 == "1")
                        msg_tuple = new Tuple<string, string>("UserType", login_success_usertype.Item2); //success on login
                    else
                        msg_tuple = new Tuple<string, string>("ErrorMsg", login_success_usertype.Item2); //failure on login
                    xarguments_list.AddLast(succ_tuple);
                    xarguments_list.AddLast(msg_tuple);
                    response_xml = xparser.cCreateXml(method_name, xarguments_list);
                    break;

                case "logout":
                    forum_id = Convert.ToInt32(args_list.ElementAt(0));
                    int user_id = Convert.ToInt32(args_list.ElementAt(1));
                    Tuple<string, string> logout_success_usertype = _forum_gen.logout(forum_id, user_id);
                    succ_tuple = new Tuple<string, string>("success", logout_success_usertype.Item1);
                    if (logout_success_usertype.Item1 == "1")
                        msg_tuple = new Tuple<string, string>("UserType", logout_success_usertype.Item2); //success on login
                    else
                        msg_tuple = new Tuple<string, string>("ErrorMsg", logout_success_usertype.Item2); //failure on login
                    xarguments_list.AddLast(succ_tuple);
                    xarguments_list.AddLast(msg_tuple);
                    response_xml = xparser.cCreateXml(method_name, xarguments_list);
                    break;

                case "adminlogin":
                    username = args_list.ElementAt(0);
                    password = args_list.ElementAt(1);
                    Tuple<string, string> admin_login_success_usertype = _forum_gen.adminLogin(username, password);
                    succ_tuple = new Tuple<string, string>("success", admin_login_success_usertype.Item1);
                    if (admin_login_success_usertype.Item1 == "1")
                        msg_tuple = new Tuple<string, string>("UserType", admin_login_success_usertype.Item2); //success on login
                    else
                        msg_tuple = new Tuple<string, string>("ErrorMsg", admin_login_success_usertype.Item2); //failure on login
                    xarguments_list.AddLast(succ_tuple);
                    xarguments_list.AddLast(msg_tuple);
                    response_xml = xparser.cCreateXml(method_name, xarguments_list);
                    break;

                case "adminlogout":
                    Tuple<string, string> admin_logout_success_usertype = _forum_gen.adminLogout();
                    succ_tuple = new Tuple<string, string>("success", admin_logout_success_usertype.Item1);
                    if (admin_logout_success_usertype.Item1 == "1")
                        msg_tuple = new Tuple<string, string>("UserType", admin_logout_success_usertype.Item2); //success on login
                    else
                        msg_tuple = new Tuple<string, string>("ErrorMsg", admin_logout_success_usertype.Item2); //failure on login
                    xarguments_list.AddLast(succ_tuple);
                    xarguments_list.AddLast(msg_tuple);
                    response_xml = xparser.cCreateXml(method_name, xarguments_list);
                    break;

                case "register":
                    forum_id = Convert.ToInt32(args_list.ElementAt(0));
                    username = args_list.ElementAt(1);
                    password = args_list.ElementAt(2);
                    string email = args_list.ElementAt(3);
                    string signature = args_list.ElementAt(4);
                    Tuple<string, string> register_success_usertype  = _forum_gen.register(forum_id, username, password, email, signature);
                    succ_tuple = new Tuple<string,string>("success", register_success_usertype.Item1);
                    if (register_success_usertype.Item1 == "1")
                        msg_tuple = new Tuple<string, string>("UserType", register_success_usertype.Item2); //success on login
                    else
                        msg_tuple = new Tuple<string, string>("ErrorMsg", register_success_usertype.Item2); //failure on login
                    xarguments_list.AddLast(succ_tuple);
                    xarguments_list.AddLast(msg_tuple);
                    response_xml = xparser.cCreateXml(method_name, xarguments_list);
                    break;

                case "createnewforum":
                    username = args_list.ElementAt(0);
                    password = args_list.ElementAt(1);
                    string forum_name = args_list.ElementAt(2);
                    string admin_username = args_list.ElementAt(3);
                    string admin_password = args_list.ElementAt(4);
                    Tuple<string, string> createnewforum_success_usertype = _forum_gen.createNewForum(username, password, forum_name, admin_username, admin_password);
                    succ_tuple = new Tuple<string, string>("success", createnewforum_success_usertype.Item1);
                    if (createnewforum_success_usertype.Item1 == "1")
                        msg_tuple = new Tuple<string, string>("UserType", createnewforum_success_usertype.Item2); //success on login
                    else
                        msg_tuple = new Tuple<string, string>("ErrorMsg", createnewforum_success_usertype.Item2); //failure on login
                    xarguments_list.AddLast(succ_tuple);
                    xarguments_list.AddLast(msg_tuple);
                    response_xml = xparser.cCreateXml(method_name, xarguments_list);
                    break;

                case "createnewsubforum":
                    username = args_list.ElementAt(0);
                    password = args_list.ElementAt(1);
                    forum_id = Convert.ToInt32(args_list.ElementAt(2));
                    string sub_forum_title = args_list.ElementAt(3);
                    Tuple<string, string> createnewsubforum_success_usertype = _forum_gen.createNewSubForum(username, password, forum_id, sub_forum_title);
                    succ_tuple = new Tuple<string, string>("success", createnewsubforum_success_usertype.Item1);
                    if (createnewsubforum_success_usertype.Item1 == "1")
                        msg_tuple = new Tuple<string, string>("UserType", createnewsubforum_success_usertype.Item2); //success on login
                    else
                        msg_tuple = new Tuple<string, string>("ErrorMsg", createnewsubforum_success_usertype.Item2); //failure on login
                    xarguments_list.AddLast(succ_tuple);
                    xarguments_list.AddLast(msg_tuple);
                    response_xml = xparser.cCreateXml(method_name, xarguments_list);
                    break;

                case "createnewdiscussion":
                    username = args_list.ElementAt(0);
                    password = args_list.ElementAt(1);
                    forum_id = Convert.ToInt32(args_list.ElementAt(2));
                    sub_forum_id = Convert.ToInt32(args_list.ElementAt(3));
                    string discussion_title = args_list.ElementAt(4);
                    string discussion_content = args_list.ElementAt(5);
                    Tuple<string, string> createnewdiscussion_success_usertype = _forum_gen.createNewDiscussion(username, password, forum_id, sub_forum_id, discussion_title, discussion_content);
                    succ_tuple = new Tuple<string, string>("success", createnewdiscussion_success_usertype.Item1);
                    if (createnewdiscussion_success_usertype.Item1 == "1")
                        msg_tuple = new Tuple<string, string>("UserType", createnewdiscussion_success_usertype.Item2); //success on login
                    else
                        msg_tuple = new Tuple<string, string>("ErrorMsg", createnewdiscussion_success_usertype.Item2); //failure on login
                    xarguments_list.AddLast(succ_tuple);
                    xarguments_list.AddLast(msg_tuple);
                    response_xml = xparser.cCreateXml(method_name, xarguments_list);
                    break;

                case "createnewcomment":
                    username = args_list.ElementAt(0);
                    password = args_list.ElementAt(1);
                    forum_id = Convert.ToInt32(args_list.ElementAt(2));
                    sub_forum_id = Convert.ToInt32(args_list.ElementAt(3));
                    int discussion_id = Convert.ToInt32(args_list.ElementAt(4));
                    string comment_content = args_list.ElementAt(5);
                    Tuple<string, string> createnewcomment_success_usertype = _forum_gen.createNewComment(username, password, forum_id, sub_forum_id, discussion_id, comment_content);
                    succ_tuple = new Tuple<string, string>("success", createnewcomment_success_usertype.Item1);
                    if (createnewcomment_success_usertype.Item1 == "1")
                        msg_tuple = new Tuple<string, string>("UserType", createnewcomment_success_usertype.Item2); //success on login
                    else
                        msg_tuple = new Tuple<string, string>("ErrorMsg", createnewcomment_success_usertype.Item2); //failure on login
                    xarguments_list.AddLast(succ_tuple);
                    xarguments_list.AddLast(msg_tuple);
                    response_xml = xparser.cCreateXml(method_name, xarguments_list);
                    break;

                default:
                    break;
            }

            return response_xml;
        }