chore: ⬆️ Vendor for new deps
This commit is contained in:
99
vendor/github.com/microsoft/go-mssqldb/rpc.go
generated
vendored
Normal file
99
vendor/github.com/microsoft/go-mssqldb/rpc.go
generated
vendored
Normal file
@@ -0,0 +1,99 @@
|
||||
package mssql
|
||||
|
||||
import (
|
||||
"encoding/binary"
|
||||
|
||||
"github.com/microsoft/go-mssqldb/msdsn"
|
||||
)
|
||||
|
||||
type procId struct {
|
||||
id uint16
|
||||
name string
|
||||
}
|
||||
|
||||
// parameter flags
|
||||
const (
|
||||
fByRevValue = 1
|
||||
fDefaultValue = 2
|
||||
fEncrypted = 8
|
||||
)
|
||||
|
||||
type param struct {
|
||||
Name string
|
||||
Flags uint8
|
||||
ti typeInfo
|
||||
buffer []byte
|
||||
tiOriginal typeInfo
|
||||
cipherInfo []byte
|
||||
}
|
||||
|
||||
// Most of these are not used, but are left here for reference.
|
||||
var (
|
||||
// sp_Cursor = procId{1, ""}
|
||||
// sp_CursorOpen = procId{2, ""}
|
||||
// sp_CursorPrepare = procId{3, ""}
|
||||
// sp_CursorExecute = procId{4, ""}
|
||||
// sp_CursorPrepExec = procId{5, ""}
|
||||
// sp_CursorUnprepare = procId{6, ""}
|
||||
// sp_CursorFetch = procId{7, ""}
|
||||
// sp_CursorOption = procId{8, ""}
|
||||
// sp_CursorClose = procId{9, ""}
|
||||
sp_ExecuteSql = procId{10, ""}
|
||||
|
||||
// sp_Prepare = procId{11, ""}
|
||||
// sp_PrepExec = procId{13, ""}
|
||||
// sp_PrepExecRpc = procId{14, ""}
|
||||
// sp_Unprepare = procId{15, ""}
|
||||
)
|
||||
|
||||
// http://msdn.microsoft.com/en-us/library/dd357576.aspx
|
||||
func sendRpc(buf *tdsBuffer, headers []headerStruct, proc procId, flags uint16, params []param, resetSession bool, encoding msdsn.EncodeParameters) (err error) {
|
||||
buf.BeginPacket(packRPCRequest, resetSession)
|
||||
writeAllHeaders(buf, headers)
|
||||
if len(proc.name) == 0 {
|
||||
var idswitch uint16 = 0xffff
|
||||
err = binary.Write(buf, binary.LittleEndian, &idswitch)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
err = binary.Write(buf, binary.LittleEndian, &proc.id)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
} else {
|
||||
err = writeUsVarChar(buf, proc.name)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
}
|
||||
err = binary.Write(buf, binary.LittleEndian, &flags)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
for _, param := range params {
|
||||
if err = writeBVarChar(buf, param.Name); err != nil {
|
||||
return
|
||||
}
|
||||
if err = binary.Write(buf, binary.LittleEndian, param.Flags); err != nil {
|
||||
return
|
||||
}
|
||||
err = writeTypeInfo(buf, ¶m.ti, (param.Flags&fByRevValue) != 0, encoding)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
err = param.ti.Writer(buf, param.ti, param.buffer, encoding)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
if (param.Flags & fEncrypted) == fEncrypted {
|
||||
err = writeTypeInfo(buf, ¶m.tiOriginal, false, encoding)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
if _, err = buf.Write(param.cipherInfo); err != nil {
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
return buf.FinishPacket()
|
||||
}
|
||||
Reference in New Issue
Block a user