{"id":16950034,"url":"https://github.com/tailhook/paperjam","last_synced_at":"2025-04-11T20:35:45.002Z","repository":{"id":2973223,"uuid":"3988527","full_name":"tailhook/paperjam","owner":"tailhook","description":"Devices and commandline tools for zeromq and crossroads io","archived":false,"fork":false,"pushed_at":"2012-07-19T09:21:25.000Z","size":272,"stargazers_count":16,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-25T16:45:03.703Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tailhook.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2012-04-11T00:12:18.000Z","updated_at":"2016-03-18T19:08:33.000Z","dependencies_parsed_at":"2022-07-25T22:33:21.348Z","dependency_job_id":null,"html_url":"https://github.com/tailhook/paperjam","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tailhook%2Fpaperjam","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tailhook%2Fpaperjam/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tailhook%2Fpaperjam/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tailhook%2Fpaperjam/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tailhook","download_url":"https://codeload.github.com/tailhook/paperjam/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248477520,"owners_count":21110507,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-13T21:56:40.320Z","updated_at":"2025-04-11T20:35:44.977Z","avatar_url":"https://github.com/tailhook.png","language":"C","readme":"Paperjam\n========\n\nPaperjam is an implementation of \"devices\" for zeromq and crossroads.\n\n\nDependencies\n------------\n\nAny or both of the following:\n\n* libzmq\n* libxs\n\nBuild time dependencies:\n\n* coyaml_\n* libyaml_\n* python3_\n\n.. _coyaml: http://github.com/tailhook/coyaml\n.. _libyaml: http://pyyaml.org/wiki/LibYAML\n.. _python3: http://python.org\n\nCompiling\n---------\n\n::\n\n    ./waf configure --prefix=/usr\n    ./waf build\n    ./waf test\n    sudo ./waf install\n\nCommand-line Tools\n------------------\n\nThere are three binaries in the project:\n\npaperjam\n    Devices implementation, which uses YAMLy config (see below)\n\npjmonitor\n    Monitor for paperjam. It attaches to monitor sockets (if configured),\n    and shows everything sent inside device. Useful for debugging.\n\npjutil\n    Utility for sending and receiving messages from the command-line. Basic\n    usage is following:\n\n        pjutil --*lib* --*type* --connect *addr*\n\n    Where *lib* is either ``xs`` or ``zmq``. And *type* is one of the\n    socket types zeromq or crossroads support. Use ``--help`` to get a\n    full list of socket types.\n\n    *addr* can be any zeromq or crossroads address.  For example\n    ``tcp://127.0.0.1:1234``. The ``--connect`` option is repeatable and there\n    is also ``--bind`` option.\n\n    Every leftover arguments will be sent to the socket, if socket is writable.\n    Each argument is sent as a part of single multipart message. For the\n    ``rep`` and ``respondent`` sockets, those arguments will be replied for\n    each request from the socket. For other writable sockets the message will\n    be sent at the start.\n\n    All input messages will be printed one per line, quoted with double quotes\n    and space-separated.\n\n    Process with ``req`` socket type exits as soon as response comes.\n    ``push`` and ``pub`` processes exit as soon as message is put in OS\n    buffers (which basically means message is sent). All other modes are\n    left in the indefinite loop of listening and printing messages. You\n    can set maximum process running time for any socket type\n    with ``--timeout`` option.\n\n\nzmqpush, zmqpull, zmqreq, zmqrep, zmqpub, zmqsub, xspush, xspull, xsreq, xsrep, xspub, xssub, xssurveyor, xsrespondent\n    Aliases (symlinks) to pjutil, which are preconfigured for specific library\n    (libxs or libzmq) and socket type. Except skipping aformentioned arguments\n    they behave exactly as pjutil. Only supported combinations of library\n    and socket type are installed on the system.\n\n\nConfiguring Devices\n-------------------\n\nDefault configuration file is in ``/etc/paperjam.yaml``. It is normal YAML_\nfile with support of anchors and other nice things. Devices configured in\n``Devices`` section, which is mapping of devices, for example::\n\n    Devices:\n\n        opaque_name_of_device:\n\n            # socket where you should send request to\n            frontend: !zmq.Rep\n            - !Bind \"ipc:///tmp/frontend.sock\"\n\n            # socket which will really respond to requests\n            backend: !zmq.Rep\n            - !Connect \"tcp://10.0.0.1:10000\"\n\n            # socket which you can introspect traffic from\n            # it's optional\n            monitor: !zmq.Push\n            - !Bind \"ipc:///tmp/monitor.sock\"\n\nAll kinds of sockets and any combination of zmq vs xs sockets supported. We\nallow various combinations of patterns, for example to redirect traffic from\n'pull' socket to 'pub' one, but disable meaningless ones, like connecting 'rep'\nsocket to 'pull' one. We also hide all the gory details of ``XREP``/``XREQ``\nsockets and use ``Rep``/``Rep`` in config (however, we use ``X``-prefixed\nsockets internally to multiplex requests). All kinds of zmq and xs addresses\nare supported.\n\n.. _YAML: http://yaml.org\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftailhook%2Fpaperjam","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftailhook%2Fpaperjam","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftailhook%2Fpaperjam/lists"}