#Universal Binary Format and Bert-RPC#
Copyright (c) 2011-2012 by Joseph Wayne Norton
Authors: Joseph Wayne Norton ([email protected]
).
This is UBF-BERTRPC, a framework for integrating UBF, EBF, and Bert-RPC. This repository depends on the UBF open source repository.
This repository is experimental in nature and intended for training purposes.
To download, build, and test the ubf_bertrpc application in one shot, please follow this recipe:
$ mkdir working-directory-name
$ cd working-directory-name
$ git clone https://github.com/ubf/ubf-bertrpc.git ubf_bertrpc
$ cd ubf_bertrpc
$ make deps clean compile test
For an alternative recipe with other "features" albeit more complex, please read further.
This README is a good first step.
The UBF User's Guide is the best next step. Check out http://ubf.github.com/ubf/ubf-user-guide.en.html for further detailed information.
Sample eunit tests can be found in the test/eunit directory.
UBF is the "Universal Binary Format", designed and implemented by Joe Armstrong. UBF is a language for transporting and describing complex data structures across a network. It has three components:
-
UBF(a) is a "language neutral" data transport format, roughly equivalent to well-formed XML.
-
UBF(b) is a programming language for describing types in UBF(a) and protocols between clients and servers. This layer is typically called the "protocol contract". UBF(b) is roughly equivalent to Verified XML, XML-schemas, SOAP and WDSL.
-
UBF(c) is a meta-level protocol used between a UBF client and a UBF server.
See http://ubf.github.com/ubf for further details.
Bert-RPC is a remote procedure call protocol. See http://bert-rpc.org/ for full details.
Bert-RPC is actually just a subset of UBF's binary network format implementation known as "EBF". The name "EBF" is short for "Erlang Binary Format".
-
Configure your e-mail and name for Git
$ git config \--global user.email "[email protected]" $ git config \--global user.name "Your Name"
-
Install Repo
$ mkdir -p ~/bin $ wget -O - https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo $ chmod a+x ~/bin/repo
-
Create working directory
$ mkdir working-directory-name $ cd working-directory-name $ repo init -u https://github.com/ubf/manifests.git -m ubf-bertrpc-default.xml
Note Your "Git" identity is needed during the init step. Please enter the name and email of your GitHub account if you have one. Team members having read-write access are recommended to use "repo init -u [email protected]:ubf/manifests.git -m ubf-bertrpc-default-rw.xml". Tip If you want to checkout the latest development version, please append " -b dev" to the repo init command. -
Download Git repositories
$ cd working-directory-name $ repo sync
For further information and help for related tools, please refer to the following links:
-
Erlang - http://www.erlang.org/
-
R13B04 or newer, R15B02 has been tested most recently
-
-
Git - http://git-scm.com/
-
Git 1.5.4 or newer, Git 1.8.0 has been tested most recently
-
required for Repo and GitHub
-
-
GitHub - https://github.com
-
Python - http://www.python.org
-
Python 2.4 or newer, Python 2.7.2 has been tested most recently (CAUTION: Python 3.x might be too new)
-
required for Repo
-
-
Get and install an erlang system http://www.erlang.org
-
Build
$ cd working-directory-name $ make compile
-
Run the unit tests
$ cd working-directory-name $ make eunit
-
Dialyzer Testing basic recipe
-
Build Dialyzer's PLT (required once)
$ cd working-directory-name $ make build-plt
Tip Check Makefile and dialyzer's documentation for further information. -
Dialyze with specs
$ cd working-directory-name $ make dialyze
Caution If you manually run dialyzer with the "-r" option, execute "make clean compile" first to avoid finding duplicate beam files underneath rebar's .eunit directory. Check Makefile for further information. -
Dialyze without specs
$ cd working-directory-name $ make dialyze-nospec
-
Many, many thanks to Joe Armstrong, UBF's designer and original implementer.
Gemini Mobile Technologies, Inc. has approved the release of this repository under an MIT license.
##Modules##
bert |
bert_driver |
ubf_bertrpc_plugin |