晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。 林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。 见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”(间隔 一作:隔绝) 既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。 南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。
|
Server : Apache System : Linux srv.rainic.com 4.18.0-553.47.1.el8_10.x86_64 #1 SMP Wed Apr 2 05:45:37 EDT 2025 x86_64 User : rainic ( 1014) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /usr/share/doc/fstrm-devel/ |
Upload File : |
[](https://travis-ci.org/farsightsec/fstrm) [](https://coveralls.io/r/farsightsec/fstrm?branch=master)
## Overview
This is `fstrm`, a C implementation of the Frame Streams data transport protocol.
Frame Streams is a light weight, binary clean protocol that allows for the transport of arbitrarily encoded data payload sequences with minimal framing overhead -- just four bytes per data frame. Frame Streams does not specify an encoding format for data frames and can be used with any data serialization format that produces byte sequences, such as [Protocol Buffers], [XML], [JSON], [MessagePack], [YAML], etc. Frame Streams can be used as both a streaming transport over a reliable byte stream socket (TCP sockets, TLS connections, `AF_UNIX` sockets, etc.) for data in motion as well as a file format for data at rest. A "Content Type" header identifies the type of payload being carried over an individual Frame Stream and allows cooperating programs to determine how to interpret a given sequence of data payloads.
`fstrm` is an optimized C implementation of Frame Streams that includes a fast, lockless circular queue implementation and exposes library interfaces for setting up a dedicated Frame Streams I/O thread and asynchronously submitting data frames for transport from worker threads. It was originally written to facilitate the addition of high speed binary logging to DNS servers written in C using the [dnstap] log format.
[Protocol Buffers]: https://developers.google.com/protocol-buffers/
[XML]: http://www.w3.org/TR/xml11/
[JSON]: http://www.json.org/
[MessagePack]: http://msgpack.org/
[YAML]: http://www.yaml.org/
[dnstap]: http://dnstap.info/
## Building
`fstrm` requires a C99 compiler and the `pkg-config` utility to be installed. If building from a distribution tarball, the following command should build, test, and install `fstrm`:
./configure && make && make check && make install
On platforms where the `pkg-config` utility is unavailable, .pc file installation can be disabled by passing `--without-pkgconfigdir` to `configure`.
If building from a git checkout, the `autotools` (`autoconf`, `automake`, `libtool`) must also be installed, and the build system must be bootstrapped by running the `autogen.sh` script:
./autogen.sh && ./configure && make && make check && make install
Reference programs `fstrm_capture`, `fstrm_dump`, and `fstrm_replay` are provided. In order to build `fstrm_capture`, the [libevent](http://libevent.org/) library must be installed. The option `--disable-programs` can be passed to `configure` to disable building these programs.
## Synopsis
Include the `fstrm` header file from your C source code:
#include <fstrm.h>
Compile your C source code. Add the output of the following command to your compile flags:
pkg-config --cflags libfstrm
Link your C project against the `libfstrm` library. Add the output of the following command to your link flags:
pkg-config --libs libfstrm
If using autotools to build your C project, the `PKG_CHECK_MODULES` macro can be used to detect the presence of `libfstrm` by adding the following line to your `configure.ac` file:
PKG_CHECK_MODULES([libfstrm], [libfstrm])
This will place compiler flags in the `libfstrm_CFLAGS` variable and linker flags in the `libfstrm_LIBS` variable. Read [more information here](https://www.flameeyes.eu/autotools-mythbuster/pkgconfig/pkg_check_modules.html) about the `PKG_CHECK_MODULES` macro.
## Documentation
See the [online Doxygen documentation here](http://farsightsec.github.io/fstrm/) for a detailed reference. This documentation can be built from the source tree by running:
make html
## Versioning
`fstrm` follows the [Semantic Versioning Specification](http://semver.org/).