X-Git-Url: https://git.r.bdr.sh/rbdr/mobius/blobdiff_plain/d2810ae9038b057e8f18e8b495a57d8f96ae5be6..df1ade5433b027f9cb905e584921692313e647f5:/hotline/transaction.go diff --git a/hotline/transaction.go b/hotline/transaction.go index 04fb4b6..ece2924 100644 --- a/hotline/transaction.go +++ b/hotline/transaction.go @@ -6,7 +6,6 @@ import ( "fmt" "github.com/jhalter/mobius/concat" "math/rand" - "net" ) const ( @@ -32,6 +31,7 @@ const ( tranNotifyChatSubject = 119 tranSetChatSubject = 120 tranAgreed = 121 + tranServerBanner = 122 tranGetFileNameList = 200 tranDownloadFile = 202 tranUploadFile = 203 @@ -40,10 +40,10 @@ const ( tranGetFileInfo = 206 tranSetFileInfo = 207 tranMoveFile = 208 - tranMakeFileAlias = 209 // TODO: implement file alias command + tranMakeFileAlias = 209 tranDownloadFldr = 210 // tranDownloadInfo = 211 TODO: implement file transfer queue - // tranDownloadBanner = 212 TODO: figure out what this is used for + tranDownloadBanner = 212 tranUploadFldr = 213 tranGetUserNameList = 300 tranNotifyChangeUser = 301 @@ -131,29 +131,6 @@ func ReadTransaction(buf []byte) (*Transaction, int, error) { }, tranLen, nil } -func readN(conn net.Conn, n int) ([]Transaction, error) { - buf := make([]byte, 1400) - i := 0 - for { - readLen, err := conn.Read(buf) - if err != nil { - return nil, err - } - - transactions, _, err := readTransactions(buf[:readLen]) - // spew.Fdump(os.Stderr, transactions) - if err != nil { - return nil, err - } - - i += len(transactions) - - if n == i { - return transactions, nil - } - } -} - func readTransactions(buf []byte) ([]Transaction, int, error) { var transactions []Transaction @@ -214,7 +191,7 @@ func ReadFields(paramCount []byte, buf []byte) ([]Field, error) { return fields, nil } -func (t Transaction) MarshalBinary() (data []byte, err error) { +func (t *Transaction) MarshalBinary() (data []byte, err error) { payloadSize := t.Size() fieldCount := make([]byte, 2) @@ -238,7 +215,7 @@ func (t Transaction) MarshalBinary() (data []byte, err error) { } // Size returns the total size of the transaction payload -func (t Transaction) Size() []byte { +func (t *Transaction) Size() []byte { bs := make([]byte, 4) fieldSize := 0 @@ -251,7 +228,7 @@ func (t Transaction) Size() []byte { return bs } -func (t Transaction) GetField(id int) Field { +func (t *Transaction) GetField(id int) Field { for _, field := range t.Fields { if id == int(binary.BigEndian.Uint16(field.ID)) { return field