hbs2/hbs2-peer/lib/HBS2/Peer/Proto/BrowserPlugin.hs

37 lines
915 B
Haskell

module HBS2.Peer.Proto.BrowserPlugin
( module HBS2.Peer.Proto.BrowserPlugin
, module HBS2.Net.Proto.Service
, PIPE
) where
import HBS2.Prelude.Plated
import HBS2.Net.Messaging.Pipe
import HBS2.Net.Proto.Service
import Data.ByteString.Lazy (ByteString)
import Codec.Serialise
data RpcChannelQuery
-- API definition
type BrowserPluginAPI = '[ RpcChannelQuery ]
data PluginMethod =
Get (Maybe Text) [(Text,Text)]
deriving stock Generic
instance Serialise PluginMethod
-- API endpoint definition
type instance Input RpcChannelQuery = PluginMethod
type instance Output RpcChannelQuery = Maybe ByteString
-- Codec for protocol
instance HasProtocol PIPE (ServiceProto BrowserPluginAPI PIPE) where
type instance ProtocolId (ServiceProto BrowserPluginAPI PIPE) = 3103959867
type instance Encoded PIPE = ByteString
decode = either (const Nothing) Just . deserialiseOrFail
encode = serialise