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

Loading…
Cancel
Save