Go-HEP/xrootd - Create a pure-Go client for XRootD
Description
Go-HEP is a set of libraries and applications allowing High Energy Physicists (HEP) to write efficient analysis code in the Go programming language.
Go brings the fast edit-compile-run cycle that interpreted language users know and the runtime efficiency that compiled languages users expect.
Go-HEP provides the needed HEP oriented packages on top of this concurrency-enabled language.
The Go-HEP project currently provides limited read access to ROOT files, the binary format that all LHC experiments use to store data. But Go-HEP is missing a pure-Go library to access to data repositories, something that is tackled by XRootD, a LGPL-licensed C++ library.
Tasks
The proposed project aims at implementing a pure-Go BSD-3 client library for XRootD. As the C++ XRootD library is licensed under LGPL, a fair amount of the proposed project work will involve reading the XRootD protocol specifications (PDF) without looking at the original C++ code.
We propose the following steps:
- implement the client/server initial handshake
- implement the client request format
- implement the server response format
- implement the following client requests:
ping,protocol,auth,bind,unbind,close,open,read,
- add tests and benchmarks (CPU, Mem, I/O) for each step
- leverage Go builtin features to make the XRootD client concurrent and scalable.
Expected results
Working command line client for XRootD (built on top of a clean API) that can read files served by a XRootD server.
Requirements
- Go
- git