/// <summary> /// Creates and adds new route to route collection. /// </summary> /// <param name="description">Route description text.</param> /// <param name="pattern">Route pattern.</param> /// <param name="enabled">Specifies if route is enabled.</param> /// <param name="action">Route action.</param> /// <returns></returns> public Route Add(string description,string pattern,bool enabled,RouteActionBase action) { /* AddRoute <virtualServerID> "<routeID>" <cost> "<description>" "<pattern>" <enabled> <actionType> "<actionData>:base64" Responses: +OK -ERR <errorText> */ string id = Guid.NewGuid().ToString(); long cost = DateTime.Now.Ticks; // Call TCP AddRoute m_pVirtualServer.Server.TcpClient.TcpStream.WriteLine("AddRoute " + m_pVirtualServer.VirtualServerID + " " + TextUtils.QuoteString(id) + " " + cost + " " + TextUtils.QuoteString(description) + " " + TextUtils.QuoteString(pattern) + " " + enabled + " " + (int)action.ActionType + " " + Convert.ToBase64String(action.Serialize()) ); string response = m_pVirtualServer.Server.ReadLine(); if(!response.ToUpper().StartsWith("+OK")){ throw new Exception(response); } Route route = new Route(this,id,cost,description,pattern,enabled,action); m_pRoutes.Add(route); return route; }
/// <summary> /// Creates and adds new route to route collection. /// </summary> /// <param name="description">Route description text.</param> /// <param name="pattern">Route pattern.</param> /// <param name="enabled">Specifies if route is enabled.</param> /// <param name="action">Route action.</param> /// <returns></returns> public Route Add(string description, string pattern, bool enabled, RouteActionBase action) { /* AddRoute <virtualServerID> "<routeID>" <cost> "<description>" "<pattern>" <enabled> <actionType> "<actionData>:base64" * Responses: +OK * -ERR <errorText> */ string id = Guid.NewGuid().ToString(); long cost = DateTime.Now.Ticks; // Call TCP AddRoute m_pVirtualServer.Server.TcpClient.TcpStream.WriteLine("AddRoute " + m_pVirtualServer.VirtualServerID + " " + TextUtils.QuoteString(id) + " " + cost + " " + TextUtils.QuoteString(description) + " " + TextUtils.QuoteString(pattern) + " " + enabled + " " + (int)action.ActionType + " " + Convert.ToBase64String(action.Serialize()) ); string response = m_pVirtualServer.Server.ReadLine(); if (!response.ToUpper().StartsWith("+OK")) { throw new Exception(response); } Route route = new Route(this, id, cost, description, pattern, enabled, action); m_pRoutes.Add(route); return(route); }
/// <summary> /// Tries to save all changed values to server. Throws Exception if fails. /// </summary> public void Commit() { // Values haven't changed, so just skip saving. if (!m_ValuesChanged) { return; } /* UpdateRoute <virtualServerID> "<routeID>" <cost> "<description>" "<pattern>" <enabled> <actionType> "<actionData>:base64" * Responses: +OK * -ERR <errorText> */ // Call TCP UpdateRoute m_pOwner.VirtualServer.Server.TcpClient.TcpStream.WriteLine("UpdateRoute " + m_pOwner.VirtualServer.VirtualServerID + " " + TextUtils.QuoteString(m_ID) + " " + m_Cost + " " + TextUtils.QuoteString(m_Description) + " " + TextUtils.QuoteString(m_Pattern) + " " + m_Enabled + " " + (int)m_pAction.ActionType + " " + Convert.ToBase64String(m_pAction.Serialize()) ); string response = m_pOwner.VirtualServer.Server.ReadLine(); if (!response.ToUpper().StartsWith("+OK")) { throw new Exception(response); } m_ValuesChanged = false; }