[
https://issues.apache.org/jira/browse/GEODE-3074?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Galen O'Sullivan updated GEODE-3074:
------------------------------------
Description:
We want to make a [new client server
protocol|https://cwiki.apache.org/confluence/display/GEODE/New+Client+Server+Protocol]
that will make it much easier for new Geode clients to be implemented in other
languages.
To do this, we need a refactor of {{AcceptorImpl}} and {{ServerConnection}} to
allow the server to create new client protocol handler objects and run them
within the existing network / threading infrastructure.
As a first task, we can make a factory that creates instances of the new
subclasses of {{ServerConnection}} : {{NewClientServerConnection}} and
{{LegacyServerConnection}}. Then we can slowly refactor functionality from
{{ServerConnection}} into that which is common (such as handling shutdown,
stats, and interacting properly with selector or thread pool) and that which is
specific to the old client protocol.
This ticket will track the many subtasks of this effort.
TODO before the whole ticket is resolved:
* Have a look through the {{Command}}s and see what they do.
- Move transient flag methods and such down to {{LegacyServerConnection}}.
* Make sure we handle failure consistently.
* Make sure Event IDs and such are OK in the Cache.
- I think that using the public Region API will make this OK.
* Comm Buffers: can we use them? If so, use them; if not, pull down to
{{LegacyServerConnection}}.
* Socket receive and send sizes -- see `initStreams()` in `ServerConnection`.
Other things to think about:
* Make selector work with SSL.
* think about redesigning selector in case of an incomplete message being
received (buffer message -- I think there's currently a bug here).
was:
We want to make a [new client server
protocol|https://cwiki.apache.org/confluence/display/GEODE/New+Client+Server+Protocol]
that will make it much easier for new Geode clients to be implemented in other
languages.
To do this, we need a refactor of {{AcceptorImpl}} and {{ServerConnection}} to
allow the server to create new client protocol handler objects and run them
within the existing network / threading infrastructure.
As a first task, we can make a factory that creates instances of the new
subclasses of {{ServerConnection}} : {{NewClientServerConnection}} and
{{LegacyServerConnection}}. Then we can slowly refactor functionality from
{{ServerConnection}} into that which is common (such as handling shutdown,
stats, and interacting properly with selector or thread pool) and that which is
specific to the old client protocol.
This ticket will track the many subtasks of this effort.
> Integrate new client protocol into core
> ---------------------------------------
>
> Key: GEODE-3074
> URL: https://issues.apache.org/jira/browse/GEODE-3074
> Project: Geode
> Issue Type: New Feature
> Components: client/server
> Reporter: Galen O'Sullivan
>
> We want to make a [new client server
> protocol|https://cwiki.apache.org/confluence/display/GEODE/New+Client+Server+Protocol]
> that will make it much easier for new Geode clients to be implemented in
> other languages.
> To do this, we need a refactor of {{AcceptorImpl}} and {{ServerConnection}}
> to allow the server to create new client protocol handler objects and run
> them within the existing network / threading infrastructure.
> As a first task, we can make a factory that creates instances of the new
> subclasses of {{ServerConnection}} : {{NewClientServerConnection}} and
> {{LegacyServerConnection}}. Then we can slowly refactor functionality from
> {{ServerConnection}} into that which is common (such as handling shutdown,
> stats, and interacting properly with selector or thread pool) and that which
> is specific to the old client protocol.
> This ticket will track the many subtasks of this effort.
> TODO before the whole ticket is resolved:
> * Have a look through the {{Command}}s and see what they do.
> - Move transient flag methods and such down to {{LegacyServerConnection}}.
> * Make sure we handle failure consistently.
> * Make sure Event IDs and such are OK in the Cache.
> - I think that using the public Region API will make this OK.
> * Comm Buffers: can we use them? If so, use them; if not, pull down to
> {{LegacyServerConnection}}.
> * Socket receive and send sizes -- see `initStreams()` in `ServerConnection`.
> Other things to think about:
> * Make selector work with SSL.
> * think about redesigning selector in case of an incomplete message being
> received (buffer message -- I think there's currently a bug here).
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)