{
    "content": [
        {
            "type": "text",
            "text": "# DBD::Gofer::Transport::stream (perldoc)\n\n## NAME\n\nDBD::Gofer::Transport::stream - DBD::Gofer transport for stdio streaming\n\n## SYNOPSIS\n\nDBI->connect('dbi:Gofer:transport=stream;url=ssh:username@host.example.com;dsn=dbi:...',...)\nor, enable by setting the DBIAUTOPROXY environment variable:\nexport DBIAUTOPROXY='dbi:Gofer:transport=stream;url=ssh:username@host.example.com'\n\n## DESCRIPTION\n\nWithout the \"url=\" parameter it launches a subprocess as\n\n## Sections\n\n- **NAME**\n- **SYNOPSIS**\n- **DESCRIPTION**\n- **PERSISTENCE**\n- **TO DO**\n- **AUTHOR**\n- **LICENCE AND COPYRIGHT**\n- **SEE ALSO**\n\nUse structuredContent.sections for detailed options, examples, and full documentation.\n"
        }
    ],
    "structuredContent": {
        "command": "DBD::Gofer::Transport::stream",
        "section": "",
        "mode": "perldoc",
        "summary": "DBD::Gofer::Transport::stream - DBD::Gofer transport for stdio streaming",
        "synopsis": "DBI->connect('dbi:Gofer:transport=stream;url=ssh:username@host.example.com;dsn=dbi:...',...)\nor, enable by setting the DBIAUTOPROXY environment variable:\nexport DBIAUTOPROXY='dbi:Gofer:transport=stream;url=ssh:username@host.example.com'",
        "tldr_summary": null,
        "tldr_examples": [],
        "tldr_source": null,
        "flags": [],
        "examples": [],
        "see_also": [],
        "section_outline": [
            {
                "name": "NAME",
                "lines": 2,
                "subsections": []
            },
            {
                "name": "SYNOPSIS",
                "lines": 6,
                "subsections": []
            },
            {
                "name": "DESCRIPTION",
                "lines": 27,
                "subsections": []
            },
            {
                "name": "PERSISTENCE",
                "lines": 7,
                "subsections": []
            },
            {
                "name": "TO DO",
                "lines": 6,
                "subsections": []
            },
            {
                "name": "AUTHOR",
                "lines": 2,
                "subsections": []
            },
            {
                "name": "LICENCE AND COPYRIGHT",
                "lines": 5,
                "subsections": []
            },
            {
                "name": "SEE ALSO",
                "lines": 4,
                "subsections": []
            }
        ],
        "sections": {
            "NAME": {
                "content": "DBD::Gofer::Transport::stream - DBD::Gofer transport for stdio streaming\n",
                "subsections": []
            },
            "SYNOPSIS": {
                "content": "DBI->connect('dbi:Gofer:transport=stream;url=ssh:username@host.example.com;dsn=dbi:...',...)\n\nor, enable by setting the DBIAUTOPROXY environment variable:\n\nexport DBIAUTOPROXY='dbi:Gofer:transport=stream;url=ssh:username@host.example.com'\n",
                "subsections": []
            },
            "DESCRIPTION": {
                "content": "Without the \"url=\" parameter it launches a subprocess as\n\nperl -MDBI::Gofer::Transport::stream -e runstdiohex\n\nand feeds requests into it and reads responses from it. But that's not very useful.\n\nWith a \"url=ssh:username@host.example.com\" parameter it uses ssh to launch the subprocess on a\nremote system. That's much more useful!\n\nIt gives you secure remote access to DBI databases on any system you can login to. Using ssh\nalso gives you optional compression and many other features (see the ssh manual for how to\nconfigure that and many other options via ~/.ssh/config file).\n\nThe actual command invoked is something like:\n\nssh -xq ssh:username@host.example.com bash -c $setup $run\n\nwhere $run is the command shown above, and $command is\n\n. .bashprofile 2>/dev/null || . .bashlogin 2>/dev/null || . .profile 2>/dev/null; exec \"$@\"\n\nwhich is trying (in a limited and fairly unportable way) to setup the environment (PATH,\nPERL5LIB etc) as it would be if you had logged in to that system.\n\nThe \"\"perl\"\" used in the command will default to the value of $^X when not using ssh. On most\nsystems that's the full path to the perl that's currently executing.\n",
                "subsections": []
            },
            "PERSISTENCE": {
                "content": "Currently gofer stream connections persist (remain connected) after all database handles have\nbeen disconnected. This makes later connections in the same process very fast.\n\nCurrently up to 5 different gofer stream connections (based on url) can persist. If more than 5\nare in the cache when a new connection is made then the cache is cleared before adding the new\nconnection. Simple but effective.\n",
                "subsections": []
            },
            "TO DO": {
                "content": "Document goperl attribute\n\nAutomatically reconnect (within reason) if there's a transport error.\n\nDecide on default for persistent connection - on or off? limits? ttl?\n",
                "subsections": []
            },
            "AUTHOR": {
                "content": "Tim Bunce, <http://www.tim.bunce.name>\n",
                "subsections": []
            },
            "LICENCE AND COPYRIGHT": {
                "content": "Copyright (c) 2007, Tim Bunce, Ireland. All rights reserved.\n\nThis module is free software; you can redistribute it and/or modify it under the same terms as\nPerl itself. See perlartistic.\n",
                "subsections": []
            },
            "SEE ALSO": {
                "content": "DBD::Gofer::Transport::Base\n\nDBD::Gofer\n",
                "subsections": []
            }
        }
    }
}