Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support HAProxy socket type from init configuration #115

Closed
wants to merge 2 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,7 @@ Functions in table returned by `require("pgmoon")`:

Creates a new `Postgres` object from a configuration object. All fields are
optional unless otherwise stated. The newly created object will not
automatically connect, you must call `conect` after creating the object.
automatically connect, you must call `connect` after creating the object.

Available options:

Expand All @@ -122,7 +122,7 @@ Available options:
* `"ssl"`: enable ssl (default: `false`)
* `"ssl_verify"`: verify server certificate (default: `nil`)
* `"ssl_required"`: abort the connection if the server does not support SSL connections (default: `nil`)
* `"socket_type"`: the type of socket to use, one of: `"nginx"`, `"luasocket"`, `cqueues` (default: `"nginx"` if in nginx, `"luasocket"` otherwise)
* `"socket_type"`: the type of socket to use, one of: `"nginx"`, `"haproxy"`, `"luasocket"`, `"cqueues"` (default: `"nginx"` if in nginx, `"luasocket"` otherwise)
* `"application_name"`: set the name of the connection as displayed in `pg_stat_activity`. (default: `"pgmoon"`)
* `"pool"`: (OpenResty only) name of pool to use when using OpenResty cosocket (default: `"#{host}:#{port}:#{database}"`)
* `"pool_size"`: (OpenResty only) Passed directly to OpenResty cosocket connect function, [see docs](https://github.com/openresty/lua-nginx-module#tcpsockconnect)
Expand Down
3 changes: 2 additions & 1 deletion pgmoon-dev-1.rockspec
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@ package = "pgmoon"
version = "dev-1"

source = {
url = "git://github.com/leafo/pgmoon.git"
url = "git+https://github.com/mecampbellsoup/pgmoon.git",
tag = "luasocket-to-haproxy"
}

description = {
Expand Down
13 changes: 10 additions & 3 deletions pgmoon/socket.lua
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,14 @@ do
settimeout = true
}
luasocket = {
tcp = function(...)
local socket = require("socket")
local sock = socket.tcp(...)
tcp = function(socket_type, ...)
local sock
if socket_type == "haproxy" then
sock = core.tcp(...)
else
local socket = require("socket")
sock = socket.tcp(...)
end
local proxy = setmetatable({
sock = sock,
send = function(self, ...)
Expand Down Expand Up @@ -98,6 +103,8 @@ return {
socket = ngx.socket.tcp()
elseif "luasocket" == _exp_0 then
socket = luasocket.tcp()
elseif "haproxy" == _exp_0 then
socket = luasocket.tcp(socket_type)
elseif "cqueues" == _exp_0 then
socket = require("pgmoon.cqueues").CqueuesSocket()
else
Expand Down
12 changes: 9 additions & 3 deletions pgmoon/socket.moon
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,13 @@ luasocket = do
}

{
tcp: (...) ->
socket = require "socket"
sock = socket.tcp ...
tcp: (socket_type, ...) ->
local sock
if socket_type == "haproxy"
sock = core.tcp ...
else
socket = require "socket"
sock = socket.tcp ...
proxy = setmetatable {
:sock
send: (...) => @sock\send flatten ...
Expand Down Expand Up @@ -80,6 +84,8 @@ luasocket = do
ngx.socket.tcp!
when "luasocket"
luasocket.tcp!
when "haproxy"
luasocket.tcp(socket_type)
when "cqueues"
require("pgmoon.cqueues").CqueuesSocket!
else
Expand Down