SBE é uma apresentação OSI camada 6 para codificação e decodificação de mensagens binárias de aplicativos para aplicativos financeiros de baixa latência. Este repositório contém as implementações de referência em Java, C++, Golang, C# e Rust.
Mais detalhes sobre o design e uso do SBE podem ser encontrados no Wiki.
Um XSD para especificações SBE pode ser encontrado aqui. Por favor, dirija perguntas sobre as especificações à comunidade SBE FIX.
Para obter as informações e alterações da versão mais recente, consulte o Log de alterações com downloads no Maven Central.
As implementações Java e C++ SBE funcionam de forma muito eficiente com o sistema de mensagens Aeron para comunicações de baixa latência e alto rendimento. A implementação Java SBE depende do Agrona para suas implementações de buffer. O suporte comercial está disponível em [email protected].
Binários e informações de dependência para Maven, Ivy, Gradle e outros podem ser encontrados em http://search.maven.org.
Exemplo para Maven:
< dependency >
< groupId >uk.co.real-logic</ groupId >
< artifactId >sbe-all</ artifactId >
< version >${sbe.tool.version}</ version >
</ dependency >
Crie o projeto com Gradle usando este arquivo build.gradle.
Construção totalmente limpa:
$ ./gradlew
Execute os exemplos Java
$ ./gradlew runJavaExamples
Jars para o executável, fonte e javadoc para os vários módulos podem ser encontrados nos seguintes diretórios:
sbe-benchmarks/build/libs
sbe-samples/build/libs
sbe-tool/build/libs
sbe-all/build/libs
Um exemplo para executar um Jar a partir da linha de comando usando o jar 'all' que inclui a dependência Agrona:
java -Dsbe.generate.ir=true -Dsbe.target.language=Cpp -Dsbe.target.namespace=sbe -Dsbe.output.dir=include/gen -Dsbe.errorLog=yes -jar sbe-all/build/libs/sbe-all-${SBE_TOOL_VERSION}.jar my-sbe-messages.xml
NOTA: Linux, Mac OS e Windows apenas no momento. Consulte Perguntas frequentes. As compilações do Windows foram testadas com o Visual Studio Express 12.
Por conveniência, o script cppbuild
faz uma limpeza, compilação e teste completos de todos os destinos como uma compilação de versão.
$ ./cppbuild/cppbuild
Se você se sentir confortável usando o CMake, uma limpeza, construção e teste completos serão semelhantes a:
$ mkdir -p cppbuild/Debug
$ cd cppbuild/Debug
$ cmake ../..
$ cmake --build . --clean-first
$ ctest
Nota : A compilação C++ inclui o gerador C. Atualmente, o gerador C é um trabalho em andamento.
Primeiro construa usando Gradle para gerar o jar SBE e depois use-o para gerar o código golang para teste.
$ ./gradlew
$ ./gradlew generateGolangCodecs
Por conveniência no Linux, é fornecido um Makefile gnu que executa alguns testes e contém alguns exemplos.
$ cd gocode
# make # test, examples, bench
Go suporta a geração de estruturas Go com métodos de codificação/decodificação e flyweights como as outras linguagens. As estruturas são geradas por padrão para compatibilidade. Defina sbe.go.generate.generate.flyweights=true
para gerar flyweights.
Os usuários do código gerado pelo golang devem consultar a documentação do usuário.
Os desenvolvedores que desejam aprimorar o gerador golang devem consultar a documentação do desenvolvedor
Os usuários do código gerado pelo CSharp devem consultar a documentação do usuário.
Os desenvolvedores que desejam aprimorar o gerador CSharp devem consultar a documentação do desenvolvedor
O gerador SBE Rust produzirá caixas de ferrugem 100% seguras (nenhum código unsafe
será gerado). As caixas geradas não possuem nenhuma dependência de nenhuma biblioteca (incluindo nenhuma biblioteca SBE). Se você ainda não tem o Rust instalado, consulte Rust: Primeiros passos
Gere os codecs Rust
$ ./gradlew generateRustCodecs
Execute o teste Rust do Gradle
$ ./gradlew runRustTests
Ou execute o teste diretamente com Cargo
$ cd rust
$ cargo test
Direitos autorais 2013-2024 Real Logic Limited.
Direitos autorais 2017 MarketFactory Inc.
Licenciado sob a Licença Apache, Versão 2.0 (a "Licença"); você não pode usar este arquivo exceto em conformidade com a Licença. Você pode obter uma cópia da Licença em
https://www.apache.org/licenses/LICENSE-2.0
A menos que exigido pela lei aplicável ou acordado por escrito, o software distribuído sob a Licença é distribuído "COMO ESTÁ", SEM GARANTIAS OU CONDIÇÕES DE QUALQUER TIPO, expressas ou implícitas. Consulte a Licença para saber o idioma específico que rege as permissões e limitações da Licença.