blob: 7467ba68b9fa7fdae0e2ac22160e941b056783a4 [file] [log] [blame]
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
<meta content="en-us" http-equiv="Content-Language" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="/static/images/favicon.ico" rel="shortcut icon" />
<link href="/static/css/style.css" rel="stylesheet" type="text/css" />
<link href="/static/css/codehilite.css" rel="stylesheet" type="text/css" />
<link href="/static/css/bootstrap.css" media="screen, projection" rel="stylesheet" type="text/css" />
<link href="/static/css/thrift.css" media="screen, projection" rel="stylesheet" type="text/css" />
<script src="/static/js/jquery.min.js"></script>
<script src="/static/js/bootstrap-dropdown.js"></script>
<script src="/static/js/bootstrap-tab.js"></script>
<script src="/static/js/thrift.js"></script>
<title>Apache Thrift - OCaml library</title>
</head>
<body>
<div class="navbar">
<div class="navbar-inner">
<div class="container">
<a class="brand" href="/">Apache Thrift &trade;</a>
<div class="nav-collapse">
<ul class="nav pull-right">
<li><a href="/download">Download</a></li>
<li><a href="/docs">Documentation</a></li>
<li><a href="/developers">Developers</a></li>
<li><a href="/lib">Libraries</a></li>
<li><a href="/tutorial">Tutorial</a></li>
<li><a href="/test">Test Suite</a></li>
<li><a href="/about">About</a></li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Apache <b class="caret"></b></a>
<ul class="dropdown-menu">
<li><a href="http://www.apache.org/" target="_blank">Apache Home</a></li>
<li><a href="http://www.apache.org/licenses/" target="_blank">Apache License v2.0</a></li>
<li><a href="http://www.apache.org/foundation/sponsorship.html" target="_blank">Donate</a></li>
<li><a href="http://www.apache.org/foundation/thanks.html" target="_blank">Thanks</a></li>
<li><a href="http://www.apache.org/security/" target="_blank">Security</a></li>
</ul>
</li>
</ul>
</div>
</div>
</div>
</div>
<div class="container">
<h1 id="library">Library</h1>
<p>The library abstract classes, exceptions, and general use functions
are mostly jammed in Thrift.ml (an exception being
TServer).</p>
<p>Generally, classes are used, however they are often put in their own
module along with other relevant types and functions. The classes
often called t, exceptions are called E.</p>
<p>Implementations live in their own files. There is TBinaryProtocol,
TSocket, TThreadedServer, TSimpleServer, and TServerSocket.</p>
<p>A note on making the library: Running make should create native, debug
code libraries, and a toplevel.</p>
<h2 id="struct-format">Struct format</h2>
<p>Structs are turned into classes. The fields are all option types and
are initially None. Write is a method, but reading is done by a
separate function (since there is no such thing as a static
class). The class type is t and is in a module with the name of the
struct.</p>
<h2 id="enum-format">enum format</h2>
<p>Enums are put in their own module along with
functions to_i and of_i which convert the ocaml types into ints. For
example:</p>
<p>enum Numberz
{
ONE = 1,
TWO,
THREE,
FIVE = 5,
SIX,
EIGHT = 8
}</p>
<p>==&gt;</p>
<p>module Numberz =
struct
type t =
| ONE
| TWO
| THREE
| FIVE
| SIX
| EIGHT</p>
<p>let of_i = …
let to_i = …
end</p>
<h2 id="typedef-format">typedef format</h2>
<p>Typedef turns into the type declaration:
typedef i64 UserId</p>
<p>==&gt;</p>
<p>type userid Int64.t</p>
<h2 id="exception-format">exception format</h2>
<p>The same as structs except that the module also has an exception type
E of t that is raised/caught.</p>
<p>For example, with an exception Xception,
raise (Xception.E (new Xception.t))
and
try
with Xception.E e -&gt; …</p>
<h2 id="list-format">list format</h2>
<p>Lists are turned into OCaml native lists.</p>
<h2 id="mapset-formats">Map/Set formats</h2>
<p>These are both turned into Hashtbl.t’s. Set values are bool.</p>
<h2 id="services">Services</h2>
<p>The client is a class “client” parametrized on input and output
protocols. The processor is a class parametrized on a handler. A
handler is a class inheriting the iface abstract class. Unlike other
implementations, client does not implement iface since iface functions
must take option arguments so as to deal with the case where a client
does not send all the arguments.</p>
<p class="snippet_footer">This page was generated by Apache Thrift's <strong>source tree docs</strong>:
<a href="https://gitbox.apache.org/repos/asf?p=thrift.git;a=blob;hb=HEAD;f=lib/ocaml/README.md">lib/ocaml/README.md</a>
</p>
</div>
<div class="container">
<hr>
<footer class="footer">
<div class="row">
<div class="span3">
<h3>Links</h3>
<ul class="unstyled">
<li><a href="/download">Download</a></li>
<li><a href="/developers">Developers</a></li>
<li><a href="/tutorial">Tutorials</a></li>
</ul>
<ul class="unstyled">
<li><a href="/sitemap">Sitemap</a></li>
</ul>
</div>
<div class="span3">
<h3>Get Involved</h3>
<ul class="unstyled">
<li><a href="/mailing">Mailing Lists</a></li>
<li><a href="http://issues.apache.org/jira/browse/THRIFT">Issue Tracking</a></li>
<li><a href="/docs/HowToContribute">How To Contribute</a></li>
</ul>
</div>
<div class="span6">
<a href="http://www.apache.org/"><img src="/static/images/feather.svg" onerror="this.src='/static/images/feather.png';this.onerror=null;" /></a>
Copyright &copy; 2024 <a href="http://www.apache.org/">Apache Software Foundation</a>.
Licensed under the <a href="http://www.apache.org/licenses/">Apache License v2.0</a>.
Apache, Apache Thrift, and the Apache feather logo are trademarks of The Apache Software Foundation.
</div>
</div>
</footer>
</div>
</body>
</html>