[
https://issues.apache.org/jira/browse/HDFS-11106?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15706863#comment-15706863
]
James Clampffer commented on HDFS-11106:
----------------------------------------
Committed the first patch. The protobuf and hdfs.cc cleanup patch will come
shortly.
> libhdfs++: Some refactoring to better organize files
> ----------------------------------------------------
>
> Key: HDFS-11106
> URL: https://issues.apache.org/jira/browse/HDFS-11106
> Project: Hadoop HDFS
> Issue Type: Sub-task
> Components: hdfs-client
> Reporter: James Clampffer
> Assignee: James Clampffer
> Attachments: HDFS-11106.HDFS-8707.000.patch
>
>
> I propose splitting some of the files that have grown wild over time into
> files that align with more specific functionality. It's probably best to do
> this in a few pieces so it doesn't invalidate anyone's patches in progress.
> Here's what I have in mind, looking for feedback if 1) it's not worth doing
> for some reason 2) it will break your patch and you'd like this to wait. I'd
> also like to consolidate related functions, mostly protobuf helpers, that are
> spread around the library into dedicated files.
> Targets (can split each into a separate patch):
> * split hdfs.cc into hdfs.cc and hdfs_ext.cc. Already have a separate
> hdfs_ext.h for C bindings for libhdfs++ specific extensions so
> implementations of those that live in hdfs.cc would be moved out. Just makes
> things a little cleaner.
> * separate the implementation of operations from async shim code in files
> like filesystem.cc (make a filesystem_shims.cc). The shims are just
> boilerplate code that only need to change if the signature of their async
> counterparts change.
> * split apart various RPC code based on classes. Things like Request and
> RpcConnection get defined in rpc_engine.h and then implemented in a handful
> of files which get confusing to navigate e.g. why would one expect Request's
> implementation to be in rpc_connection.cc.
> * Move all of the protobuf<->C++ struct conversion helpers and protobuf wire
> serialization/deserialization functions into a single file. Gives us less
> protobuf header includes and less accidental duplication of these sorts of
> functions.
> * merge base64.cc into util.cc; base64.cc only contains a single utility
> function.
> * rename hdfs_public_api.h/cc to hdfs_ioservice.h/cc. Originally all of the
> implementation declarations of the public API classes like FileSystemImpl
> were going to live in here. Currently only the hdfs::IoServiceImpl lives in
> there and the other Impl classes have their own dedicated files.
> Like any refactoring some of it comes down to personal preferences. My hope
> is that by breaking these into smaller patches/commits relatively fast
> forward progress can be made on stuff everyone agrees while things that
> people are concerned about can be worked out in a way that satisfies everyone.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]