Browse Source

Handle transaction callback error code

master
Denis Tereshkin 6 years ago
parent
commit
203b8c2d8d
  1. 38
      src/Broker/QuikBroker/Trans2QuikApi.hs

38
src/Broker/QuikBroker/Trans2QuikApi.hs

@ -1,5 +1,5 @@ @@ -1,5 +1,5 @@
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE DeriveDataTypeable #-}
{-# LANGUAGE OverloadedStrings #-}
module Broker.QuikBroker.Trans2QuikApi (
Trans2QuikApi(..),
@ -12,30 +12,30 @@ module Broker.QuikBroker.Trans2QuikApi ( @@ -12,30 +12,30 @@ module Broker.QuikBroker.Trans2QuikApi (
quikSendTransaction
) where
import Foreign
import Foreign.C.Types
import Foreign.C.String
import Foreign.Marshal.Array
import Control.Monad
import Control.Monad.Trans.Except
import Control.Error.Util
import Control.Monad.IO.Class
import System.Win32.DLL
import System.Win32.Types
import Codec.Text.IConv
import Control.Concurrent
import Control.Error.Util
import Control.Exception.Safe
import Data.IORef
import Data.Time.Clock
import Data.Time.Calendar
import Data.Ratio
import Data.Typeable
import Control.Monad
import Control.Monad.IO.Class
import Control.Monad.Trans.Except
import qualified Data.ByteString as BS
import qualified Data.ByteString.Lazy as BL
import Data.IORef
import Data.Ratio
import qualified Data.Set as S
import qualified Data.Text as T
import Data.Text.Encoding
import Data.Time.Calendar
import Data.Time.Clock
import Data.Typeable
import Foreign
import Foreign.C.String
import Foreign.C.Types
import Foreign.Marshal.Array
import System.Log.Logger
import Codec.Text.IConv
import System.Win32.DLL
import System.Win32.Types
type QuikErrorCode = LONG
@ -468,8 +468,10 @@ defaultTransactionReplyCb state transactionResult errorCode replyCode transId or @@ -468,8 +468,10 @@ defaultTransactionReplyCb state transactionResult errorCode replyCode transId or
maybecb <- hlTransactionCallback <$> readIORef state
case maybecb of
Just cb -> cb (transactionResult == ecSuccess) (toInteger transId) (toInteger orderNum)
Just cb -> cb ((transactionResult == ecSuccess) && (replyCode /= rcInsufficientFunds)) (toInteger transId) (toInteger orderNum)
Nothing -> return ()
where
rcInsufficientFunds = 4
defaultOrderCb :: IORef Quik -> LONG -> DWORD -> CLLong -> LPSTR -> LPSTR -> CDouble -> CLLong -> CDouble -> LONG -> LONG -> CIntPtr -> IO ()
defaultOrderCb state mode transId dnumber classCode secCode price balance value sell status desc = do

Loading…
Cancel
Save