Changeset 1102

Show
Ignore:
Timestamp:
06/23/08 22:02:51 (4 months ago)
Author:
kris
Message:

added support for a reserved per-thread workspace. Useful for customizing the Request to hold whatever additional app-specific stuff is needed

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/mango/net/http/server/HttpRequest.d

    r1083 r1102  
    5656        private HttpCookiesView         cookies; 
    5757        private StartLine               startLine; 
     58        private void[]                  workspace; 
    5859 
    5960        static private InvalidStateException InvalidState; 
     
    7980        **********************************************************************/ 
    8081 
    81         this (ServiceBridge bridge
     82        this (ServiceBridge bridge, uint reserved = 0
    8283        { 
    8384                super (bridge, null); 
     
    9798                // Cookie parser. This is a wrapper around the Headers 
    9899                cookies = new HttpCookiesView (getHeader); 
     100 
     101                // establish a per-request workspace? 
     102                if (reserved) 
     103                    workspace = new void [reserved]; 
    99104        } 
    100105 
     
    119124        } 
    120125         
     126        /********************************************************************** 
     127 
     128                Return the reserved space requested during construction. 
     129                This is a thread-safe place to stash application-specific 
     130                content, on a per request basis 
     131 
     132        **********************************************************************/ 
     133 
     134        void[] reserved () 
     135        { 
     136                return workspace; 
     137        } 
     138 
    121139        /********************************************************************** 
    122140 
  • trunk/mango/net/servlet/ServletProvider.d

    r1101 r1102  
    7070class ServletProvider : ServiceProvider 
    7171{ 
    72         private Logger                  log; 
    73         private QueuedCache             cache; 
    74         private HashMap                 contexts; 
    75         private ServletMapping[]        mappings; 
     72        private Logger                  log;            // log output 
     73        private QueuedCache             cache;          // url cache 
     74        private HashMap                 contexts;       // context set 
     75        private ServletMapping[]        mappings;       // regex->servlets 
     76        private uint                    reserved;       // request workspace 
    7677 
    7778        /********************************************************************** 
     
    8384        **********************************************************************/ 
    8485 
    85         this (Logger log, uint urls = 2048
     86        this (Logger log, uint urls = 2048, uint reserved=0
    8687        { 
    8788                assert (log); 
     
    9899                addContext (new ServletContext ("", log));  
    99100 
     101                // remember reserved space 
     102                this.reserved = reserved; 
     103 
    100104                // remember logger 
    101105                this.log = log; 
     
    110114        HttpRequest createRequest (ServiceBridge bridge) 
    111115        { 
    112                 return new ServletRequest(bridge); 
     116                return new ServletRequest (bridge, reserved); 
    113117        } 
    114118 
     
    121125        HttpResponse createResponse (ServiceBridge bridge) 
    122126        { 
    123                 return new ServletResponse(bridge); 
     127                return new ServletResponse (bridge); 
    124128        } 
    125129 
  • trunk/mango/net/servlet/ServletRequest.d

    r1072 r1102  
    4141        **********************************************************************/ 
    4242 
    43         this (ServiceBridge bridge
     43        this (ServiceBridge bridge, uint reserved
    4444        { 
    4545                // initialize the HttpRequest 
    46                 super (bridge); 
     46                super (bridge, reserved); 
    4747        } 
    4848 
     
    6565                // reset HttpRequest 
    6666                super.reset; 
     67        } 
     68 
     69        /********************************************************************** 
     70 
     71                Return the reserved space requested during construction. 
     72                This is a thread-safe place to stash application-specific 
     73                content, on a per request basis 
     74 
     75        **********************************************************************/ 
     76 
     77        void[] reserved () 
     78        { 
     79                return super.reserved; 
    6780        } 
    6881 
  • trunk/mango/net/servlet/model/IServletRequest.d

    r1072 r1102  
    143143 
    144144        char[] servletPath(); 
     145 
     146        /********************************************************************** 
     147 
     148                Return the reserved space requested during construction. 
     149                This is a thread-safe place to stash application-specific 
     150                content, on a per request basis 
     151 
     152        **********************************************************************/ 
     153 
     154        void[] reserved(); 
    145155}