------------------------------------------------------------------------------
-- Ada Web Server --
-- --
-- Copyright (C) 2000-2013, AdaCore --
-- --
-- This library is free software; you can redistribute it and/or modify --
-- it under terms of the GNU General Public License as published by the --
-- Free Software Foundation; either version 3, or (at your option) any --
-- later version. This library is distributed in the hope that it will be --
-- useful, but WITHOUT ANY WARRANTY; without even the implied warranty of --
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. --
-- --
-- As a special exception under Section 7 of GPL version 3, you are --
-- granted additional permissions described in the GCC Runtime Library --
-- Exception, version 3.1, as published by the Free Software Foundation. --
-- --
-- You should have received a copy of the GNU General Public License and --
-- a copy of the GCC Runtime Library Exception along with this program; --
-- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see --
--
Virtual Hosting is activated but no virtual host match " & Status.Host (Request) & "
Please check your AWS Virtual Host configuration"); else return Dispatch (Dispatcher.Action.all, Request); end if; end Dispatch; -------------- -- Finalize -- -------------- overriding procedure Finalize (Dispatcher : in out Handler) is Ref_Counter : constant Natural := Dispatcher.Ref_Counter; begin Finalize (AWS.Dispatchers.Handler (Dispatcher)); if Ref_Counter = 1 then for Node of Dispatcher.Table loop if Node.Mode = Callback then Free (Node.Action); end if; end loop; Dispatcher.Table.Clear; Free (Dispatcher.Action); end if; end Finalize; ---------------- -- Initialize -- ---------------- overriding procedure Initialize (Dispatcher : in out Handler) is begin Initialize (AWS.Dispatchers.Handler (Dispatcher)); end Initialize; -------------- -- Register -- -------------- procedure Register (Dispatcher : in out Handler; Virtual_Hostname : String; Node : VH_Node) is begin Dispatcher.Table.Include (Virtual_Hostname, Node); end Register; procedure Register (Dispatcher : in out Handler; Virtual_Hostname : String; Hostname : String) is Node : constant VH_Node := (Host, To_Unbounded_String (Hostname)); begin Register (Dispatcher, Virtual_Hostname, Node); end Register; procedure Register (Dispatcher : in out Handler; Virtual_Hostname : String; Action : AWS.Dispatchers.Handler'Class) is Node : constant VH_Node := (Virtual_Host.Callback, new AWS.Dispatchers.Handler'Class'(Action)); begin Register (Dispatcher, Virtual_Hostname, Node); end Register; procedure Register (Dispatcher : in out Handler; Virtual_Hostname : String; Action : Response.Callback) is begin Register (Dispatcher, Virtual_Hostname, AWS.Dispatchers.Callback.Create (Action)); end Register; ------------------------------- -- Register_Default_Callback -- ------------------------------- procedure Register_Default_Callback (Dispatcher : in out Handler; Action : AWS.Dispatchers.Handler'Class) is begin if Dispatcher.Action /= null then Free (Dispatcher.Action); end if; Dispatcher.Action := new AWS.Dispatchers.Handler'Class'(Action); end Register_Default_Callback; ---------------- -- Unregister -- ---------------- procedure Unregister (Dispatcher : in out Handler; Virtual_Hostname : String) is begin Dispatcher.Table.Delete (Virtual_Hostname); end Unregister; end AWS.Services.Dispatchers.Virtual_Host;