diff --git a/rados/rados.go b/rados/rados.go index eadad11..935bc24 100644 --- a/rados/rados.go +++ b/rados/rados.go @@ -7,6 +7,7 @@ import "C" import ( "fmt" + "unsafe" ) type RadosError int @@ -35,3 +36,19 @@ func NewConn() (*Conn, error) { return nil, RadosError(int(ret)) } } + +// NewConnWithUser creates a new connection object with a custom username. +// It returns the connection and an error, if any. +func NewConnWithUser(user string) (*Conn, error) { + c_user := C.CString(user) + defer C.free(unsafe.Pointer(c_user)) + + conn := &Conn{} + ret := C.rados_create(&conn.cluster, c_user) + + if ret == 0 { + return conn, nil + } else { + return nil, RadosError(int(ret)) + } +}