> It happen that for Monkey a client_session is identified by the file 
> descriptor number and always a specific connection can be looked up based on 
> that "primary key". In SPDY you have multiple streams in the same channel so 
> the thing is "how to identify each specific request/stream". Keep in mind 
> that Monkey is an async server so socket events can take place in different 
> parts so you must be able to identify and get the specific data for that 
> event.
Of course I know what is async server and what it means. 

Below I want to explain my understand of SPDY correspond to Monkey structure:
session: One TCP connection one session, correspond to client_session
stream: one session multi stream concurrently, correspond to session_request

When new connection accepted, new session created.
When new packet received, mk_conn_read() read from `socket` and started to 
parse it,
get stream id from SPDY packet and search the corresponding session_request. If 
not,
create new session_request and handle it, otherwise get session_request and 
handle it.

If SPDY packet is incomplete because one stream packet from break into two TCP
packet(Network issue) and we can save last incomplete session_request in 
client_session.
If new TCP packet received, we check whether incomplete session_request is 
existed.
Keep in mind that TCP connection guarantees packet ordering.

Is this exists problem about my thought of implementation? I like detailed 
example to refute
it.

Your reply is welcomed ASAP.

Best regards,
Wheats



在 2013-4-15,下午10:27,Eduardo Silva <[email protected]> 写道:

> 
> 
> 
> On Mon, Apr 15, 2013 at 7:08 AM, Haomai Wang <[email protected]> wrote:
> I don't understand your statement "the current core uses a client file 
> descriptor as primary key to identify a request".
> A TCP connection is shared by multi "requests" already exists in Http 1.1 and 
> SPDY only replace "request" by "stream".
> And SPDY is like pipelining HTTP requests which Monkey already supports.
> 
> 
> 
> It happen that for Monkey a client_session is identified by the file 
> descriptor number and always a specific connection can be looked up based on 
> that "primary key". In SPDY you have multiple streams in the same channel so 
> the thing is "how to identify each specific request/stream". Keep in mind 
> that Monkey is an async server so socket events can take place in different 
> parts so you must be able to identify and get the specific data for that 
> event.
> 
>  
> In the past few days, I reviewed SPDY Protocol - Draft 3 detailed and find 
> the most difficult thing is [1]how to integrate
>  SPDY to existing HTTP module. 
> 
> There exists two ways:
> 1. Insert SPDY module as a optional module into the request processing chain. 
> If so, SPDY module is only a gateway
>  to change SPDY request into HTTP request format. We can reduce effects on 
> other features and may be destroy
> Http module.
> 
> Request -> Is SPDY request -> yes -> SPDY module(process Control Frame) -> 
> Http module -> Services
>                                                                               
>                                                                               
>                   |
>                                       response        <------                 
> SPDY module             <----   Http module     <----   | 
> 
> 2. Build a completely SPDY supporting and ignore existing HTTP 
> implementation. 
> 
> 
> 
> that part requires to discuss more in detail.
>  
> 
> SPDY supports more features than HTTP such as server push, using common 
> headers, CREDENTIAL and SETTINGS.
> [2]Is need to modify plugin API to support?
> 
> Best regards,
> Wheats
> 
> 
> regards, 
> 
>  
> 
> 
> 在 2013-4-12,上午11:55,Eduardo Silva <[email protected]> 写道:
> 
>> indeed there are many changes to do, the current core uses a client file 
>> descriptor as primary key to identify a request, in SPDY many requests can 
>> exists under the same file descriptor, so that means a deep review of the 
>> stack and start thinking how to adapt the current design to be more 
>> protocol-agnostic without affect all features.
>> 
>> try to reach us on irc.freenode.net #monkey
>> 
>> regards,
>> 
>> 
>> -- 
>> Eduardo Silva
>> http://edsiper.linuxchile.cl
>> http://www.monkey-project.com
> 
> 
> 
> 
> -- 
> Eduardo Silva
> http://edsiper.linuxchile.cl
> http://www.monkey-project.com

_______________________________________________
Monkey mailing list
[email protected]
http://lists.monkey-project.com/listinfo/monkey

Reply via email to