Пример #1
0
        /// <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;
        }
Пример #2
0
        /// <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);
        }
Пример #3
0
        /// <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;
        }