thrift-lib-0.1.0.1: Thrift/Protocol/Id.hs
{-
Copyright (c) Meta Platforms, Inc. and affiliates.
All rights reserved.
This source code is licensed under the BSD-style license found in the
LICENSE file in the root directory of this source tree.
-}
module Thrift.Protocol.Id
( withProxy
, ProtocolId
, binaryProtocolId
, compactProtocolId
) where
import Control.Exception
import Data.Proxy
import Foreign.C
import Thrift.Protocol
import Thrift.Protocol.Binary
import Thrift.Protocol.Compact
type ProtocolId = CUShort
binaryProtocolId :: ProtocolId
binaryProtocolId = 0
compactProtocolId :: ProtocolId
compactProtocolId = 2
withProxy :: ProtocolId -> (forall p . Protocol p => Proxy p -> IO a) -> IO a
withProxy i action
| i == binaryProtocolId = action (Proxy :: Proxy Binary)
| i == compactProtocolId = action (Proxy :: Proxy Compact)
| otherwise = throw $ ProtocolException $ "unknown protocol id: " ++ show i