Thank you for your reply!

I understand your meaning that we should reuse existing module as much as 
possible.

You mentioned that a job that isolate HTTP handing from core is under 
developing and
a experimental SPDY module exists.

Could I access this developing project? And I'm willing to join it. I have a 
completely idea
about implementing a SPDY module base on current architecture. 


Best regards,
Wheats



在 2013-4-17,下午8:03,Sonny Karlsson <[email protected]> 写道:

> On Wed, Apr 17, 2013 at 01:00:58PM +0800, Haomai Wang wrote:
>> I understand.
>> 
>> Could you provide with detailed demands about the limit to destroy current 
>> architecture?
>> Such as don't add new field to critical structure or don't modify Http 
>> module.
> 
> As edsiper suggested it would be best if a SPDY implementation was
> stand-alone to begin with.
> However, you should probably give thought to how an HTTP implementation
> can use the changes you introduce.
> For example, the current header handling can probably not be reused, but
> a rewritten mechanism should be able to work with both HTTP and SPDY.
> Having two separate implementations of every detail different in HTTP
> and SPDY is not recommended.
> 
>> 
>> I need some hard limitation and soft limitation to observe with developing 
>> SPDY module.
>> Because SPDY module is a large change to Monkey current architecture(the 
>> modification
>> on current architecture is inevitably) and I'm a newer to Monkey anddon't 
>> know the core
>> developer's *blueprint* about Monkey. I think I should know it and apply to 
>> develop.
> 
> There is work underway to isolate HTTP handling from the core in such a
> way that it will be easy to add a SPDY or HTTP 2.0 implementation.
> 
> I have a branch that will allow a SPDY module to use the event handling
> and transport (SSL) of the monkey core, without the need to change
> anything else.
> What have not been done yet are changes to the plugin interface needed
> to handle either SPDY or HTTP requests.
> The branch is very experimental and I don't think it accessible on
> git.monkey-project.com yet.
> 
> A SPDY implementation would receive notification of file descriptor
> events and act on them.
> It would need to parse requests, keep track of session and request data
> and of course answer with something.
> 
>> 
>> Thank you!
>> 
>> Best regards,
>> Wheats
>> 
>> 
>> 
>> 在 2013-4-17,上午12:06,Eduardo Silva <[email protected]> 写道:
>> 
>>> i have talked with other core developer last night about spdy stuff, we 
>>> will take care of the split of the http protocol and the layer to implement 
>>> SPDY, so your proposal should focus in understand the current monkey 
>>> architecture, how SDPY works , create a standalone server for demonstrative 
>>> purposes and then the merge of that into Monkey.
>>> 
>>> Btw, is good to mention that you have to assign the Copyright to Monkey 
>>> Project of all your work. We will keep the code public as GPL.
>>> 
>>> 
>>> On Mon, Apr 15, 2013 at 9:22 AM, Haomai Wang <[email protected]> wrote:
>>> I omit a detail that adding a new field called "request_id" to 
>>> session_request, and
>>> client_session manages all session_requests whch from the same file 
>>> description.
>>> 
>>> Best regards,
>>> Wheats
>>> 
>>> 
>>> 
>>> 在 2013-4-15,下午11:16,Haomai Wang <[email protected]> 写道:
>>> 
>>>>> 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
>>>> 
>>> 
>>> 
>>> 
>>> 
>>> -- 
>>> Eduardo Silva
>>> http://edsiper.linuxchile.cl
>>> http://www.monkey-project.com
>> 
> 
>> _______________________________________________
>> Monkey mailing list
>> [email protected]
>> http://lists.monkey-project.com/listinfo/monkey
> 
> 
> -- 
> Sonny Karlsson
> _______________________________________________
> Monkey mailing list
> [email protected]
> http://lists.monkey-project.com/listinfo/monkey

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

Reply via email to