forked from quickfixgo/quickfix
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Logon.go
127 lines (105 loc) · 3.32 KB
/
Logon.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
package logon
import (
"time"
"github.com/quickfixgo/quickfix"
"github.com/quickfixgo/quickfix/field"
"github.com/quickfixgo/quickfix/fix40"
"github.com/quickfixgo/quickfix/tag"
)
//Logon is the fix40 Logon type, MsgType = A
type Logon struct {
fix40.Header
quickfix.Body
fix40.Trailer
//ReceiveTime is the time that this message was read from the socket connection
ReceiveTime time.Time
}
//FromMessage creates a Logon from a quickfix.Message instance
func FromMessage(m quickfix.Message) Logon {
return Logon{
Header: fix40.Header{Header: m.Header},
Body: m.Body,
Trailer: fix40.Trailer{Trailer: m.Trailer},
ReceiveTime: m.ReceiveTime,
}
}
//ToMessage returns a quickfix.Message instance
func (m Logon) ToMessage() quickfix.Message {
return quickfix.Message{
Header: m.Header.Header,
Body: m.Body,
Trailer: m.Trailer.Trailer,
ReceiveTime: m.ReceiveTime,
}
}
//New returns a Logon initialized with the required fields for Logon
func New(encryptmethod field.EncryptMethodField, heartbtint field.HeartBtIntField) (m Logon) {
m.Header = fix40.NewHeader()
m.Init()
m.Trailer.Init()
m.Header.Set(field.NewMsgType("A"))
m.Set(encryptmethod)
m.Set(heartbtint)
return
}
//A RouteOut is the callback type that should be implemented for routing Message
type RouteOut func(msg Logon, sessionID quickfix.SessionID) quickfix.MessageRejectError
//Route returns the beginstring, message type, and MessageRoute for this Message type
func Route(router RouteOut) (string, string, quickfix.MessageRoute) {
r := func(msg quickfix.Message, sessionID quickfix.SessionID) quickfix.MessageRejectError {
return router(FromMessage(msg), sessionID)
}
return "FIX.4.0", "A", r
}
//SetRawDataLength sets RawDataLength, Tag 95
func (m Logon) SetRawDataLength(v int) {
m.Set(field.NewRawDataLength(v))
}
//SetRawData sets RawData, Tag 96
func (m Logon) SetRawData(v string) {
m.Set(field.NewRawData(v))
}
//SetEncryptMethod sets EncryptMethod, Tag 98
func (m Logon) SetEncryptMethod(v int) {
m.Set(field.NewEncryptMethod(v))
}
//SetHeartBtInt sets HeartBtInt, Tag 108
func (m Logon) SetHeartBtInt(v int) {
m.Set(field.NewHeartBtInt(v))
}
//GetRawDataLength gets RawDataLength, Tag 95
func (m Logon) GetRawDataLength() (f field.RawDataLengthField, err quickfix.MessageRejectError) {
err = m.Get(&f)
return
}
//GetRawData gets RawData, Tag 96
func (m Logon) GetRawData() (f field.RawDataField, err quickfix.MessageRejectError) {
err = m.Get(&f)
return
}
//GetEncryptMethod gets EncryptMethod, Tag 98
func (m Logon) GetEncryptMethod() (f field.EncryptMethodField, err quickfix.MessageRejectError) {
err = m.Get(&f)
return
}
//GetHeartBtInt gets HeartBtInt, Tag 108
func (m Logon) GetHeartBtInt() (f field.HeartBtIntField, err quickfix.MessageRejectError) {
err = m.Get(&f)
return
}
//HasRawDataLength returns true if RawDataLength is present, Tag 95
func (m Logon) HasRawDataLength() bool {
return m.Has(tag.RawDataLength)
}
//HasRawData returns true if RawData is present, Tag 96
func (m Logon) HasRawData() bool {
return m.Has(tag.RawData)
}
//HasEncryptMethod returns true if EncryptMethod is present, Tag 98
func (m Logon) HasEncryptMethod() bool {
return m.Has(tag.EncryptMethod)
}
//HasHeartBtInt returns true if HeartBtInt is present, Tag 108
func (m Logon) HasHeartBtInt() bool {
return m.Has(tag.HeartBtInt)
}