常见问题-共通
- API基本上都需要SessionID,请问这个SessionID是从哪里可以得到?在那个API方法里传呢?
- 关于API的线程
- 登陆时,有哪些相关接口,调用时序是怎么样的?
- 关于错误码
- 多个API实例会相互影响吗?
- demo程序是用哪一版的VS创建的?
API基本上都需要SessionID,请问这个SessionID是从哪里可以得到?在那个API方法里传呢?
有API和Notify两个接口类,API是提供给上层App的调用接口,Notify相当于Spi,由上层App实现。 每一次调用认为是一个Session,有唯一的一个SessionID。 App调用API请求类接口时,传入SessionID指针,API会返回一个值。 当服务器应答数据回来时,API通过Notify接口把对应的SessionID和应答数据一同返回。
关于API的线程
API的工作线程有:
- 线程1:缓存数据查询请求与应答线程,例如合约、品种信息等
- 线程2:Socket接收线程,用于返回服务器的实时应答
- 线程3:关键操作日志记录线程
- 线程4:API日志记录线程
登陆时,有哪些相关接口,调用时序是怎么样的?
调用接口:
SetHostAddress
:用于设置服务器IP、端口Login
:填入用户名密码等信息,执行登陆
回调接口:
OnConnect
:已经于服务器建立连接(未登录)OnRspLogin
:如果errorCode为0,表示登陆成功,开始进行基础数据初始化;否则,返回错误原因,需重新登陆。OnAPIReady
:API基础数据初始化完成,可以进行业务接口调用
Application->TapAPI: SetHostAddress
Application->TapAPI: Login
TapAPI->Application: OnRspLogin
Note left of TapAPI: 如果登陆成功\n继续返回OnAPIReady
TapAPI->Application: OnAPIReady
关于错误码
易盛的接口返回的错误码分两类:
- 第一类是易盛自己的错误代码,只返回了错误代码,具体错误信息可以参考API文档或头文件
- 第二类是交易所的代码和错误信息
TODO: 添加详细解释(图)
多个API实例会相互影响吗?
除了日志通过同一个日志实例,记在同一个文件中,其他的没有影响
demo程序是用哪一版的VS创建的?
VS2012