{-# OPTIONS_HADDOCK show-extensions #-} {- | Module : P2PRC Copyright : Copyright (C) 2024-2024 Jose Fernandes License : GNU GPL, version 2 or above Maintainer : Jose Fernandes Stability : beta Portability : portable This library provides an interface to the P2Prc runtime. This Module intends to export the main functions and data type definitions necessary to get started with the P2PRC api. A minimal application will require the import of 'runP2PRC' function that accepts a 'MapPortRequest' value that exposes a specific port number and associates it with a domain name in the internet. This is a small template to get quickly get started with this interface. We assume the user has already an application listening on the tcp socket "8080". > module Main where > > import P2PRC > ( runP2PRC > , MapPortRequest(MkMapPortRequest) > ) > > main :: IO () > main = > runP2PRC > ( MkMapPortRequest 8080 "jose.akilan.io" > ) -} module P2PRC ( -- * Functions {- | These are the available functions available to interact with the P2Prc environment, at a lower level of abstraction. It is intended this way to give freedom to the developer to implement their own orchestration strategies. -} runP2PRC , p2prcAPI -- * Data Types {- | This section describes and explains the library's type system, more specifically, the interfaces and primitive types. -} -- ** Interface data types -- | This section gives an overview on the runtime and host machine interfaces. , P2PRCapi(..) , P2PRCConfig(..) , MapPortRequest(..) , MapPortResponse(..) , P2PRCommands(..) -- ** Primitive data types -- | These types represent the core data that is communicated between requests and the runtime. , IPAddressTable(..) , ServerInfo(..) , IPAddress(..) , Error(..) -- ** Type Synonyms -- | This section is reserved to some useful type synonyms that add significant ergonomics. , IOEitherError ) where import Engine ( runP2PRC ) import JSON ( IPAddressTable(..) , ServerInfo(..) , IPAddress(..) , MapPortResponse(..) , P2PRCConfig(..) ) import API ( MapPortRequest(..) , P2PRCapi(..) , p2prcAPI , P2PRCommands(..) ) import Error ( Error(..) , IOEitherError )