From 533574d13895dd27929623516005060b3b50971b Mon Sep 17 00:00:00 2001 From: onthepeakofnormal Date: Fri, 16 Jun 2023 12:31:37 +0200 Subject: [PATCH 01/17] avoid loading stream module in other modules, so hint wont crash --- src/Sound/Tidal/Control.hs | 8 ++++---- src/Sound/Tidal/ID.hs | 5 ++++- src/Sound/Tidal/Stream.hs | 18 ++++++++---------- tidal.cabal | 2 +- 4 files changed, 17 insertions(+), 16 deletions(-) diff --git a/src/Sound/Tidal/Control.hs b/src/Sound/Tidal/Control.hs index 3e0e16250..475974eb5 100644 --- a/src/Sound/Tidal/Control.hs +++ b/src/Sound/Tidal/Control.hs @@ -29,7 +29,7 @@ import Data.Ratio import Sound.Tidal.Pattern import Sound.Tidal.Core -import Sound.Tidal.Stream (patternTimeID) +import Sound.Tidal.ID (patternTimeID) import Sound.Tidal.UI import qualified Sound.Tidal.Params as P import Sound.Tidal.Utils @@ -422,16 +422,16 @@ trigger = triggerWith id -- | (Alias @__qt__@) Quantise trigger. Aligns the start of the pattern -- with the next cycle boundary. For example, this pattern will fade in -- starting with the next cycle after the pattern is evaluated: --- +-- -- @ -- d1 $ qtrigger $ s "hh(5, 8)" # amp envL -- @ --- +-- -- Note that the pattern will start playing immediately. The /start/ of the -- pattern aligns with the next cycle boundary, but events will play before -- if the pattern has events at negative timestamps (which most loops do). -- These events can be filtered out, for example: --- +-- -- @ -- d1 $ qtrigger $ filterWhen (>= 0) $ s "hh(5, 8)" -- @ diff --git a/src/Sound/Tidal/ID.hs b/src/Sound/Tidal/ID.hs index 99827f736..b4296359e 100644 --- a/src/Sound/Tidal/ID.hs +++ b/src/Sound/Tidal/ID.hs @@ -1,4 +1,4 @@ -module Sound.Tidal.ID (ID(..)) where +module Sound.Tidal.ID (ID(..), patternTimeID) where {- ID.hs - Polymorphic pattern identifiers @@ -39,3 +39,6 @@ instance Num ID where instance IsString ID where fromString = ID + +patternTimeID :: String +patternTimeID = "_t_pattern" diff --git a/src/Sound/Tidal/Stream.hs b/src/Sound/Tidal/Stream.hs index 2397ee3d3..db8b187b3 100644 --- a/src/Sound/Tidal/Stream.hs +++ b/src/Sound/Tidal/Stream.hs @@ -200,7 +200,7 @@ defaultCps = 0.5625 -- Spawns a thread within Tempo that acts as the clock -- Spawns a thread that listens to and acts on OSC control messages startStream :: Config -> [(Target, [OSC])] -> IO Stream -startStream config oscmap +startStream config oscmap = do sMapMV <- newMVar Map.empty pMapMV <- newMVar Map.empty bussesMV <- newMVar [] @@ -219,7 +219,7 @@ startStream config oscmap u <- O.udp_socket (\sock sockaddr -> do N.setSocketOption sock N.Broadcast broadcast N.connect sock sockaddr ) (oAddress target) (oPort target) - return $ Cx {cxUDP = u, cxAddr = remote_addr, cxBusAddr = remote_bus_addr, cxTarget = target, cxOSCs = os} + return $ Cx {cxUDP = u, cxAddr = remote_addr, cxBusAddr = remote_bus_addr, cxTarget = target, cxOSCs = os} ) oscmap let bpm = (coerce defaultCps) * 60 * (cBeatsPerCycle config) abletonLink <- Link.create bpm @@ -249,7 +249,7 @@ startStream config oscmap sendHandshakes :: Stream -> IO () sendHandshakes stream = mapM_ sendHandshake $ filter (oHandshake . cxTarget) (sCxs stream) where sendHandshake cx = if (isJust $ sListen stream) - then + then do -- send it _from_ the udp socket we're listening to, so the -- replies go back there sendO False (sListen stream) cx $ O.Message "/dirt/handshake" [] @@ -290,7 +290,7 @@ toDatum (VB True) = O.int32 (1 :: Int) toDatum (VB False) = O.int32 (0 :: Int) toDatum (VX xs) = O.Blob $ O.blob_pack xs toDatum _ = error "toDatum: unhandled value" - + toData :: OSC -> Event ValueMap -> Maybe [O.Datum] toData (OSC {args = ArgList as}) e = fmap (fmap (toDatum)) $ sequence $ map (\(n,v) -> Map.lookup n (value e) <|> v) as toData (OSC {args = Named rqrd}) e @@ -362,7 +362,7 @@ toOSC busses pe osc@(OSC _ _) -- If there is already cps in the event, the union will preserve that. let extra = Map.fromList [("cps", (VF (coerce $! peCps pe))), ("delta", VF (T.addMicrosToOsc (peDelta pe) 0)), - ("cycle", VF (fromRational (peCycle pe))) + ("cycle", VF (fromRational (peCycle pe))) ] addExtra = Map.union playmap' extra ts = (peOnWholeOrPartOsc pe) + nudge -- + latency @@ -399,8 +399,6 @@ toOSC _ pe (OSCContext oscpath) ident = fromMaybe "unknown" $ Map.lookup "_id_" (value $ peEvent pe) >>= getS ts = (peOnWholeOrPartOsc pe) + nudge -- + latency -patternTimeID :: String -patternTimeID = "_t_pattern" -- Used for Tempo callback updatePattern :: Stream -> ID -> Time -> ControlPattern -> IO () @@ -431,7 +429,7 @@ processCps ops = mapM processEvent onPart <- (T.timeAtBeat ops) partStartBeat when (eventHasOnset e) (do let cps' = Map.lookup "cps" (value e) >>= getF - maybe (return ()) (\newCps -> (T.setTempo ops) ((T.cyclesToBeat ops) (newCps * 60)) on) $ coerce cps' + maybe (return ()) (\newCps -> (T.setTempo ops) ((T.cyclesToBeat ops) (newCps * 60)) on) $ coerce cps' ) off <- (T.timeAtBeat ops) offBeat bpm <- (T.getTempo ops) @@ -491,7 +489,7 @@ onSingleTick stream ops s pat = do -- If an exception occurs during sending, -- this functions prints a warning and continues, because -- the likely reason is that the backend (supercollider) isn't running. --- +-- -- If any exception occurs before or outside sending -- (e.g., while querying the pattern, while computing a message), -- this function prints a warning and resets the current pattern @@ -691,7 +689,7 @@ ctrlResponder waits c (stream@(Stream {sListen = Just sock})) -- Only report the first time.. when (null prev) $ verbose c $ "Connected to SuperDirt." return () - where + where bufferIndices [] = [] bufferIndices (x:xs') | x == (O.AsciiString $ O.ascii "&controlBusIndices") = catMaybes $ takeWhile isJust $ map O.datum_integral xs' | otherwise = bufferIndices xs' diff --git a/tidal.cabal b/tidal.cabal index cfd50aaec..c015d3cb9 100644 --- a/tidal.cabal +++ b/tidal.cabal @@ -1,7 +1,7 @@ cabal-version: 2.0 name: tidal -version: 1.9.4 +version: 1.9.5 synopsis: Pattern language for improvised music description: Tidal is a domain specific language for live coding patterns. homepage: http://tidalcycles.org/ From 477be66ce9a83517f529b7f395fd731ea9c96ea7 Mon Sep 17 00:00:00 2001 From: Martin <58735735+polymorphicengine@users.noreply.github.com> Date: Fri, 16 Jun 2023 12:35:51 +0200 Subject: [PATCH 02/17] Update tidal.cabal change the version back to 1.9.4 --- tidal.cabal | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tidal.cabal b/tidal.cabal index c015d3cb9..cfd50aaec 100644 --- a/tidal.cabal +++ b/tidal.cabal @@ -1,7 +1,7 @@ cabal-version: 2.0 name: tidal -version: 1.9.5 +version: 1.9.4 synopsis: Pattern language for improvised music description: Tidal is a domain specific language for live coding patterns. homepage: http://tidalcycles.org/ From 003c6d93ce8329b8bc2c7312bf7c54b1f3a46255 Mon Sep 17 00:00:00 2001 From: onthepeakofnormal Date: Sat, 17 Jun 2023 11:32:22 +0200 Subject: [PATCH 03/17] move to StreamTypes --- src/Sound/Tidal/Control.hs | 2 +- src/Sound/Tidal/ID.hs | 5 +---- src/Sound/Tidal/StreamTypes.hs | 3 +++ 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/Sound/Tidal/Control.hs b/src/Sound/Tidal/Control.hs index 475974eb5..578051799 100644 --- a/src/Sound/Tidal/Control.hs +++ b/src/Sound/Tidal/Control.hs @@ -29,7 +29,7 @@ import Data.Ratio import Sound.Tidal.Pattern import Sound.Tidal.Core -import Sound.Tidal.ID (patternTimeID) +import Sound.Tidal.StreamTypes (patternTimeID) import Sound.Tidal.UI import qualified Sound.Tidal.Params as P import Sound.Tidal.Utils diff --git a/src/Sound/Tidal/ID.hs b/src/Sound/Tidal/ID.hs index b4296359e..99827f736 100644 --- a/src/Sound/Tidal/ID.hs +++ b/src/Sound/Tidal/ID.hs @@ -1,4 +1,4 @@ -module Sound.Tidal.ID (ID(..), patternTimeID) where +module Sound.Tidal.ID (ID(..)) where {- ID.hs - Polymorphic pattern identifiers @@ -39,6 +39,3 @@ instance Num ID where instance IsString ID where fromString = ID - -patternTimeID :: String -patternTimeID = "_t_pattern" diff --git a/src/Sound/Tidal/StreamTypes.hs b/src/Sound/Tidal/StreamTypes.hs index c80cbac6d..6b4fa76ea 100644 --- a/src/Sound/Tidal/StreamTypes.hs +++ b/src/Sound/Tidal/StreamTypes.hs @@ -19,3 +19,6 @@ data TickState = TickState { tickNudge :: Double } deriving Show + +patternTimeID :: String +patternTimeID = "_t_pattern" From 8d5e789d84d3d9b64ab38557e1bef12022d1bdf8 Mon Sep 17 00:00:00 2001 From: polymorphicengine Date: Thu, 29 Jun 2023 13:55:51 +0200 Subject: [PATCH 04/17] change streamGetnow to factor in the processAhead and also destroy the sessionstate --- src/Sound/Tidal/Stream.hs | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/Sound/Tidal/Stream.hs b/src/Sound/Tidal/Stream.hs index db8b187b3..8aa239964 100644 --- a/src/Sound/Tidal/Stream.hs +++ b/src/Sound/Tidal/Stream.hs @@ -743,12 +743,16 @@ streamGetcps s = do let config = sConfig s ss <- Link.createAndCaptureAppSessionState (sLink s) bpm <- Link.getTempo ss + Link.destroySessionState ss return $! coerce $ bpm / (cBeatsPerCycle config) / 60 +getProcessAhead :: Stream -> Link.Micros +getProcessAhead str = round $ (cProcessAhead $ sConfig str) * 100000 + streamGetnow :: Stream -> IO Double -streamGetnow s = do - let config = sConfig s - ss <- Link.createAndCaptureAppSessionState (sLink s) - now <- Link.clock (sLink s) - beat <- Link.beatAtTime ss now (cQuantum config) - return $! coerce $ beat / (cBeatsPerCycle config) +streamGetnow str = do + ss <- Link.createAndCaptureAppSessionState (sLink str) + now <- Link.clock (sLink str) + beat <- Link.beatAtTime ss (now + (getProcessAhead str)) (cQuantum $! sConfig str) + Link.destroySessionState ss + return $ coerce $! beat / (cBeatsPerCycle $! sConfig str) From 0b45518453206dd22a29cea40043935edd844770 Mon Sep 17 00:00:00 2001 From: Martin <58735735+polymorphicengine@users.noreply.github.com> Date: Fri, 30 Jun 2023 10:16:15 +0200 Subject: [PATCH 05/17] Update Stream.hs rename to streamGetAhead and bring streamGetnow back in original version --- src/Sound/Tidal/Stream.hs | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/Sound/Tidal/Stream.hs b/src/Sound/Tidal/Stream.hs index 8aa239964..b9d6c2990 100644 --- a/src/Sound/Tidal/Stream.hs +++ b/src/Sound/Tidal/Stream.hs @@ -746,11 +746,20 @@ streamGetcps s = do Link.destroySessionState ss return $! coerce $ bpm / (cBeatsPerCycle config) / 60 +streamGetnow :: Stream -> IO Double +streamGetnow s = do + let config = sConfig s + ss <- Link.createAndCaptureAppSessionState (sLink s) + now <- Link.clock (sLink s) + beat <- Link.beatAtTime ss now (cQuantum config) + Link.destroySessionState ss + return $! coerce $ beat / (cBeatsPerCycle config) + getProcessAhead :: Stream -> Link.Micros getProcessAhead str = round $ (cProcessAhead $ sConfig str) * 100000 -streamGetnow :: Stream -> IO Double -streamGetnow str = do +streamGetAhead :: Stream -> IO Double +streamGetAhead str = do ss <- Link.createAndCaptureAppSessionState (sLink str) now <- Link.clock (sLink str) beat <- Link.beatAtTime ss (now + (getProcessAhead str)) (cQuantum $! sConfig str) From fe8069fe29081480feed455c5f4de3260127fe57 Mon Sep 17 00:00:00 2001 From: Bernard Gray Date: Thu, 14 Sep 2023 09:29:07 +1000 Subject: [PATCH 06/17] fix minor7sharp9 chord (the 9th wasn't sharp) tbf, it's a redundant chord (the sharp 9 is the same as a minor 3rd already in the chord), but if people are using it then it should be left in place --- src/Sound/Tidal/Chords.hs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Sound/Tidal/Chords.hs b/src/Sound/Tidal/Chords.hs index fec6c5870..d3c162a30 100644 --- a/src/Sound/Tidal/Chords.hs +++ b/src/Sound/Tidal/Chords.hs @@ -86,7 +86,7 @@ minor7sharp5 = [0,3,8,10] minor7flat9 :: Num a => [a] minor7flat9 = [0,3,7,10,13] minor7sharp9 :: Num a => [a] -minor7sharp9 = [0,3,7,10,14] +minor7sharp9 = [0,3,7,10,15] diminished7 :: Num a => [a] diminished7 = [0,3,6,9] minor9 :: Num a => [a] From cd1fa4f98255595dc99ba5d95f69a39a61e3facc Mon Sep 17 00:00:00 2001 From: Alex McLean Date: Wed, 11 Oct 2023 08:58:20 +0100 Subject: [PATCH 07/17] bump primitive to 0.10 (metadata already updated on hackage) --- tidal.cabal | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tidal.cabal b/tidal.cabal index cfd50aaec..d7a84a475 100644 --- a/tidal.cabal +++ b/tidal.cabal @@ -63,7 +63,7 @@ library , bytestring < 0.12 , clock < 0.9 , deepseq >= 1.1.0.0 - , primitive < 0.9 + , primitive < 0.10 , random < 1.3 , exceptions < 0.11 , mtl >= 2.2 From da4cc4820486875bf6c62336071a4750bb4a91dc Mon Sep 17 00:00:00 2001 From: alex Date: Mon, 16 Oct 2023 09:10:02 +0100 Subject: [PATCH 08/17] fix outdated dependencies, ref #1044 --- tidal.cabal | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tidal.cabal b/tidal.cabal index d7a84a475..b90bd9377 100644 --- a/tidal.cabal +++ b/tidal.cabal @@ -53,14 +53,14 @@ library Paths_tidal Build-depends: base >=4.8 && <5 - , containers < 0.7 + , containers < 0.8 , colour < 2.4 , hosc >= 0.20 && < 0.21 - , text < 2.1 + , text < 2.2 , parsec >= 3.1.12 && < 3.2 , network < 3.2 , transformers >= 0.5 && < 0.7 - , bytestring < 0.12 + , bytestring < 0.13 , clock < 0.9 , deepseq >= 1.1.0.0 , primitive < 0.10 From b2161fb319a8b2721fff5e7dbe6cae9bcbb6e74f Mon Sep 17 00:00:00 2001 From: miranda Date: Thu, 26 Oct 2023 09:00:43 +0300 Subject: [PATCH 09/17] add metatune param --- bin/generate-params.hs | 1 + src/Sound/Tidal/Params.hs | 15 +++++++++++++++ 2 files changed, 16 insertions(+) diff --git a/bin/generate-params.hs b/bin/generate-params.hs index 95c43c461..587459960 100755 --- a/bin/generate-params.hs +++ b/bin/generate-params.hs @@ -178,6 +178,7 @@ genericParams = [ ("f", "loop", "loops the sample (from `begin` to `end`) the specified number of times."), ("f", "lophat", ""), ("f", "lsnare", ""), + ("f", "metatune", "A pattern of numbers. Specifies whether the pitch of played samples should be tuned relative to their pitch metadata, if it exists. When set to 1, pitch metadata is applied. When set to 0, pitch metadata is ignored."), ("note", "n", "The note or sample number to choose for a synth or sampleset"), ("note", "note", "The note or pitch to play a sound or synth with"), ("f", "degree", ""), diff --git a/src/Sound/Tidal/Params.hs b/src/Sound/Tidal/Params.hs index ea6999e77..cd229dbfd 100644 --- a/src/Sound/Tidal/Params.hs +++ b/src/Sound/Tidal/Params.hs @@ -1630,6 +1630,21 @@ lsnarebus busid pat = (pF "lsnare" pat) # (pI "^lsnare" busid) lsnarerecv :: Pattern Int -> ControlPattern lsnarerecv busid = pI "^lsnare" busid +-- | A pattern of numbers. Specifies whether the pitch of played samples should be tuned relative to their pitch metadata, if it exists. When set to 1, pitch metadata is applied. When set to 0, pitch metadata is ignored. +metatune :: Pattern Double -> ControlPattern +metatune = pF "metatune" +metatuneTake :: String -> [Double] -> ControlPattern +metatuneTake name xs = pStateListF "metatune" name xs +metatuneCount :: String -> ControlPattern +metatuneCount name = pStateF "metatune" name (maybe 0 (+1)) +metatuneCountTo :: String -> Pattern Double -> Pattern ValueMap +metatuneCountTo name ipat = innerJoin $ (\i -> pStateF "metatune" name (maybe 0 ((`mod'` i) . (+1)))) <$> ipat + +metatunebus :: Pattern Int -> Pattern Double -> ControlPattern +metatunebus busid pat = (pF "metatune" pat) # (pI "^metatune" busid) +metatunerecv :: Pattern Int -> ControlPattern +metatunerecv busid = pI "^metatune" busid + -- | midibend :: Pattern Double -> ControlPattern midibend = pF "midibend" From 8e55a88c36fce499ccf796af7581fabee50b1afa Mon Sep 17 00:00:00 2001 From: mitchmindtree Date: Wed, 28 Jun 2023 18:53:45 +1000 Subject: [PATCH 10/17] Fix nix build for Tidal 2.0 (include hosc 0.20). Update nixpkgs input. This resolves the nix build issue encountered at https://github.com/tidalcycles/Tidal/pull/1022, mentioned in https://github.com/tidalcycles/Tidal/pull/1022#issuecomment-1608125266. Namely, as Tidal 2.0 requires `hosc` `0.20` but nixpkgs currently only provides `0.19.1`, we temporarily include `hosc` `0.20` directly from its source. This commit also updates the nixpkgs pin to the latest version while we're at it. --- flake.lock | 48 ++++++++++++++++++++++++++++++++++++++++++------ flake.nix | 9 +++++++++ 2 files changed, 51 insertions(+), 6 deletions(-) diff --git a/flake.lock b/flake.lock index 090f8fa7f..1070cd5e9 100644 --- a/flake.lock +++ b/flake.lock @@ -1,12 +1,29 @@ { "nodes": { + "hosc": { + "flake": false, + "locked": { + "lastModified": 1669944828, + "narHash": "sha256-cHEf0yEiwNnEpDj7SSQWRMUEAT5USHuuUCPuzOXHWrk=", + "owner": "rd--", + "repo": "hosc", + "rev": "e77aa67cd0b99a32498fef246a687ba443c9b4be", + "type": "github" + }, + "original": { + "owner": "rd--", + "repo": "hosc", + "rev": "e77aa67cd0b99a32498fef246a687ba443c9b4be", + "type": "github" + } + }, "nixpkgs": { "locked": { - "lastModified": 1667629849, - "narHash": "sha256-P+v+nDOFWicM4wziFK9S/ajF2lc0N2Rg9p6Y35uMoZI=", + "lastModified": 1687807295, + "narHash": "sha256-7TUD0p0m4mZpIi1O+Cyk5NCqpJUnhv/CJOAuHOndjao=", "owner": "nixos", "repo": "nixpkgs", - "rev": "3bacde6273b09a21a8ccfba15586fb165078fb62", + "rev": "6b3d1b1cf13f407fef5e634b224d575eb7211975", "type": "github" }, "original": { @@ -18,17 +35,36 @@ }, "root": { "inputs": { + "hosc": "hosc", "nixpkgs": "nixpkgs", "utils": "utils" } }, + "systems": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, "utils": { + "inputs": { + "systems": "systems" + }, "locked": { - "lastModified": 1667395993, - "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", + "lastModified": 1687709756, + "narHash": "sha256-Y5wKlQSkgEK2weWdOu4J3riRd+kV/VCgHsqLNTTWQ/0=", "owner": "numtide", "repo": "flake-utils", - "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", + "rev": "dbabf0ca0c0c4bce6ea5eaf65af5cb694d2082c7", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index fe2d0e36a..8ef683114 100644 --- a/flake.nix +++ b/flake.nix @@ -23,6 +23,14 @@ inputs = { utils.url = "github:numtide/flake-utils"; nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; + # Temporarily add `hosc` at the latest v0.20 commit + # (nixpkgs currently only has 0.19.1). + # See this comment for details: + # https://github.com/tidalcycles/Tidal/pull/1022#issuecomment-1610978403 + hosc = { + url = "github:rd--/hosc?rev=e77aa67cd0b99a32498fef246a687ba443c9b4be"; + flake = false; + }; }; outputs = inputs: let @@ -38,6 +46,7 @@ mkPackages = pkgs: let project = pkgs.haskellPackages.extend (pkgs.haskell.lib.compose.packageSourceOverrides { + hosc = inputs.hosc; # Remove once `hosc` is at 0.20 in nixpkgs. tidal = ./.; tidal-link = ./tidal-link; tidal-listener = ./tidal-listener; From f878aad809b8501433a867acfca72327e33bcab8 Mon Sep 17 00:00:00 2001 From: Jesse Selover Date: Fri, 23 Jun 2023 20:11:06 +0200 Subject: [PATCH 11/17] Fix tidal-listener build options, and add it to the stack build too. --- stack.yaml | 1 + tidal-listener/tidal-listener.cabal | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/stack.yaml b/stack.yaml index f7359b5af..b12824c46 100644 --- a/stack.yaml +++ b/stack.yaml @@ -3,6 +3,7 @@ resolver: lts-20.5 packages: - '.' - 'tidal-parse' + - 'tidal-listener' - 'tidal-link' extra-deps: diff --git a/tidal-listener/tidal-listener.cabal b/tidal-listener/tidal-listener.cabal index 77dee66a2..75ef2bfe4 100644 --- a/tidal-listener/tidal-listener.cabal +++ b/tidal-listener/tidal-listener.cabal @@ -33,7 +33,7 @@ library default-language: Haskell2010 ghc-options: -threaded -Wall - -dynamic + -dynamic-too -- see: https://github.com/haskell-hint/hint/issues/156 From 3179c11a765dd70cb3613e945529beb288601dcf Mon Sep 17 00:00:00 2001 From: Jesse Selover Date: Fri, 23 Jun 2023 20:41:34 +0200 Subject: [PATCH 12/17] Bump action versions in workflows for nix-build and build-listener-windows. --- .github/workflows/listener-build-windows.yml | 2 +- .github/workflows/nix.yml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/listener-build-windows.yml b/.github/workflows/listener-build-windows.yml index 1ee1b6bdb..6b54908d7 100644 --- a/.github/workflows/listener-build-windows.yml +++ b/.github/workflows/listener-build-windows.yml @@ -16,7 +16,7 @@ jobs: uses: actions/checkout@v2 - name: Setup Haskell - uses: haskell/actions/setup@v1 + uses: haskell/actions/setup@v2 id: setup-haskell-cabal with: ghc-version: ${{ matrix.ghc }} diff --git a/.github/workflows/nix.yml b/.github/workflows/nix.yml index b761710b4..e608b9dfb 100644 --- a/.github/workflows/nix.yml +++ b/.github/workflows/nix.yml @@ -22,7 +22,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2.4.0 - - uses: cachix/install-nix-action@v16 + - uses: cachix/install-nix-action@v22 with: nix_path: nixpkgs=channel:nixos-unstable - run: nix fmt -- --check ./ @@ -36,7 +36,7 @@ jobs: runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v2.4.0 - - uses: cachix/install-nix-action@v16 + - uses: cachix/install-nix-action@v22 with: nix_path: nixpkgs=channel:nixos-unstable - run: nix build --print-build-logs --no-update-lock-file .#${{ matrix.package }} From aab0ff2b9dc1a961514137ec66620f5f4570c2dc Mon Sep 17 00:00:00 2001 From: Jesse Selover Date: Mon, 26 Jun 2023 14:45:38 +0200 Subject: [PATCH 13/17] Don't build dynamic libraries for tidal-listener on Windows. --- tidal-listener/tidal-listener.cabal | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/tidal-listener/tidal-listener.cabal b/tidal-listener/tidal-listener.cabal index 75ef2bfe4..464d8caa8 100644 --- a/tidal-listener/tidal-listener.cabal +++ b/tidal-listener/tidal-listener.cabal @@ -33,8 +33,9 @@ library default-language: Haskell2010 ghc-options: -threaded -Wall - -dynamic-too -- see: https://github.com/haskell-hint/hint/issues/156 + if !os(windows) + ghc-options: -dynamic-too executable tidal-listener @@ -46,5 +47,6 @@ executable tidal-listener default-language: Haskell2010 ghc-options: -threaded -Wall - -dynamic -- see: https://github.com/haskell-hint/hint/issues/156 + if !os(windows) + ghc-options: -dynamic-too From ed32bc55d92d9ee360c0fbcba85c24f21ba34a72 Mon Sep 17 00:00:00 2001 From: alex Date: Sat, 2 Dec 2023 21:54:05 +0000 Subject: [PATCH 14/17] Lower bounds for criterion for benchmarks --- tidal.cabal | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tidal.cabal b/tidal.cabal index b90bd9377..4556998a4 100644 --- a/tidal.cabal +++ b/tidal.cabal @@ -116,7 +116,7 @@ benchmark bench-speed Tidal.Inputs build-depends: base == 4.* - , criterion + , criterion >= 1.6.3.0 , tidal ghc-options: -Wall From 3a6a0640db2fd4663419e3ab5d4868145260ff98 Mon Sep 17 00:00:00 2001 From: Alex McLean Date: Fri, 15 Dec 2023 17:04:58 +0000 Subject: [PATCH 15/17] update to latest link library --- tidal-link/link/.appveyor.yml | 25 +- tidal-link/link/Ableton Link Guidelines.pdf | Bin 0 -> 291991 bytes tidal-link/link/AbletonLinkConfig.cmake | 5 + tidal-link/link/CMakeLists.txt | 6 +- tidal-link/link/README.md | 2 +- tidal-link/link/ci/build.py | 0 tidal-link/link/ci/check-formatting.py | 0 tidal-link/link/ci/configure.py | 0 tidal-link/link/ci/run-tests.py | 0 tidal-link/link/ci/run_valgrind_tests.sh | 0 .../cmake_include/ConfigureCompileFlags.cmake | 4 +- tidal-link/link/examples/CMakeLists.txt | 8 +- tidal-link/link/examples/esp32/.gitignore | 1 + .../examples/esp32/main/idf_component.yml | 17 + tidal-link/link/examples/esp32/main/main.cpp | 44 +- .../link/examples/esp32/sdkconfig.defaults | 2 + .../link/extensions/abl_link/abl_link.cmake | 4 - tidal-link/link/include/CMakeLists.txt | 7 +- tidal-link/link/include/ableton/Link.ipp | 32 +- .../asio/Util.hpp => discovery/AsioTypes.hpp} | 27 +- .../ableton/discovery/InterfaceScanner.hpp | 6 +- .../{IpV4Interface.hpp => IpInterface.hpp} | 35 +- .../NetworkByteStreamSerializable.hpp | 2 +- .../include/ableton/discovery/Payload.hpp | 5 + .../include/ableton/discovery/PeerGateway.hpp | 8 +- .../ableton/discovery/PeerGateways.hpp | 27 +- .../include/ableton/discovery/Service.hpp | 2 +- .../ableton/discovery/UdpMessenger.hpp | 54 +- .../ableton/discovery/test/Interface.hpp | 20 +- .../include/ableton/discovery/test/Socket.hpp | 20 +- .../link/include/ableton/link/Controller.hpp | 15 +- .../link/include/ableton/link/Gateway.hpp | 2 +- .../link/include/ableton/link/Measurement.hpp | 22 +- .../ableton/link/MeasurementEndpointV4.hpp | 12 +- .../ableton/link/MeasurementEndpointV6.hpp | 75 + .../ableton/link/MeasurementService.hpp | 6 +- .../link/include/ableton/link/PeerState.hpp | 24 +- .../link/include/ableton/link/Peers.hpp | 14 +- .../include/ableton/link/PingResponder.hpp | 12 +- .../include/ableton/link/SessionState.hpp | 1 + .../link/include/ableton/platforms/Config.hpp | 20 +- .../ableton/platforms/asio/AsioTimer.hpp | 15 +- .../ableton/platforms/asio/AsioWrapper.hpp | 18 +- .../ableton/platforms/asio/Context.hpp | 100 +- .../asio/LockFreeCallbackDispatcher.hpp | 4 +- .../include/ableton/platforms/asio/Socket.hpp | 40 +- .../ableton/platforms/darwin/Clock.hpp | 3 + .../ableton/platforms/esp32/Context.hpp | 101 +- .../ableton/platforms/esp32/ScanIpIfAddrs.hpp | 6 +- .../include/ableton/platforms/linux/Clock.hpp | 8 +- .../ableton/platforms/linux/ThreadFactory.hpp | 4 +- .../ableton/platforms/posix/ScanIpIfAddrs.hpp | 48 +- .../platforms/windows/ScanIpIfAddrs.hpp | 45 +- .../ableton/test/serial_io/Context.hpp | 8 +- .../ableton/test/serial_io/Fixture.hpp | 6 +- .../modules/asio-standalone/.appveyor.yml | 2 - .../link/modules/asio-standalone/.cirrus.yml | 4 +- .../asio-standalone/.github/workflows/ci.yml | 380 + .../link/modules/asio-standalone/.travis.yml | 372 - .../modules/asio-standalone/asio/.gitignore | 1 + .../link/modules/asio-standalone/asio/COPYING | 2 +- .../link/modules/asio-standalone/asio/INSTALL | 2 +- .../modules/asio-standalone/asio/Makefile.am | 2 + .../link/modules/asio-standalone/asio/README | 4 +- .../asio-standalone/asio/asio.manifest | 1634 +- .../modules/asio-standalone/asio/asio.pc.in | 11 + .../modules/asio-standalone/asio/autogen.sh | 0 .../asio-standalone/asio/boost_asio.manifest | 2022 +- .../modules/asio-standalone/asio/boostify.pl | 73 +- .../modules/asio-standalone/asio/configure.ac | 41 +- .../asio-standalone/asio/include/Makefile.am | 132 +- .../asio-standalone/asio/include/asio.hpp | 36 +- .../include/asio/any_completion_executor.hpp | 342 + .../include/asio/any_completion_handler.hpp | 762 + .../asio/include/asio/any_io_executor.hpp | 310 +- .../asio/include/asio/append.hpp | 78 + .../asio/include/asio/as_tuple.hpp | 139 + .../include/asio/associated_allocator.hpp | 150 +- .../asio/associated_cancellation_slot.hpp | 238 + .../asio/include/asio/associated_executor.hpp | 119 +- .../asio/associated_immediate_executor.hpp | 297 + .../asio/include/asio/associator.hpp | 35 + .../asio/include/asio/async_result.hpp | 1329 +- .../asio/include/asio/awaitable.hpp | 13 +- .../include/asio/basic_datagram_socket.hpp | 431 +- .../include/asio/basic_deadline_timer.hpp | 78 +- .../asio/include/asio/basic_file.hpp | 829 + .../asio/include/asio/basic_io_object.hpp | 2 +- .../include/asio/basic_random_access_file.hpp | 701 + .../asio/include/asio/basic_raw_socket.hpp | 435 +- .../asio/include/asio/basic_readable_pipe.hpp | 635 + .../include/asio/basic_seq_packet_socket.hpp | 186 +- .../asio/include/asio/basic_serial_port.hpp | 193 +- .../asio/include/asio/basic_signal_set.hpp | 157 +- .../asio/include/asio/basic_socket.hpp | 151 +- .../include/asio/basic_socket_acceptor.hpp | 668 +- .../include/asio/basic_socket_iostream.hpp | 2 +- .../include/asio/basic_socket_streambuf.hpp | 2 +- .../asio/include/asio/basic_stream_file.hpp | 754 + .../asio/include/asio/basic_stream_socket.hpp | 322 +- .../asio/include/asio/basic_streambuf.hpp | 2 +- .../asio/include/asio/basic_streambuf_fwd.hpp | 2 +- .../include/asio/basic_waitable_timer.hpp | 88 +- .../asio/include/asio/basic_writable_pipe.hpp | 631 + .../asio/include/asio/bind_allocator.hpp | 733 + .../include/asio/bind_cancellation_slot.hpp | 736 + .../asio/include/asio/bind_executor.hpp | 254 +- .../include/asio/bind_immediate_executor.hpp | 736 + .../asio/include/asio/buffer.hpp | 545 +- .../asio/include/asio/buffer_registration.hpp | 328 + .../include/asio/buffered_read_stream.hpp | 53 +- .../include/asio/buffered_read_stream_fwd.hpp | 2 +- .../asio/include/asio/buffered_stream.hpp | 49 +- .../asio/include/asio/buffered_stream_fwd.hpp | 2 +- .../include/asio/buffered_write_stream.hpp | 53 +- .../asio/buffered_write_stream_fwd.hpp | 2 +- .../asio/include/asio/buffers_iterator.hpp | 2 +- .../asio/include/asio/cancellation_signal.hpp | 305 + .../asio/include/asio/cancellation_state.hpp | 235 + .../asio/include/asio/cancellation_type.hpp | 174 + .../asio/include/asio/co_spawn.hpp | 94 +- .../include/asio/completion_condition.hpp | 2 +- .../asio/include/asio/compose.hpp | 421 +- .../asio/include/asio/connect.hpp | 281 +- .../asio/include/asio/connect_pipe.hpp | 83 + .../asio/include/asio/consign.hpp | 88 + .../asio/include/asio/coroutine.hpp | 2 +- .../asio/include/asio/deadline_timer.hpp | 2 +- .../asio/include/asio/defer.hpp | 186 +- .../asio/include/asio/deferred.hpp | 802 + .../asio/include/asio/detached.hpp | 15 +- .../asio/include/asio/detail/array.hpp | 2 +- .../asio/include/asio/detail/array_fwd.hpp | 2 +- .../asio/include/asio/detail/assert.hpp | 2 +- .../asio/include/asio/detail/atomic_count.hpp | 5 +- .../detail/base_from_cancellation_state.hpp | 163 + .../asio/detail/base_from_completion_cond.hpp | 2 +- .../asio/include/asio/detail/bind_handler.hpp | 341 +- .../asio/detail/blocking_executor_op.hpp | 3 +- .../asio/detail/buffer_resize_guard.hpp | 2 +- .../asio/detail/buffer_sequence_adapter.hpp | 193 +- .../asio/detail/buffered_stream_storage.hpp | 2 +- .../include/asio/detail/bulk_executor_op.hpp | 3 +- .../asio/include/asio/detail/call_stack.hpp | 2 +- .../asio/include/asio/detail/chrono.hpp | 2 +- .../asio/detail/chrono_time_traits.hpp | 2 +- .../asio/detail/completion_handler.hpp | 2 +- .../include/asio/detail/composed_work.hpp | 328 + .../include/asio/detail/concurrency_hint.hpp | 2 +- .../detail/conditionally_enabled_event.hpp | 2 +- .../detail/conditionally_enabled_mutex.hpp | 2 +- .../asio/include/asio/detail/config.hpp | 645 +- .../include/asio/detail/consuming_buffers.hpp | 39 +- .../asio/include/asio/detail/cstddef.hpp | 2 +- .../asio/include/asio/detail/cstdint.hpp | 4 +- .../include/asio/detail/date_time_fwd.hpp | 2 +- .../asio/detail/deadline_timer_service.hpp | 42 +- .../include/asio/detail/dependent_type.hpp | 2 +- .../include/asio/detail/descriptor_ops.hpp | 44 +- .../asio/detail/descriptor_read_op.hpp | 42 +- .../asio/detail/descriptor_write_op.hpp | 41 +- .../include/asio/detail/dev_poll_reactor.hpp | 44 +- .../include/asio/detail/epoll_reactor.hpp | 43 +- .../asio/include/asio/detail/event.hpp | 2 +- .../detail/eventfd_select_interrupter.hpp | 2 +- .../asio/include/asio/detail/exception.hpp | 40 + .../include/asio/detail/executor_function.hpp | 5 +- .../asio/include/asio/detail/executor_op.hpp | 3 +- .../include/asio/detail/fd_set_adapter.hpp | 2 +- .../asio/include/asio/detail/fenced_block.hpp | 2 +- .../asio/include/asio/detail/functional.hpp | 8 +- .../asio/include/asio/detail/future.hpp | 2 +- .../asio/detail/gcc_arm_fenced_block.hpp | 2 +- .../asio/detail/gcc_hppa_fenced_block.hpp | 2 +- .../asio/detail/gcc_sync_fenced_block.hpp | 2 +- .../asio/detail/gcc_x86_fenced_block.hpp | 4 +- .../asio/include/asio/detail/global.hpp | 2 +- .../asio/detail/handler_alloc_helpers.hpp | 28 +- .../asio/detail/handler_cont_helpers.hpp | 2 +- .../asio/detail/handler_invoke_helpers.hpp | 2 +- .../include/asio/detail/handler_tracking.hpp | 2 +- .../asio/detail/handler_type_requirements.hpp | 41 +- .../asio/include/asio/detail/handler_work.hpp | 183 +- .../asio/include/asio/detail/hash_map.hpp | 2 +- .../detail/impl/buffer_sequence_adapter.ipp | 2 +- .../asio/detail/impl/descriptor_ops.ipp | 372 +- .../asio/detail/impl/dev_poll_reactor.hpp | 22 +- .../asio/detail/impl/dev_poll_reactor.ipp | 31 +- .../asio/detail/impl/epoll_reactor.hpp | 22 +- .../asio/detail/impl/epoll_reactor.ipp | 55 +- .../impl/eventfd_select_interrupter.ipp | 18 +- .../asio/detail/impl/handler_tracking.ipp | 6 +- .../impl/io_uring_descriptor_service.ipp | 205 + .../detail/impl/io_uring_file_service.ipp | 140 + .../asio/detail/impl/io_uring_service.hpp | 112 + .../asio/detail/impl/io_uring_service.ipp | 909 + .../impl/io_uring_socket_service_base.ipp | 249 + .../asio/detail/impl/kqueue_reactor.hpp | 22 +- .../asio/detail/impl/kqueue_reactor.ipp | 50 +- .../include/asio/detail/impl/null_event.ipp | 2 +- .../detail/impl/pipe_select_interrupter.ipp | 2 +- .../include/asio/detail/impl/posix_event.ipp | 12 +- .../include/asio/detail/impl/posix_mutex.ipp | 2 +- ...vice.ipp => posix_serial_port_service.ipp} | 57 +- .../include/asio/detail/impl/posix_thread.ipp | 2 +- .../asio/detail/impl/posix_tss_ptr.ipp | 2 +- .../impl/reactive_descriptor_service.ipp | 25 +- .../impl/reactive_socket_service_base.ipp | 48 +- .../detail/impl/resolver_service_base.ipp | 2 +- .../include/asio/detail/impl/scheduler.ipp | 29 +- .../asio/detail/impl/select_reactor.hpp | 26 +- .../asio/detail/impl/select_reactor.ipp | 72 +- .../asio/detail/impl/service_registry.hpp | 2 +- .../asio/detail/impl/service_registry.ipp | 2 +- .../asio/detail/impl/signal_set_service.ipp | 168 +- .../include/asio/detail/impl/socket_ops.ipp | 279 +- .../detail/impl/socket_select_interrupter.ipp | 8 +- .../detail/impl/strand_executor_service.hpp | 66 +- .../detail/impl/strand_executor_service.ipp | 26 +- .../asio/detail/impl/strand_service.hpp | 36 +- .../asio/detail/impl/strand_service.ipp | 34 +- .../asio/detail/impl/thread_context.ipp | 35 + .../include/asio/detail/impl/throw_error.ipp | 30 +- .../asio/detail/impl/timer_queue_ptime.ipp | 8 +- .../asio/detail/impl/timer_queue_set.ipp | 2 +- .../include/asio/detail/impl/win_event.ipp | 2 +- .../detail/impl/win_iocp_file_service.ipp | 265 + .../detail/impl/win_iocp_handle_service.ipp | 96 +- .../asio/detail/impl/win_iocp_io_context.hpp | 19 +- .../asio/detail/impl/win_iocp_io_context.ipp | 16 +- .../impl/win_iocp_serial_port_service.ipp | 10 +- .../impl/win_iocp_socket_service_base.ipp | 72 +- .../include/asio/detail/impl/win_mutex.ipp | 2 +- .../detail/impl/win_object_handle_service.ipp | 6 +- .../asio/detail/impl/win_static_mutex.ipp | 2 +- .../include/asio/detail/impl/win_thread.ipp | 2 +- .../include/asio/detail/impl/win_tss_ptr.ipp | 2 +- .../impl/winrt_ssocket_service_base.ipp | 8 +- .../detail/impl/winrt_timer_scheduler.hpp | 2 +- .../detail/impl/winrt_timer_scheduler.ipp | 2 +- .../include/asio/detail/impl/winsock_init.ipp | 2 +- .../defer.hpp => detail/initiate_defer.hpp} | 100 +- .../initiate_dispatch.hpp} | 100 +- .../post.hpp => detail/initiate_post.hpp} | 100 +- .../asio/include/asio/detail/io_control.hpp | 2 +- .../include/asio/detail/io_object_impl.hpp | 22 +- .../detail/io_uring_descriptor_read_at_op.hpp | 195 + .../detail/io_uring_descriptor_read_op.hpp | 190 + .../detail/io_uring_descriptor_service.hpp | 687 + .../io_uring_descriptor_write_at_op.hpp | 189 + .../detail/io_uring_descriptor_write_op.hpp | 185 + .../asio/detail/io_uring_file_service.hpp | 261 + .../asio/detail/io_uring_null_buffers_op.hpp | 115 + .../asio/detail/io_uring_operation.hpp | 84 + .../include/asio/detail/io_uring_service.hpp | 319 + .../asio/detail/io_uring_socket_accept_op.hpp | 285 + .../detail/io_uring_socket_connect_op.hpp | 141 + .../asio/detail/io_uring_socket_recv_op.hpp | 205 + .../detail/io_uring_socket_recvfrom_op.hpp | 206 + .../detail/io_uring_socket_recvmsg_op.hpp | 192 + .../asio/detail/io_uring_socket_send_op.hpp | 191 + .../asio/detail/io_uring_socket_sendto_op.hpp | 194 + .../asio/detail/io_uring_socket_service.hpp | 631 + .../detail/io_uring_socket_service_base.hpp | 663 + .../include/asio/detail/io_uring_wait_op.hpp | 113 + .../asio/detail/is_buffer_sequence.hpp | 28 +- .../asio/include/asio/detail/is_executor.hpp | 2 +- .../include/asio/detail/keyword_tss_ptr.hpp | 2 +- .../include/asio/detail/kqueue_reactor.hpp | 45 +- .../asio/detail/local_free_on_block_exit.hpp | 2 +- .../asio/detail/macos_fenced_block.hpp | 2 +- .../asio/include/asio/detail/memory.hpp | 96 +- .../asio/include/asio/detail/mutex.hpp | 2 +- .../include/asio/detail/non_const_lvalue.hpp | 2 +- .../asio/include/asio/detail/noncopyable.hpp | 2 +- .../asio/include/asio/detail/null_event.hpp | 2 +- .../include/asio/detail/null_fenced_block.hpp | 2 +- .../asio/include/asio/detail/null_global.hpp | 2 +- .../asio/include/asio/detail/null_mutex.hpp | 6 +- .../asio/include/asio/detail/null_reactor.hpp | 23 +- .../asio/detail/null_signal_blocker.hpp | 2 +- .../asio/detail/null_socket_service.hpp | 2 +- .../include/asio/detail/null_static_mutex.hpp | 2 +- .../asio/include/asio/detail/null_thread.hpp | 2 +- .../asio/include/asio/detail/null_tss_ptr.hpp | 2 +- .../asio/include/asio/detail/object_pool.hpp | 2 +- .../asio/detail/old_win_sdk_compat.hpp | 2 +- .../asio/include/asio/detail/op_queue.hpp | 2 +- .../asio/include/asio/detail/operation.hpp | 2 +- .../asio/detail/pipe_select_interrupter.hpp | 2 +- .../asio/include/asio/detail/pop_options.hpp | 18 +- .../asio/include/asio/detail/posix_event.hpp | 2 +- .../asio/detail/posix_fd_set_adapter.hpp | 2 +- .../asio/include/asio/detail/posix_global.hpp | 2 +- .../asio/include/asio/detail/posix_mutex.hpp | 2 +- ...vice.hpp => posix_serial_port_service.hpp} | 48 +- .../asio/detail/posix_signal_blocker.hpp | 2 +- .../asio/detail/posix_static_mutex.hpp | 2 +- .../asio/include/asio/detail/posix_thread.hpp | 2 +- .../include/asio/detail/posix_tss_ptr.hpp | 2 +- .../asio/include/asio/detail/push_options.hpp | 47 +- .../detail/reactive_descriptor_service.hpp | 202 +- .../asio/detail/reactive_null_buffers_op.hpp | 36 +- .../asio/detail/reactive_socket_accept_op.hpp | 88 +- .../detail/reactive_socket_connect_op.hpp | 42 +- .../asio/detail/reactive_socket_recv_op.hpp | 41 +- .../detail/reactive_socket_recvfrom_op.hpp | 42 +- .../detail/reactive_socket_recvmsg_op.hpp | 42 +- .../asio/detail/reactive_socket_send_op.hpp | 42 +- .../asio/detail/reactive_socket_sendto_op.hpp | 41 +- .../asio/detail/reactive_socket_service.hpp | 147 +- .../detail/reactive_socket_service_base.hpp | 269 +- .../include/asio/detail/reactive_wait_op.hpp | 36 +- .../asio/include/asio/detail/reactor.hpp | 32 +- .../asio/include/asio/detail/reactor_fwd.hpp | 40 - .../asio/include/asio/detail/reactor_op.hpp | 6 +- .../include/asio/detail/reactor_op_queue.hpp | 46 +- .../asio/detail/recycling_allocator.hpp | 9 +- .../asio/include/asio/detail/regex_fwd.hpp | 13 +- .../asio/detail/resolve_endpoint_op.hpp | 7 +- .../asio/include/asio/detail/resolve_op.hpp | 2 +- .../include/asio/detail/resolve_query_op.hpp | 7 +- .../include/asio/detail/resolver_service.hpp | 16 +- .../asio/detail/resolver_service_base.hpp | 17 +- .../asio/include/asio/detail/scheduler.hpp | 25 +- .../asio/detail/scheduler_operation.hpp | 2 +- .../include/asio/detail/scheduler_task.hpp | 49 + .../asio/detail/scheduler_thread_info.hpp | 2 +- .../asio/include/asio/detail/scoped_lock.hpp | 2 +- .../asio/include/asio/detail/scoped_ptr.hpp | 2 +- .../asio/detail/select_interrupter.hpp | 2 +- .../include/asio/detail/select_reactor.hpp | 65 +- .../include/asio/detail/service_registry.hpp | 2 +- .../include/asio/detail/signal_blocker.hpp | 2 +- .../include/asio/detail/signal_handler.hpp | 2 +- .../asio/include/asio/detail/signal_init.hpp | 2 +- .../asio/include/asio/detail/signal_op.hpp | 6 +- .../asio/detail/signal_set_service.hpp | 71 +- .../include/asio/detail/socket_holder.hpp | 2 +- .../asio/include/asio/detail/socket_ops.hpp | 82 +- .../include/asio/detail/socket_option.hpp | 2 +- .../asio/detail/socket_select_interrupter.hpp | 2 +- .../asio/include/asio/detail/socket_types.hpp | 13 +- .../asio/detail/solaris_fenced_block.hpp | 2 +- .../include/asio/detail/source_location.hpp | 2 +- .../asio/include/asio/detail/static_mutex.hpp | 2 +- .../asio/include/asio/detail/std_event.hpp | 4 +- .../include/asio/detail/std_fenced_block.hpp | 2 +- .../asio/include/asio/detail/std_global.hpp | 2 +- .../asio/include/asio/detail/std_mutex.hpp | 2 +- .../include/asio/detail/std_static_mutex.hpp | 2 +- .../asio/include/asio/detail/std_thread.hpp | 2 +- .../asio/detail/strand_executor_service.hpp | 9 +- .../include/asio/detail/strand_service.hpp | 9 +- .../asio/include/asio/detail/string_view.hpp | 2 +- .../asio/include/asio/detail/thread.hpp | 10 +- .../include/asio/detail/thread_context.hpp | 11 +- .../asio/include/asio/detail/thread_group.hpp | 6 +- .../include/asio/detail/thread_info_base.hpp | 133 +- .../asio/include/asio/detail/throw_error.hpp | 27 +- .../include/asio/detail/throw_exception.hpp | 10 +- .../asio/include/asio/detail/timer_queue.hpp | 33 +- .../include/asio/detail/timer_queue_base.hpp | 2 +- .../include/asio/detail/timer_queue_ptime.hpp | 6 +- .../include/asio/detail/timer_queue_set.hpp | 2 +- .../include/asio/detail/timer_scheduler.hpp | 4 +- .../asio/detail/timer_scheduler_fwd.hpp | 4 +- .../asio/include/asio/detail/tss_ptr.hpp | 2 +- .../asio/include/asio/detail/type_traits.hpp | 18 +- .../asio/include/asio/detail/utility.hpp | 83 + .../asio/detail/variadic_templates.hpp | 2 +- .../asio/include/asio/detail/wait_handler.hpp | 2 +- .../asio/include/asio/detail/wait_op.hpp | 8 +- .../asio/include/asio/detail/win_event.hpp | 2 +- .../asio/detail/win_fd_set_adapter.hpp | 2 +- .../include/asio/detail/win_fenced_block.hpp | 2 +- .../asio/include/asio/detail/win_global.hpp | 2 +- .../asio/detail/win_iocp_file_service.hpp | 287 + .../asio/detail/win_iocp_handle_read_op.hpp | 5 +- .../asio/detail/win_iocp_handle_service.hpp | 114 +- .../asio/detail/win_iocp_handle_write_op.hpp | 9 +- .../asio/detail/win_iocp_io_context.hpp | 15 +- .../asio/detail/win_iocp_null_buffers_op.hpp | 5 +- .../asio/detail/win_iocp_operation.hpp | 22 +- .../asio/detail/win_iocp_overlapped_op.hpp | 9 +- .../asio/detail/win_iocp_overlapped_ptr.hpp | 2 +- .../detail/win_iocp_serial_port_service.hpp | 3 +- .../asio/detail/win_iocp_socket_accept_op.hpp | 38 +- .../detail/win_iocp_socket_connect_op.hpp | 6 +- .../asio/detail/win_iocp_socket_recv_op.hpp | 5 +- .../detail/win_iocp_socket_recvfrom_op.hpp | 5 +- .../detail/win_iocp_socket_recvmsg_op.hpp | 5 +- .../asio/detail/win_iocp_socket_send_op.hpp | 5 +- .../asio/detail/win_iocp_socket_service.hpp | 146 +- .../detail/win_iocp_socket_service_base.hpp | 276 +- .../asio/detail/win_iocp_thread_info.hpp | 2 +- .../include/asio/detail/win_iocp_wait_op.hpp | 5 +- .../asio/include/asio/detail/win_mutex.hpp | 2 +- .../asio/detail/win_object_handle_service.hpp | 2 +- .../include/asio/detail/win_static_mutex.hpp | 2 +- .../asio/include/asio/detail/win_thread.hpp | 2 +- .../asio/include/asio/detail/win_tss_ptr.hpp | 2 +- .../include/asio/detail/winapp_thread.hpp | 2 +- .../asio/include/asio/detail/wince_thread.hpp | 2 +- .../asio/detail/winrt_async_manager.hpp | 2 +- .../include/asio/detail/winrt_async_op.hpp | 2 +- .../include/asio/detail/winrt_resolve_op.hpp | 3 +- .../asio/detail/winrt_resolver_service.hpp | 2 +- .../asio/detail/winrt_socket_connect_op.hpp | 3 +- .../asio/detail/winrt_socket_recv_op.hpp | 3 +- .../asio/detail/winrt_socket_send_op.hpp | 3 +- .../asio/detail/winrt_ssocket_service.hpp | 2 +- .../detail/winrt_ssocket_service_base.hpp | 2 +- .../asio/detail/winrt_timer_scheduler.hpp | 2 +- .../asio/include/asio/detail/winrt_utils.hpp | 2 +- .../asio/include/asio/detail/winsock_init.hpp | 2 +- .../include/asio/detail/work_dispatcher.hpp | 21 +- .../include/asio/detail/wrapped_handler.hpp | 2 +- .../asio/include/asio/dispatch.hpp | 169 +- .../asio/include/asio/error.hpp | 37 +- .../asio/include/asio/error_code.hpp | 2 +- .../asio/include/asio/execution.hpp | 2 +- .../asio/include/asio/execution/allocator.hpp | 145 +- .../include/asio/execution/any_executor.hpp | 897 +- .../include/asio/execution/bad_executor.hpp | 2 +- .../asio/include/asio/execution/blocking.hpp | 415 +- .../asio/execution/blocking_adaptation.hpp | 333 +- .../include/asio/execution/bulk_execute.hpp | 102 +- .../include/asio/execution/bulk_guarantee.hpp | 414 +- .../asio/include/asio/execution/connect.hpp | 80 +- .../asio/include/asio/execution/context.hpp | 87 +- .../include/asio/execution/context_as.hpp | 49 +- .../asio/execution/detail/as_invocable.hpp | 2 +- .../asio/execution/detail/as_operation.hpp | 6 +- .../asio/execution/detail/as_receiver.hpp | 2 +- .../asio/execution/detail/bulk_sender.hpp | 2 +- .../asio/execution/detail/submit_receiver.hpp | 2 +- .../asio/execution/detail/void_receiver.hpp | 2 +- .../asio/include/asio/execution/execute.hpp | 126 +- .../asio/include/asio/execution/executor.hpp | 76 +- .../asio/execution/impl/bad_executor.ipp | 2 +- .../impl/receiver_invocation_error.ipp | 2 +- .../asio/execution/invocable_archetype.hpp | 2 +- .../asio/include/asio/execution/mapping.hpp | 407 +- .../asio/include/asio/execution/occupancy.hpp | 87 +- .../asio/execution/operation_state.hpp | 7 +- .../asio/execution/outstanding_work.hpp | 319 +- .../include/asio/execution/prefer_only.hpp | 10 +- .../asio/include/asio/execution/receiver.hpp | 7 +- .../execution/receiver_invocation_error.hpp | 2 +- .../include/asio/execution/relationship.hpp | 318 +- .../asio/include/asio/execution/schedule.hpp | 36 +- .../asio/include/asio/execution/scheduler.hpp | 7 +- .../asio/include/asio/execution/sender.hpp | 7 +- .../asio/include/asio/execution/set_done.hpp | 22 +- .../asio/include/asio/execution/set_error.hpp | 22 +- .../asio/include/asio/execution/set_value.hpp | 22 +- .../asio/include/asio/execution/start.hpp | 22 +- .../asio/include/asio/execution/submit.hpp | 47 +- .../asio/include/asio/execution_context.hpp | 2 +- .../asio/include/asio/executor.hpp | 2 +- .../asio/include/asio/executor_work_guard.hpp | 180 +- .../asio/include/asio/experimental/append.hpp | 36 + .../include/asio/experimental/as_single.hpp | 136 + .../include/asio/experimental/as_tuple.hpp | 36 + .../asio/experimental/awaitable_operators.hpp | 536 + .../asio/experimental/basic_channel.hpp | 491 + .../experimental/basic_concurrent_channel.hpp | 491 + .../experimental/cancellation_condition.hpp | 155 + .../include/asio/experimental/channel.hpp | 70 + .../asio/experimental/channel_error.hpp | 84 + .../asio/experimental/channel_traits.hpp | 301 + .../include/asio/experimental/co_composed.hpp | 144 + .../include/asio/experimental/co_spawn.hpp | 187 + .../asio/experimental/concurrent_channel.hpp | 70 + .../asio/include/asio/experimental/coro.hpp | 293 + .../include/asio/experimental/coro_traits.hpp | 228 + .../include/asio/experimental/deferred.hpp | 36 + .../experimental/detail/channel_handler.hpp | 80 + .../experimental/detail/channel_message.hpp | 129 + .../experimental/detail/channel_operation.hpp | 284 + .../experimental/detail/channel_payload.hpp | 139 + .../detail/channel_receive_op.hpp | 120 + .../detail/channel_send_functions.hpp | 144 + .../experimental/detail/channel_send_op.hpp | 148 + .../experimental/detail/channel_service.hpp | 677 + .../detail/coro_completion_handler.hpp | 169 + .../detail/coro_promise_allocator.hpp | 141 + .../experimental/detail/has_signature.hpp | 54 + .../detail/impl/channel_service.hpp | 612 + .../experimental/detail/partial_promise.hpp | 197 + .../asio/experimental/impl/as_single.hpp | 239 + .../asio/experimental/impl/channel_error.ipp | 61 + .../asio/experimental/impl/co_composed.hpp | 1175 + .../include/asio/experimental/impl/coro.hpp | 1222 + .../asio/experimental/impl/parallel_group.hpp | 792 + .../asio/experimental/impl/promise.hpp | 254 + .../asio/experimental/impl/use_coro.hpp | 214 + .../asio/experimental/impl/use_promise.hpp | 66 + .../asio/experimental/parallel_group.hpp | 461 + .../include/asio/experimental/prepend.hpp | 36 + .../include/asio/experimental/promise.hpp | 224 + .../include/asio/experimental/use_coro.hpp | 195 + .../include/asio/experimental/use_promise.hpp | 111 + .../asio/include/asio/file_base.hpp | 166 + .../include/asio/generic/basic_endpoint.hpp | 2 +- .../asio/generic/datagram_protocol.hpp | 2 +- .../include/asio/generic/detail/endpoint.hpp | 2 +- .../asio/generic/detail/impl/endpoint.ipp | 2 +- .../include/asio/generic/raw_protocol.hpp | 2 +- .../asio/generic/seq_packet_protocol.hpp | 2 +- .../include/asio/generic/stream_protocol.hpp | 2 +- .../asio/include/asio/handler_alloc_hook.hpp | 2 +- .../asio/handler_continuation_hook.hpp | 2 +- .../asio/include/asio/handler_invoke_hook.hpp | 2 +- .../include/asio/high_resolution_timer.hpp | 2 +- .../asio/impl/any_completion_executor.ipp | 130 + .../include/asio/impl/any_io_executor.ipp | 141 + .../asio/include/asio/impl/append.hpp | 225 + .../asio/include/asio/impl/as_tuple.hpp | 320 + .../asio/include/asio/impl/awaitable.hpp | 811 +- .../asio/impl/buffered_read_stream.hpp | 100 +- .../asio/impl/buffered_write_stream.hpp | 100 +- .../include/asio/impl/cancellation_signal.ipp | 96 + .../asio/include/asio/impl/co_spawn.hpp | 153 +- .../asio/include/asio/impl/compose.hpp | 635 - .../asio/include/asio/impl/connect.hpp | 297 +- .../asio/include/asio/impl/connect_pipe.hpp | 73 + .../asio/include/asio/impl/connect_pipe.ipp | 149 + .../asio/include/asio/impl/consign.hpp | 202 + .../asio/include/asio/impl/deferred.hpp | 156 + .../asio/include/asio/impl/detached.hpp | 2 +- .../asio/include/asio/impl/error.ipp | 2 +- .../asio/include/asio/impl/error_code.ipp | 2 +- .../include/asio/impl/execution_context.hpp | 2 +- .../include/asio/impl/execution_context.ipp | 2 +- .../asio/include/asio/impl/executor.hpp | 3 +- .../asio/include/asio/impl/executor.ipp | 2 +- .../include/asio/impl/handler_alloc_hook.ipp | 11 +- .../asio/include/asio/impl/io_context.hpp | 104 +- .../asio/include/asio/impl/io_context.ipp | 3 +- .../include/asio/impl/multiple_exceptions.ipp | 2 +- .../asio/include/asio/impl/prepend.hpp | 225 + .../asio/include/asio/impl/read.hpp | 476 +- .../asio/include/asio/impl/read_at.hpp | 252 +- .../asio/include/asio/impl/read_until.hpp | 876 +- .../asio/include/asio/impl/redirect_error.hpp | 360 +- .../include/asio/impl/serial_port_base.hpp | 2 +- .../include/asio/impl/serial_port_base.ipp | 2 +- .../asio/include/asio/impl/spawn.hpp | 1660 +- .../asio/include/asio/impl/src.cpp | 25 - .../asio/include/asio/impl/src.hpp | 15 +- .../asio/include/asio/impl/system_context.hpp | 2 +- .../asio/include/asio/impl/system_context.ipp | 2 +- .../include/asio/impl/system_executor.hpp | 3 +- .../asio/include/asio/impl/thread_pool.hpp | 8 +- .../asio/include/asio/impl/thread_pool.ipp | 9 +- .../asio/include/asio/impl/use_awaitable.hpp | 64 +- .../asio/include/asio/impl/use_future.hpp | 31 +- .../asio/include/asio/impl/write.hpp | 421 +- .../asio/include/asio/impl/write_at.hpp | 213 +- .../asio/include/asio/io_context.hpp | 248 +- .../asio/include/asio/io_context_strand.hpp | 18 +- .../asio/include/asio/io_service.hpp | 2 +- .../asio/include/asio/io_service_strand.hpp | 2 +- .../asio/include/asio/ip/address.hpp | 24 +- .../asio/include/asio/ip/address_v4.hpp | 101 +- .../include/asio/ip/address_v4_iterator.hpp | 2 +- .../asio/include/asio/ip/address_v4_range.hpp | 2 +- .../asio/include/asio/ip/address_v6.hpp | 87 +- .../include/asio/ip/address_v6_iterator.hpp | 2 +- .../asio/include/asio/ip/address_v6_range.hpp | 2 +- .../asio/include/asio/ip/bad_address_cast.hpp | 2 +- .../asio/include/asio/ip/basic_endpoint.hpp | 37 +- .../asio/include/asio/ip/basic_resolver.hpp | 248 +- .../include/asio/ip/basic_resolver_entry.hpp | 2 +- .../asio/ip/basic_resolver_iterator.hpp | 2 +- .../include/asio/ip/basic_resolver_query.hpp | 2 +- .../asio/ip/basic_resolver_results.hpp | 2 +- .../asio/include/asio/ip/detail/endpoint.hpp | 2 +- .../include/asio/ip/detail/impl/endpoint.ipp | 2 +- .../include/asio/ip/detail/socket_option.hpp | 2 +- .../asio/include/asio/ip/host_name.hpp | 2 +- .../asio/include/asio/ip/icmp.hpp | 2 +- .../asio/include/asio/ip/impl/address.hpp | 2 +- .../asio/include/asio/ip/impl/address.ipp | 2 +- .../asio/include/asio/ip/impl/address_v4.hpp | 2 +- .../asio/include/asio/ip/impl/address_v4.ipp | 2 +- .../asio/include/asio/ip/impl/address_v6.hpp | 2 +- .../asio/include/asio/ip/impl/address_v6.ipp | 4 +- .../include/asio/ip/impl/basic_endpoint.hpp | 2 +- .../asio/include/asio/ip/impl/host_name.ipp | 2 +- .../asio/include/asio/ip/impl/network_v4.hpp | 2 +- .../asio/include/asio/ip/impl/network_v4.ipp | 6 +- .../asio/include/asio/ip/impl/network_v6.hpp | 2 +- .../asio/include/asio/ip/impl/network_v6.ipp | 6 +- .../asio/include/asio/ip/multicast.hpp | 2 +- .../asio/include/asio/ip/network_v4.hpp | 4 +- .../asio/include/asio/ip/network_v6.hpp | 2 +- .../asio/include/asio/ip/resolver_base.hpp | 2 +- .../include/asio/ip/resolver_query_base.hpp | 2 +- .../asio/include/asio/ip/tcp.hpp | 2 +- .../asio/include/asio/ip/udp.hpp | 2 +- .../asio/include/asio/ip/unicast.hpp | 2 +- .../asio/include/asio/ip/v6_only.hpp | 4 +- .../include/asio/is_applicable_property.hpp | 2 +- .../include/asio/is_contiguous_iterator.hpp | 45 + .../asio/include/asio/is_executor.hpp | 2 +- .../asio/include/asio/is_read_buffered.hpp | 2 +- .../asio/include/asio/is_write_buffered.hpp | 2 +- .../include/asio/local/basic_endpoint.hpp | 2 +- .../asio/include/asio/local/connect_pair.hpp | 2 +- .../include/asio/local/datagram_protocol.hpp | 2 +- .../include/asio/local/detail/endpoint.hpp | 2 +- .../asio/local/detail/impl/endpoint.ipp | 11 +- .../asio/local/seq_packet_protocol.hpp | 84 + .../include/asio/local/stream_protocol.hpp | 2 +- .../asio/include/asio/multiple_exceptions.hpp | 2 +- .../asio/include/asio/packaged_task.hpp | 2 +- .../asio/include/asio/placeholders.hpp | 2 +- .../include/asio/posix/basic_descriptor.hpp | 138 +- .../asio/posix/basic_stream_descriptor.hpp | 173 +- .../asio/include/asio/posix/descriptor.hpp | 2 +- .../include/asio/posix/descriptor_base.hpp | 2 +- .../include/asio/posix/stream_descriptor.hpp | 2 +- .../asio/include/asio/post.hpp | 186 +- .../asio/include/asio/prefer.hpp | 392 +- .../asio/include/asio/prepend.hpp | 78 + .../asio/include/asio/query.hpp | 130 +- .../asio/include/asio/random_access_file.hpp | 35 + .../asio/include/asio/read.hpp | 570 +- .../asio/include/asio/read_at.hpp | 207 +- .../asio/include/asio/read_until.hpp | 755 +- .../asio/include/asio/readable_pipe.hpp | 35 + .../asio/include/asio/recycling_allocator.hpp | 138 + .../asio/include/asio/redirect_error.hpp | 6 +- .../asio/include/asio/registered_buffer.hpp | 356 + .../asio/include/asio/require.hpp | 225 +- .../asio/include/asio/require_concept.hpp | 158 +- .../asio/include/asio/serial_port.hpp | 2 +- .../asio/include/asio/serial_port_base.hpp | 2 +- .../asio/include/asio/signal_set.hpp | 2 +- .../asio/include/asio/signal_set_base.hpp | 182 + .../asio/include/asio/socket_base.hpp | 2 +- .../asio/include/asio/spawn.hpp | 748 +- .../asio-standalone/asio/include/asio/ssl.hpp | 2 +- .../asio/include/asio/ssl/context.hpp | 5 +- .../asio/include/asio/ssl/context_base.hpp | 48 +- .../asio/ssl/detail/buffered_handshake_op.hpp | 4 +- .../asio/include/asio/ssl/detail/engine.hpp | 10 +- .../include/asio/ssl/detail/handshake_op.hpp | 4 +- .../include/asio/ssl/detail/impl/engine.ipp | 34 +- .../asio/ssl/detail/impl/openssl_init.ipp | 10 +- .../asio/include/asio/ssl/detail/io.hpp | 68 +- .../include/asio/ssl/detail/openssl_init.hpp | 2 +- .../include/asio/ssl/detail/openssl_types.hpp | 2 +- .../asio/ssl/detail/password_callback.hpp | 2 +- .../asio/include/asio/ssl/detail/read_op.hpp | 4 +- .../include/asio/ssl/detail/shutdown_op.hpp | 6 +- .../include/asio/ssl/detail/stream_core.hpp | 54 +- .../asio/ssl/detail/verify_callback.hpp | 2 +- .../asio/include/asio/ssl/detail/write_op.hpp | 4 +- .../asio/include/asio/ssl/error.hpp | 2 +- .../asio/ssl/host_name_verification.hpp | 2 +- .../asio/include/asio/ssl/impl/context.hpp | 2 +- .../asio/include/asio/ssl/impl/context.ipp | 225 +- .../asio/include/asio/ssl/impl/error.ipp | 28 +- .../asio/ssl/impl/host_name_verification.ipp | 2 +- .../asio/ssl/impl/rfc2818_verification.ipp | 2 +- .../asio/include/asio/ssl/impl/src.hpp | 2 +- .../include/asio/ssl/rfc2818_verification.hpp | 2 +- .../asio/include/asio/ssl/stream.hpp | 281 +- .../asio/include/asio/ssl/stream_base.hpp | 2 +- .../asio/include/asio/ssl/verify_context.hpp | 2 +- .../asio/include/asio/ssl/verify_mode.hpp | 2 +- .../asio/include/asio/static_thread_pool.hpp | 2 +- .../asio/include/asio/steady_timer.hpp | 2 +- .../asio/include/asio/strand.hpp | 107 +- .../asio/include/asio/stream_file.hpp | 35 + .../asio/include/asio/streambuf.hpp | 2 +- .../asio/include/asio/system_context.hpp | 2 +- .../asio/include/asio/system_error.hpp | 2 +- .../asio/include/asio/system_executor.hpp | 27 +- .../asio/include/asio/system_timer.hpp | 2 +- .../asio/include/asio/this_coro.hpp | 237 +- .../asio/include/asio/thread.hpp | 2 +- .../asio/include/asio/thread_pool.hpp | 62 +- .../asio/include/asio/time_traits.hpp | 2 +- .../include/asio/traits/bulk_execute_free.hpp | 2 +- .../asio/traits/bulk_execute_member.hpp | 2 +- .../asio/include/asio/traits/connect_free.hpp | 2 +- .../include/asio/traits/connect_member.hpp | 2 +- .../asio/traits/equality_comparable.hpp | 10 +- .../asio/include/asio/traits/execute_free.hpp | 2 +- .../include/asio/traits/execute_member.hpp | 2 +- .../asio/include/asio/traits/prefer_free.hpp | 2 +- .../include/asio/traits/prefer_member.hpp | 2 +- .../asio/include/asio/traits/query_free.hpp | 2 +- .../asio/include/asio/traits/query_member.hpp | 2 +- .../traits/query_static_constexpr_member.hpp | 2 +- .../asio/traits/require_concept_free.hpp | 2 +- .../asio/traits/require_concept_member.hpp | 2 +- .../asio/include/asio/traits/require_free.hpp | 2 +- .../include/asio/traits/require_member.hpp | 2 +- .../include/asio/traits/schedule_free.hpp | 2 +- .../include/asio/traits/schedule_member.hpp | 2 +- .../include/asio/traits/set_done_free.hpp | 2 +- .../include/asio/traits/set_done_member.hpp | 2 +- .../include/asio/traits/set_error_free.hpp | 2 +- .../include/asio/traits/set_error_member.hpp | 2 +- .../include/asio/traits/set_value_free.hpp | 2 +- .../include/asio/traits/set_value_member.hpp | 2 +- .../asio/include/asio/traits/start_free.hpp | 2 +- .../asio/include/asio/traits/start_member.hpp | 2 +- .../asio/include/asio/traits/static_query.hpp | 2 +- .../include/asio/traits/static_require.hpp | 2 +- .../asio/traits/static_require_concept.hpp | 5 +- .../asio/include/asio/traits/submit_free.hpp | 2 +- .../include/asio/traits/submit_member.hpp | 2 +- .../asio/include/asio/ts/buffer.hpp | 2 +- .../asio/include/asio/ts/executor.hpp | 2 +- .../asio/include/asio/ts/internet.hpp | 2 +- .../asio/include/asio/ts/io_context.hpp | 2 +- .../asio/include/asio/ts/net.hpp | 2 +- .../asio/include/asio/ts/netfwd.hpp | 14 +- .../asio/include/asio/ts/socket.hpp | 2 +- .../asio/include/asio/ts/timer.hpp | 2 +- .../asio/include/asio/unyield.hpp | 2 +- .../asio/include/asio/use_awaitable.hpp | 28 +- .../asio/include/asio/use_future.hpp | 17 +- .../asio/include/asio/uses_executor.hpp | 2 +- .../asio/include/asio/version.hpp | 4 +- .../asio/include/asio/wait_traits.hpp | 2 +- .../asio/windows/basic_object_handle.hpp | 104 +- .../asio/windows/basic_overlapped_handle.hpp | 121 +- .../windows/basic_random_access_handle.hpp | 161 +- .../asio/windows/basic_stream_handle.hpp | 157 +- .../include/asio/windows/object_handle.hpp | 2 +- .../asio/windows/overlapped_handle.hpp | 2 +- .../include/asio/windows/overlapped_ptr.hpp | 18 +- .../asio/windows/random_access_handle.hpp | 2 +- .../include/asio/windows/stream_handle.hpp | 2 +- .../asio/include/asio/writable_pipe.hpp | 35 + .../asio/include/asio/write.hpp | 564 +- .../asio/include/asio/write_at.hpp | 209 +- .../asio/include/asio/yield.hpp | 2 +- .../modules/asio-standalone/asio/release.pl | 4 +- .../asio-standalone/asio/src/Makefile.am | 20 +- .../asio-standalone/asio/src/Makefile.mgw | 1 + .../asio-standalone/asio/src/Makefile.msc | 34 + .../modules/asio-standalone/asio/src/asio.cpp | 2 +- .../asio-standalone/asio/src/asio_ssl.cpp | 2 +- .../asio-standalone/asio/src/doc/Jamfile.v2 | 21 +- .../asio-standalone/asio/src/doc/asio.qbk | 10 +- .../asio-standalone/asio/src/doc/asioref.xsl | 2 +- .../asio-standalone/asio/src/doc/doxy2qbk.pl | 2 +- .../asio-standalone/asio/src/doc/examples.qbk | 174 +- .../asio-standalone/asio/src/doc/history.qbk | 1678 +- .../asio-standalone/asio/src/doc/index.xml | 2 +- .../asio-standalone/asio/src/doc/makepdf.pl | 2 +- .../asio/src/doc/model_dox.txt | 14 + .../asio-standalone/asio/src/doc/net_ts.qbk | 2 +- .../asio-standalone/asio/src/doc/overview.qbk | 85 +- .../asio/src/doc/overview/allocation.qbk | 20 +- .../asio/src/doc/overview/async.qbk | 9 +- .../asio/src/doc/overview/basics.qbk | 2 +- .../asio/src/doc/overview/bsd_sockets.qbk | 2 +- .../asio/src/doc/overview/buffers.qbk | 24 +- .../asio/src/doc/overview/cancellation.qbk | 255 + .../asio/src/doc/overview/channels.qbk | 56 + .../asio/src/doc/overview/compose.qbk | 101 + .../src/doc/overview/concurrency_hint.qbk | 13 +- .../asio/src/doc/overview/coro.qbk | 260 + .../asio/src/doc/overview/coroutine.qbk | 4 +- .../asio/src/doc/overview/coroutines_ts.qbk | 94 - .../asio/src/doc/overview/cpp2011.qbk | 37 +- .../src/doc/overview/cpp20_coroutines.qbk | 280 + .../asio/src/doc/overview/deferred.qbk | 54 + .../asio/src/doc/overview/files.qbk | 49 + .../asio/src/doc/overview/futures.qbk | 41 + .../src/doc/overview/handler_tracking.qbk | 2 +- .../src/doc/overview/immediate_completion.qbk | 51 + .../asio/src/doc/overview/implementation.qbk | 45 +- .../asio/src/doc/overview/iostreams.qbk | 2 +- .../asio/src/doc/overview/line_based.qbk | 2 +- .../asio/src/doc/overview/model.qbk | 40 + .../src/doc/overview/model/allocators.qbk | 65 + .../src/doc/overview/model/associators.qbk | 78 + .../doc/overview/model/async_agent_chain.png | Bin 0 -> 110190 bytes .../doc/overview/model/async_agent_model.png | Bin 0 -> 170699 bytes .../src/doc/overview/model/async_agents.qbk | 35 + .../model/async_child_agent_chain.png | Bin 0 -> 156939 bytes .../overview/model/async_op_init_complete.png | Bin 0 -> 57136 bytes .../src/doc/overview/model/async_op_model.png | Bin 0 -> 59945 bytes .../doc/overview/model/async_op_phases.png | Bin 0 -> 105557 bytes .../overview/model/async_op_trivial_chain.png | Bin 0 -> 57998 bytes .../asio/src/doc/overview/model/async_ops.qbk | 81 + .../src/doc/overview/model/cancellation.qbk | 33 + .../src/doc/overview/model/child_agents.qbk | 56 + .../overview/model/completion_token_model.png | Bin 0 -> 145275 bytes .../model/completion_token_transform.png | Bin 0 -> 158291 bytes .../doc/overview/model/completion_tokens.qbk | 239 + .../asio/src/doc/overview/model/executors.qbk | 55 + .../doc/overview/model/higher_level_model.png | Bin 0 -> 291487 bytes .../src/doc/overview/model/higher_levels.qbk | 40 + .../doc/overview/model/library_elements.qbk | 102 + .../asio/src/doc/overview/other_protocols.qbk | 2 +- .../asio/src/doc/overview/parallel_group.qbk | 66 + .../asio/src/doc/overview/pipes.qbk | 38 + .../asio/src/doc/overview/posix.qbk | 2 +- .../asio/src/doc/overview/promises.qbk | 96 + .../asio/src/doc/overview/protocols.qbk | 2 +- .../asio/src/doc/overview/rationale.qbk | 2 +- .../asio/src/doc/overview/reactor.qbk | 2 +- .../asio/src/doc/overview/serial_ports.qbk | 2 +- .../asio/src/doc/overview/signals.qbk | 2 +- .../asio/src/doc/overview/spawn.qbk | 17 +- .../asio/src/doc/overview/ssl.qbk | 2 +- .../asio/src/doc/overview/strands.qbk | 2 +- .../asio/src/doc/overview/streams.qbk | 2 +- .../asio/src/doc/overview/threads.qbk | 2 +- .../asio/src/doc/overview/timers.qbk | 27 +- .../asio/src/doc/overview/token_adapters.qbk | 243 + .../asio/src/doc/overview/type_erasure.qbk | 91 + .../asio/src/doc/overview/windows.qbk | 2 +- .../asio/src/doc/platform_macros.pl | 91 + .../asio/src/doc/platform_macros.qbk | 711 + .../asio-standalone/asio/src/doc/quickref.xml | 214 +- .../asio/src/doc/reference.dox | 16 +- .../asio/src/doc/reference.qbk | 112867 ++++++++++----- .../asio/src/doc/reference.xsl | 206 +- .../src/doc/requirements/AcceptHandler.qbk | 59 +- .../asio/src/doc/requirements/AcceptToken.qbk | 99 + .../doc/requirements/AcceptableProtocol.qbk | 2 +- .../AsyncRandomAccessReadDevice.qbk | 2 +- .../AsyncRandomAccessWriteDevice.qbk | 2 +- .../src/doc/requirements/AsyncReadStream.qbk | 2 +- .../src/doc/requirements/AsyncWriteStream.qbk | 2 +- .../requirements/BufferedHandshakeHandler.qbk | 42 +- .../requirements/BufferedHandshakeToken.qbk | 111 + .../doc/requirements/CancellationHandler.qbk | 49 + .../src/doc/requirements/CancellationSlot.qbk | 63 + .../doc/requirements/CompletionCondition.qbk | 2 +- .../doc/requirements/CompletionHandler.qbk | 63 - .../src/doc/requirements/ConnectCondition.qbk | 2 +- .../src/doc/requirements/ConnectHandler.qbk | 59 +- .../src/doc/requirements/ConnectToken.qbk | 99 + .../doc/requirements/ConstBufferSequence.qbk | 2 +- .../src/doc/requirements/DynamicBuffer.qbk | 2 +- .../src/doc/requirements/DynamicBuffer_v1.qbk | 2 +- .../src/doc/requirements/DynamicBuffer_v2.qbk | 2 +- .../asio/src/doc/requirements/Endpoint.qbk | 2 +- .../src/doc/requirements/EndpointSequence.qbk | 2 +- .../src/doc/requirements/ExecutionContext.qbk | 2 +- .../asio/src/doc/requirements/Executor.qbk | 6 +- .../requirements/GettableSerialPortOption.qbk | 2 +- .../doc/requirements/GettableSocketOption.qbk | 2 +- .../asio/src/doc/requirements/Handler.qbk | 61 +- .../src/doc/requirements/HandshakeHandler.qbk | 59 +- .../src/doc/requirements/HandshakeToken.qbk | 99 + .../src/doc/requirements/InternetProtocol.qbk | 2 +- .../src/doc/requirements/IoControlCommand.qbk | 2 +- .../src/doc/requirements/IoObjectService.qbk | 2 +- .../requirements/IteratorConnectHandler.qbk | 69 +- .../doc/requirements/IteratorConnectToken.qbk | 113 + .../requirements/LegacyCompletionHandler.qbk | 2 +- .../doc/requirements/MoveAcceptHandler.qbk | 47 +- .../src/doc/requirements/MoveAcceptToken.qbk | 94 + .../requirements/MutableBufferSequence.qbk | 2 +- .../src/doc/requirements/NullaryToken.qbk | 79 + .../src/doc/requirements/OperationState.qbk | 2 +- .../src/doc/requirements/ProtoAllocator.qbk | 2 +- .../asio/src/doc/requirements/Protocol.qbk | 2 +- .../doc/requirements/RangeConnectHandler.qbk | 70 +- .../doc/requirements/RangeConnectToken.qbk | 114 + .../asio/src/doc/requirements/ReadHandler.qbk | 66 +- .../asio/src/doc/requirements/ReadToken.qbk | 110 + .../asio/src/doc/requirements/Receiver.qbk | 2 +- .../src/doc/requirements/ResolveHandler.qbk | 66 +- .../src/doc/requirements/ResolveToken.qbk | 112 + .../asio/src/doc/requirements/Scheduler.qbk | 2 +- .../asio/src/doc/requirements/Sender.qbk | 2 +- .../asio/src/doc/requirements/Service.qbk | 2 +- .../requirements/SettableSerialPortOption.qbk | 2 +- .../doc/requirements/SettableSocketOption.qbk | 2 +- .../src/doc/requirements/ShutdownHandler.qbk | 59 +- .../src/doc/requirements/ShutdownToken.qbk | 99 + .../src/doc/requirements/SignalHandler.qbk | 66 +- .../asio/src/doc/requirements/SignalToken.qbk | 109 + .../SyncRandomAccessReadDevice.qbk | 2 +- .../SyncRandomAccessWriteDevice.qbk | 2 +- .../src/doc/requirements/SyncReadStream.qbk | 2 +- .../src/doc/requirements/SyncWriteStream.qbk | 2 +- .../asio/src/doc/requirements/TimeTraits.qbk | 2 +- .../asio/src/doc/requirements/WaitHandler.qbk | 59 +- .../asio/src/doc/requirements/WaitToken.qbk | 99 + .../asio/src/doc/requirements/WaitTraits.qbk | 2 +- .../src/doc/requirements/WriteHandler.qbk | 66 +- .../asio/src/doc/requirements/WriteToken.qbk | 110 + .../requirements/asynchronous_operations.qbk | 256 +- .../asynchronous_socket_operations.qbk | 2 +- .../requirements/read_write_operations.qbk | 2 +- .../synchronous_socket_operations.qbk | 2 +- .../asio/src/doc/std_executors.qbk | 2 +- .../asio-standalone/asio/src/doc/tutorial.qbk | 102 +- .../asio-standalone/asio/src/doc/tutorial.xsl | 14 +- .../asio-standalone/asio/src/doc/using.qbk | 142 +- .../asio/src/examples/cpp03/Makefile.am | 2 +- .../src/examples/cpp03/allocation/server.cpp | 57 +- .../cpp03/buffers/reference_counted.cpp | 2 +- .../src/examples/cpp03/chat/chat_client.cpp | 2 +- .../src/examples/cpp03/chat/chat_message.hpp | 9 +- .../src/examples/cpp03/chat/chat_server.cpp | 2 +- .../examples/cpp03/chat/posix_chat_client.cpp | 2 +- .../cpp03/echo/async_tcp_echo_server.cpp | 2 +- .../cpp03/echo/async_udp_echo_server.cpp | 2 +- .../cpp03/echo/blocking_tcp_echo_client.cpp | 2 +- .../cpp03/echo/blocking_tcp_echo_server.cpp | 2 +- .../cpp03/echo/blocking_udp_echo_client.cpp | 2 +- .../cpp03/echo/blocking_udp_echo_server.cpp | 2 +- .../asio/src/examples/cpp03/fork/daemon.cpp | 2 +- .../cpp03/fork/process_per_connection.cpp | 2 +- .../cpp03/http/client/async_client.cpp | 2 +- .../cpp03/http/client/sync_client.cpp | 2 +- .../examples/cpp03/http/doc_root/data_1K.html | 2 +- .../examples/cpp03/http/doc_root/data_2K.html | 2 +- .../examples/cpp03/http/doc_root/data_4K.html | 2 +- .../examples/cpp03/http/doc_root/data_8K.html | 2 +- .../examples/cpp03/http/server/connection.cpp | 2 +- .../examples/cpp03/http/server/connection.hpp | 2 +- .../cpp03/http/server/connection_manager.cpp | 2 +- .../cpp03/http/server/connection_manager.hpp | 2 +- .../src/examples/cpp03/http/server/header.hpp | 2 +- .../src/examples/cpp03/http/server/main.cpp | 2 +- .../examples/cpp03/http/server/mime_types.cpp | 2 +- .../examples/cpp03/http/server/mime_types.hpp | 2 +- .../src/examples/cpp03/http/server/reply.cpp | 2 +- .../src/examples/cpp03/http/server/reply.hpp | 2 +- .../examples/cpp03/http/server/request.hpp | 2 +- .../cpp03/http/server/request_handler.cpp | 2 +- .../cpp03/http/server/request_handler.hpp | 2 +- .../cpp03/http/server/request_parser.cpp | 2 +- .../cpp03/http/server/request_parser.hpp | 2 +- .../src/examples/cpp03/http/server/server.cpp | 2 +- .../src/examples/cpp03/http/server/server.hpp | 2 +- .../cpp03/http/server2/connection.cpp | 2 +- .../cpp03/http/server2/connection.hpp | 2 +- .../examples/cpp03/http/server2/header.hpp | 2 +- .../cpp03/http/server2/io_context_pool.cpp | 5 +- .../cpp03/http/server2/io_context_pool.hpp | 8 +- .../src/examples/cpp03/http/server2/main.cpp | 2 +- .../cpp03/http/server2/mime_types.cpp | 2 +- .../cpp03/http/server2/mime_types.hpp | 2 +- .../src/examples/cpp03/http/server2/reply.cpp | 2 +- .../src/examples/cpp03/http/server2/reply.hpp | 2 +- .../examples/cpp03/http/server2/request.hpp | 2 +- .../cpp03/http/server2/request_handler.cpp | 2 +- .../cpp03/http/server2/request_handler.hpp | 2 +- .../cpp03/http/server2/request_parser.cpp | 2 +- .../cpp03/http/server2/request_parser.hpp | 2 +- .../examples/cpp03/http/server2/server.cpp | 2 +- .../examples/cpp03/http/server2/server.hpp | 2 +- .../cpp03/http/server3/connection.cpp | 2 +- .../cpp03/http/server3/connection.hpp | 2 +- .../examples/cpp03/http/server3/header.hpp | 2 +- .../src/examples/cpp03/http/server3/main.cpp | 2 +- .../cpp03/http/server3/mime_types.cpp | 2 +- .../cpp03/http/server3/mime_types.hpp | 2 +- .../src/examples/cpp03/http/server3/reply.cpp | 2 +- .../src/examples/cpp03/http/server3/reply.hpp | 2 +- .../examples/cpp03/http/server3/request.hpp | 2 +- .../cpp03/http/server3/request_handler.cpp | 2 +- .../cpp03/http/server3/request_handler.hpp | 2 +- .../cpp03/http/server3/request_parser.cpp | 2 +- .../cpp03/http/server3/request_parser.hpp | 2 +- .../examples/cpp03/http/server3/server.cpp | 2 +- .../examples/cpp03/http/server3/server.hpp | 2 +- .../cpp03/http/server4/file_handler.cpp | 2 +- .../cpp03/http/server4/file_handler.hpp | 2 +- .../examples/cpp03/http/server4/header.hpp | 2 +- .../src/examples/cpp03/http/server4/main.cpp | 2 +- .../cpp03/http/server4/mime_types.cpp | 2 +- .../cpp03/http/server4/mime_types.hpp | 2 +- .../src/examples/cpp03/http/server4/reply.cpp | 2 +- .../src/examples/cpp03/http/server4/reply.hpp | 2 +- .../examples/cpp03/http/server4/request.hpp | 2 +- .../cpp03/http/server4/request_parser.cpp | 2 +- .../cpp03/http/server4/request_parser.hpp | 2 +- .../examples/cpp03/http/server4/server.cpp | 2 +- .../examples/cpp03/http/server4/server.hpp | 2 +- .../src/examples/cpp03/icmp/icmp_header.hpp | 2 +- .../src/examples/cpp03/icmp/ipv4_header.hpp | 2 +- .../asio/src/examples/cpp03/icmp/ping.cpp | 2 +- .../cpp03/invocation/prioritised_handlers.cpp | 2 +- .../cpp03/iostreams/daytime_client.cpp | 2 +- .../cpp03/iostreams/daytime_server.cpp | 2 +- .../examples/cpp03/iostreams/http_client.cpp | 2 +- .../src/examples/cpp03/local/connect_pair.cpp | 2 +- .../examples/cpp03/local/iostream_client.cpp | 2 +- .../examples/cpp03/local/stream_client.cpp | 2 +- .../examples/cpp03/local/stream_server.cpp | 2 +- .../src/examples/cpp03/multicast/receiver.cpp | 2 +- .../src/examples/cpp03/multicast/sender.cpp | 2 +- .../cpp03/nonblocking/third_party_lib.cpp | 2 +- .../src/examples/cpp03/porthopper/client.cpp | 2 +- .../examples/cpp03/porthopper/protocol.hpp | 2 +- .../src/examples/cpp03/porthopper/server.cpp | 2 +- .../examples/cpp03/serialization/client.cpp | 2 +- .../cpp03/serialization/connection.hpp | 2 +- .../examples/cpp03/serialization/server.cpp | 2 +- .../examples/cpp03/serialization/stock.hpp | 2 +- .../examples/cpp03/services/basic_logger.hpp | 2 +- .../cpp03/services/daytime_client.cpp | 2 +- .../src/examples/cpp03/services/logger.hpp | 2 +- .../cpp03/services/logger_service.cpp | 2 +- .../cpp03/services/logger_service.hpp | 16 +- .../asio/src/examples/cpp03/socks4/socks4.hpp | 2 +- .../src/examples/cpp03/socks4/sync_client.cpp | 2 +- .../src/examples/cpp03/spawn/echo_server.cpp | 14 +- .../examples/cpp03/spawn/parallel_grep.cpp | 10 +- .../asio/src/examples/cpp03/ssl/README | 2 +- .../asio/src/examples/cpp03/ssl/ca.pem | 95 +- .../asio/src/examples/cpp03/ssl/client.cpp | 2 +- .../asio/src/examples/cpp03/ssl/dh2048.pem | 8 - .../asio/src/examples/cpp03/ssl/dh4096.pem | 25 + .../asio/src/examples/cpp03/ssl/server.cpp | 4 +- .../asio/src/examples/cpp03/ssl/server.pem | 154 +- .../cpp03/timeouts/async_tcp_client.cpp | 2 +- .../cpp03/timeouts/blocking_tcp_client.cpp | 2 +- .../timeouts/blocking_token_tcp_client.cpp | 2 +- .../cpp03/timeouts/blocking_udp_client.cpp | 2 +- .../src/examples/cpp03/timeouts/server.cpp | 2 +- .../examples/cpp03/timers/time_t_timer.cpp | 2 +- .../cpp03/tutorial/daytime1/client.cpp | 2 +- .../cpp03/tutorial/daytime2/server.cpp | 2 +- .../cpp03/tutorial/daytime3/server.cpp | 2 +- .../cpp03/tutorial/daytime4/client.cpp | 2 +- .../cpp03/tutorial/daytime5/server.cpp | 2 +- .../cpp03/tutorial/daytime6/server.cpp | 2 +- .../cpp03/tutorial/daytime7/server.cpp | 2 +- .../examples/cpp03/tutorial/daytime_dox.txt | 2 +- .../src/examples/cpp03/tutorial/index_dox.txt | 2 +- .../examples/cpp03/tutorial/timer1/timer.cpp | 2 +- .../examples/cpp03/tutorial/timer2/timer.cpp | 2 +- .../examples/cpp03/tutorial/timer3/timer.cpp | 2 +- .../examples/cpp03/tutorial/timer4/timer.cpp | 2 +- .../examples/cpp03/tutorial/timer5/timer.cpp | 2 +- .../src/examples/cpp03/tutorial/timer_dox.txt | 70 +- .../examples/cpp03/windows/transmit_file.cpp | 2 +- .../asio/src/examples/cpp11/Makefile.am | 38 +- .../src/examples/cpp11/allocation/server.cpp | 48 +- .../cpp11/buffers/reference_counted.cpp | 2 +- .../src/examples/cpp11/chat/chat_client.cpp | 2 +- .../src/examples/cpp11/chat/chat_message.hpp | 6 +- .../src/examples/cpp11/chat/chat_server.cpp | 2 +- .../src/examples/cpp11/deferred/.gitignore | 10 + .../examples/cpp11/deferred/deferred_1.cpp | 35 + .../examples/cpp11/deferred/deferred_2.cpp | 44 + .../cpp11/echo/async_tcp_echo_server.cpp | 2 +- .../cpp11/echo/async_udp_echo_server.cpp | 2 +- .../cpp11/echo/blocking_tcp_echo_client.cpp | 2 +- .../cpp11/echo/blocking_tcp_echo_server.cpp | 2 +- .../cpp11/echo/blocking_udp_echo_client.cpp | 2 +- .../cpp11/echo/blocking_udp_echo_server.cpp | 2 +- .../cpp11/executors/bank_account_1.cpp | 9 +- .../cpp11/executors/bank_account_2.cpp | 12 +- .../examples/cpp11/executors/fork_join.cpp | 7 +- .../asio/src/examples/cpp11/files/.gitignore | 2 + .../examples/cpp11/files/async_file_copy.cpp | 101 + .../cpp11/files/blocking_file_copy.cpp | 65 + .../asio/src/examples/cpp11/fork/daemon.cpp | 2 +- .../cpp11/fork/process_per_connection.cpp | 2 +- .../examples/cpp11/futures/daytime_client.cpp | 5 +- .../async_tcp_echo_server.cpp | 2 +- .../handler_tracking/custom_tracking.hpp | 2 +- .../examples/cpp11/http/server/connection.cpp | 2 +- .../examples/cpp11/http/server/connection.hpp | 2 +- .../cpp11/http/server/connection_manager.cpp | 2 +- .../cpp11/http/server/connection_manager.hpp | 2 +- .../src/examples/cpp11/http/server/header.hpp | 2 +- .../src/examples/cpp11/http/server/main.cpp | 2 +- .../examples/cpp11/http/server/mime_types.cpp | 2 +- .../examples/cpp11/http/server/mime_types.hpp | 2 +- .../src/examples/cpp11/http/server/reply.cpp | 2 +- .../src/examples/cpp11/http/server/reply.hpp | 2 +- .../examples/cpp11/http/server/request.hpp | 2 +- .../cpp11/http/server/request_handler.cpp | 2 +- .../cpp11/http/server/request_handler.hpp | 2 +- .../cpp11/http/server/request_parser.cpp | 2 +- .../cpp11/http/server/request_parser.hpp | 2 +- .../src/examples/cpp11/http/server/server.cpp | 2 +- .../src/examples/cpp11/http/server/server.hpp | 2 +- .../cpp11/invocation/prioritised_handlers.cpp | 2 +- .../examples/cpp11/iostreams/http_client.cpp | 2 +- .../asio/src/examples/cpp11/local/.gitignore | 2 + .../src/examples/cpp11/local/connect_pair.cpp | 2 +- .../cpp11/local/fd_passing_stream_client.cpp | 102 + .../cpp11/local/fd_passing_stream_server.cpp | 160 + .../examples/cpp11/local/iostream_client.cpp | 2 +- .../examples/cpp11/local/stream_client.cpp | 2 +- .../examples/cpp11/local/stream_server.cpp | 2 +- .../src/examples/cpp11/multicast/receiver.cpp | 2 +- .../src/examples/cpp11/multicast/sender.cpp | 2 +- .../cpp11/nonblocking/third_party_lib.cpp | 2 +- .../examples/cpp11/operations/composed_1.cpp | 64 +- .../examples/cpp11/operations/composed_2.cpp | 162 +- .../examples/cpp11/operations/composed_3.cpp | 64 +- .../examples/cpp11/operations/composed_4.cpp | 63 +- .../examples/cpp11/operations/composed_5.cpp | 64 +- .../examples/cpp11/operations/composed_6.cpp | 75 +- .../examples/cpp11/operations/composed_7.cpp | 64 +- .../examples/cpp11/operations/composed_8.cpp | 64 +- .../examples/cpp11/parallel_group/.gitignore | 15 + .../parallel_group/ranged_wait_for_all.cpp | 70 + .../cpp11/parallel_group/wait_for_all.cpp | 62 + .../cpp11/parallel_group/wait_for_one.cpp | 62 + .../parallel_group/wait_for_one_error.cpp | 62 + .../parallel_group/wait_for_one_success.cpp | 62 + .../asio/src/examples/cpp11/socks4/socks4.hpp | 2 +- .../src/examples/cpp11/socks4/sync_client.cpp | 2 +- .../src/examples/cpp11/spawn/echo_server.cpp | 16 +- .../examples/cpp11/spawn/parallel_grep.cpp | 6 +- .../asio/src/examples/cpp11/ssl/README | 2 +- .../asio/src/examples/cpp11/ssl/ca.pem | 95 +- .../asio/src/examples/cpp11/ssl/client.cpp | 2 +- .../asio/src/examples/cpp11/ssl/dh2048.pem | 8 - .../asio/src/examples/cpp11/ssl/dh4096.pem | 25 + .../asio/src/examples/cpp11/ssl/server.cpp | 4 +- .../asio/src/examples/cpp11/ssl/server.pem | 154 +- .../cpp11/timeouts/async_tcp_client.cpp | 2 +- .../cpp11/timeouts/blocking_tcp_client.cpp | 2 +- .../timeouts/blocking_token_tcp_client.cpp | 79 +- .../cpp11/timeouts/blocking_udp_client.cpp | 2 +- .../src/examples/cpp11/timeouts/server.cpp | 2 +- .../examples/cpp11/timers/time_t_timer.cpp | 2 +- .../examples/cpp11/type_erasure/.gitignore | 10 + .../cpp11/type_erasure/line_reader.hpp | 48 + .../src/examples/cpp11/type_erasure/main.cpp | 60 + .../src/examples/cpp11/type_erasure/sleep.cpp | 22 + .../src/examples/cpp11/type_erasure/sleep.hpp | 35 + .../cpp11/type_erasure/stdin_line_reader.cpp | 44 + .../cpp11/type_erasure/stdin_line_reader.hpp | 30 + .../asio/src/examples/cpp14/Makefile.am | 33 +- .../src/examples/cpp14/deferred/.gitignore | 10 + .../examples/cpp14/deferred/deferred_1.cpp | 35 + .../examples/cpp14/deferred/deferred_2.cpp | 44 + .../examples/cpp14/deferred/deferred_3.cpp | 51 + .../examples/cpp14/deferred/deferred_4.cpp | 59 + .../examples/cpp14/deferred/deferred_5.cpp | 66 + .../examples/cpp14/deferred/deferred_6.cpp | 75 + .../examples/cpp14/deferred/deferred_7.cpp | 71 + .../cpp14/echo/async_tcp_echo_server.cpp | 2 +- .../cpp14/echo/async_udp_echo_server.cpp | 2 +- .../cpp14/echo/blocking_tcp_echo_client.cpp | 2 +- .../cpp14/echo/blocking_tcp_echo_server.cpp | 2 +- .../cpp14/echo/blocking_udp_echo_client.cpp | 2 +- .../cpp14/echo/blocking_udp_echo_server.cpp | 2 +- .../src/examples/cpp14/executors/async_1.cpp | 6 +- .../src/examples/cpp14/executors/async_2.cpp | 6 +- .../cpp14/executors/bank_account_1.cpp | 9 +- .../cpp14/executors/bank_account_2.cpp | 13 +- .../examples/cpp14/executors/fork_join.cpp | 7 +- .../src/examples/cpp14/executors/pipeline.cpp | 10 +- .../cpp14/executors/priority_scheduler.cpp | 20 +- .../examples/cpp14/iostreams/http_client.cpp | 2 +- .../src/examples/cpp14/operations/.gitignore | 2 + .../cpp14/operations/c_callback_wrapper.cpp | 230 + .../cpp14/operations/callback_wrapper.cpp | 152 + .../examples/cpp14/operations/composed_1.cpp | 56 +- .../examples/cpp14/operations/composed_2.cpp | 146 +- .../examples/cpp14/operations/composed_3.cpp | 54 +- .../examples/cpp14/operations/composed_4.cpp | 53 +- .../examples/cpp14/operations/composed_5.cpp | 54 +- .../examples/cpp14/operations/composed_6.cpp | 64 +- .../examples/cpp14/operations/composed_7.cpp | 56 +- .../examples/cpp14/operations/composed_8.cpp | 56 +- .../examples/cpp14/parallel_group/.gitignore | 15 + .../cpp14/parallel_group/parallel_sort.cpp | 133 + .../parallel_group/ranged_wait_for_all.cpp | 70 + .../cpp14/parallel_group/wait_for_all.cpp | 64 + .../cpp14/parallel_group/wait_for_one.cpp | 64 + .../parallel_group/wait_for_one_error.cpp | 64 + .../parallel_group/wait_for_one_success.cpp | 64 + .../asio/src/examples/cpp17/Makefile.am | 4 + .../examples/cpp17/coroutines_ts/.gitignore | 2 + .../cpp17/coroutines_ts/chat_server.cpp | 2 +- .../cpp17/coroutines_ts/echo_server.cpp | 2 +- .../echo_server_with_as_single_default.cpp | 71 + .../echo_server_with_as_tuple_default.cpp | 71 + .../echo_server_with_default.cpp | 2 +- .../cpp17/coroutines_ts/range_based_for.cpp | 2 +- .../coroutines_ts/refactored_echo_server.cpp | 2 +- .../asio/src/examples/cpp20/Makefile.am | 73 + .../src/examples/cpp20/channels/.gitignore | 1 + .../cpp20/channels/throttling_proxy.cpp | 135 + .../src/examples/cpp20/coroutines/.gitignore | 16 + .../examples/cpp20/coroutines/chat_server.cpp | 222 + .../examples/cpp20/coroutines/echo_server.cpp | 76 + .../echo_server_with_as_single_default.cpp | 71 + .../echo_server_with_as_tuple_default.cpp | 71 + .../coroutines/echo_server_with_default.cpp | 73 + .../coroutines/echo_server_with_deferred.cpp | 72 + .../echo_server_with_deferred_default.cpp | 74 + .../coroutines/refactored_echo_server.cpp | 80 + .../src/examples/cpp20/coroutines/timeout.cpp | 66 + .../src/examples/cpp20/operations/.gitignore | 12 + .../cpp20/operations/c_callback_wrapper.cpp | 232 + .../cpp20/operations/callback_wrapper.cpp | 154 + .../examples/cpp20/operations/composed_1.cpp | 157 + .../examples/cpp20/operations/composed_2.cpp | 225 + .../examples/cpp20/operations/composed_3.cpp | 232 + .../examples/cpp20/operations/composed_4.cpp | 247 + .../examples/cpp20/operations/composed_5.cpp | 284 + .../examples/cpp20/operations/composed_6.cpp | 345 + .../examples/cpp20/operations/composed_7.cpp | 262 + .../examples/cpp20/operations/composed_8.cpp | 255 + .../examples/cpp20/type_erasure/.gitignore | 10 + .../cpp20/type_erasure/line_reader.hpp | 39 + .../src/examples/cpp20/type_erasure/main.cpp | 35 + .../src/examples/cpp20/type_erasure/sleep.cpp | 22 + .../src/examples/cpp20/type_erasure/sleep.hpp | 32 + .../cpp20/type_erasure/stdin_line_reader.cpp | 44 + .../cpp20/type_erasure/stdin_line_reader.hpp | 30 + .../asio/src/tests/Makefile.am | 174 + .../asio/src/tests/latency/allocator.hpp | 2 +- .../asio/src/tests/latency/high_res_clock.hpp | 2 +- .../asio/src/tests/latency/tcp_client.cpp | 2 +- .../asio/src/tests/latency/tcp_server.cpp | 2 +- .../asio/src/tests/latency/udp_client.cpp | 2 +- .../asio/src/tests/latency/udp_server.cpp | 2 +- .../asio/src/tests/performance/client.cpp | 2 +- .../tests/performance/handler_allocator.hpp | 2 +- .../asio/src/tests/performance/server.cpp | 2 +- .../cpp03/can_prefer_free_prefer.cpp | 2 +- .../cpp03/can_prefer_free_require.cpp | 2 +- .../cpp03/can_prefer_member_prefer.cpp | 2 +- .../cpp03/can_prefer_member_require.cpp | 2 +- .../can_prefer_not_applicable_free_prefer.cpp | 2 +- ...can_prefer_not_applicable_free_require.cpp | 2 +- ...an_prefer_not_applicable_member_prefer.cpp | 2 +- ...n_prefer_not_applicable_member_require.cpp | 2 +- .../can_prefer_not_applicable_static.cpp | 2 +- .../can_prefer_not_applicable_unsupported.cpp | 2 +- .../can_prefer_not_preferable_free_prefer.cpp | 2 +- ...can_prefer_not_preferable_free_require.cpp | 2 +- ...an_prefer_not_preferable_member_prefer.cpp | 2 +- ...n_prefer_not_preferable_member_require.cpp | 2 +- .../can_prefer_not_preferable_static.cpp | 2 +- .../can_prefer_not_preferable_unsupported.cpp | 2 +- .../properties/cpp03/can_prefer_static.cpp | 2 +- .../cpp03/can_prefer_unsupported.cpp | 2 +- .../tests/properties/cpp03/can_query_free.cpp | 2 +- .../properties/cpp03/can_query_member.cpp | 2 +- .../cpp03/can_query_not_applicable_free.cpp | 2 +- .../cpp03/can_query_not_applicable_member.cpp | 2 +- .../cpp03/can_query_not_applicable_static.cpp | 2 +- .../can_query_not_applicable_unsupported.cpp | 2 +- .../properties/cpp03/can_query_static.cpp | 2 +- .../cpp03/can_query_unsupported.cpp | 2 +- .../cpp03/can_require_concept_free.cpp | 2 +- .../cpp03/can_require_concept_member.cpp | 2 +- ...an_require_concept_not_applicable_free.cpp | 2 +- ..._require_concept_not_applicable_member.cpp | 2 +- ..._require_concept_not_applicable_static.cpp | 2 +- ...ire_concept_not_applicable_unsupported.cpp | 2 +- .../cpp03/can_require_concept_static.cpp | 2 +- .../cpp03/can_require_concept_unsupported.cpp | 2 +- .../properties/cpp03/can_require_free.cpp | 2 +- .../properties/cpp03/can_require_member.cpp | 2 +- .../cpp03/can_require_not_applicable_free.cpp | 2 +- .../can_require_not_applicable_member.cpp | 2 +- .../can_require_not_applicable_static.cpp | 2 +- ...can_require_not_applicable_unsupported.cpp | 2 +- .../properties/cpp03/can_require_static.cpp | 2 +- .../cpp03/can_require_unsupported.cpp | 2 +- .../properties/cpp03/prefer_free_prefer.cpp | 2 +- .../properties/cpp03/prefer_free_require.cpp | 2 +- .../properties/cpp03/prefer_member_prefer.cpp | 2 +- .../cpp03/prefer_member_require.cpp | 2 +- .../tests/properties/cpp03/prefer_static.cpp | 2 +- .../properties/cpp03/prefer_unsupported.cpp | 2 +- .../src/tests/properties/cpp03/query_free.cpp | 2 +- .../tests/properties/cpp03/query_member.cpp | 2 +- .../tests/properties/cpp03/query_static.cpp | 2 +- .../properties/cpp03/require_concept_free.cpp | 2 +- .../cpp03/require_concept_member.cpp | 2 +- .../cpp03/require_concept_static.cpp | 2 +- .../tests/properties/cpp03/require_free.cpp | 2 +- .../tests/properties/cpp03/require_member.cpp | 2 +- .../tests/properties/cpp03/require_static.cpp | 2 +- .../cpp11/can_prefer_free_prefer.cpp | 2 +- .../cpp11/can_prefer_free_require.cpp | 2 +- .../cpp11/can_prefer_member_prefer.cpp | 2 +- .../cpp11/can_prefer_member_require.cpp | 2 +- .../can_prefer_not_applicable_free_prefer.cpp | 2 +- ...can_prefer_not_applicable_free_require.cpp | 2 +- ...an_prefer_not_applicable_member_prefer.cpp | 2 +- ...n_prefer_not_applicable_member_require.cpp | 2 +- .../can_prefer_not_applicable_static.cpp | 2 +- .../can_prefer_not_applicable_unsupported.cpp | 2 +- .../can_prefer_not_preferable_free_prefer.cpp | 2 +- ...can_prefer_not_preferable_free_require.cpp | 2 +- ...an_prefer_not_preferable_member_prefer.cpp | 2 +- ...n_prefer_not_preferable_member_require.cpp | 2 +- .../can_prefer_not_preferable_static.cpp | 2 +- .../can_prefer_not_preferable_unsupported.cpp | 2 +- .../properties/cpp11/can_prefer_static.cpp | 2 +- .../cpp11/can_prefer_unsupported.cpp | 2 +- .../tests/properties/cpp11/can_query_free.cpp | 2 +- .../properties/cpp11/can_query_member.cpp | 2 +- .../cpp11/can_query_not_applicable_free.cpp | 2 +- .../cpp11/can_query_not_applicable_member.cpp | 2 +- .../cpp11/can_query_not_applicable_static.cpp | 2 +- .../can_query_not_applicable_unsupported.cpp | 2 +- .../properties/cpp11/can_query_static.cpp | 2 +- .../cpp11/can_query_unsupported.cpp | 2 +- .../cpp11/can_require_concept_free.cpp | 2 +- .../cpp11/can_require_concept_member.cpp | 2 +- ...an_require_concept_not_applicable_free.cpp | 2 +- ..._require_concept_not_applicable_member.cpp | 2 +- ..._require_concept_not_applicable_static.cpp | 2 +- ...ire_concept_not_applicable_unsupported.cpp | 2 +- .../cpp11/can_require_concept_static.cpp | 2 +- .../cpp11/can_require_concept_unsupported.cpp | 2 +- .../properties/cpp11/can_require_free.cpp | 2 +- .../properties/cpp11/can_require_member.cpp | 2 +- .../cpp11/can_require_not_applicable_free.cpp | 2 +- .../can_require_not_applicable_member.cpp | 2 +- .../can_require_not_applicable_static.cpp | 2 +- ...can_require_not_applicable_unsupported.cpp | 2 +- .../properties/cpp11/can_require_static.cpp | 2 +- .../cpp11/can_require_unsupported.cpp | 2 +- .../properties/cpp11/prefer_free_prefer.cpp | 2 +- .../properties/cpp11/prefer_free_require.cpp | 2 +- .../properties/cpp11/prefer_member_prefer.cpp | 2 +- .../cpp11/prefer_member_require.cpp | 2 +- .../tests/properties/cpp11/prefer_static.cpp | 2 +- .../properties/cpp11/prefer_unsupported.cpp | 2 +- .../src/tests/properties/cpp11/query_free.cpp | 2 +- .../tests/properties/cpp11/query_member.cpp | 2 +- .../tests/properties/cpp11/query_static.cpp | 2 +- .../properties/cpp11/require_concept_free.cpp | 2 +- .../cpp11/require_concept_member.cpp | 2 +- .../cpp11/require_concept_static.cpp | 2 +- .../tests/properties/cpp11/require_free.cpp | 2 +- .../tests/properties/cpp11/require_member.cpp | 2 +- .../tests/properties/cpp11/require_static.cpp | 2 +- .../cpp14/can_prefer_free_prefer.cpp | 2 +- .../cpp14/can_prefer_free_require.cpp | 2 +- .../cpp14/can_prefer_member_prefer.cpp | 2 +- .../cpp14/can_prefer_member_require.cpp | 2 +- .../can_prefer_not_applicable_free_prefer.cpp | 2 +- ...can_prefer_not_applicable_free_require.cpp | 2 +- ...an_prefer_not_applicable_member_prefer.cpp | 2 +- ...n_prefer_not_applicable_member_require.cpp | 2 +- .../can_prefer_not_applicable_static.cpp | 2 +- .../can_prefer_not_applicable_unsupported.cpp | 2 +- .../can_prefer_not_preferable_free_prefer.cpp | 2 +- ...can_prefer_not_preferable_free_require.cpp | 2 +- ...an_prefer_not_preferable_member_prefer.cpp | 2 +- ...n_prefer_not_preferable_member_require.cpp | 2 +- .../can_prefer_not_preferable_static.cpp | 2 +- .../can_prefer_not_preferable_unsupported.cpp | 2 +- .../properties/cpp14/can_prefer_static.cpp | 2 +- .../cpp14/can_prefer_unsupported.cpp | 2 +- .../tests/properties/cpp14/can_query_free.cpp | 2 +- .../properties/cpp14/can_query_member.cpp | 2 +- .../cpp14/can_query_not_applicable_free.cpp | 2 +- .../cpp14/can_query_not_applicable_member.cpp | 2 +- .../cpp14/can_query_not_applicable_static.cpp | 2 +- .../can_query_not_applicable_unsupported.cpp | 2 +- .../properties/cpp14/can_query_static.cpp | 2 +- .../cpp14/can_query_unsupported.cpp | 2 +- .../cpp14/can_require_concept_free.cpp | 2 +- .../cpp14/can_require_concept_member.cpp | 2 +- ...an_require_concept_not_applicable_free.cpp | 2 +- ..._require_concept_not_applicable_member.cpp | 2 +- ..._require_concept_not_applicable_static.cpp | 2 +- ...ire_concept_not_applicable_unsupported.cpp | 2 +- .../cpp14/can_require_concept_static.cpp | 2 +- .../cpp14/can_require_concept_unsupported.cpp | 2 +- .../properties/cpp14/can_require_free.cpp | 2 +- .../properties/cpp14/can_require_member.cpp | 2 +- .../cpp14/can_require_not_applicable_free.cpp | 2 +- .../can_require_not_applicable_member.cpp | 2 +- .../can_require_not_applicable_static.cpp | 2 +- ...can_require_not_applicable_unsupported.cpp | 2 +- .../properties/cpp14/can_require_static.cpp | 2 +- .../cpp14/can_require_unsupported.cpp | 2 +- .../properties/cpp14/prefer_free_prefer.cpp | 2 +- .../properties/cpp14/prefer_free_require.cpp | 2 +- .../properties/cpp14/prefer_member_prefer.cpp | 2 +- .../cpp14/prefer_member_require.cpp | 2 +- .../tests/properties/cpp14/prefer_static.cpp | 2 +- .../properties/cpp14/prefer_unsupported.cpp | 2 +- .../src/tests/properties/cpp14/query_free.cpp | 2 +- .../tests/properties/cpp14/query_member.cpp | 2 +- .../tests/properties/cpp14/query_static.cpp | 2 +- .../properties/cpp14/require_concept_free.cpp | 2 +- .../cpp14/require_concept_member.cpp | 2 +- .../cpp14/require_concept_static.cpp | 2 +- .../tests/properties/cpp14/require_free.cpp | 2 +- .../tests/properties/cpp14/require_member.cpp | 2 +- .../tests/properties/cpp14/require_static.cpp | 2 +- .../asio/src/tests/unit/.gitignore | 29 + .../asio/src/tests/unit/append.cpp | 62 + .../src/tests/unit/archetypes/async_ops.hpp | 2 +- .../tests/unit/archetypes/async_result.hpp | 76 +- .../archetypes/gettable_socket_option.hpp | 2 +- .../unit/archetypes/io_control_command.hpp | 2 +- .../archetypes/settable_socket_option.hpp | 2 +- .../asio/src/tests/unit/as_tuple.cpp | 134 + .../src/tests/unit/associated_allocator.cpp | 2 +- .../unit/associated_cancellation_slot.cpp | 25 + .../src/tests/unit/associated_executor.cpp | 2 +- .../unit/associated_immediate_executor.cpp | 25 + .../asio/src/tests/unit/associator.cpp | 25 + .../asio/src/tests/unit/async_result.cpp | 2 +- .../asio/src/tests/unit/awaitable.cpp | 2 +- .../src/tests/unit/basic_datagram_socket.cpp | 2 +- .../src/tests/unit/basic_deadline_timer.cpp | 2 +- .../asio/src/tests/unit/basic_file.cpp | 25 + .../tests/unit/basic_random_access_file.cpp | 25 + .../asio/src/tests/unit/basic_raw_socket.cpp | 2 +- .../src/tests/unit/basic_readable_pipe.cpp | 25 + .../tests/unit/basic_seq_packet_socket.cpp | 2 +- .../asio/src/tests/unit/basic_serial_port.cpp | 2 +- .../asio/src/tests/unit/basic_signal_set.cpp | 2 +- .../asio/src/tests/unit/basic_socket.cpp | 2 +- .../src/tests/unit/basic_socket_acceptor.cpp | 2 +- .../asio/src/tests/unit/basic_stream_file.cpp | 25 + .../src/tests/unit/basic_stream_socket.cpp | 2 +- .../asio/src/tests/unit/basic_streambuf.cpp | 2 +- .../src/tests/unit/basic_waitable_timer.cpp | 2 +- .../src/tests/unit/basic_writable_pipe.cpp | 25 + .../asio/src/tests/unit/bind_allocator.cpp | 253 + .../src/tests/unit/bind_cancellation_slot.cpp | 221 + .../asio/src/tests/unit/bind_executor.cpp | 183 +- .../tests/unit/bind_immediate_executor.cpp | 25 + .../asio/src/tests/unit/buffer.cpp | 110 +- .../src/tests/unit/buffer_registration.cpp | 25 + .../src/tests/unit/buffered_read_stream.cpp | 4 +- .../asio/src/tests/unit/buffered_stream.cpp | 4 +- .../src/tests/unit/buffered_write_stream.cpp | 4 +- .../asio/src/tests/unit/buffers_iterator.cpp | 4 +- .../src/tests/unit/cancellation_signal.cpp | 25 + .../src/tests/unit/cancellation_state.cpp | 25 + .../asio/src/tests/unit/cancellation_type.cpp | 25 + .../asio/src/tests/unit/co_spawn.cpp | 61 +- .../src/tests/unit/completion_condition.cpp | 2 +- .../asio/src/tests/unit/compose.cpp | 314 +- .../asio/src/tests/unit/connect.cpp | 2 +- .../asio/src/tests/unit/connect_pipe.cpp | 163 + .../asio/src/tests/unit/consign.cpp | 60 + .../asio/src/tests/unit/coroutine.cpp | 2 +- .../asio/src/tests/unit/deadline_timer.cpp | 2 +- .../asio/src/tests/unit/defer.cpp | 2 +- .../asio/src/tests/unit/deferred.cpp | 25 + .../asio/src/tests/unit/detached.cpp | 2 +- .../asio/src/tests/unit/dispatch.cpp | 2 +- .../asio/src/tests/unit/error.cpp | 2 +- .../src/tests/unit/execution/any_executor.cpp | 394 +- .../src/tests/unit/execution/blocking.cpp | 2 +- .../unit/execution/blocking_adaptation.cpp | 2 +- .../src/tests/unit/execution/bulk_execute.cpp | 16 +- .../tests/unit/execution/bulk_guarantee.cpp | 14 +- .../asio/src/tests/unit/execution/connect.cpp | 14 +- .../src/tests/unit/execution/context_as.cpp | 2 +- .../asio/src/tests/unit/execution/execute.cpp | 16 +- .../src/tests/unit/execution/executor.cpp | 2 +- .../unit/execution/invocable_archetype.cpp | 2 +- .../asio/src/tests/unit/execution/mapping.cpp | 2 +- .../tests/unit/execution/operation_state.cpp | 14 +- .../tests/unit/execution/outstanding_work.cpp | 2 +- .../src/tests/unit/execution/prefer_only.cpp | 26 +- .../src/tests/unit/execution/receiver.cpp | 14 +- .../src/tests/unit/execution/relationship.cpp | 2 +- .../src/tests/unit/execution/schedule.cpp | 14 +- .../src/tests/unit/execution/scheduler.cpp | 14 +- .../asio/src/tests/unit/execution/sender.cpp | 14 +- .../src/tests/unit/execution/set_done.cpp | 14 +- .../src/tests/unit/execution/set_error.cpp | 14 +- .../src/tests/unit/execution/set_value.cpp | 14 +- .../asio/src/tests/unit/execution/start.cpp | 14 +- .../asio/src/tests/unit/execution/submit.cpp | 14 +- .../asio/src/tests/unit/execution_context.cpp | 2 +- .../asio/src/tests/unit/executor.cpp | 2 +- .../src/tests/unit/executor_work_guard.cpp | 2 +- .../src/tests/unit/experimental/.gitignore | 17 + .../unit/experimental/awaitable_operators.cpp | 297 + .../tests/unit/experimental/basic_channel.cpp | 25 + .../experimental/basic_concurrent_channel.cpp | 25 + .../src/tests/unit/experimental/channel.cpp | 679 + .../unit/experimental/channel_traits.cpp | 25 + .../tests/unit/experimental/co_composed.cpp | 518 + .../unit/experimental/concurrent_channel.cpp | 165 + .../tests/unit/experimental/coro/.gitignore | 15 + .../unit/experimental/coro/allocator.cpp | 112 + .../tests/unit/experimental/coro/cancel.cpp | 179 + .../tests/unit/experimental/coro/co_spawn.cpp | 67 + .../unit/experimental/coro/exception.cpp | 172 + .../tests/unit/experimental/coro/executor.cpp | 116 + .../tests/unit/experimental/coro/partial.cpp | 45 + .../unit/experimental/coro/simple_test.cpp | 264 + .../unit/experimental/coro/stack_test.cpp | 83 + .../tests/unit/experimental/coro/use_coro.cpp | 77 + .../src/tests/unit/experimental/promise.cpp | 226 + .../asio/src/tests/unit/file_base.cpp | 25 + .../src/tests/unit/generic/basic_endpoint.cpp | 2 +- .../tests/unit/generic/datagram_protocol.cpp | 37 +- .../src/tests/unit/generic/raw_protocol.cpp | 38 +- .../unit/generic/seq_packet_protocol.cpp | 15 +- .../tests/unit/generic/stream_protocol.cpp | 23 +- .../src/tests/unit/high_resolution_timer.cpp | 2 +- .../asio/src/tests/unit/io_context.cpp | 89 +- .../asio/src/tests/unit/io_context_strand.cpp | 2 +- .../asio/src/tests/unit/ip/address.cpp | 9 +- .../asio/src/tests/unit/ip/basic_endpoint.cpp | 2 +- .../asio/src/tests/unit/ip/basic_resolver.cpp | 2 +- .../tests/unit/ip/basic_resolver_entry.cpp | 2 +- .../tests/unit/ip/basic_resolver_iterator.cpp | 2 +- .../tests/unit/ip/basic_resolver_query.cpp | 2 +- .../asio/src/tests/unit/ip/host_name.cpp | 4 +- .../asio/src/tests/unit/ip/icmp.cpp | 51 +- .../asio/src/tests/unit/ip/multicast.cpp | 4 +- .../asio/src/tests/unit/ip/network_v4.cpp | 4 +- .../asio/src/tests/unit/ip/network_v6.cpp | 4 +- .../src/tests/unit/ip/resolver_query_base.cpp | 2 +- .../asio/src/tests/unit/ip/tcp.cpp | 59 +- .../asio/src/tests/unit/ip/udp.cpp | 52 +- .../asio/src/tests/unit/ip/unicast.cpp | 4 +- .../asio/src/tests/unit/ip/v6_only.cpp | 4 +- .../asio/src/tests/unit/is_read_buffered.cpp | 2 +- .../asio/src/tests/unit/is_write_buffered.cpp | 2 +- .../asio/src/tests/unit/local/.gitignore | 1 + .../src/tests/unit/local/basic_endpoint.cpp | 2 +- .../src/tests/unit/local/connect_pair.cpp | 4 +- .../tests/unit/local/datagram_protocol.cpp | 4 +- .../tests/unit/local/seq_packet_protocol.cpp | 213 + .../src/tests/unit/local/stream_protocol.cpp | 4 +- .../asio/src/tests/unit/packaged_task.cpp | 2 +- .../asio/src/tests/unit/placeholders.cpp | 2 +- .../src/tests/unit/posix/basic_descriptor.cpp | 2 +- .../unit/posix/basic_stream_descriptor.cpp | 2 +- .../asio/src/tests/unit/posix/descriptor.cpp | 2 +- .../src/tests/unit/posix/descriptor_base.cpp | 2 +- .../tests/unit/posix/stream_descriptor.cpp | 19 +- .../asio/src/tests/unit/post.cpp | 2 +- .../asio/src/tests/unit/prepend.cpp | 62 + .../src/tests/unit/random_access_file.cpp | 179 + .../asio/src/tests/unit/read.cpp | 2 +- .../asio/src/tests/unit/read_at.cpp | 2 +- .../asio/src/tests/unit/read_until.cpp | 2 +- .../asio/src/tests/unit/readable_pipe.cpp | 139 + .../src/tests/unit/recycling_allocator.cpp | 82 + .../asio/src/tests/unit/redirect_error.cpp | 106 +- .../asio/src/tests/unit/registered_buffer.cpp | 111 + .../asio/src/tests/unit/serial_port.cpp | 12 +- .../asio/src/tests/unit/serial_port_base.cpp | 4 +- .../asio/src/tests/unit/signal_set.cpp | 7 +- .../asio/src/tests/unit/signal_set_base.cpp | 30 + .../asio/src/tests/unit/socket_base.cpp | 4 +- .../asio/src/tests/unit/ssl/context.cpp | 2 +- .../asio/src/tests/unit/ssl/context_base.cpp | 2 +- .../asio/src/tests/unit/ssl/error.cpp | 2 +- .../tests/unit/ssl/host_name_verification.cpp | 2 +- .../tests/unit/ssl/rfc2818_verification.cpp | 2 +- .../asio/src/tests/unit/ssl/stream.cpp | 10 +- .../asio/src/tests/unit/ssl/stream_base.cpp | 2 +- .../src/tests/unit/static_thread_pool.cpp | 2 +- .../asio/src/tests/unit/steady_timer.cpp | 2 +- .../asio/src/tests/unit/strand.cpp | 80 +- .../asio/src/tests/unit/stream_file.cpp | 181 + .../asio/src/tests/unit/streambuf.cpp | 2 +- .../asio/src/tests/unit/system_context.cpp | 2 +- .../asio/src/tests/unit/system_executor.cpp | 79 +- .../asio/src/tests/unit/system_timer.cpp | 43 +- .../asio/src/tests/unit/this_coro.cpp | 2 +- .../asio/src/tests/unit/thread.cpp | 2 +- .../asio/src/tests/unit/thread_pool.cpp | 107 +- .../asio/src/tests/unit/time_traits.cpp | 2 +- .../asio/src/tests/unit/ts/buffer.cpp | 2 +- .../asio/src/tests/unit/ts/executor.cpp | 2 +- .../asio/src/tests/unit/ts/internet.cpp | 2 +- .../asio/src/tests/unit/ts/io_context.cpp | 2 +- .../asio/src/tests/unit/ts/net.cpp | 2 +- .../asio/src/tests/unit/ts/netfwd.cpp | 2 +- .../asio/src/tests/unit/ts/socket.cpp | 2 +- .../asio/src/tests/unit/ts/timer.cpp | 2 +- .../asio/src/tests/unit/unit_test.hpp | 2 +- .../asio/src/tests/unit/use_awaitable.cpp | 2 +- .../asio/src/tests/unit/use_future.cpp | 2 +- .../asio/src/tests/unit/uses_executor.cpp | 2 +- .../asio/src/tests/unit/wait_traits.cpp | 2 +- .../unit/windows/basic_object_handle.cpp | 2 +- .../unit/windows/basic_overlapped_handle.cpp | 2 +- .../windows/basic_random_access_handle.cpp | 2 +- .../unit/windows/basic_stream_handle.cpp | 2 +- .../src/tests/unit/windows/object_handle.cpp | 12 +- .../tests/unit/windows/overlapped_handle.cpp | 2 +- .../src/tests/unit/windows/overlapped_ptr.cpp | 4 +- .../unit/windows/random_access_handle.cpp | 21 +- .../src/tests/unit/windows/stream_handle.cpp | 21 +- .../asio/src/tests/unit/writable_pipe.cpp | 144 + .../asio/src/tests/unit/write.cpp | 2 +- .../asio/src/tests/unit/write_at.cpp | 2 +- .../asio/src/tools/handlerlive.pl | 2 +- .../asio/src/tools/handlertree.pl | 2 +- .../asio/src/tools/handlerviz.pl | 2 +- .../modules/asio-standalone/asio/tsify.pl | 0 tidal-link/link/src/CMakeLists.txt | 7 +- .../discovery/tst_InterfaceScanner.cpp | 6 +- .../ableton/discovery/tst_PeerGateways.cpp | 10 +- .../ableton/discovery/tst_UdpMessenger.cpp | 7 +- .../link/src/ableton/link/tst_Beats.cpp | 4 +- .../link/src/ableton/link/tst_Controller.cpp | 10 +- .../src/ableton/link/tst_LinearRegression.cpp | 22 +- .../link/src/ableton/link/tst_Measurement.cpp | 6 +- .../link/src/ableton/link/tst_Median.cpp | 9 +- .../link/src/ableton/link/tst_PeerState.cpp | 71 + .../link/src/ableton/link/tst_Peers.cpp | 4 +- .../src/ableton/link/tst_PingResponder.cpp | 10 +- .../link/src/ableton/link/tst_Tempo.cpp | 4 +- .../src/ableton/link/tst_TripleBuffer.cpp | 4 +- tidal-link/link/src/ableton/tst_Link.cpp | 51 + 1625 files changed, 159422 insertions(+), 49642 deletions(-) create mode 100644 tidal-link/link/Ableton Link Guidelines.pdf mode change 100644 => 100755 tidal-link/link/ci/build.py mode change 100644 => 100755 tidal-link/link/ci/check-formatting.py mode change 100644 => 100755 tidal-link/link/ci/configure.py mode change 100644 => 100755 tidal-link/link/ci/run-tests.py mode change 100644 => 100755 tidal-link/link/ci/run_valgrind_tests.sh create mode 100644 tidal-link/link/examples/esp32/main/idf_component.yml rename tidal-link/link/include/ableton/{platforms/asio/Util.hpp => discovery/AsioTypes.hpp} (61%) rename tidal-link/link/include/ableton/discovery/{IpV4Interface.hpp => IpInterface.hpp} (73%) create mode 100644 tidal-link/link/include/ableton/link/MeasurementEndpointV6.hpp create mode 100644 tidal-link/link/modules/asio-standalone/.github/workflows/ci.yml delete mode 100644 tidal-link/link/modules/asio-standalone/.travis.yml create mode 100644 tidal-link/link/modules/asio-standalone/asio/asio.pc.in mode change 100644 => 100755 tidal-link/link/modules/asio-standalone/asio/autogen.sh mode change 100644 => 100755 tidal-link/link/modules/asio-standalone/asio/boostify.pl create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/any_completion_executor.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/any_completion_handler.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/append.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/as_tuple.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/associated_cancellation_slot.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/associated_immediate_executor.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/associator.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/basic_file.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/basic_random_access_file.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/basic_readable_pipe.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/basic_stream_file.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/basic_writable_pipe.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/bind_allocator.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/bind_cancellation_slot.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/bind_immediate_executor.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/buffer_registration.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/cancellation_signal.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/cancellation_state.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/cancellation_type.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/connect_pipe.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/consign.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/deferred.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/detail/base_from_cancellation_state.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/detail/composed_work.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/detail/exception.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/detail/impl/io_uring_descriptor_service.ipp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/detail/impl/io_uring_file_service.ipp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/detail/impl/io_uring_service.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/detail/impl/io_uring_service.ipp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/detail/impl/io_uring_socket_service_base.ipp rename tidal-link/link/modules/asio-standalone/asio/include/asio/detail/impl/{reactive_serial_port_service.ipp => posix_serial_port_service.ipp} (68%) create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/detail/impl/thread_context.ipp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/detail/impl/win_iocp_file_service.ipp rename tidal-link/link/modules/asio-standalone/asio/include/asio/{impl/defer.hpp => detail/initiate_defer.hpp} (74%) rename tidal-link/link/modules/asio-standalone/asio/include/asio/{impl/dispatch.hpp => detail/initiate_dispatch.hpp} (72%) rename tidal-link/link/modules/asio-standalone/asio/include/asio/{impl/post.hpp => detail/initiate_post.hpp} (74%) create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/detail/io_uring_descriptor_read_at_op.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/detail/io_uring_descriptor_read_op.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/detail/io_uring_descriptor_service.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/detail/io_uring_descriptor_write_at_op.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/detail/io_uring_descriptor_write_op.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/detail/io_uring_file_service.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/detail/io_uring_null_buffers_op.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/detail/io_uring_operation.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/detail/io_uring_service.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/detail/io_uring_socket_accept_op.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/detail/io_uring_socket_connect_op.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/detail/io_uring_socket_recv_op.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/detail/io_uring_socket_recvfrom_op.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/detail/io_uring_socket_recvmsg_op.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/detail/io_uring_socket_send_op.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/detail/io_uring_socket_sendto_op.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/detail/io_uring_socket_service.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/detail/io_uring_socket_service_base.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/detail/io_uring_wait_op.hpp rename tidal-link/link/modules/asio-standalone/asio/include/asio/detail/{reactive_serial_port_service.hpp => posix_serial_port_service.hpp} (81%) delete mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/detail/reactor_fwd.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/detail/scheduler_task.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/detail/utility.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/detail/win_iocp_file_service.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/experimental/append.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/experimental/as_single.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/experimental/as_tuple.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/experimental/awaitable_operators.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/experimental/basic_channel.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/experimental/basic_concurrent_channel.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/experimental/cancellation_condition.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/experimental/channel.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/experimental/channel_error.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/experimental/channel_traits.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/experimental/co_composed.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/experimental/co_spawn.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/experimental/concurrent_channel.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/experimental/coro.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/experimental/coro_traits.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/experimental/deferred.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/experimental/detail/channel_handler.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/experimental/detail/channel_message.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/experimental/detail/channel_operation.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/experimental/detail/channel_payload.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/experimental/detail/channel_receive_op.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/experimental/detail/channel_send_functions.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/experimental/detail/channel_send_op.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/experimental/detail/channel_service.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/experimental/detail/coro_completion_handler.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/experimental/detail/coro_promise_allocator.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/experimental/detail/has_signature.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/experimental/detail/impl/channel_service.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/experimental/detail/partial_promise.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/experimental/impl/as_single.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/experimental/impl/channel_error.ipp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/experimental/impl/co_composed.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/experimental/impl/coro.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/experimental/impl/parallel_group.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/experimental/impl/promise.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/experimental/impl/use_coro.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/experimental/impl/use_promise.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/experimental/parallel_group.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/experimental/prepend.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/experimental/promise.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/experimental/use_coro.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/experimental/use_promise.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/file_base.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/impl/any_completion_executor.ipp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/impl/any_io_executor.ipp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/impl/append.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/impl/as_tuple.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/impl/cancellation_signal.ipp delete mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/impl/compose.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/impl/connect_pipe.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/impl/connect_pipe.ipp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/impl/consign.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/impl/deferred.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/impl/prepend.hpp delete mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/impl/src.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/is_contiguous_iterator.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/local/seq_packet_protocol.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/prepend.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/random_access_file.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/readable_pipe.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/recycling_allocator.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/registered_buffer.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/signal_set_base.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/stream_file.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/writable_pipe.hpp mode change 100644 => 100755 tidal-link/link/modules/asio-standalone/asio/release.pl mode change 100644 => 100755 tidal-link/link/modules/asio-standalone/asio/src/doc/makepdf.pl create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/doc/model_dox.txt create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/doc/overview/cancellation.qbk create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/doc/overview/channels.qbk create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/doc/overview/compose.qbk create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/doc/overview/coro.qbk delete mode 100644 tidal-link/link/modules/asio-standalone/asio/src/doc/overview/coroutines_ts.qbk create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/doc/overview/cpp20_coroutines.qbk create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/doc/overview/deferred.qbk create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/doc/overview/files.qbk create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/doc/overview/futures.qbk create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/doc/overview/immediate_completion.qbk create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/doc/overview/model.qbk create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/doc/overview/model/allocators.qbk create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/doc/overview/model/associators.qbk create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/doc/overview/model/async_agent_chain.png create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/doc/overview/model/async_agent_model.png create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/doc/overview/model/async_agents.qbk create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/doc/overview/model/async_child_agent_chain.png create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/doc/overview/model/async_op_init_complete.png create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/doc/overview/model/async_op_model.png create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/doc/overview/model/async_op_phases.png create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/doc/overview/model/async_op_trivial_chain.png create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/doc/overview/model/async_ops.qbk create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/doc/overview/model/cancellation.qbk create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/doc/overview/model/child_agents.qbk create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/doc/overview/model/completion_token_model.png create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/doc/overview/model/completion_token_transform.png create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/doc/overview/model/completion_tokens.qbk create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/doc/overview/model/executors.qbk create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/doc/overview/model/higher_level_model.png create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/doc/overview/model/higher_levels.qbk create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/doc/overview/model/library_elements.qbk create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/doc/overview/parallel_group.qbk create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/doc/overview/pipes.qbk create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/doc/overview/promises.qbk create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/doc/overview/token_adapters.qbk create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/doc/overview/type_erasure.qbk create mode 100755 tidal-link/link/modules/asio-standalone/asio/src/doc/platform_macros.pl create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/doc/platform_macros.qbk create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/doc/requirements/AcceptToken.qbk create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/doc/requirements/BufferedHandshakeToken.qbk create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/doc/requirements/CancellationHandler.qbk create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/doc/requirements/CancellationSlot.qbk delete mode 100644 tidal-link/link/modules/asio-standalone/asio/src/doc/requirements/CompletionHandler.qbk create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/doc/requirements/ConnectToken.qbk create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/doc/requirements/HandshakeToken.qbk create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/doc/requirements/IteratorConnectToken.qbk create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/doc/requirements/MoveAcceptToken.qbk create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/doc/requirements/NullaryToken.qbk create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/doc/requirements/RangeConnectToken.qbk create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/doc/requirements/ReadToken.qbk create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/doc/requirements/ResolveToken.qbk create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/doc/requirements/ShutdownToken.qbk create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/doc/requirements/SignalToken.qbk create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/doc/requirements/WaitToken.qbk create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/doc/requirements/WriteToken.qbk delete mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp03/ssl/dh2048.pem create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp03/ssl/dh4096.pem create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp11/deferred/.gitignore create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp11/deferred/deferred_1.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp11/deferred/deferred_2.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp11/files/.gitignore create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp11/files/async_file_copy.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp11/files/blocking_file_copy.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp11/local/fd_passing_stream_client.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp11/local/fd_passing_stream_server.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp11/parallel_group/.gitignore create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp11/parallel_group/ranged_wait_for_all.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp11/parallel_group/wait_for_all.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp11/parallel_group/wait_for_one.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp11/parallel_group/wait_for_one_error.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp11/parallel_group/wait_for_one_success.cpp delete mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp11/ssl/dh2048.pem create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp11/ssl/dh4096.pem create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp11/type_erasure/.gitignore create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp11/type_erasure/line_reader.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp11/type_erasure/main.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp11/type_erasure/sleep.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp11/type_erasure/sleep.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp11/type_erasure/stdin_line_reader.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp11/type_erasure/stdin_line_reader.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp14/deferred/.gitignore create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp14/deferred/deferred_1.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp14/deferred/deferred_2.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp14/deferred/deferred_3.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp14/deferred/deferred_4.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp14/deferred/deferred_5.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp14/deferred/deferred_6.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp14/deferred/deferred_7.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp14/operations/c_callback_wrapper.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp14/operations/callback_wrapper.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp14/parallel_group/.gitignore create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp14/parallel_group/parallel_sort.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp14/parallel_group/ranged_wait_for_all.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp14/parallel_group/wait_for_all.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp14/parallel_group/wait_for_one.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp14/parallel_group/wait_for_one_error.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp14/parallel_group/wait_for_one_success.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp17/coroutines_ts/echo_server_with_as_single_default.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp17/coroutines_ts/echo_server_with_as_tuple_default.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp20/Makefile.am create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp20/channels/.gitignore create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp20/channels/throttling_proxy.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp20/coroutines/.gitignore create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp20/coroutines/chat_server.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp20/coroutines/echo_server.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp20/coroutines/echo_server_with_as_single_default.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp20/coroutines/echo_server_with_as_tuple_default.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp20/coroutines/echo_server_with_default.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp20/coroutines/echo_server_with_deferred.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp20/coroutines/echo_server_with_deferred_default.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp20/coroutines/refactored_echo_server.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp20/coroutines/timeout.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp20/operations/.gitignore create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp20/operations/c_callback_wrapper.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp20/operations/callback_wrapper.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp20/operations/composed_1.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp20/operations/composed_2.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp20/operations/composed_3.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp20/operations/composed_4.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp20/operations/composed_5.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp20/operations/composed_6.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp20/operations/composed_7.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp20/operations/composed_8.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp20/type_erasure/.gitignore create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp20/type_erasure/line_reader.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp20/type_erasure/main.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp20/type_erasure/sleep.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp20/type_erasure/sleep.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp20/type_erasure/stdin_line_reader.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp20/type_erasure/stdin_line_reader.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/tests/unit/append.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/tests/unit/as_tuple.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/tests/unit/associated_cancellation_slot.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/tests/unit/associated_immediate_executor.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/tests/unit/associator.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/tests/unit/basic_file.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/tests/unit/basic_random_access_file.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/tests/unit/basic_readable_pipe.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/tests/unit/basic_stream_file.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/tests/unit/basic_writable_pipe.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/tests/unit/bind_allocator.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/tests/unit/bind_cancellation_slot.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/tests/unit/bind_immediate_executor.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/tests/unit/buffer_registration.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/tests/unit/cancellation_signal.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/tests/unit/cancellation_state.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/tests/unit/cancellation_type.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/tests/unit/connect_pipe.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/tests/unit/consign.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/tests/unit/deferred.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/tests/unit/experimental/.gitignore create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/tests/unit/experimental/awaitable_operators.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/tests/unit/experimental/basic_channel.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/tests/unit/experimental/basic_concurrent_channel.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/tests/unit/experimental/channel.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/tests/unit/experimental/channel_traits.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/tests/unit/experimental/co_composed.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/tests/unit/experimental/concurrent_channel.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/tests/unit/experimental/coro/.gitignore create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/tests/unit/experimental/coro/allocator.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/tests/unit/experimental/coro/cancel.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/tests/unit/experimental/coro/co_spawn.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/tests/unit/experimental/coro/exception.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/tests/unit/experimental/coro/executor.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/tests/unit/experimental/coro/partial.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/tests/unit/experimental/coro/simple_test.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/tests/unit/experimental/coro/stack_test.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/tests/unit/experimental/coro/use_coro.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/tests/unit/experimental/promise.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/tests/unit/file_base.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/tests/unit/local/seq_packet_protocol.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/tests/unit/prepend.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/tests/unit/random_access_file.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/tests/unit/readable_pipe.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/tests/unit/recycling_allocator.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/tests/unit/registered_buffer.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/tests/unit/signal_set_base.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/tests/unit/stream_file.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/tests/unit/writable_pipe.cpp mode change 100644 => 100755 tidal-link/link/modules/asio-standalone/asio/src/tools/handlerlive.pl mode change 100644 => 100755 tidal-link/link/modules/asio-standalone/asio/src/tools/handlertree.pl mode change 100644 => 100755 tidal-link/link/modules/asio-standalone/asio/src/tools/handlerviz.pl mode change 100644 => 100755 tidal-link/link/modules/asio-standalone/asio/tsify.pl create mode 100644 tidal-link/link/src/ableton/link/tst_PeerState.cpp create mode 100644 tidal-link/link/src/ableton/tst_Link.cpp diff --git a/tidal-link/link/.appveyor.yml b/tidal-link/link/.appveyor.yml index 27214e28d..aff8de98c 100644 --- a/tidal-link/link/.appveyor.yml +++ b/tidal-link/link/.appveyor.yml @@ -12,15 +12,15 @@ environment: - APPVEYOR_BUILD_WORKER_IMAGE: macos-catalina CONFIGURATION: Release XCODE_VERSION: 11.7 - - APPVEYOR_BUILD_WORKER_IMAGE: macos-catalina + - APPVEYOR_BUILD_WORKER_IMAGE: macos-bigsur CONFIGURATION: Debug - XCODE_VERSION: 12.3 + XCODE_VERSION: 12.5.1 - APPVEYOR_BUILD_WORKER_IMAGE: macos-monterey CONFIGURATION: Release - XCODE_VERSION: 12.5.1 + XCODE_VERSION: 13.4.1 - APPVEYOR_BUILD_WORKER_IMAGE: macos-monterey CONFIGURATION: Release - XCODE_VERSION: 13.2.1 + XCODE_VERSION: 14.1 - APPVEYOR_BUILD_WORKER_IMAGE: Ubuntu2004 AUDIO_DRIVER: Jack CONFIGURATION: Debug @@ -52,20 +52,10 @@ environment: GENERATOR: Ninja CXX: g++-7 - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015 - AUDIO_DRIVER: Asio - THREAD_DESCRIPTION: OFF - CONFIGURATION: Release - GENERATOR: Visual Studio 14 2015 - - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015 - AUDIO_DRIVER: Asio + AUDIO_DRIVER: Wasapi THREAD_DESCRIPTION: OFF CONFIGURATION: Debug GENERATOR: Visual Studio 14 2015 Win64 - - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015 - AUDIO_DRIVER: Asio - THREAD_DESCRIPTION: OFF - CONFIGURATION: Release - GENERATOR: Visual Studio 14 2015 Win64 - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015 AUDIO_DRIVER: Wasapi THREAD_DESCRIPTION: OFF @@ -88,7 +78,7 @@ environment: GENERATOR: Visual Studio 17 2022 - APPVEYOR_BUILD_WORKER_IMAGE: Ubuntu2004 ESP_IDF: true - IDF_RELEASE: v4.3.1 + IDF_RELEASE: v5.1.1 - APPVEYOR_BUILD_WORKER_IMAGE: Ubuntu2004 FORMATTING: true @@ -100,6 +90,7 @@ for: only: - APPVEYOR_BUILD_WORKER_IMAGE: macos-mojave - APPVEYOR_BUILD_WORKER_IMAGE: macos-catalina + - APPVEYOR_BUILD_WORKER_IMAGE: macos-bigsur - APPVEYOR_BUILD_WORKER_IMAGE: macos-monterey build_script: - sudo xcode-select -s /Applications/Xcode-$XCODE_VERSION.app @@ -114,7 +105,6 @@ for: - GENERATOR: Ninja install: - git submodule update --init --recursive - - sudo apt-get update - sudo apt-get install -y libjack-dev portaudio19-dev valgrind build_script: - python3 ci/configure.py --audio-driver $AUDIO_DRIVER --generator "$GENERATOR" --configuration $CONFIGURATION @@ -129,6 +119,7 @@ for: - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019 - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2022 build_script: + - py -3 -m pip install setuptools - py -3 ci/configure.py --audio-driver %AUDIO_DRIVER% --thread-description %THREAD_DESCRIPTION% --generator "%GENERATOR%" --flags="-DCMAKE_SYSTEM_VERSION=10.0.18362.0" - py -3 ci/build.py --configuration %CONFIGURATION% test_script: diff --git a/tidal-link/link/Ableton Link Guidelines.pdf b/tidal-link/link/Ableton Link Guidelines.pdf new file mode 100644 index 0000000000000000000000000000000000000000..09cf86ae377adecb1a874321288a04e71831c3ea GIT binary patch literal 291991 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

BbUaVIA91buBy0Hc`P|g= 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%0DtomVqWtQk7>e&C@D# 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�@$UJQ}xU4n~+czN#bOf5q zaO^RgUx>s?&D%vwN3EI6f+GeS04~D|%W|=CVj!D!g6r`54gz zY;SnG7=xTkX;2A>c4ZYaJA>o|^w3;i>8s3Er4MDMFTgUQuPYp#$7S=w<#6D;6SB&K zO=am&;;-JsOuqkeSQ*;hH|W zF7UE%VV%eEYAK5{rok=lXsgfr`YbLjSP!M`Ey(?GQ6TG!f1)?Ex4zT|nU}F;OH{jA zJHSRR3v{C**B8LelgYeX59v9jj4f~+#mrU}*o!lLWli5>*n8kAMB>sHGMCF>18LK$wz!~C z^aYk=?-mM)O|}X>%Rd{pHYR&ta6k~zvuIb*-2g&{1e?n;UjqY$^k)!K7~;m@`j7&o zuhkBDQMSXRrN7{sN|_gI9b9I6tOk9GV&nRvpfmhjW=okrEQZMD=dnkWbN1HLcP^oi zZak2(nEAcOg$QEJ`%WO|V)enGNo8smc!K(d+JFE-{XlJ?en1vbKTsR=ZlIW`vCun$ z=0?Rt#YDx#!2%i!8Vec=8Vkt+iU*1ZiU%ngv{qI;P&`mPP&`N$P&`mPP&`P{p!I>` zf#QMUf#N~3fZ~DTf#N}m2CWYi4-^j+4-^lQ1r!ey4-^klG-!RGc%XQoc%XQYETDLx zc%XQYqT$>1!KqvC4{bLA%hv1tmzK`aPk(LR%o?1!v#aK&u59BLHZB?$7CtPNWoT@* zs^+s$xJ9#AndQ literal 0 HcmV?d00001 diff --git a/tidal-link/link/AbletonLinkConfig.cmake b/tidal-link/link/AbletonLinkConfig.cmake index 43b66e7d3..b036deb17 100644 --- a/tidal-link/link/AbletonLinkConfig.cmake +++ b/tidal-link/link/AbletonLinkConfig.cmake @@ -36,6 +36,11 @@ elseif(CMAKE_SYSTEM_NAME MATCHES "Linux|kFreeBSD|GNU") INTERFACE_COMPILE_DEFINITIONS LINK_PLATFORM_LINUX=1 ) + set_property(TARGET Ableton::Link APPEND PROPERTY + INTERFACE_LINK_LIBRARIES + atomic + pthread + ) endif() include(${CMAKE_CURRENT_LIST_DIR}/cmake_include/AsioStandaloneConfig.cmake) diff --git a/tidal-link/link/CMakeLists.txt b/tidal-link/link/CMakeLists.txt index 5924722da..52187f572 100644 --- a/tidal-link/link/CMakeLists.txt +++ b/tidal-link/link/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.0) +cmake_minimum_required(VERSION 3.5) project(Link) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) @@ -22,6 +22,8 @@ if(WIN32) option(LINK_BUILD_VLD "Build with VLD support (VLD must be installed separately)" OFF) endif() +option(LINK_BUILD_TESTS "Build unit test binaries" ON) + # ____ _ _ # | _ \ __ _| |_| |__ ___ # | |_) / _` | __| '_ \/ __| @@ -36,7 +38,9 @@ include(AbletonLinkConfig.cmake) include(extensions/abl_link/abl_link.cmake) add_subdirectory(include) +if(LINK_BUILD_TESTS) add_subdirectory(src) +endif() add_subdirectory(examples) add_subdirectory(extensions/abl_link) diff --git a/tidal-link/link/README.md b/tidal-link/link/README.md index ee2c6b1d9..094c2f997 100644 --- a/tidal-link/link/README.md +++ b/tidal-link/link/README.md @@ -108,7 +108,7 @@ implementations. Please see: [platforms/darwin/Clock.hpp](include/ableton/platforms/darwin/Clock.hpp) - Windows clock implementation in [platforms/windows/Clock.hpp](include/ableton/platforms/windows/Clock.hpp) -- C++ standard library `std::chrono::high_resolution_clock`-based implementation in +- C++ standard library `std::chrono::steady_clock`-based implementation in [platforms/stl/Clock.hpp](include/ableton/platforms/stl/Clock.hpp) Using the system time correctly in the context of an audio callback gets a little diff --git a/tidal-link/link/ci/build.py b/tidal-link/link/ci/build.py old mode 100644 new mode 100755 diff --git a/tidal-link/link/ci/check-formatting.py b/tidal-link/link/ci/check-formatting.py old mode 100644 new mode 100755 diff --git a/tidal-link/link/ci/configure.py b/tidal-link/link/ci/configure.py old mode 100644 new mode 100755 diff --git a/tidal-link/link/ci/run-tests.py b/tidal-link/link/ci/run-tests.py old mode 100644 new mode 100755 diff --git a/tidal-link/link/ci/run_valgrind_tests.sh b/tidal-link/link/ci/run_valgrind_tests.sh old mode 100644 new mode 100755 diff --git a/tidal-link/link/cmake_include/ConfigureCompileFlags.cmake b/tidal-link/link/cmake_include/ConfigureCompileFlags.cmake index 63bdfec57..ec6cd55e3 100644 --- a/tidal-link/link/cmake_include/ConfigureCompileFlags.cmake +++ b/tidal-link/link/cmake_include/ConfigureCompileFlags.cmake @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.0) +cmake_minimum_required(VERSION 3.5) set(build_flags_COMMON_LIST) set(build_flags_DEBUG_LIST) @@ -128,6 +128,8 @@ elseif(${CMAKE_CXX_COMPILER_ID} STREQUAL MSVC) "/wd4868" # Compiler may not enforce left-to-right evaluation order in braced initializer list "/wd5026" # Move constructor was implicitly defined as deleted "/wd5027" # Move assignment operator was implicitly defined as deleted + "/wd5262" # implicit fall-through + "/wd5264" # 'variable-name': 'const' variable is not used ) endif() diff --git a/tidal-link/link/examples/CMakeLists.txt b/tidal-link/link/examples/CMakeLists.txt index f75b00b1b..775b1dfd0 100644 --- a/tidal-link/link/examples/CMakeLists.txt +++ b/tidal-link/link/examples/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.0) +cmake_minimum_required(VERSION 3.5) project(LinkExamples) # _ ____ ___ ___ @@ -11,7 +11,7 @@ project(LinkExamples) if(WIN32) function(configure_asio asio_sdk_path_OUT) # ASIO-related path/file variables - set(asio_download_root "https:/download.steinberg.net/sdk_downloads") + set(asio_download_root "https://download.steinberg.net/sdk_downloads") set(asio_file_name "asiosdk_2.3.3_2019-06-14.zip") set(asio_dir_name "asiosdk_2.3.3_2019-06-14") set(asio_working_dir "${CMAKE_BINARY_DIR}/modules") @@ -96,10 +96,6 @@ source_group("Audio Sources" FILES ${linkhut_audio_SOURCES}) # function(configure_linkhut_executable target) - if(CMAKE_SYSTEM_NAME MATCHES "Linux|kFreeBSD|GNU") - target_link_libraries(${target} atomic pthread) - endif() - target_link_libraries(${target} Ableton::Link) endfunction() diff --git a/tidal-link/link/examples/esp32/.gitignore b/tidal-link/link/examples/esp32/.gitignore index d054d8439..38c3a5f9e 100644 --- a/tidal-link/link/examples/esp32/.gitignore +++ b/tidal-link/link/examples/esp32/.gitignore @@ -1,3 +1,4 @@ build sdkconfig sdkconfig.old +managed_components diff --git a/tidal-link/link/examples/esp32/main/idf_component.yml b/tidal-link/link/examples/esp32/main/idf_component.yml new file mode 100644 index 000000000..75eccbfe8 --- /dev/null +++ b/tidal-link/link/examples/esp32/main/idf_component.yml @@ -0,0 +1,17 @@ +## IDF Component Manager Manifest File +dependencies: + espressif/asio: "*" + ## Required IDF version + idf: + version: ">=4.1.0" + # # Put list of dependencies here + # # For components maintained by Espressif: + # component: "~1.0.0" + # # For 3rd party components: + # username/component: ">=1.0.0,<2.0.0" + # username2/component2: + # version: "~1.0.0" + # # For transient dependencies `public` flag can be set. + # # `public` flag doesn't have an effect dependencies of the `main` component. + # # All dependencies of `main` are public by default. + # public: true diff --git a/tidal-link/link/examples/esp32/main/main.cpp b/tidal-link/link/examples/esp32/main/main.cpp index b44f45923..0a5c56ba2 100644 --- a/tidal-link/link/examples/esp32/main/main.cpp +++ b/tidal-link/link/examples/esp32/main/main.cpp @@ -1,6 +1,6 @@ #include #include -#include +#include #include #include #include @@ -21,38 +21,6 @@ char* if_indextoname(unsigned int ifIndex, char* ifName) return nullptr; } -void IRAM_ATTR timer_group0_isr(void* userParam) -{ - static BaseType_t xHigherPriorityTaskWoken = pdFALSE; - - TIMERG0.int_clr_timers.t0 = 1; - TIMERG0.hw_timer[0].config.alarm_en = 1; - - xSemaphoreGiveFromISR(userParam, &xHigherPriorityTaskWoken); - if (xHigherPriorityTaskWoken) - { - portYIELD_FROM_ISR(); - } -} - -void timerGroup0Init(int timerPeriodUS, void* userParam) -{ - timer_config_t config = {.alarm_en = TIMER_ALARM_EN, - .counter_en = TIMER_PAUSE, - .intr_type = TIMER_INTR_LEVEL, - .counter_dir = TIMER_COUNT_UP, - .auto_reload = TIMER_AUTORELOAD_EN, - .divider = 80}; - - timer_init(TIMER_GROUP_0, TIMER_0, &config); - timer_set_counter_value(TIMER_GROUP_0, TIMER_0, 0); - timer_set_alarm_value(TIMER_GROUP_0, TIMER_0, timerPeriodUS); - timer_enable_intr(TIMER_GROUP_0, TIMER_0); - timer_isr_register(TIMER_GROUP_0, TIMER_0, &timer_group0_isr, userParam, 0, nullptr); - - timer_start(TIMER_GROUP_0, TIMER_0); -} - void printTask(void* userParam) { auto link = static_cast(userParam); @@ -73,7 +41,6 @@ void printTask(void* userParam) void tickTask(void* userParam) { - SemaphoreHandle_t handle = static_cast(userParam); ableton::Link link(120.0f); link.enable(true); @@ -86,12 +53,10 @@ void tickTask(void* userParam) while (true) { - xSemaphoreTake(handle, portMAX_DELAY); - const auto state = link.captureAudioSessionState(); const auto phase = state.phaseAtTime(link.clock().micros(), 1.); gpio_set_level(LED, fmodf(phase, 1.) < 0.1); - portYIELD(); + vTaskDelay(1); } } @@ -102,8 +67,5 @@ extern "C" void app_main() ESP_ERROR_CHECK(esp_event_loop_create_default()); ESP_ERROR_CHECK(example_connect()); - SemaphoreHandle_t tickSemphr = xSemaphoreCreateBinary(); - timerGroup0Init(100, tickSemphr); - - xTaskCreate(tickTask, "tick", 8192, tickSemphr, configMAX_PRIORITIES - 1, nullptr); + xTaskCreate(tickTask, "tick", 8192, nullptr, configMAX_PRIORITIES - 1, nullptr); } diff --git a/tidal-link/link/examples/esp32/sdkconfig.defaults b/tidal-link/link/examples/esp32/sdkconfig.defaults index 75ebeae1c..33b93f576 100644 --- a/tidal-link/link/examples/esp32/sdkconfig.defaults +++ b/tidal-link/link/examples/esp32/sdkconfig.defaults @@ -1 +1,3 @@ CONFIG_COMPILER_CXX_EXCEPTIONS=y +CONFIG_PARTITION_TABLE_SINGLE_APP_LARGE=y + diff --git a/tidal-link/link/extensions/abl_link/abl_link.cmake b/tidal-link/link/extensions/abl_link/abl_link.cmake index 00efd1ee2..8e52a063b 100644 --- a/tidal-link/link/extensions/abl_link/abl_link.cmake +++ b/tidal-link/link/extensions/abl_link/abl_link.cmake @@ -13,7 +13,3 @@ target_include_directories(abl_link PUBLIC set_property(TARGET abl_link PROPERTY C_STANDARD 11) target_link_libraries(abl_link Ableton::Link) - -if(CMAKE_SYSTEM_NAME MATCHES "Linux|kFreeBSD|GNU") - target_link_libraries(abl_link atomic pthread) -endif() diff --git a/tidal-link/link/include/CMakeLists.txt b/tidal-link/link/include/CMakeLists.txt index 1c7b5ed96..2cf37b8f0 100644 --- a/tidal-link/link/include/CMakeLists.txt +++ b/tidal-link/link/include/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.0) +cmake_minimum_required(VERSION 3.5) project(LinkCore) # ____ @@ -19,6 +19,7 @@ set(link_core_HEADERS ${link_core_DIR}/LinearRegression.hpp ${link_core_DIR}/Measurement.hpp ${link_core_DIR}/MeasurementEndpointV4.hpp + ${link_core_DIR}/MeasurementEndpointV6.hpp ${link_core_DIR}/MeasurementService.hpp ${link_core_DIR}/Median.hpp ${link_core_DIR}/NodeId.hpp @@ -49,8 +50,9 @@ set(link_core_HEADERS set(link_discovery_DIR ${CMAKE_CURRENT_SOURCE_DIR}/ableton/discovery) set(link_discovery_HEADERS + ${link_discovery_DIR}/AsioTypes.hpp ${link_discovery_DIR}/InterfaceScanner.hpp - ${link_discovery_DIR}/IpV4Interface.hpp + ${link_discovery_DIR}/IpInterface.hpp ${link_discovery_DIR}/MessageTypes.hpp ${link_discovery_DIR}/NetworkByteStreamSerializable.hpp ${link_discovery_DIR}/Payload.hpp @@ -77,7 +79,6 @@ set(link_platform_HEADERS ${link_platform_DIR}/asio/Context.hpp ${link_platform_DIR}/asio/LockFreeCallbackDispatcher.hpp ${link_platform_DIR}/asio/Socket.hpp - ${link_platform_DIR}/asio/Util.hpp ) if(ESP_PLATFORM) diff --git a/tidal-link/link/include/ableton/Link.ipp b/tidal-link/link/include/ableton/Link.ipp index f8cbce832..28fb1e471 100644 --- a/tidal-link/link/include/ableton/Link.ipp +++ b/tidal-link/link/include/ableton/Link.ipp @@ -225,19 +225,33 @@ inline void BasicLink::SessionState::requestBeatAtTime( forceBeatAtTime(beat, time, quantum); } -template -inline void BasicLink::SessionState::forceBeatAtTime( - const double beat, const std::chrono::microseconds time, const double quantum) +inline void forceBeatAtTimeImpl(link::Timeline& timeline, + const link::Beats beat, + const std::chrono::microseconds time, + const link::Beats quantum) { // There are two components to the beat adjustment: a phase shift // and a beat magnitude adjustment. - const auto curBeatAtTime = link::Beats{beatAtTime(time, quantum)}; - const auto closestInPhase = - link::closestPhaseMatch(curBeatAtTime, link::Beats{beat}, link::Beats{quantum}); - mState.timeline = shiftClientTimeline(mState.timeline, closestInPhase - curBeatAtTime); + const auto curBeatAtTime = link::toPhaseEncodedBeats(timeline, time, quantum); + const auto closestInPhase = link::closestPhaseMatch(curBeatAtTime, beat, quantum); + timeline = shiftClientTimeline(timeline, closestInPhase - curBeatAtTime); // Now adjust the magnitude - mState.timeline.beatOrigin = - mState.timeline.beatOrigin + (link::Beats{beat} - closestInPhase); + timeline.beatOrigin = timeline.beatOrigin + beat - closestInPhase; +} + +template +inline void BasicLink::SessionState::forceBeatAtTime( + const double beat, std::chrono::microseconds time, const double quantum) +{ + forceBeatAtTimeImpl(mState.timeline, link::Beats{beat}, time, link::Beats{quantum}); + + // Due to quantization errors the resulting BeatTime at 'time' after forcing can be + // bigger than 'beat' which then violates intended behavior of the API and can lead + // i.e. to missing a downbeat. Thus we have to shift the timeline forwards. + if (beatAtTime(time, quantum) > beat) + { + forceBeatAtTimeImpl(mState.timeline, link::Beats{beat}, ++time, link::Beats{quantum}); + } } template diff --git a/tidal-link/link/include/ableton/platforms/asio/Util.hpp b/tidal-link/link/include/ableton/discovery/AsioTypes.hpp similarity index 61% rename from tidal-link/link/include/ableton/platforms/asio/Util.hpp rename to tidal-link/link/include/ableton/discovery/AsioTypes.hpp index b974c10cc..fe0e9a7a3 100644 --- a/tidal-link/link/include/ableton/platforms/asio/Util.hpp +++ b/tidal-link/link/include/ableton/discovery/AsioTypes.hpp @@ -1,4 +1,4 @@ -/* Copyright 2016, Ableton AG, Berlin. All rights reserved. +/* Copyright 2023, Ableton AG, Berlin. All rights reserved. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -19,16 +19,19 @@ #pragma once -#include +#include namespace ableton { -namespace platforms -{ -namespace asio +namespace discovery { -// Utility for making v4 or v6 ip addresses from raw bytes in network byte-order +using IpAddress = LINK_ASIO_NAMESPACE::ip::address; +using IpAddressV4 = LINK_ASIO_NAMESPACE::ip::address_v4; +using IpAddressV6 = LINK_ASIO_NAMESPACE::ip::address_v6; +using UdpSocket = LINK_ASIO_NAMESPACE::ip::udp::socket; +using UdpEndpoint = LINK_ASIO_NAMESPACE::ip::udp::endpoint; + template AsioAddrType makeAddress(const char* pAddr) { @@ -38,6 +41,14 @@ AsioAddrType makeAddress(const char* pAddr) return AsioAddrType{bytes}; } -} // namespace asio -} // namespace platforms +template +AsioAddrType makeAddress(const char* pAddr, uint32_t scopeId) +{ + using namespace std; + typename AsioAddrType::bytes_type bytes; + copy(pAddr, pAddr + bytes.size(), begin(bytes)); + return AsioAddrType{bytes, scopeId}; +} + +} // namespace discovery } // namespace ableton diff --git a/tidal-link/link/include/ableton/discovery/InterfaceScanner.hpp b/tidal-link/link/include/ableton/discovery/InterfaceScanner.hpp index cb3adad56..c3a37f2b9 100644 --- a/tidal-link/link/include/ableton/discovery/InterfaceScanner.hpp +++ b/tidal-link/link/include/ableton/discovery/InterfaceScanner.hpp @@ -19,7 +19,7 @@ #pragma once -#include +#include #include #include #include @@ -29,7 +29,7 @@ namespace ableton namespace discovery { -// Callback takes a range of asio::ip:address which is +// Callback takes a range of IpAddress which is // guaranteed to be sorted and unique template class InterfaceScanner @@ -64,7 +64,7 @@ class InterfaceScanner using namespace std; debug(mIo->log()) << "Scanning network interfaces"; // Rescan the hardware for available network interface addresses - vector addrs = mIo->scanNetworkInterfaces(); + vector addrs = mIo->scanNetworkInterfaces(); // Sort and unique them to guarantee consistent comparison sort(begin(addrs), end(addrs)); addrs.erase(unique(begin(addrs), end(addrs)), end(addrs)); diff --git a/tidal-link/link/include/ableton/discovery/IpV4Interface.hpp b/tidal-link/link/include/ableton/discovery/IpInterface.hpp similarity index 73% rename from tidal-link/link/include/ableton/discovery/IpV4Interface.hpp rename to tidal-link/link/include/ableton/discovery/IpInterface.hpp index 9967f5125..00a59db4c 100644 --- a/tidal-link/link/include/ableton/discovery/IpV4Interface.hpp +++ b/tidal-link/link/include/ableton/discovery/IpInterface.hpp @@ -19,7 +19,7 @@ #pragma once -#include +#include #include namespace ableton @@ -27,9 +27,17 @@ namespace ableton namespace discovery { -inline asio::ip::udp::endpoint multicastEndpoint() +inline UdpEndpoint multicastEndpointV4() { - return {asio::ip::address_v4::from_string("224.76.78.75"), 20808}; + return {IpAddressV4::from_string("224.76.78.75"), 20808}; +} + +inline UdpEndpoint multicastEndpointV6(uint64_t scopeId) +{ + // This is a non-permanently-assigned link-local multicast address (RFC4291) + return { + ::LINK_ASIO_NAMESPACE::ip::make_address("ff12::8080%" + std::to_string(scopeId)), + 20808}; } // Type tags for dispatching between unicast and multicast packets @@ -41,22 +49,22 @@ struct UnicastTag }; template -class IpV4Interface +class IpInterface { public: using Socket = typename util::Injected::type::template Socket; - IpV4Interface(util::Injected io, const asio::ip::address_v4& addr) + IpInterface(util::Injected io, const IpAddress& addr) : mIo(std::move(io)) , mMulticastReceiveSocket(mIo->template openMulticastSocket(addr)) , mSendSocket(mIo->template openUnicastSocket(addr)) { } - IpV4Interface(const IpV4Interface&) = delete; - IpV4Interface& operator=(const IpV4Interface&) = delete; + IpInterface(const IpInterface&) = delete; + IpInterface& operator=(const IpInterface&) = delete; - IpV4Interface(IpV4Interface&& rhs) + IpInterface(IpInterface&& rhs) : mIo(std::move(rhs.mIo)) , mMulticastReceiveSocket(std::move(rhs.mMulticastReceiveSocket)) , mSendSocket(std::move(rhs.mSendSocket)) @@ -65,7 +73,7 @@ class IpV4Interface std::size_t send( - const uint8_t* const pData, const size_t numBytes, const asio::ip::udp::endpoint& to) + const uint8_t* const pData, const size_t numBytes, const UdpEndpoint& to) { return mSendSocket.send(pData, numBytes, to); } @@ -83,7 +91,7 @@ class IpV4Interface SocketReceiver(std::move(handler))); } - asio::ip::udp::endpoint endpoint() const + UdpEndpoint endpoint() const { return mSendSocket.endpoint(); } @@ -98,8 +106,7 @@ class IpV4Interface } template - void operator()( - const asio::ip::udp::endpoint& from, const It messageBegin, const It messageEnd) + void operator()(const UdpEndpoint& from, const It messageBegin, const It messageEnd) { mHandler(Tag{}, from, messageBegin, messageEnd); } @@ -113,8 +120,8 @@ class IpV4Interface }; template -IpV4Interface makeIpV4Interface( - util::Injected io, const asio::ip::address_v4& addr) +IpInterface makeIpInterface( + util::Injected io, const IpAddress& addr) { return {std::move(io), addr}; } diff --git a/tidal-link/link/include/ableton/discovery/NetworkByteStreamSerializable.hpp b/tidal-link/link/include/ableton/discovery/NetworkByteStreamSerializable.hpp index 49a119530..6a39bba92 100644 --- a/tidal-link/link/include/ableton/discovery/NetworkByteStreamSerializable.hpp +++ b/tidal-link/link/include/ableton/discovery/NetworkByteStreamSerializable.hpp @@ -19,7 +19,7 @@ #pragma once -#include +#include #if defined(LINK_PLATFORM_MACOSX) #include #elif defined(LINK_PLATFORM_LINUX) diff --git a/tidal-link/link/include/ableton/discovery/Payload.hpp b/tidal-link/link/include/ableton/discovery/Payload.hpp index 1d48caa7e..f29467288 100644 --- a/tidal-link/link/include/ableton/discovery/Payload.hpp +++ b/tidal-link/link/include/ableton/discovery/Payload.hpp @@ -82,6 +82,11 @@ struct PayloadEntry template friend It toNetworkByteStream(const PayloadEntry& entry, It out) { + // Don't serialize Entry if its value is of size zero + if (sizeInByteStream(entry.value) == 0) + { + return out; + } return toNetworkByteStream( entry.value, toNetworkByteStream(entry.header, std::move(out))); } diff --git a/tidal-link/link/include/ableton/discovery/PeerGateway.hpp b/tidal-link/link/include/ableton/discovery/PeerGateway.hpp index db434394c..6b4db27c1 100644 --- a/tidal-link/link/include/ableton/discovery/PeerGateway.hpp +++ b/tidal-link/link/include/ableton/discovery/PeerGateway.hpp @@ -216,7 +216,7 @@ PeerGateway makePeerGateway( // IpV4 gateway types template using IpV4Messenger = UdpMessenger< - IpV4Interface::type&, v1::kMaxMessageSize>, + IpInterface::type&, v1::kMaxMessageSize>, StateQuery, IoContext>; @@ -226,11 +226,11 @@ using IpV4Gateway = PeerObserver, IoContext>; -// Factory function to bind a PeerGateway to an IpV4Interface with the given address. +// Factory function to bind a PeerGateway to an IpInterface with the given address. template IpV4Gateway makeIpV4Gateway( util::Injected io, - const asio::ip::address_v4& addr, + const IpAddress& addr, util::Injected observer, NodeState state) { @@ -240,7 +240,7 @@ IpV4Gateway makeIpV4Gateway( const uint8_t ttl = 5; const uint8_t ttlRatio = 20; - auto iface = makeIpV4Interface(injectRef(*io), addr); + auto iface = makeIpInterface(injectRef(*io), addr); auto messenger = makeUdpMessenger( injectVal(std::move(iface)), std::move(state), injectRef(*io), ttl, ttlRatio); diff --git a/tidal-link/link/include/ableton/discovery/PeerGateways.hpp b/tidal-link/link/include/ableton/discovery/PeerGateways.hpp index bdefbaef2..959d7fd29 100644 --- a/tidal-link/link/include/ableton/discovery/PeerGateways.hpp +++ b/tidal-link/link/include/ableton/discovery/PeerGateways.hpp @@ -19,8 +19,8 @@ #pragma once +#include #include -#include #include namespace ableton @@ -28,16 +28,17 @@ namespace ableton namespace discovery { -// GatewayFactory must have an operator()(NodeState, IoRef, asio::ip::address) +// GatewayFactory must have an operator()(NodeState, IoRef, IpAddress) // that constructs a new PeerGateway on a given interface address. template class PeerGateways { public: using IoType = typename util::Injected::type; - using Gateway = typename std::result_of, asio::ip::address)>::type; - using GatewayMap = std::map; + using Gateway = decltype(std::declval()(std::declval(), + std::declval>(), + std::declval())); + using GatewayMap = std::map; PeerGateways(const std::chrono::seconds rescanPeriod, NodeState state, @@ -86,7 +87,7 @@ class PeerGateways // If a gateway has become non-responsive or is throwing exceptions, // this method can be invoked to either fix it or discard it. - void repairGateway(const asio::ip::address& gatewayAddr) + void repairGateway(const IpAddress& gatewayAddr) { if (mpScannerCallback->mGateways.erase(gatewayAddr)) { @@ -111,18 +112,18 @@ class PeerGateways { using namespace std; // Get the set of current addresses. - vector curAddrs; + vector curAddrs; curAddrs.reserve(mGateways.size()); transform(std::begin(mGateways), std::end(mGateways), back_inserter(curAddrs), [](const typename GatewayMap::value_type& vt) { return vt.first; }); // Now use set_difference to determine the set of addresses that // are new and the set of cur addresses that are no longer there - vector newAddrs; + vector newAddrs; set_difference(std::begin(range), std::end(range), std::begin(curAddrs), std::end(curAddrs), back_inserter(newAddrs)); - vector staleAddrs; + vector staleAddrs; set_difference(std::begin(curAddrs), std::end(curAddrs), std::begin(range), std::end(range), back_inserter(staleAddrs)); @@ -137,12 +138,8 @@ class PeerGateways { try { - // Only handle v4 for now - if (addr.is_v4()) - { - info(mIo.log()) << "initializing peer gateway on interface " << addr; - mGateways.emplace(addr, mFactory(mState, util::injectRef(mIo), addr.to_v4())); - } + info(mIo.log()) << "initializing peer gateway on interface " << addr; + mGateways.emplace(addr, mFactory(mState, util::injectRef(mIo), addr)); } catch (const runtime_error& e) { diff --git a/tidal-link/link/include/ableton/discovery/Service.hpp b/tidal-link/link/include/ableton/discovery/Service.hpp index 8898fce43..678811d96 100644 --- a/tidal-link/link/include/ableton/discovery/Service.hpp +++ b/tidal-link/link/include/ableton/discovery/Service.hpp @@ -59,7 +59,7 @@ class Service // Repair the gateway with the given address if possible. Its // sockets may have been closed, for example, and the gateway needs // to be regenerated. - void repairGateway(const asio::ip::address& gatewayAddr) + void repairGateway(const IpAddress& gatewayAddr) { mGateways.repairGateway(gatewayAddr); } diff --git a/tidal-link/link/include/ableton/discovery/UdpMessenger.hpp b/tidal-link/link/include/ableton/discovery/UdpMessenger.hpp index c15c6943a..cca36ae4c 100644 --- a/tidal-link/link/include/ableton/discovery/UdpMessenger.hpp +++ b/tidal-link/link/include/ableton/discovery/UdpMessenger.hpp @@ -19,10 +19,10 @@ #pragma once -#include +#include +#include #include #include -#include #include #include #include @@ -37,15 +37,23 @@ namespace discovery // interface through which the sending failed. struct UdpSendException : std::runtime_error { - UdpSendException(const std::runtime_error& e, asio::ip::address ifAddr) + UdpSendException(const std::runtime_error& e, IpAddress ifAddr) : std::runtime_error(e.what()) , interfaceAddr(std::move(ifAddr)) { } - asio::ip::address interfaceAddr; + IpAddress interfaceAddr; }; +template +UdpEndpoint ipV6Endpoint(Interface& iface, const UdpEndpoint& endpoint) +{ + auto v6Address = endpoint.address().to_v6(); + v6Address.scope_id(iface.endpoint().address().to_v6().scope_id()); + return {v6Address, endpoint.port()}; +} + // Throws UdpSendException template void sendUdpMessage(Interface& iface, @@ -53,7 +61,7 @@ void sendUdpMessage(Interface& iface, const uint8_t ttl, const v1::MessageType messageType, const Payload& payload, - const asio::ip::udp::endpoint& to) + const UdpEndpoint& to) { using namespace std; v1::MessageBuffer buffer; @@ -176,8 +184,16 @@ class UdpMessenger void sendByeBye() { - sendUdpMessage( - *mInterface, mState.ident(), 0, v1::kByeBye, makePayload(), multicastEndpoint()); + if (mInterface->endpoint().address().is_v4()) + { + sendUdpMessage(*mInterface, mState.ident(), 0, v1::kByeBye, makePayload(), + multicastEndpointV4()); + } + if (mInterface->endpoint().address().is_v6()) + { + sendUdpMessage(*mInterface, mState.ident(), 0, v1::kByeBye, makePayload(), + multicastEndpointV6(mInterface->endpoint().address().to_v6().scope_id())); + } } void updateState(NodeState state) @@ -213,21 +229,29 @@ class UdpMessenger if (delay < milliseconds{1}) { debug(mIo->log()) << "Broadcasting state"; - sendPeerState(v1::kAlive, multicastEndpoint()); + if (mInterface->endpoint().address().is_v4()) + { + sendPeerState(v1::kAlive, multicastEndpointV4()); + } + if (mInterface->endpoint().address().is_v6()) + { + sendPeerState(v1::kAlive, + multicastEndpointV6(mInterface->endpoint().address().to_v6().scope_id())); + } } } - void sendPeerState( - const v1::MessageType messageType, const asio::ip::udp::endpoint& to) + void sendPeerState(const v1::MessageType messageType, const UdpEndpoint& to) { sendUdpMessage( *mInterface, mState.ident(), mTtl, messageType, toPayload(mState), to); mLastBroadcastTime = mTimer.now(); } - void sendResponse(const asio::ip::udp::endpoint& to) + void sendResponse(const UdpEndpoint& to) { - sendPeerState(v1::kResponse, to); + const auto endpoint = to.address().is_v4() ? to : ipV6Endpoint(*mInterface, to); + sendPeerState(v1::kResponse, endpoint); } template @@ -237,10 +261,8 @@ class UdpMessenger } template - void operator()(Tag tag, - const asio::ip::udp::endpoint& from, - const It messageBegin, - const It messageEnd) + void operator()( + Tag tag, const UdpEndpoint& from, const It messageBegin, const It messageEnd) { auto result = v1::parseMessageHeader(messageBegin, messageEnd); diff --git a/tidal-link/link/include/ableton/discovery/test/Interface.hpp b/tidal-link/link/include/ableton/discovery/test/Interface.hpp index f538856ff..9f11b7527 100644 --- a/tidal-link/link/include/ableton/discovery/test/Interface.hpp +++ b/tidal-link/link/include/ableton/discovery/test/Interface.hpp @@ -31,9 +31,8 @@ namespace test class Interface { public: - void send(const uint8_t* const bytes, - const size_t numBytes, - const asio::ip::udp::endpoint& endpoint) + void send( + const uint8_t* const bytes, const size_t numBytes, const UdpEndpoint& endpoint) { sentMessages.push_back( std::make_pair(std::vector{bytes, bytes + numBytes}, endpoint)); @@ -42,31 +41,30 @@ class Interface template void receive(Callback callback, Tag tag) { - mCallback = [callback, tag](const asio::ip::udp::endpoint& from, - const std::vector& buffer) { + mCallback = [callback, tag]( + const UdpEndpoint& from, const std::vector& buffer) { callback(tag, from, begin(buffer), end(buffer)); }; } template - void incomingMessage( - const asio::ip::udp::endpoint& from, It messageBegin, It messageEnd) + void incomingMessage(const UdpEndpoint& from, It messageBegin, It messageEnd) { std::vector buffer{messageBegin, messageEnd}; mCallback(from, buffer); } - asio::ip::udp::endpoint endpoint() const + UdpEndpoint endpoint() const { - return asio::ip::udp::endpoint({}, 0); + return UdpEndpoint({}, 0); } - using SentMessage = std::pair, asio::ip::udp::endpoint>; + using SentMessage = std::pair, UdpEndpoint>; std::vector sentMessages; private: using ReceiveCallback = - std::function&)>; + std::function&)>; ReceiveCallback mCallback; }; diff --git a/tidal-link/link/include/ableton/discovery/test/Socket.hpp b/tidal-link/link/include/ableton/discovery/test/Socket.hpp index 2983bcefb..513d1a043 100644 --- a/tidal-link/link/include/ableton/discovery/test/Socket.hpp +++ b/tidal-link/link/include/ableton/discovery/test/Socket.hpp @@ -19,7 +19,7 @@ #pragma once -#include +#include #include #include @@ -37,12 +37,12 @@ class Socket { } - friend void configureUnicastSocket(Socket&, const asio::ip::address_v4&) + friend void configureUnicastSocket(Socket&, const IpAddressV4&) { } std::size_t send( - const uint8_t* const pData, const size_t numBytes, const asio::ip::udp::endpoint& to) + const uint8_t* const pData, const size_t numBytes, const discovery::UdpEndpoint& to) { sentMessages.push_back( std::make_pair(std::vector{pData, pData + numBytes}, to)); @@ -52,31 +52,29 @@ class Socket template void receive(Handler handler) { - mCallback = [handler](const asio::ip::udp::endpoint& from, - const std::vector& buffer) { + mCallback = [handler](const UdpEndpoint& from, const std::vector& buffer) { handler(from, begin(buffer), end(buffer)); }; } template - void incomingMessage( - const asio::ip::udp::endpoint& from, It messageBegin, It messageEnd) + void incomingMessage(const UdpEndpoint& from, It messageBegin, It messageEnd) { std::vector buffer{messageBegin, messageEnd}; mCallback(from, buffer); } - asio::ip::udp::endpoint endpoint() const + UdpEndpoint endpoint() const { - return asio::ip::udp::endpoint({}, 0); + return UdpEndpoint({}, 0); } - using SentMessage = std::pair, asio::ip::udp::endpoint>; + using SentMessage = std::pair, UdpEndpoint>; std::vector sentMessages; private: using ReceiveCallback = - std::function&)>; + std::function&)>; ReceiveCallback mCallback; }; diff --git a/tidal-link/link/include/ableton/link/Controller.hpp b/tidal-link/link/include/ableton/link/Controller.hpp index 2922f46f0..a0a3c1454 100644 --- a/tidal-link/link/include/ableton/link/Controller.hpp +++ b/tidal-link/link/include/ableton/link/Controller.hpp @@ -717,18 +717,11 @@ class Controller { GatewayPtr operator()(std::pair state, util::Injected io, - const asio::ip::address& addr) + const discovery::IpAddress& addr) { - if (addr.is_v4()) - { - return GatewayPtr{new ControllerGateway{std::move(io), addr.to_v4(), - util::injectVal(makeGatewayObserver(mController.mPeers, addr)), - std::move(state.first), std::move(state.second), mController.mClock}}; - } - else - { - throw std::runtime_error("Could not create peer gateway on non-ipV4 address"); - } + return GatewayPtr{new ControllerGateway{std::move(io), addr, + util::injectVal(makeGatewayObserver(mController.mPeers, addr)), + std::move(state.first), std::move(state.second), mController.mClock}}; } Controller& mController; diff --git a/tidal-link/link/include/ableton/link/Gateway.hpp b/tidal-link/link/include/ableton/link/Gateway.hpp index 16d6abdea..635227285 100644 --- a/tidal-link/link/include/ableton/link/Gateway.hpp +++ b/tidal-link/link/include/ableton/link/Gateway.hpp @@ -33,7 +33,7 @@ class Gateway { public: Gateway(util::Injected io, - asio::ip::address_v4 addr, + discovery::IpAddress addr, util::Injected observer, NodeState nodeState, GhostXForm ghostXForm, diff --git a/tidal-link/link/include/ableton/link/Measurement.hpp b/tidal-link/link/include/ableton/link/Measurement.hpp index 299ca24b6..6867360ae 100644 --- a/tidal-link/link/include/ableton/link/Measurement.hpp +++ b/tidal-link/link/include/ableton/link/Measurement.hpp @@ -45,7 +45,7 @@ struct Measurement Measurement(const PeerState& state, Callback callback, - asio::ip::address_v4 address, + discovery::IpAddress address, Clock clock, util::Injected io) : mIo(std::move(io)) @@ -69,12 +69,11 @@ struct Measurement Impl(const PeerState& state, Callback callback, - asio::ip::address_v4 address, + discovery::IpAddress address, Clock clock, util::Injected io) : mSocket(io->template openUnicastSocket(address)) , mSessionId(state.nodeState.sessionId) - , mEndpoint(state.endpoint) , mCallback(std::move(callback)) , mClock(std::move(clock)) , mTimer(io->makeTimer()) @@ -82,6 +81,17 @@ struct Measurement , mLog(channel(io->log(), "Measurement on gateway@" + address.to_string())) , mSuccess(false) { + if (state.endpoint.address().is_v4()) + { + mEndpoint = state.endpoint; + } + else + { + auto v6Address = state.endpoint.address().to_v6(); + v6Address.scope_id(address.to_v6().scope_id()); + mEndpoint = {v6Address, state.endpoint.port()}; + } + const auto ht = HostTime{mClock.micros()}; sendPing(mEndpoint, discovery::makePayload(ht)); resetTimer(); @@ -117,7 +127,7 @@ struct Measurement // Operator to handle incoming messages on the interface template void operator()( - const asio::ip::udp::endpoint& from, const It messageBegin, const It messageEnd) + const discovery::UdpEndpoint& from, const It messageBegin, const It messageEnd) { using namespace std; const auto result = v1::parseMessageHeader(messageBegin, messageEnd); @@ -197,7 +207,7 @@ struct Measurement } template - void sendPing(asio::ip::udp::endpoint to, const Payload& payload) + void sendPing(discovery::UdpEndpoint to, const Payload& payload) { v1::MessageBuffer buffer; const auto msgBegin = std::begin(buffer); @@ -232,7 +242,7 @@ struct Measurement Socket mSocket; SessionId mSessionId; - asio::ip::udp::endpoint mEndpoint; + discovery::UdpEndpoint mEndpoint; std::vector mData; Callback mCallback; Clock mClock; diff --git a/tidal-link/link/include/ableton/link/MeasurementEndpointV4.hpp b/tidal-link/link/include/ableton/link/MeasurementEndpointV4.hpp index 958aad958..fbec55f3c 100644 --- a/tidal-link/link/include/ableton/link/MeasurementEndpointV4.hpp +++ b/tidal-link/link/include/ableton/link/MeasurementEndpointV4.hpp @@ -19,8 +19,9 @@ #pragma once +#include #include -#include +#include namespace ableton { @@ -35,6 +36,10 @@ struct MeasurementEndpointV4 // Model the NetworkByteStreamSerializable concept friend std::uint32_t sizeInByteStream(const MeasurementEndpointV4 mep) { + if (mep.ep.address().is_v6()) + { + return 0; + } return discovery::sizeInByteStream( static_cast(mep.ep.address().to_v4().to_ulong())) + discovery::sizeInByteStream(mep.ep.port()); @@ -43,6 +48,7 @@ struct MeasurementEndpointV4 template friend It toNetworkByteStream(const MeasurementEndpointV4 mep, It out) { + assert(mep.ep.address().is_v4()); return discovery::toNetworkByteStream(mep.ep.port(), discovery::toNetworkByteStream( static_cast(mep.ep.address().to_v4().to_ulong()), std::move(out))); @@ -58,11 +64,11 @@ struct MeasurementEndpointV4 std::move(addrRes.second), end); return make_pair( MeasurementEndpointV4{ - {asio::ip::address_v4{std::move(addrRes.first)}, std::move(portRes.first)}}, + {discovery::IpAddressV4{std::move(addrRes.first)}, std::move(portRes.first)}}, std::move(portRes.second)); } - asio::ip::udp::endpoint ep; + discovery::UdpEndpoint ep; }; } // namespace link diff --git a/tidal-link/link/include/ableton/link/MeasurementEndpointV6.hpp b/tidal-link/link/include/ableton/link/MeasurementEndpointV6.hpp new file mode 100644 index 000000000..6c319ed1f --- /dev/null +++ b/tidal-link/link/include/ableton/link/MeasurementEndpointV6.hpp @@ -0,0 +1,75 @@ +/* Copyright 2023, Ableton AG, Berlin. All rights reserved. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + * If you would like to incorporate Link into a proprietary software application, + * please contact . + */ + +#pragma once + +#include +#include +#include + +namespace ableton +{ +namespace link +{ + +struct MeasurementEndpointV6 +{ + static const std::int32_t key = 'mep6'; + static_assert(key == 0x6d657036, "Unexpected byte order"); + + // Model the NetworkByteStreamSerializable concept + friend std::uint32_t sizeInByteStream(const MeasurementEndpointV6 mep) + { + if (mep.ep.address().is_v4()) + { + return 0; + } + return discovery::sizeInByteStream(mep.ep.address().to_v6().to_bytes()) + + discovery::sizeInByteStream(mep.ep.port()); + } + + template + friend It toNetworkByteStream(const MeasurementEndpointV6 mep, It out) + { + assert(mep.ep.address().is_v6()); + return discovery::toNetworkByteStream( + mep.ep.port(), discovery::toNetworkByteStream( + mep.ep.address().to_v6().to_bytes(), std::move(out))); + } + + template + static std::pair fromNetworkByteStream(It begin, It end) + { + using namespace std; + auto addrRes = + discovery::Deserialize::fromNetworkByteStream( + std::move(begin), end); + auto portRes = discovery::Deserialize::fromNetworkByteStream( + std::move(addrRes.second), end); + return make_pair( + MeasurementEndpointV6{ + {discovery::IpAddressV6{std::move(addrRes.first)}, std::move(portRes.first)}}, + std::move(portRes.second)); + } + + discovery::UdpEndpoint ep; +}; + +} // namespace link +} // namespace ableton diff --git a/tidal-link/link/include/ableton/link/MeasurementService.hpp b/tidal-link/link/include/ableton/link/MeasurementService.hpp index 22bf46d52..5ed77ba5f 100644 --- a/tidal-link/link/include/ableton/link/MeasurementService.hpp +++ b/tidal-link/link/include/ableton/link/MeasurementService.hpp @@ -42,7 +42,7 @@ class MeasurementService using IoType = util::Injected; using MeasurementInstance = Measurement; - MeasurementService(asio::ip::address_v4 address, + MeasurementService(discovery::IpAddress address, SessionId sessionId, GhostXForm ghostXForm, Clock clock, @@ -65,7 +65,7 @@ class MeasurementService mPingResponder.updateNodeState(sessionId, xform); } - asio::ip::udp::endpoint endpoint() const + discovery::UdpEndpoint endpoint() const { return mPingResponder.endpoint(); } @@ -77,7 +77,7 @@ class MeasurementService using namespace std; const auto nodeId = state.nodeState.nodeId; - auto addr = mPingResponder.endpoint().address().to_v4(); + auto addr = mPingResponder.endpoint().address(); auto callback = CompletionCallback{*this, nodeId, handler}; try diff --git a/tidal-link/link/include/ableton/link/PeerState.hpp b/tidal-link/link/include/ableton/link/PeerState.hpp index 291c27891..1cad18dcf 100644 --- a/tidal-link/link/include/ableton/link/PeerState.hpp +++ b/tidal-link/link/include/ableton/link/PeerState.hpp @@ -21,6 +21,7 @@ #include #include +#include #include namespace ableton @@ -61,12 +62,16 @@ struct PeerState return lhs.nodeState == rhs.nodeState && lhs.endpoint == rhs.endpoint; } - friend auto toPayload(const PeerState& state) - -> decltype(std::declval() - + discovery::makePayload(MeasurementEndpointV4{{}})) + friend auto toPayload(const PeerState& state) -> decltype( + std::declval() + discovery::makePayload(MeasurementEndpointV4{{}}) + + discovery::makePayload(MeasurementEndpointV6{{}})) { + // This implements a switch if either an IPv4 or IPv6 endpoint is serialized. + // MeasurementEndpoints that contain an endpoint that does not match the IP protocol + // version return a sizeInByteStream() of zero and won't be serialized. return toPayload(state.nodeState) - + discovery::makePayload(MeasurementEndpointV4{state.endpoint}); + + discovery::makePayload(MeasurementEndpointV4{state.endpoint}) + + discovery::makePayload(MeasurementEndpointV6{state.endpoint}); } template @@ -75,15 +80,16 @@ struct PeerState using namespace std; auto peerState = PeerState{NodeState::fromPayload(std::move(id), begin, end), {}}; - discovery::parsePayload( - std::move(begin), std::move(end), [&peerState](MeasurementEndpointV4 me4) { - peerState.endpoint = std::move(me4.ep); - }); + discovery::parsePayload( + std::move(begin), std::move(end), + [&peerState](MeasurementEndpointV4 me4) { peerState.endpoint = std::move(me4.ep); }, + [&peerState]( + MeasurementEndpointV6 me6) { peerState.endpoint = std::move(me6.ep); }); return peerState; } NodeState nodeState; - asio::ip::udp::endpoint endpoint; + discovery::UdpEndpoint endpoint; }; } // namespace link diff --git a/tidal-link/link/include/ableton/link/Peers.hpp b/tidal-link/link/include/ableton/link/Peers.hpp index b633ec363..e35670021 100644 --- a/tidal-link/link/include/ableton/link/Peers.hpp +++ b/tidal-link/link/include/ableton/link/Peers.hpp @@ -47,7 +47,7 @@ class Peers struct Impl; public: - using Peer = std::pair; + using Peer = std::pair; Peers(util::Injected io, SessionMembershipCallback membership, @@ -119,7 +119,7 @@ class Peers using GatewayObserverNodeState = PeerState; using GatewayObserverNodeId = NodeId; - GatewayObserver(std::shared_ptr pImpl, asio::ip::address addr) + GatewayObserver(std::shared_ptr pImpl, discovery::IpAddress addr) : mpImpl(std::move(pImpl)) , mAddr(std::move(addr)) { @@ -165,11 +165,11 @@ class Peers } std::shared_ptr mpImpl; - asio::ip::address mAddr; + discovery::IpAddress mAddr; }; // Factory function for the gateway observer - friend GatewayObserver makeGatewayObserver(Peers& peers, asio::ip::address addr) + friend GatewayObserver makeGatewayObserver(Peers& peers, discovery::IpAddress addr) { return GatewayObserver{peers.mpImpl, std::move(addr)}; } @@ -188,7 +188,7 @@ class Peers { } - void sawPeerOnGateway(PeerState peerState, asio::ip::address gatewayAddr) + void sawPeerOnGateway(PeerState peerState, discovery::IpAddress gatewayAddr) { using namespace std; @@ -255,7 +255,7 @@ class Peers } } - void peerLeftGateway(const NodeId& nodeId, const asio::ip::address& gatewayAddr) + void peerLeftGateway(const NodeId& nodeId, const discovery::IpAddress& gatewayAddr) { using namespace std; @@ -276,7 +276,7 @@ class Peers } } - void gatewayClosed(const asio::ip::address& gatewayAddr) + void gatewayClosed(const discovery::IpAddress& gatewayAddr) { using namespace std; diff --git a/tidal-link/link/include/ableton/link/PingResponder.hpp b/tidal-link/link/include/ableton/link/PingResponder.hpp index a8f455fe5..4d107bd8a 100644 --- a/tidal-link/link/include/ableton/link/PingResponder.hpp +++ b/tidal-link/link/include/ableton/link/PingResponder.hpp @@ -40,7 +40,7 @@ class PingResponder using Socket = typename IoType::type::template Socket; public: - PingResponder(asio::ip::address_v4 address, + PingResponder(discovery::IpAddress address, SessionId sessionId, GhostXForm ghostXForm, Clock clock, @@ -64,12 +64,12 @@ class PingResponder mpImpl->mGhostXForm = std::move(xform); } - asio::ip::udp::endpoint endpoint() const + discovery::UdpEndpoint endpoint() const { return mpImpl->mSocket.endpoint(); } - asio::ip::address address() const + discovery::IpAddress address() const { return endpoint().address(); } @@ -82,7 +82,7 @@ class PingResponder private: struct Impl : std::enable_shared_from_this { - Impl(asio::ip::address_v4 address, + Impl(discovery::IpAddress address, SessionId sessionId, GhostXForm ghostXForm, Clock clock, @@ -102,7 +102,7 @@ class PingResponder // Operator to handle incoming messages on the interface template - void operator()(const asio::ip::udp::endpoint& from, const It begin, const It end) + void operator()(const discovery::UdpEndpoint& from, const It begin, const It end) { using namespace discovery; @@ -136,7 +136,7 @@ class PingResponder } template - void reply(It begin, It end, const asio::ip::udp::endpoint& to) + void reply(It begin, It end, const discovery::UdpEndpoint& to) { using namespace discovery; diff --git a/tidal-link/link/include/ableton/link/SessionState.hpp b/tidal-link/link/include/ableton/link/SessionState.hpp index 183c8a9c6..616a5b40c 100644 --- a/tidal-link/link/include/ableton/link/SessionState.hpp +++ b/tidal-link/link/include/ableton/link/SessionState.hpp @@ -23,6 +23,7 @@ #include #include #include +#include namespace ableton { diff --git a/tidal-link/link/include/ableton/platforms/Config.hpp b/tidal-link/link/include/ableton/platforms/Config.hpp index 9deba58bd..22f4bd30e 100644 --- a/tidal-link/link/include/ableton/platforms/Config.hpp +++ b/tidal-link/link/include/ableton/platforms/Config.hpp @@ -62,31 +62,33 @@ namespace platform using Clock = platforms::windows::Clock; using Random = platforms::stl::Random; #if defined(LINK_WINDOWS_SETTHREADDESCRIPTION) -using IoContext = platforms::asio::Context; +using IoContext = + platforms::LINK_ASIO_NAMESPACE::Context; #else using IoContext = - platforms::asio::Context; + platforms::LINK_ASIO_NAMESPACE::Context; #endif #elif defined(LINK_PLATFORM_MACOSX) using Clock = platforms::darwin::Clock; -using IoContext = platforms::asio::Context; using Random = platforms::stl::Random; #elif defined(LINK_PLATFORM_LINUX) -using Clock = platforms::linux::ClockMonotonicRaw; +using Clock = platforms::linux_::ClockMonotonicRaw; using Random = platforms::stl::Random; #ifdef __linux__ -using IoContext = platforms::asio::Context; + platforms::linux_::ThreadFactory>; #else using IoContext = - platforms::asio::Context; + platforms::LINK_ASIO_NAMESPACE::Context; #endif #elif defined(ESP_PLATFORM) diff --git a/tidal-link/link/include/ableton/platforms/asio/AsioTimer.hpp b/tidal-link/link/include/ableton/platforms/asio/AsioTimer.hpp index e2c71b011..76bca025b 100644 --- a/tidal-link/link/include/ableton/platforms/asio/AsioTimer.hpp +++ b/tidal-link/link/include/ableton/platforms/asio/AsioTimer.hpp @@ -27,7 +27,7 @@ namespace ableton { namespace platforms { -namespace asio +namespace LINK_ASIO_NAMESPACE { // This implementation is based on the boost::asio::system_timer concept. @@ -41,11 +41,14 @@ namespace asio class AsioTimer { public: - using ErrorCode = ::asio::error_code; + using ErrorCode = ::LINK_ASIO_NAMESPACE::error_code; using TimePoint = std::chrono::system_clock::time_point; + using IoService = ::LINK_ASIO_NAMESPACE::io_service; + using SystemTimer = ::LINK_ASIO_NAMESPACE::system_timer; - AsioTimer(::asio::io_service& io) - : mpTimer(new ::asio::system_timer(io)) + + AsioTimer(IoService& io) + : mpTimer(new SystemTimer(io)) , mpAsyncHandler(std::make_shared()) { } @@ -123,10 +126,10 @@ class AsioTimer std::function mpHandler; }; - std::unique_ptr<::asio::system_timer> mpTimer; + std::unique_ptr mpTimer; std::shared_ptr mpAsyncHandler; }; -} // namespace asio +} // namespace LINK_ASIO_NAMESPACE } // namespace platforms } // namespace ableton diff --git a/tidal-link/link/include/ableton/platforms/asio/AsioWrapper.hpp b/tidal-link/link/include/ableton/platforms/asio/AsioWrapper.hpp index 1f3dc4d4e..2ea362a5e 100644 --- a/tidal-link/link/include/ableton/platforms/asio/AsioWrapper.hpp +++ b/tidal-link/link/include/ableton/platforms/asio/AsioWrapper.hpp @@ -26,12 +26,19 @@ * by Link. */ -#if !defined(ESP_PLATFORM) +#if defined(ESP_PLATFORM) + +#define LINK_ASIO_NAMESPACE asio + +#else + #pragma push_macro("ASIO_STANDALONE") -#define ASIO_STANDALONE 1 #pragma push_macro("ASIO_NO_TYPEID") #define ASIO_NO_TYPEID 1 +#define asio link_asio_1_28_0 +#define LINK_ASIO_NAMESPACE link_asio_1_28_0 +#define ASIO_STANDALONE 1 #endif #if defined(LINK_PLATFORM_WINDOWS) @@ -75,11 +82,6 @@ #pragma pop_macro("INCL_EXTRA_HTON_FUNCTIONS") #endif -#if !defined(ESP_PLATFORM) -#pragma pop_macro("ASIO_STANDALONE") -#pragma pop_macro("ASIO_NO_TYPEID") -#endif - #if defined(_MSC_VER) #pragma warning(pop) #undef _SCL_SECURE_NO_WARNINGS @@ -88,3 +90,5 @@ #if defined(__clang__) #pragma clang diagnostic pop #endif + +#undef asio diff --git a/tidal-link/link/include/ableton/platforms/asio/Context.hpp b/tidal-link/link/include/ableton/platforms/asio/Context.hpp index 7c10a4bc5..f0909df1f 100644 --- a/tidal-link/link/include/ableton/platforms/asio/Context.hpp +++ b/tidal-link/link/include/ableton/platforms/asio/Context.hpp @@ -19,9 +19,8 @@ #pragma once -#include +#include #include -#include #include #include #include @@ -31,7 +30,7 @@ namespace ableton { namespace platforms { -namespace asio +namespace LINK_ASIO_NAMESPACE { namespace { @@ -51,7 +50,7 @@ template @@ -59,7 +58,9 @@ class Context LockFreeCallbackDispatcher; template - using Socket = asio::Socket; + using Socket = Socket; + using IoService = ::LINK_ASIO_NAMESPACE::io_service; + using Work = IoService::work; Context() : Context(DefaultHandler{}) @@ -68,11 +69,11 @@ class Context template explicit Context(ExceptionHandler exceptHandler) - : mpService(new ::asio::io_service()) - , mpWork(new ::asio::io_service::work(*mpService)) + : mpService(new IoService()) + , mpWork(new Work(*mpService)) { mThread = ThreadFactoryT::makeThread("Link Main", - [](::asio::io_service& service, ExceptionHandler handler) { + [](IoService& service, ExceptionHandler handler) { for (;;) { try @@ -121,34 +122,79 @@ class Context template - Socket openUnicastSocket(const ::asio::ip::address_v4& addr) + Socket openUnicastSocket(const discovery::IpAddress addr) { - auto socket = Socket{*mpService}; + auto socket = + addr.is_v4() ? Socket{*mpService, ::LINK_ASIO_NAMESPACE::ip::udp::v4()} + : Socket{*mpService, ::LINK_ASIO_NAMESPACE::ip::udp::v6()}; socket.mpImpl->mSocket.set_option( - ::asio::ip::multicast::enable_loopback(addr.is_loopback())); - socket.mpImpl->mSocket.set_option(::asio::ip::multicast::outbound_interface(addr)); - socket.mpImpl->mSocket.bind(::asio::ip::udp::endpoint{addr, 0}); + ::LINK_ASIO_NAMESPACE::ip::multicast::enable_loopback(addr.is_loopback())); + if (addr.is_v4()) + { + socket.mpImpl->mSocket.set_option( + ::LINK_ASIO_NAMESPACE::ip::multicast::outbound_interface(addr.to_v4())); + socket.mpImpl->mSocket.bind( + ::LINK_ASIO_NAMESPACE::ip::udp::endpoint{addr.to_v4(), 0}); + } + else if (addr.is_v6()) + { + const auto scopeId = addr.to_v6().scope_id(); + socket.mpImpl->mSocket.set_option( + ::LINK_ASIO_NAMESPACE::ip::multicast::outbound_interface( + static_cast(scopeId))); + socket.mpImpl->mSocket.bind( + ::LINK_ASIO_NAMESPACE::ip::udp::endpoint{addr.to_v6(), 0}); + } + else + { + throw(std::runtime_error("Unknown Protocol")); + } return socket; } template - Socket openMulticastSocket(const ::asio::ip::address_v4& addr) + Socket openMulticastSocket(const discovery::IpAddress& addr) { - auto socket = Socket{*mpService}; - socket.mpImpl->mSocket.set_option(::asio::ip::udp::socket::reuse_address(true)); + auto socket = + addr.is_v4() ? Socket{*mpService, ::LINK_ASIO_NAMESPACE::ip::udp::v4()} + : Socket{*mpService, ::LINK_ASIO_NAMESPACE::ip::udp::v6()}; + + socket.mpImpl->mSocket.set_option( + ::LINK_ASIO_NAMESPACE::ip::udp::socket::reuse_address(true)); socket.mpImpl->mSocket.set_option( - ::asio::socket_base::broadcast(!addr.is_loopback())); + ::LINK_ASIO_NAMESPACE::socket_base::broadcast(!addr.is_loopback())); socket.mpImpl->mSocket.set_option( - ::asio::ip::multicast::enable_loopback(addr.is_loopback())); - socket.mpImpl->mSocket.set_option(::asio::ip::multicast::outbound_interface(addr)); - socket.mpImpl->mSocket.bind({::asio::ip::address::from_string("0.0.0.0"), - discovery::multicastEndpoint().port()}); - socket.mpImpl->mSocket.set_option(::asio::ip::multicast::join_group( - discovery::multicastEndpoint().address().to_v4(), addr)); + ::LINK_ASIO_NAMESPACE::ip::multicast::enable_loopback(addr.is_loopback())); + + if (addr.is_v4()) + { + socket.mpImpl->mSocket.set_option( + ::LINK_ASIO_NAMESPACE::ip::multicast::outbound_interface(addr.to_v4())); + socket.mpImpl->mSocket.bind({::LINK_ASIO_NAMESPACE::ip::address_v4::any(), + discovery::multicastEndpointV4().port()}); + socket.mpImpl->mSocket.set_option(::LINK_ASIO_NAMESPACE::ip::multicast::join_group( + discovery::multicastEndpointV4().address().to_v4(), addr.to_v4())); + } + else if (addr.is_v6()) + { + const auto scopeId = addr.to_v6().scope_id(); + socket.mpImpl->mSocket.set_option( + ::LINK_ASIO_NAMESPACE::ip::multicast::outbound_interface( + static_cast(scopeId))); + const auto multicastEndpoint = discovery::multicastEndpointV6(scopeId); + socket.mpImpl->mSocket.bind( + {::LINK_ASIO_NAMESPACE::ip::address_v6::any(), multicastEndpoint.port()}); + socket.mpImpl->mSocket.set_option(::LINK_ASIO_NAMESPACE::ip::multicast::join_group( + multicastEndpoint.address().to_v6(), scopeId)); + } + else + { + throw(std::runtime_error("Unknown Protocol")); + } return socket; } - std::vector<::asio::ip::address> scanNetworkInterfaces() + std::vector scanNetworkInterfaces() { return mScanIpIfAddrs(); } @@ -184,13 +230,13 @@ class Context } }; - std::unique_ptr<::asio::io_service> mpService; - std::unique_ptr<::asio::io_service::work> mpWork; + std::unique_ptr<::LINK_ASIO_NAMESPACE::io_service> mpService; + std::unique_ptr<::LINK_ASIO_NAMESPACE::io_service::work> mpWork; std::thread mThread; Log mLog; ScanIpIfAddrs mScanIpIfAddrs; }; -} // namespace asio +} // namespace LINK_ASIO_NAMESPACE } // namespace platforms } // namespace ableton diff --git a/tidal-link/link/include/ableton/platforms/asio/LockFreeCallbackDispatcher.hpp b/tidal-link/link/include/ableton/platforms/asio/LockFreeCallbackDispatcher.hpp index 189a6f7ce..e23574713 100644 --- a/tidal-link/link/include/ableton/platforms/asio/LockFreeCallbackDispatcher.hpp +++ b/tidal-link/link/include/ableton/platforms/asio/LockFreeCallbackDispatcher.hpp @@ -27,7 +27,7 @@ namespace ableton { namespace platforms { -namespace asio +namespace LINK_ASIO_NAMESPACE { // Utility to signal invocation of a callback on another thread in a lock free manner. @@ -83,6 +83,6 @@ class LockFreeCallbackDispatcher std::thread mThread; }; -} // namespace asio +} // namespace LINK_ASIO_NAMESPACE } // namespace platforms } // namespace ableton diff --git a/tidal-link/link/include/ableton/platforms/asio/Socket.hpp b/tidal-link/link/include/ableton/platforms/asio/Socket.hpp index 8992f6d00..4fa469230 100644 --- a/tidal-link/link/include/ableton/platforms/asio/Socket.hpp +++ b/tidal-link/link/include/ableton/platforms/asio/Socket.hpp @@ -19,7 +19,7 @@ #pragma once -#include +#include #include #include #include @@ -28,14 +28,14 @@ namespace ableton { namespace platforms { -namespace asio +namespace LINK_ASIO_NAMESPACE { template struct Socket { - Socket(::asio::io_service& io) - : mpImpl(std::make_shared(io)) + Socket(::LINK_ASIO_NAMESPACE::io_service& io, ::LINK_ASIO_NAMESPACE::ip::udp protocol) + : mpImpl(std::make_shared(io, protocol)) { } @@ -47,12 +47,11 @@ struct Socket { } - std::size_t send(const uint8_t* const pData, - const size_t numBytes, - const ::asio::ip::udp::endpoint& to) + std::size_t send( + const uint8_t* const pData, const size_t numBytes, const discovery::UdpEndpoint& to) { assert(numBytes < MaxPacketSize); - return mpImpl->mSocket.send_to(::asio::buffer(pData, numBytes), to); + return mpImpl->mSocket.send_to(::LINK_ASIO_NAMESPACE::buffer(pData, numBytes), to); } template @@ -60,19 +59,19 @@ struct Socket { mpImpl->mHandler = std::move(handler); mpImpl->mSocket.async_receive_from( - ::asio::buffer(mpImpl->mReceiveBuffer, MaxPacketSize), mpImpl->mSenderEndpoint, - util::makeAsyncSafe(mpImpl)); + ::LINK_ASIO_NAMESPACE::buffer(mpImpl->mReceiveBuffer, MaxPacketSize), + mpImpl->mSenderEndpoint, util::makeAsyncSafe(mpImpl)); } - ::asio::ip::udp::endpoint endpoint() const + discovery::UdpEndpoint endpoint() const { return mpImpl->mSocket.local_endpoint(); } struct Impl { - Impl(::asio::io_service& io) - : mSocket(io, ::asio::ip::udp::v4()) + Impl(::LINK_ASIO_NAMESPACE::io_service& io, ::LINK_ASIO_NAMESPACE::ip::udp protocol) + : mSocket(io, protocol) { } @@ -80,12 +79,13 @@ struct Socket { // Ignore error codes in shutdown and close as the socket may // have already been forcibly closed - ::asio::error_code ec; - mSocket.shutdown(::asio::ip::udp::socket::shutdown_both, ec); + ::LINK_ASIO_NAMESPACE::error_code ec; + mSocket.shutdown(::LINK_ASIO_NAMESPACE::ip::udp::socket::shutdown_both, ec); mSocket.close(ec); } - void operator()(const ::asio::error_code& error, const std::size_t numBytes) + void operator()( + const ::LINK_ASIO_NAMESPACE::error_code& error, const std::size_t numBytes) { if (!error && numBytes > 0 && numBytes <= MaxPacketSize) { @@ -94,17 +94,17 @@ struct Socket } } - ::asio::ip::udp::socket mSocket; - ::asio::ip::udp::endpoint mSenderEndpoint; + discovery::UdpSocket mSocket; + discovery::UdpEndpoint mSenderEndpoint; using Buffer = std::array; Buffer mReceiveBuffer; using ByteIt = typename Buffer::const_iterator; - std::function mHandler; + std::function mHandler; }; std::shared_ptr mpImpl; }; -} // namespace asio +} // namespace LINK_ASIO_NAMESPACE } // namespace platforms } // namespace ableton diff --git a/tidal-link/link/include/ableton/platforms/darwin/Clock.hpp b/tidal-link/link/include/ableton/platforms/darwin/Clock.hpp index dd40ff4b2..3164e68c9 100644 --- a/tidal-link/link/include/ableton/platforms/darwin/Clock.hpp +++ b/tidal-link/link/include/ableton/platforms/darwin/Clock.hpp @@ -19,6 +19,7 @@ #pragma once +#include #include #include @@ -49,6 +50,8 @@ struct Clock Ticks microsToTicks(const Micros micros) const { + // Negative Micros can not be represented in Ticks + assert(micros.count() >= 0); return static_cast(micros.count() / mTicksToMicros); } diff --git a/tidal-link/link/include/ableton/platforms/esp32/Context.hpp b/tidal-link/link/include/ableton/platforms/esp32/Context.hpp index 0c1cd00b5..ccf02fe5f 100644 --- a/tidal-link/link/include/ableton/platforms/esp32/Context.hpp +++ b/tidal-link/link/include/ableton/platforms/esp32/Context.hpp @@ -19,12 +19,12 @@ #pragma once -#include +#include +#include #include -#include #include #include -#include +#include #include #include @@ -40,7 +40,6 @@ class Context { class ServiceRunner { - static void run(void* userParams) { auto runner = static_cast(userParams); @@ -60,11 +59,7 @@ class Context static void IRAM_ATTR timerIsr(void* userParam) { static BaseType_t xHigherPriorityTaskWoken = pdFALSE; - - timer_group_clr_intr_status_in_isr(TIMER_GROUP_0, TIMER_1); - timer_group_enable_alarm_in_isr(TIMER_GROUP_0, TIMER_1); - - vTaskNotifyGiveFromISR(userParam, &xHigherPriorityTaskWoken); + vTaskNotifyGiveFromISR(*((TaskHandle_t*)userParam), &xHigherPriorityTaskWoken); if (xHigherPriorityTaskWoken) { portYIELD_FROM_ISR(); @@ -79,24 +74,21 @@ class Context xTaskCreatePinnedToCore(run, "link", 8192, this, 2 | portPRIVILEGE_BIT, &mTaskHandle, LINK_ESP_TASK_CORE_ID); - timer_config_t config = {.alarm_en = TIMER_ALARM_EN, - .counter_en = TIMER_PAUSE, - .intr_type = TIMER_INTR_LEVEL, - .counter_dir = TIMER_COUNT_UP, - .auto_reload = TIMER_AUTORELOAD_EN, - .divider = 80}; + const esp_timer_create_args_t timerArgs = { + .callback = &timerIsr, + .arg = (void*)&mTaskHandle, + .dispatch_method = ESP_TIMER_TASK, + .name = "link", + .skip_unhandled_events = true, + }; - timer_init(TIMER_GROUP_0, TIMER_1, &config); - timer_set_counter_value(TIMER_GROUP_0, TIMER_1, 0); - timer_set_alarm_value(TIMER_GROUP_0, TIMER_1, 100); - timer_enable_intr(TIMER_GROUP_0, TIMER_1); - timer_isr_register(TIMER_GROUP_0, TIMER_1, &timerIsr, mTaskHandle, 0, nullptr); - - timer_start(TIMER_GROUP_0, TIMER_1); + ESP_ERROR_CHECK(esp_timer_create(&timerArgs, &mTimer)); + ESP_ERROR_CHECK(esp_timer_start_periodic(mTimer, 100)); } ~ServiceRunner() { + esp_timer_delete(mTimer); vTaskDelete(mTaskHandle); } @@ -113,6 +105,7 @@ class Context private: TaskHandle_t mTaskHandle; + esp_timer_handle_t mTimer; std::unique_ptr<::asio::io_service> mpService; std::unique_ptr<::asio::io_service::work> mpWork; }; @@ -150,30 +143,72 @@ class Context } template - Socket openUnicastSocket(const ::asio::ip::address_v4& addr) + Socket openUnicastSocket(const ::asio::ip::address& addr) { - auto socket = Socket{serviceRunner().service()}; + auto socket = + addr.is_v4() ? Socket{serviceRunner().service(), ::asio::ip::udp::v4()} + : Socket{serviceRunner().service(), ::asio::ip::udp::v6()}; socket.mpImpl->mSocket.set_option( ::asio::ip::multicast::enable_loopback(addr.is_loopback())); - socket.mpImpl->mSocket.set_option(::asio::ip::multicast::outbound_interface(addr)); - socket.mpImpl->mSocket.bind(::asio::ip::udp::endpoint{addr, 0}); + if (addr.is_v4()) + { + socket.mpImpl->mSocket.set_option( + ::asio::ip::multicast::outbound_interface(addr.to_v4())); + socket.mpImpl->mSocket.bind( + ::LINK_ASIO_NAMESPACE::ip::udp::endpoint{addr.to_v4(), 0}); + } + else if (addr.is_v6()) + { + const auto scopeId = addr.to_v6().scope_id(); + socket.mpImpl->mSocket.set_option( + ::asio::ip::multicast::outbound_interface(static_cast(scopeId))); + socket.mpImpl->mSocket.bind( + ::LINK_ASIO_NAMESPACE::ip::udp::endpoint{addr.to_v6(), 0}); + } + else + { + throw(std::runtime_error("Unknown Protocol")); + } return socket; } template - Socket openMulticastSocket(const ::asio::ip::address_v4& addr) + Socket openMulticastSocket(const ::asio::ip::address& addr) { - auto socket = Socket{serviceRunner().service()}; + auto socket = + addr.is_v4() ? Socket{serviceRunner().service(), ::asio::ip::udp::v4()} + : Socket{serviceRunner().service(), ::asio::ip::udp::v6()}; + socket.mpImpl->mSocket.set_option(::asio::ip::udp::socket::reuse_address(true)); socket.mpImpl->mSocket.set_option( ::asio::socket_base::broadcast(!addr.is_loopback())); socket.mpImpl->mSocket.set_option( ::asio::ip::multicast::enable_loopback(addr.is_loopback())); - socket.mpImpl->mSocket.set_option(::asio::ip::multicast::outbound_interface(addr)); - socket.mpImpl->mSocket.bind({::asio::ip::address::from_string("0.0.0.0"), - discovery::multicastEndpoint().port()}); - socket.mpImpl->mSocket.set_option(::asio::ip::multicast::join_group( - discovery::multicastEndpoint().address().to_v4(), addr)); + + if (addr.is_v4()) + { + socket.mpImpl->mSocket.set_option( + ::asio::ip::multicast::outbound_interface(addr.to_v4())); + socket.mpImpl->mSocket.bind( + {::asio::ip::address_v4::any(), discovery::multicastEndpointV4().port()}); + socket.mpImpl->mSocket.set_option(::asio::ip::multicast::join_group( + discovery::multicastEndpointV4().address().to_v4(), addr.to_v4())); + } + else if (addr.is_v6()) + { + const auto scopeId = addr.to_v6().scope_id(); + socket.mpImpl->mSocket.set_option( + ::asio::ip::multicast::outbound_interface(static_cast(scopeId))); + const auto multicastEndpoint = discovery::multicastEndpointV6(scopeId); + socket.mpImpl->mSocket.bind( + {::asio::ip::address_v6::any(), multicastEndpoint.port()}); + socket.mpImpl->mSocket.set_option( + ::asio::ip::multicast::join_group(multicastEndpoint.address().to_v6(), scopeId)); + } + else + { + throw(std::runtime_error("Unknown Protocol")); + } return socket; } diff --git a/tidal-link/link/include/ableton/platforms/esp32/ScanIpIfAddrs.hpp b/tidal-link/link/include/ableton/platforms/esp32/ScanIpIfAddrs.hpp index 527d080a5..a9e5c9a4b 100644 --- a/tidal-link/link/include/ableton/platforms/esp32/ScanIpIfAddrs.hpp +++ b/tidal-link/link/include/ableton/platforms/esp32/ScanIpIfAddrs.hpp @@ -17,7 +17,7 @@ #pragma once -#include +#include #include #include #include @@ -33,9 +33,9 @@ namespace esp32 // ESP32 implementation of ip interface address scanner struct ScanIpIfAddrs { - std::vector<::asio::ip::address> operator()() + std::vector operator()() { - std::vector<::asio::ip::address> addrs; + std::vector addrs; // Get first network interface esp_netif_t* esp_netif = esp_netif_next(NULL); while (esp_netif) diff --git a/tidal-link/link/include/ableton/platforms/linux/Clock.hpp b/tidal-link/link/include/ableton/platforms/linux/Clock.hpp index accfe4720..5ea60ed87 100644 --- a/tidal-link/link/include/ableton/platforms/linux/Clock.hpp +++ b/tidal-link/link/include/ableton/platforms/linux/Clock.hpp @@ -28,15 +28,11 @@ namespace ableton namespace platforms { -#ifdef linux -#undef linux -#endif - #if defined(__FreeBSD_kernel__) #define CLOCK_MONOTONIC_RAW CLOCK_MONOTONIC #endif -namespace linux +namespace linux_ { template @@ -55,6 +51,6 @@ class Clock using ClockMonotonic = Clock; using ClockMonotonicRaw = Clock; -} // namespace linux +} // namespace linux_ } // namespace platforms } // namespace ableton diff --git a/tidal-link/link/include/ableton/platforms/linux/ThreadFactory.hpp b/tidal-link/link/include/ableton/platforms/linux/ThreadFactory.hpp index 81988f90b..4d8679aa5 100644 --- a/tidal-link/link/include/ableton/platforms/linux/ThreadFactory.hpp +++ b/tidal-link/link/include/ableton/platforms/linux/ThreadFactory.hpp @@ -26,7 +26,7 @@ namespace ableton { namespace platforms { -namespace linux +namespace linux_ { struct ThreadFactory @@ -40,6 +40,6 @@ struct ThreadFactory } }; -} // namespace linux +} // namespace linux_ } // namespace platforms } // namespace ableton diff --git a/tidal-link/link/include/ableton/platforms/posix/ScanIpIfAddrs.hpp b/tidal-link/link/include/ableton/platforms/posix/ScanIpIfAddrs.hpp index 8d24bc2f4..ba07dc5f0 100644 --- a/tidal-link/link/include/ableton/platforms/posix/ScanIpIfAddrs.hpp +++ b/tidal-link/link/include/ableton/platforms/posix/ScanIpIfAddrs.hpp @@ -19,11 +19,12 @@ #pragma once -#include -#include +#include #include #include +#include #include +#include #include namespace ableton @@ -75,34 +76,49 @@ struct ScanIpIfAddrs { // Scan active network interfaces and return corresponding addresses // for all ip-based interfaces. - std::vector<::asio::ip::address> operator()() + std::vector operator()() { - std::vector<::asio::ip::address> addrs; + std::vector addrs; + std::map IpInterfaceNames; detail::GetIfAddrs getIfAddrs; - getIfAddrs.withIfAddrs([&addrs](const struct ifaddrs& interfaces) { + getIfAddrs.withIfAddrs([&addrs, &IpInterfaceNames](const struct ifaddrs& interfaces) { const struct ifaddrs* interface; for (interface = &interfaces; interface; interface = interface->ifa_next) { auto addr = reinterpret_cast(interface->ifa_addr); - if (addr && interface->ifa_flags & IFF_UP) + if (addr && interface->ifa_flags & IFF_RUNNING && addr->sin_family == AF_INET) { - if (addr->sin_family == AF_INET) - { - auto bytes = reinterpret_cast(&addr->sin_addr); - addrs.emplace_back(asio::makeAddress<::asio::ip::address_v4>(bytes)); - } - else if (addr->sin_family == AF_INET6) + auto bytes = reinterpret_cast(&addr->sin_addr); + auto address = discovery::makeAddress(bytes); + addrs.emplace_back(std::move(address)); + IpInterfaceNames.insert(std::make_pair(interface->ifa_name, address)); + } + } + }); + + getIfAddrs.withIfAddrs([&addrs, &IpInterfaceNames](const struct ifaddrs& interfaces) { + const struct ifaddrs* interface; + for (interface = &interfaces; interface; interface = interface->ifa_next) + { + auto addr = reinterpret_cast(interface->ifa_addr); + if (addr && interface->ifa_flags & IFF_RUNNING && addr->sin_family == AF_INET6) + { + auto addr6 = reinterpret_cast(addr); + auto bytes = reinterpret_cast(&addr6->sin6_addr); + auto scopeId = addr6->sin6_scope_id; + auto address = discovery::makeAddress(bytes, scopeId); + if (IpInterfaceNames.find(interface->ifa_name) != IpInterfaceNames.end() + && !address.is_loopback() && address.is_link_local()) { - auto addr6 = reinterpret_cast(addr); - auto bytes = reinterpret_cast(&addr6->sin6_addr); - addrs.emplace_back(asio::makeAddress<::asio::ip::address_v6>(bytes)); + addrs.emplace_back(std::move(address)); } } } }); + return addrs; - } + }; }; } // namespace posix diff --git a/tidal-link/link/include/ableton/platforms/windows/ScanIpIfAddrs.hpp b/tidal-link/link/include/ableton/platforms/windows/ScanIpIfAddrs.hpp index e2b6f8459..229486e9a 100644 --- a/tidal-link/link/include/ableton/platforms/windows/ScanIpIfAddrs.hpp +++ b/tidal-link/link/include/ableton/platforms/windows/ScanIpIfAddrs.hpp @@ -19,10 +19,11 @@ #pragma once -#include -#include +#include #include +#include #include +#include #include #include #include @@ -99,12 +100,13 @@ struct ScanIpIfAddrs { // Scan active network interfaces and return corresponding addresses // for all ip-based interfaces. - std::vector<::asio::ip::address> operator()() + std::vector operator()() { - std::vector<::asio::ip::address> addrs; + std::vector addrs; + std::map IpInterfaceNames; detail::GetIfAddrs getIfAddrs; - getIfAddrs.withIfAddrs([&addrs](const IP_ADAPTER_ADDRESSES& interfaces) { + getIfAddrs.withIfAddrs([&](const IP_ADAPTER_ADDRESSES& interfaces) { const IP_ADAPTER_ADDRESSES* networkInterface; for (networkInterface = &interfaces; networkInterface; networkInterface = networkInterface->Next) @@ -119,18 +121,41 @@ struct ScanIpIfAddrs SOCKADDR_IN* addr4 = reinterpret_cast(address->Address.lpSockaddr); auto bytes = reinterpret_cast(&addr4->sin_addr); - addrs.emplace_back(asio::makeAddress<::asio::ip::address_v4>(bytes)); + auto ipv4address = discovery::makeAddress(bytes); + addrs.emplace_back(ipv4address); + IpInterfaceNames.insert( + std::make_pair(networkInterface->AdapterName, ipv4address)); } - else if (AF_INET6 == family) + } + } + }); + + getIfAddrs.withIfAddrs([&](const IP_ADAPTER_ADDRESSES& interfaces) { + const IP_ADAPTER_ADDRESSES* networkInterface; + for (networkInterface = &interfaces; networkInterface; + networkInterface = networkInterface->Next) + { + for (IP_ADAPTER_UNICAST_ADDRESS* address = networkInterface->FirstUnicastAddress; + NULL != address; address = address->Next) + { + auto family = address->Address.lpSockaddr->sa_family; + if (AF_INET6 == family + && IpInterfaceNames.find(networkInterface->AdapterName) + != IpInterfaceNames.end()) { - SOCKADDR_IN6* addr6 = + SOCKADDR_IN6* sockAddr = reinterpret_cast(address->Address.lpSockaddr); - auto bytes = reinterpret_cast(&addr6->sin6_addr); - addrs.emplace_back(asio::makeAddress<::asio::ip::address_v6>(bytes)); + auto bytes = reinterpret_cast(&sockAddr->sin6_addr); + auto addr6 = discovery::makeAddress(bytes); + if (!addr6.is_loopback() && addr6.is_link_local()) + { + addrs.emplace_back(addr6); + } } } } }); + return addrs; } }; diff --git a/tidal-link/link/include/ableton/test/serial_io/Context.hpp b/tidal-link/link/include/ableton/test/serial_io/Context.hpp index f450fbb79..f8f19bf20 100644 --- a/tidal-link/link/include/ableton/test/serial_io/Context.hpp +++ b/tidal-link/link/include/ableton/test/serial_io/Context.hpp @@ -19,7 +19,7 @@ #pragma once -#include +#include #include #include #include @@ -37,7 +37,7 @@ class Context { public: Context(const SchedulerTree::TimePoint& now, - const std::vector<::asio::ip::address>& ifAddrs, + const std::vector& ifAddrs, std::shared_ptr pScheduler) : mNow(now) , mIfAddrs(ifAddrs) @@ -91,14 +91,14 @@ class Context return mLog; } - std::vector<::asio::ip::address> scanNetworkInterfaces() + std::vector scanNetworkInterfaces() { return mIfAddrs; } private: const SchedulerTree::TimePoint& mNow; - const std::vector<::asio::ip::address>& mIfAddrs; + const std::vector& mIfAddrs; std::shared_ptr mpScheduler; Log mLog; SchedulerTree::TimerId mNextTimerId; diff --git a/tidal-link/link/include/ableton/test/serial_io/Fixture.hpp b/tidal-link/link/include/ableton/test/serial_io/Fixture.hpp index 316c44d0c..5983899a5 100644 --- a/tidal-link/link/include/ableton/test/serial_io/Fixture.hpp +++ b/tidal-link/link/include/ableton/test/serial_io/Fixture.hpp @@ -19,7 +19,7 @@ #pragma once -#include +#include #include #include #include @@ -50,7 +50,7 @@ class Fixture Fixture(Fixture&&) = delete; Fixture& operator=(Fixture&&) = delete; - void setNetworkInterfaces(std::vector<::asio::ip::address> ifAddrs) + void setNetworkInterfaces(std::vector ifAddrs) { mIfAddrs = std::move(ifAddrs); } @@ -84,7 +84,7 @@ class Fixture private: std::shared_ptr mpScheduler; SchedulerTree::TimePoint mNow; - std::vector<::asio::ip::address> mIfAddrs; + std::vector mIfAddrs; }; } // namespace serial_io diff --git a/tidal-link/link/modules/asio-standalone/.appveyor.yml b/tidal-link/link/modules/asio-standalone/.appveyor.yml index d7865c5a2..db7b09b3f 100644 --- a/tidal-link/link/modules/asio-standalone/.appveyor.yml +++ b/tidal-link/link/modules/asio-standalone/.appveyor.yml @@ -17,7 +17,6 @@ environment: SEPARATE_COMPILATION: 1 MSVC: 1 - STANDALONE: 1 - SEPARATE_COMPILATION: 1 MINGW: 1 - STANDALONE: 1 CXXLATEST: 1 @@ -37,7 +36,6 @@ environment: SEPARATE_COMPILATION: 1 MSVC: 1 - USING_BOOST: 1 - SEPARATE_COMPILATION: 1 MINGW: 1 for: diff --git a/tidal-link/link/modules/asio-standalone/.cirrus.yml b/tidal-link/link/modules/asio-standalone/.cirrus.yml index 3a7dafc39..9ace7fc90 100644 --- a/tidal-link/link/modules/asio-standalone/.cirrus.yml +++ b/tidal-link/link/modules/asio-standalone/.cirrus.yml @@ -1,5 +1,5 @@ freebsd_instance: - image_family: freebsd-12-1 + image_family: freebsd-13-0 cpu: 1 env: @@ -7,7 +7,7 @@ env: task: install_script: - - pkg install -y autoconf automake + - pkg install -y autoconf automake pkgconf build_script: - cd asio - ./autogen.sh diff --git a/tidal-link/link/modules/asio-standalone/.github/workflows/ci.yml b/tidal-link/link/modules/asio-standalone/.github/workflows/ci.yml new file mode 100644 index 000000000..3fa02cf7b --- /dev/null +++ b/tidal-link/link/modules/asio-standalone/.github/workflows/ci.yml @@ -0,0 +1,380 @@ +name: asio CI + +on: + push: + branches: [ master, citest-* ] + +jobs: + build: + strategy: + fail-fast: false + matrix: + build-type: ['sanity'] + runs-on: [ubuntu-20.04, ubuntu-22.04, macos-latest] + compiler: [g++-7, g++-8, g++-9, g++-10, g++-11, g++-12, clang++-10, clang++-14, g++] + cxx-std: ['c++03', 'c++11', 'c++14', 'c++17', 'c++2a', 'c++20'] + separate-compilation: ['', '--enable-separate-compilation'] + optim-level: ['-O0'] + no-deprecated: [''] + select-reactor: ['', '-DASIO_DISABLE_EPOLL', '-DASIO_DISABLE_KQUEUE'] + handler-tracking: [''] + boost: [''] + boost-url: [''] + exclude: + # New compilers don't run on ubuntu 20.04 + - runs-on: ubuntu-20.04 + compiler: g++-12 + - runs-on: ubuntu-20.04 + compiler: clang++-14 + # Older compilers don't run on ubuntu 22.04 + - runs-on: ubuntu-22.04 + compiler: g++-7 + - runs-on: ubuntu-22.04 + compiler: g++-8 + - runs-on: ubuntu-22.04 + compiler: clang++-10 + # Unversioned g++ doesn't run on ubuntu + - runs-on: ubuntu-20.04 + compiler: g++ + - runs-on: ubuntu-22.04 + compiler: g++ + # Versioned g++ and clang++ don't run on macOS + - runs-on: macos-latest + compiler: g++-7 + - runs-on: macos-latest + compiler: g++-8 + - runs-on: macos-latest + compiler: g++-9 + - runs-on: macos-latest + compiler: g++-10 + - runs-on: macos-latest + compiler: g++-11 + - runs-on: macos-latest + compiler: g++-12 + - runs-on: macos-latest + compiler: clang++-10 + - runs-on: macos-latest + compiler: clang++-14 + # Older compilers don't support newer std variants + - compiler: g++-7 + cxx-std: c++2a + - compiler: g++-7 + cxx-std: c++20 + - compiler: g++-8 + cxx-std: c++20 + - compiler: g++-9 + cxx-std: c++20 + - compiler: g++-10 + cxx-std: c++2a + - compiler: g++-11 + cxx-std: c++2a + - compiler: g++-12 + cxx-std: c++2a + - compiler: clang++-10 + cxx-std: c++20 + - compiler: clang++-14 + cxx-std: c++2a + - runs-on: macos-latest + cxx-std: c++20 + # Specifying the select reactor is OS-specific + - runs-on: ubuntu-20.04 + select-reactor: -DASIO_DISABLE_KQUEUE + - runs-on: ubuntu-22.04 + select-reactor: -DASIO_DISABLE_KQUEUE + - runs-on: macos-latest + select-reactor: -DASIO_DISABLE_EPOLL + # Trim builds that use separate compilation + - compiler: g++-7 + separate-compilation: --enable-separate-compilation + - compiler: g++-8 + separate-compilation: --enable-separate-compilation + - compiler: g++-9 + separate-compilation: --enable-separate-compilation + - compiler: g++-10 + separate-compilation: --enable-separate-compilation + - compiler: g++-11 + separate-compilation: --enable-separate-compilation + - runs-on: macos-latest + cxx-std: c++14 + separate-compilation: --enable-separate-compilation + - runs-on: macos-latest + cxx-std: c++17 + separate-compilation: --enable-separate-compilation + # Trim builds that use select reactor + - compiler: g++-7 + select-reactor: -DASIO_DISABLE_EPOLL + - compiler: g++-8 + select-reactor: -DASIO_DISABLE_EPOLL + - compiler: g++-9 + select-reactor: -DASIO_DISABLE_EPOLL + - compiler: g++-10 + select-reactor: -DASIO_DISABLE_EPOLL + - compiler: g++-11 + select-reactor: -DASIO_DISABLE_EPOLL + # C++03 builds are always explicitly included + - cxx-std: c++03 + include: + # + # Linux / g++-12 -std=c++20 -fcoroutines / -O2 / standalone + # + - build-type: full + runs-on: ubuntu-22.04 + compiler: g++-12 + cxx-std: c++20 -fcoroutines + optim-level: -O2 + # + # Linux / g++-12 -std=c++17 / -O2 / boost 1.73 + # + - build-type: full + runs-on: ubuntu-22.04 + compiler: g++-12 + cxx-std: c++17 + optim-level: -O2 + with-boost: --with-boost=$GITHUB_WORKSPACE/boost_1_73_0 + boost-url: https://boostorg.jfrog.io/artifactory/main/release/1.73.0/source/boost_1_73_0.tar.bz2 + # + # Linux / g++-11 -std=c++14 / -O0 / standalone / separate compilation + # + - build-type: full + runs-on: ubuntu-22.04 + compiler: g++-11 + cxx-std: c++14 + separate-compilation: --enable-separate-compilation + optim-level: -O0 + # + # Linux / g++-10 / -O2 / standalone + # + - build-type: full + runs-on: ubuntu-20.04 + compiler: g++-10 + cxx-std: c++14 + optim-level: -O2 + # + # Linux / g++-10 / -O0 / standalone / handler tracking + # + - build-type: full + runs-on: ubuntu-20.04 + compiler: g++-10 + cxx-std: c++14 + optim-level: -O0 + handler-tracking: -DASIO_ENABLE_HANDLER_TRACKING + # + # Linux / g++-10 / -O0 / standalone / epoll disabled + # + - build-type: full + runs-on: ubuntu-20.04 + compiler: g++-10 + cxx-std: c++14 + optim-level: -O0 + select-reactor: -DASIO_DISABLE_EPOLL + # + # Linux / g++-10 / -O0 / standalone / separate compilation / handler tracking + # + - build-type: full + runs-on: ubuntu-20.04 + compiler: g++-10 + cxx-std: c++14 + separate-compilation: --enable-separate-compilation + optim-level: -O0 + handler-tracking: -DASIO_ENABLE_HANDLER_TRACKING + # + # Linux / g++-10 / -O0 / standalone / separate compilation / epoll disabled + # + - build-type: full + runs-on: ubuntu-20.04 + compiler: g++-10 + cxx-std: c++14 + separate-compilation: --enable-separate-compilation + optim-level: -O0 + select-reactor: -DASIO_DISABLE_EPOLL + # + # Linux / g++-10 / -O2 / boost 1.80 + # + - build-type: full + runs-on: ubuntu-20.04 + compiler: g++-10 + cxx-std: c++14 + optim-level: -O2 + with-boost: --with-boost=$GITHUB_WORKSPACE/boost_1_80_0 + boost-url: https://boostorg.jfrog.io/artifactory/main/release/1.80.0/source/boost_1_80_0.tar.bz2 + # + # Linux / g++-10 / -O0 / boost 1.80 / epoll disabled + # + - build-type: full + runs-on: ubuntu-20.04 + compiler: g++-10 + cxx-std: c++14 + optim-level: -O0 + with-boost: --with-boost=$GITHUB_WORKSPACE/boost_1_80_0 + boost-url: https://boostorg.jfrog.io/artifactory/main/release/1.80.0/source/boost_1_80_0.tar.bz2 + select-reactor: -DASIO_DISABLE_EPOLL + # + # Linux / g++-10 / -O0 / boost 1.80 / separate compilation + # + - build-type: full + runs-on: ubuntu-20.04 + compiler: g++-10 + cxx-std: c++14 + separate-compilation: --enable-separate-compilation + optim-level: -O0 + with-boost: --with-boost=$GITHUB_WORKSPACE/boost_1_80_0 + boost-url: https://boostorg.jfrog.io/artifactory/main/release/1.80.0/source/boost_1_80_0.tar.bz2 + # + # Linux / g++-7 / -O2 / standalone + # + - build-type: full + runs-on: ubuntu-20.04 + compiler: g++-7 + cxx-std: c++11 + optim-level: -O2 + # + # Linux / g++-7 / -O0 / standalone / separate compilation + # + - build-type: full + runs-on: ubuntu-20.04 + compiler: g++-7 + cxx-std: c++11 + separate-compilation: --enable-separate-compilation + optim-level: -O0 + # + # Linux / g++-7 / -O2 / boost 1.80 + # + - build-type: full + runs-on: ubuntu-20.04 + compiler: g++-7 + cxx-std: c++03 + separate-compilation: --enable-separate-compilation + optim-level: -O2 + with-boost: --with-boost=$GITHUB_WORKSPACE/boost_1_80_0 + boost-url: https://boostorg.jfrog.io/artifactory/main/release/1.80.0/source/boost_1_80_0.tar.bz2 + # + # Linux / g++-7 -std=c++11 / -O2 / boost 1.80 + # + - build-type: full + runs-on: ubuntu-20.04 + compiler: g++-7 + cxx-std: c++11 + separate-compilation: --enable-separate-compilation + optim-level: -O2 + with-boost: --with-boost=$GITHUB_WORKSPACE/boost_1_80_0 + boost-url: https://boostorg.jfrog.io/artifactory/main/release/1.80.0/source/boost_1_80_0.tar.bz2 + # + # Linux / clang++-14 -std=c++2a / -O2 / standalone + # + - build-type: full + runs-on: ubuntu-22.04 + compiler: clang++-14 + cxx-std: c++2a + optim-level: -O2 + # + # Linux / clang++-14 -std=c++11 / -O0 / standalone / separate compilation + # + - build-type: full + runs-on: ubuntu-22.04 + compiler: clang++-14 + cxx-std: c++11 + separate-compilation: --enable-separate-compilation + optim-level: -O0 + # + # Linux / clang++-10 -std=c++11 / -O2 / standalone + # + - build-type: full + runs-on: ubuntu-20.04 + compiler: clang++-10 + cxx-std: c++11 + optim-level: -O2 + # + # Linux / clang++-10 -std=c++11 / -O0 / boost 1.80 / separate compilation + # + - build-type: full + runs-on: ubuntu-20.04 + compiler: clang++-10 + cxx-std: c++03 + separate-compilation: --enable-separate-compilation + optim-level: -O0 + with-boost: --with-boost=$GITHUB_WORKSPACE/boost_1_80_0 + boost-url: https://boostorg.jfrog.io/artifactory/main/release/1.80.0/source/boost_1_80_0.tar.bz2 + # + # macOS / c++2a -fcoroutines-ts / -O2 / standalone + # + - build-type: full + runs-on: macos-latest + compiler: g++ + cxx-std: c++2a -fcoroutines-ts + optim-level: -O2 + # + # macOS / c++11 / -O2 / standalone + # + - build-type: full + runs-on: macos-latest + compiler: g++ + cxx-std: c++11 + optim-level: -O2 + # + # macOS / c++11 / -O0 / standalone / kqueue disabled + # + - build-type: full + runs-on: macos-latest + compiler: g++ + cxx-std: c++11 + optim-level: -O0 + select-reactor: -DASIO_DISABLE_KQUEUE + # + # macOS / c++11 / -O0 / standalone / separate compilation + # + - build-type: full + runs-on: macos-latest + compiler: g++ + cxx-std: c++11 + separate-compilation: --enable-separate-compilation + optim-level: -O0 + # + # macOS / c++03 / -O2 / boost 1.80 + # + - build-type: full + runs-on: macos-latest + compiler: g++ + cxx-std: c++03 + optim-level: -O2 + with-boost: --with-boost=$GITHUB_WORKSPACE/boost_1_80_0 + boost-url: https://boostorg.jfrog.io/artifactory/main/release/1.80.0/source/boost_1_80_0.tar.bz2 + # + # macOS / c++03 / -O2 / boost 1.80 / separate compilation + # + - build-type: full + runs-on: macos-latest + compiler: g++ + cxx-std: c++03 + separate-compilation: --enable-separate-compilation + optim-level: -O0 + with-boost: --with-boost=$GITHUB_WORKSPACE/boost_1_80_0 + boost-url: https://boostorg.jfrog.io/artifactory/main/release/1.80.0/source/boost_1_80_0.tar.bz2 + runs-on: ${{ matrix.runs-on }} + env: + CXX: ${{ matrix.compiler }} + CXXFLAGS: -std=${{ matrix.cxx-std }} ${{ matrix.optim-level }} -Wall -Wextra ${{ matrix.no-deprecated }} ${{ matrix.select-reactor }} ${{ matrix.handler-tracking }} + steps: + - uses: actions/checkout@v2 + - name: Install autotools + if: startsWith(matrix.runs-on, 'macos') + run: brew install automake + - name: Install compiler + if: startsWith(matrix.runs-on, 'ubuntu') + run: sudo apt-get install -y ${{ matrix.compiler }} + - name: Install boost + if: startsWith(matrix.with-boost, '--with-boost=$GITHUB_WORKSPACE') + run: | + wget --quiet -O - ${{ matrix.boost-url }} | tar -xj + - name: Configure + working-directory: asio + run: | + ./autogen.sh + ./configure ${{ matrix.separate-compilation }} ${{ matrix.with-boost }} + - name: Sanity check + if: startsWith(matrix.build-type, 'sanity') + working-directory: asio/src/tests + run: make unit/io_context.log unit/ip/tcp.log unit/ts/net.log + - name: Build + if: startsWith(matrix.build-type, 'full') + working-directory: asio + run: make && make check diff --git a/tidal-link/link/modules/asio-standalone/.travis.yml b/tidal-link/link/modules/asio-standalone/.travis.yml deleted file mode 100644 index 06fb4b9a7..000000000 --- a/tidal-link/link/modules/asio-standalone/.travis.yml +++ /dev/null @@ -1,372 +0,0 @@ -language: cpp -os: linux -dist: xenial - -cache: - directories: - - ${TRAVIS_BUILD_DIR}/boost_1_64_0 - - ${TRAVIS_BUILD_DIR}/boost_1_73_0 - -matrix: - include: - # - #--------------------------------------------------------------------------- - # Linux / g++-9 - #--------------------------------------------------------------------------- - # - # Linux / g++-9 -std=c++2a / -O2 / standalone - # - - os: linux - dist: bionic - addons: - apt: - sources: - - ubuntu-toolchain-r-test - packages: - - g++-9 - env: - - CXXFLAGS="-std=c++2a -fconcepts -Wall -Wextra -O2" - - CONFIGFLAGS="--with-boost=no" - - MATRIX_EVAL="CC=gcc-9 CXX=g++-9" - compiler: gcc - # - # Linux / g++-9 -std=c++17 / -O2 / boost 1.73 - # - - os: linux - dist: bionic - addons: - apt: - sources: - - ubuntu-toolchain-r-test - packages: - - g++-9 - env: - - BOOST_DIR="boost_1_73_0" - - BOOST_URL="https://sourceforge.net/projects/boost/files/boost/1.73.0/boost_1_73_0.tar.bz2/download" - - CXXFLAGS="-std=c++17 -Wall -Wextra -O2" - - CONFIGFLAGS="--with-boost=$PWD/$BOOST_DIR" - - MATRIX_EVAL="CC=gcc-9 CXX=g++-9" - compiler: gcc - # - # Linux / g++-9 -std=c++14 / -O0 / standalone / separate compilation - # - - os: linux - dist: bionic - addons: - apt: - sources: - - ubuntu-toolchain-r-test - packages: - - g++-9 - env: - - CXXFLAGS="-std=c++14 -Wall -Wextra -O0 -fno-inline" - - CONFIGFLAGS="--with-boost=no --enable-separate-compilation" - - MATRIX_EVAL="CC=gcc-9 CXX=g++-9" - compiler: gcc - # - #--------------------------------------------------------------------------- - # Linux / g++-6 - #--------------------------------------------------------------------------- - # - # Linux / g++-6 / -O2 / standalone - # - - os: linux - addons: - apt: - sources: - - ubuntu-toolchain-r-test - packages: - - g++-6 - env: - - CXXFLAGS="-Wall -Wextra -O2" - - CONFIGFLAGS="--with-boost=no" - - MATRIX_EVAL="CC=gcc-6 CXX=g++-6" - compiler: gcc - # - # Linux / g++-6 / -O0 / standalone / handler tracking - # - - os: linux - addons: - apt: - sources: - - ubuntu-toolchain-r-test - packages: - - g++-6 - env: - - CXXFLAGS="-Wall -Wextra -O0 -fno-inline -DASIO_ENABLE_HANDLER_TRACKING" - - CONFIGFLAGS="--with-boost=no" - - MATRIX_EVAL="CC=gcc-6 CXX=g++-6" - compiler: gcc - # - # Linux / g++-6 / -O0 / standalone / epoll disabled - # - - os: linux - addons: - apt: - sources: - - ubuntu-toolchain-r-test - packages: - - g++-6 - env: - - CXXFLAGS="-Wall -Wextra -O0 -fno-inline -DASIO_DISABLE_EPOLL" - - CONFIGFLAGS="--with-boost=no" - - MATRIX_EVAL="CC=gcc-6 CXX=g++-6" - compiler: gcc - # - # Linux / g++-6 / -O0 / standalone / separate compilation / handler tracking - # - - os: linux - addons: - apt: - sources: - - ubuntu-toolchain-r-test - packages: - - g++-6 - env: - - CXXFLAGS="-Wall -Wextra -O0 -fno-inline -DASIO_ENABLE_HANDLER_TRACKING" - - CONFIGFLAGS="--with-boost=no --enable-separate-compilation" - - MATRIX_EVAL="CC=gcc-6 CXX=g++-6" - compiler: gcc - # - # Linux / g++-6 / -O0 / standalone / separate compilation / epoll disabled - # - - os: linux - addons: - apt: - sources: - - ubuntu-toolchain-r-test - packages: - - g++-6 - env: - - CXXFLAGS="-Wall -Wextra -O0 -fno-inline -DASIO_DISABLE_EPOLL" - - CONFIGFLAGS="--with-boost=no --enable-separate-compilation" - - MATRIX_EVAL="CC=gcc-6 CXX=g++-6" - compiler: gcc - # - # Linux / g++-6 / -O2 / boost 1.64 - # - - os: linux - addons: - apt: - sources: - - ubuntu-toolchain-r-test - packages: - - g++-6 - env: - - BOOST_DIR="boost_1_64_0" - - BOOST_URL="https://sourceforge.net/projects/boost/files/boost/1.64.0/boost_1_64_0.tar.bz2/download" - - CXXFLAGS="-Wall -Wextra -O2" - - CONFIGFLAGS="" - - MATRIX_EVAL="CC=gcc-6 CXX=g++-6" - compiler: gcc - # - # Linux / g++-6 / -O0 / boost 1.64 / epoll disabled - # - - os: linux - addons: - apt: - sources: - - ubuntu-toolchain-r-test - packages: - - g++-6 - env: - - BOOST_DIR="boost_1_64_0" - - BOOST_URL="https://sourceforge.net/projects/boost/files/boost/1.64.0/boost_1_64_0.tar.bz2/download" - - CXXFLAGS="-Wall -Wextra -O0 -fno-inline -DASIO_DISABLE_EPOLL" - - CONFIGFLAGS="" - - MATRIX_EVAL="CC=gcc-6 CXX=g++-6" - compiler: gcc - # - # Linux / g++-6 / -O0 / boost 1.64 / separate compilation - # - - os: linux - addons: - apt: - sources: - - ubuntu-toolchain-r-test - packages: - - g++-6 - env: - - BOOST_DIR="boost_1_64_0" - - BOOST_URL="https://sourceforge.net/projects/boost/files/boost/1.64.0/boost_1_64_0.tar.bz2/download" - - CXXFLAGS="-Wall -Wextra -O0 -fno-inline" - - CONFIGFLAGS="--enable-separate-compilation" - - MATRIX_EVAL="CC=gcc-6 CXX=g++-6" - compiler: gcc - # - #--------------------------------------------------------------------------- - # Linux / g++-4.8 - #--------------------------------------------------------------------------- - # - # Linux / g++-4.8 / -O2 / standalone - # - - os: linux - addons: - apt: - sources: - - ubuntu-toolchain-r-test - packages: - - g++-4.8 - env: - - CXXFLAGS="-Wall -Wextra -O2" - - CONFIGFLAGS="--with-boost=no" - - MATRIX_EVAL="CC=gcc-4.8 CXX=g++-4.8" - compiler: gcc - # - # Linux / g++-4.8 / -O0 / standalone / separate compilation - # - - os: linux - addons: - apt: - sources: - - ubuntu-toolchain-r-test - packages: - - g++-4.8 - env: - - CXXFLAGS="-Wall -Wextra -O0 -fno-inline" - - CONFIGFLAGS="--with-boost=no --enable-separate-compilation" - - MATRIX_EVAL="CC=gcc-4.8 CXX=g++-4.8" - compiler: gcc - # - # Linux / g++-4.8 / -O2 / boost 1.64 - # - - os: linux - addons: - apt: - sources: - - ubuntu-toolchain-r-test - packages: - - g++-4.8 - env: - - BOOST_DIR="boost_1_64_0" - - BOOST_URL="https://sourceforge.net/projects/boost/files/boost/1.64.0/boost_1_64_0.tar.bz2/download" - - CXXFLAGS="-Wall -Wextra -O2" - - CONFIGFLAGS="" - - MATRIX_EVAL="CC=gcc-4.8 CXX=g++-4.8" - compiler: gcc - # - # Linux / g++-4.8 -std=c++11 / -O2 / boost 1.64 - # - - os: linux - addons: - apt: - sources: - - ubuntu-toolchain-r-test - packages: - - g++-4.8 - env: - - BOOST_DIR="boost_1_64_0" - - BOOST_URL="https://sourceforge.net/projects/boost/files/boost/1.64.0/boost_1_64_0.tar.bz2/download" - - CXXFLAGS="-std=c++11 -Wall -Wextra -O2" - - CONFIGFLAGS="" - - MATRIX_EVAL="CC=gcc-4.8 CXX=g++-4.8" - compiler: gcc - # - #--------------------------------------------------------------------------- - # Linux / clang-3.8 - #--------------------------------------------------------------------------- - # - # Linux / clang-3.8 / -O2 / standalone" - # - - os: linux - addons: - apt: - sources: - - ubuntu-toolchain-r-test - - llvm-toolchain-precise-3.8 - packages: - - clang-3.8 - env: - - CXXFLAGS="-Wall -Wextra -O2" - - CONFIGFLAGS="--with-boost=no" - - MATRIX_EVAL="CC=clang-3.8 CXX=clang++-3.8" - compiler: clang - # - # Linux / clang-3.8 / -O0 / standalone / separate compilation - # - - os: linux - addons: - apt: - sources: - - ubuntu-toolchain-r-test - - llvm-toolchain-precise-3.8 - packages: - - clang-3.8 - env: - - CXXFLAGS="-Wall -Wextra -O0 -fno-inline" - - CONFIGFLAGS="--with-boost=no --enable-separate-compilation" - - MATRIX_EVAL="CC=clang-3.8 CXX=clang++-3.8" - compiler: clang - # - #--------------------------------------------------------------------------- - # macOS / xcode10.1 - #--------------------------------------------------------------------------- - # - # macOS / xcode10.1 / -std=c++2a -fcoroutines-ts -O2 / standalone - # - - os: osx - env: - - CXXFLAGS="-std=c++2a -fcoroutines-ts -Wall -Wextra -O0 -fno-inline" - - CONFIGFLAGS="--with-boost=no" - osx_image: xcode10.1 - # - # macOS / xcode10.1 / -O2 / standalone - # - - os: osx - env: - - CXXFLAGS="-Wall -Wextra -O0 -fno-inline" - - CONFIGFLAGS="--with-boost=no" - osx_image: xcode10.1 - # - # macOS / xcode10.1 / -O0 / standalone / kqueue disabled - # - - os: osx - env: - - CXXFLAGS="-Wall -Wextra -O0 -fno-inline -DASIO_DISABLE_KQUEUE" - - CONFIGFLAGS="--with-boost=no" - osx_image: xcode10.1 - # - # macOS / xcode10.1 / -O0 / standalone / separate compilation - # - - os: osx - env: - - CXXFLAGS="-Wall -Wextra -O0 -fno-inline" - - CONFIGFLAGS="--with-boost=no --enable-separate-compilation" - osx_image: xcode10.1 - # - # macOS / xcode10.1 / -O2 / boost 1.64 - # - - os: osx - env: - - BOOST_DIR="boost_1_64_0" - - BOOST_URL="https://sourceforge.net/projects/boost/files/boost/1.64.0/boost_1_64_0.tar.bz2/download" - - CXXFLAGS="-Wall -Wextra -O2" - - CONFIGFLAGS="" - osx_image: xcode10.1 - # - # macOS / xcode10.1 / -O0 / boost 1.64 / separate compilation - # - - os: osx - env: - - BOOST_DIR="boost_1_64_0" - - BOOST_URL="https://sourceforge.net/projects/boost/files/boost/1.64.0/boost_1_64_0.tar.bz2/download" - - CXXFLAGS="-Wall -Wextra -O0 -fno-inline" - - CONFIGFLAGS="--enable-separate-compilation" - osx_image: xcode10.1 - -before_install: - - eval "${MATRIX_EVAL}" - -install: - - | - if [[ "${BOOST_URL}" != "" ]]; then - if [[ -z "$(ls -A ${BOOST_DIR})" ]]; then - { travis_retry wget --quiet -O - ${BOOST_URL} | tar -xj; } || exit 1 - fi - fi - -script: - - cd asio && ./autogen.sh && ./configure $CONFIGFLAGS && make && make check - -notifications: - email: false diff --git a/tidal-link/link/modules/asio-standalone/asio/.gitignore b/tidal-link/link/modules/asio-standalone/asio/.gitignore index 55db11878..39252178e 100644 --- a/tidal-link/link/modules/asio-standalone/asio/.gitignore +++ b/tidal-link/link/modules/asio-standalone/asio/.gitignore @@ -1,6 +1,7 @@ Makefile Makefile.in aclocal.m4 +asio.pc autom4te.cache compile config.guess diff --git a/tidal-link/link/modules/asio-standalone/asio/COPYING b/tidal-link/link/modules/asio-standalone/asio/COPYING index 2bb5eb20d..4540e01fc 100644 --- a/tidal-link/link/modules/asio-standalone/asio/COPYING +++ b/tidal-link/link/modules/asio-standalone/asio/COPYING @@ -1,4 +1,4 @@ -Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +Copyright (c) 2003-2023 Christopher M. Kohlhoff (chris at kohlhoff dot com) Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/tidal-link/link/modules/asio-standalone/asio/INSTALL b/tidal-link/link/modules/asio-standalone/asio/INSTALL index f045678c4..1dd78db18 100644 --- a/tidal-link/link/modules/asio-standalone/asio/INSTALL +++ b/tidal-link/link/modules/asio-standalone/asio/INSTALL @@ -1,5 +1,5 @@ See doc/index.html for information on: - External dependencies - - Using asio + - Using, building, and configuring Asio - Supported platforms - How to build the tests and examples diff --git a/tidal-link/link/modules/asio-standalone/asio/Makefile.am b/tidal-link/link/modules/asio-standalone/asio/Makefile.am index 0acdc02d9..b7760851b 100644 --- a/tidal-link/link/modules/asio-standalone/asio/Makefile.am +++ b/tidal-link/link/modules/asio-standalone/asio/Makefile.am @@ -1,5 +1,7 @@ AUTOMAKE_OPTIONS = foreign dist-bzip2 dist-zip +pkgconfig_DATA = asio.pc + SUBDIRS = include src MAINTAINERCLEANFILES = \ diff --git a/tidal-link/link/modules/asio-standalone/asio/README b/tidal-link/link/modules/asio-standalone/asio/README index 92472f52e..6ef60c29a 100644 --- a/tidal-link/link/modules/asio-standalone/asio/README +++ b/tidal-link/link/modules/asio-standalone/asio/README @@ -1,4 +1,4 @@ -asio version 1.17.0 -Released Friday, 10 July 2020. +asio version 1.28.0 +Released Wednesday, 26 April 2023. See doc/index.html for API documentation and a tutorial. diff --git a/tidal-link/link/modules/asio-standalone/asio/asio.manifest b/tidal-link/link/modules/asio-standalone/asio/asio.manifest index 440b974eb..ae98bebb7 100644 --- a/tidal-link/link/modules/asio-standalone/asio/asio.manifest +++ b/tidal-link/link/modules/asio-standalone/asio/asio.manifest @@ -1,5 +1,6 @@ / /aclocal.m4 +/asio.pc.in /compile /config.guess /config.sub @@ -8,30 +9,52 @@ /COPYING /depcomp /doc/ +/doc/1.png +/doc/2.png +/doc/3.png +/doc/4.png +/doc/5.png +/doc/6.png +/doc/7.png +/doc/8.png /doc/asio/ /doc/asio/examples/ /doc/asio/examples/cpp03_examples.html /doc/asio/examples/cpp11_examples.html /doc/asio/examples/cpp14_examples.html /doc/asio/examples/cpp17_examples.html +/doc/asio/examples/cpp20_examples.html /doc/asio/examples.html /doc/asio/history.html /doc/asio/index.html /doc/asio/net_ts.html /doc/asio/overview/ +/doc/asio/overview/basics.html +/doc/asio/overview/channels.html +/doc/asio/overview/composition/ +/doc/asio/overview/composition/compose.html +/doc/asio/overview/composition/coro.html +/doc/asio/overview/composition/coroutine.html +/doc/asio/overview/composition/cpp20_coroutines.html +/doc/asio/overview/composition/deferred.html +/doc/asio/overview/composition/futures.html +/doc/asio/overview/composition.html +/doc/asio/overview/composition/immediate_completion.html +/doc/asio/overview/composition/parallel_group.html +/doc/asio/overview/composition/promises.html +/doc/asio/overview/composition/spawn.html +/doc/asio/overview/composition/token_adapters.html +/doc/asio/overview/composition/type_erasure.html /doc/asio/overview/core/ /doc/asio/overview/core/allocation.html /doc/asio/overview/core/async.html -/doc/asio/overview/core/basics.html /doc/asio/overview/core/buffers.html +/doc/asio/overview/core/cancellation.html /doc/asio/overview/core/concurrency_hint.html -/doc/asio/overview/core/coroutine.html -/doc/asio/overview/core/coroutines_ts.html /doc/asio/overview/core/handler_tracking.html /doc/asio/overview/core.html /doc/asio/overview/core/line_based.html /doc/asio/overview/core/reactor.html -/doc/asio/overview/core/spawn.html /doc/asio/overview/core/strands.html /doc/asio/overview/core/streams.html /doc/asio/overview/core/threads.html @@ -39,21 +62,34 @@ /doc/asio/overview/cpp2011/array.html /doc/asio/overview/cpp2011/atomic.html /doc/asio/overview/cpp2011/chrono.html -/doc/asio/overview/cpp2011/futures.html /doc/asio/overview/cpp2011.html /doc/asio/overview/cpp2011/move_handlers.html /doc/asio/overview/cpp2011/move_objects.html /doc/asio/overview/cpp2011/shared_ptr.html /doc/asio/overview/cpp2011/system_error.html /doc/asio/overview/cpp2011/variadic.html +/doc/asio/overview/files.html /doc/asio/overview.html /doc/asio/overview/implementation.html +/doc/asio/overview/model/ +/doc/asio/overview/model/allocators.html +/doc/asio/overview/model/associators.html +/doc/asio/overview/model/async_agents.html +/doc/asio/overview/model/async_ops.html +/doc/asio/overview/model/cancellation.html +/doc/asio/overview/model/child_agents.html +/doc/asio/overview/model/completion_tokens.html +/doc/asio/overview/model/executors.html +/doc/asio/overview/model/higher_levels.html +/doc/asio/overview/model.html +/doc/asio/overview/model/library_elements.html /doc/asio/overview/networking/ /doc/asio/overview/networking/bsd_sockets.html /doc/asio/overview/networking.html /doc/asio/overview/networking/iostreams.html /doc/asio/overview/networking/other_protocols.html /doc/asio/overview/networking/protocols.html +/doc/asio/overview/pipes.html /doc/asio/overview/posix/ /doc/asio/overview/posix/fork.html /doc/asio/overview/posix.html @@ -73,7 +109,201 @@ /doc/asio/reference/ /doc/asio/reference/AcceptableProtocol.html /doc/asio/reference/AcceptHandler.html +/doc/asio/reference/AcceptToken.html +/doc/asio/reference/allocator_binder/ +/doc/asio/reference/allocator_binder/allocator_binder/ +/doc/asio/reference/allocator_binder/_allocator_binder.html +/doc/asio/reference/allocator_binder/allocator_binder.html +/doc/asio/reference/allocator_binder/allocator_binder/overload1.html +/doc/asio/reference/allocator_binder/allocator_binder/overload2.html +/doc/asio/reference/allocator_binder/allocator_binder/overload3.html +/doc/asio/reference/allocator_binder/allocator_binder/overload4.html +/doc/asio/reference/allocator_binder/allocator_binder/overload5.html +/doc/asio/reference/allocator_binder/allocator_binder/overload6.html +/doc/asio/reference/allocator_binder/allocator_binder/overload7.html +/doc/asio/reference/allocator_binder/allocator_binder/overload8.html +/doc/asio/reference/allocator_binder/allocator_binder/overload9.html +/doc/asio/reference/allocator_binder/allocator_type.html +/doc/asio/reference/allocator_binder/argument_type.html +/doc/asio/reference/allocator_binder/first_argument_type.html +/doc/asio/reference/allocator_binder/get/ +/doc/asio/reference/allocator_binder/get_allocator.html +/doc/asio/reference/allocator_binder/get.html +/doc/asio/reference/allocator_binder/get/overload1.html +/doc/asio/reference/allocator_binder/get/overload2.html +/doc/asio/reference/allocator_binder.html +/doc/asio/reference/allocator_binder/operator_lp__rp_/ +/doc/asio/reference/allocator_binder/operator_lp__rp_.html +/doc/asio/reference/allocator_binder/operator_lp__rp_/overload1.html +/doc/asio/reference/allocator_binder/operator_lp__rp_/overload2.html +/doc/asio/reference/allocator_binder/result_type.html +/doc/asio/reference/allocator_binder/second_argument_type.html +/doc/asio/reference/allocator_binder/target_type.html +/doc/asio/reference/any_completion_executor/ +/doc/asio/reference/any_completion_executor/any_completion_executor/ +/doc/asio/reference/any_completion_executor/_any_completion_executor.html +/doc/asio/reference/any_completion_executor/any_completion_executor.html +/doc/asio/reference/any_completion_executor/any_completion_executor/overload10.html +/doc/asio/reference/any_completion_executor/any_completion_executor/overload1.html +/doc/asio/reference/any_completion_executor/any_completion_executor/overload2.html +/doc/asio/reference/any_completion_executor/any_completion_executor/overload3.html +/doc/asio/reference/any_completion_executor/any_completion_executor/overload4.html +/doc/asio/reference/any_completion_executor/any_completion_executor/overload5.html +/doc/asio/reference/any_completion_executor/any_completion_executor/overload6.html +/doc/asio/reference/any_completion_executor/any_completion_executor/overload7.html +/doc/asio/reference/any_completion_executor/any_completion_executor/overload8.html +/doc/asio/reference/any_completion_executor/any_completion_executor/overload9.html +/doc/asio/reference/any_completion_executor/context.html +/doc/asio/reference/any_completion_executor/execute.html +/doc/asio/reference/any_completion_executor.html +/doc/asio/reference/any_completion_executor/operator_bool.html +/doc/asio/reference/any_completion_executor/operator_eq_/ +/doc/asio/reference/any_completion_executor/operator_eq__eq_/ +/doc/asio/reference/any_completion_executor/operator_eq__eq_.html +/doc/asio/reference/any_completion_executor/operator_eq__eq_/overload1.html +/doc/asio/reference/any_completion_executor/operator_eq__eq_/overload2.html +/doc/asio/reference/any_completion_executor/operator_eq__eq_/overload3.html +/doc/asio/reference/any_completion_executor/operator_eq_.html +/doc/asio/reference/any_completion_executor/operator_eq_/overload1.html +/doc/asio/reference/any_completion_executor/operator_eq_/overload2.html +/doc/asio/reference/any_completion_executor/operator_eq_/overload3.html +/doc/asio/reference/any_completion_executor/operator_not__eq_/ +/doc/asio/reference/any_completion_executor/operator_not__eq_.html +/doc/asio/reference/any_completion_executor/operator_not__eq_/overload1.html +/doc/asio/reference/any_completion_executor/operator_not__eq_/overload2.html +/doc/asio/reference/any_completion_executor/operator_not__eq_/overload3.html +/doc/asio/reference/any_completion_executor/prefer/ +/doc/asio/reference/any_completion_executor/prefer.html +/doc/asio/reference/any_completion_executor/prefer/overload1.html +/doc/asio/reference/any_completion_executor/prefer/overload2.html +/doc/asio/reference/any_completion_executor/prefer/overload3.html +/doc/asio/reference/any_completion_executor/prefer/overload4.html +/doc/asio/reference/any_completion_executor/prefer/overload5.html +/doc/asio/reference/any_completion_executor/prefer/overload6.html +/doc/asio/reference/any_completion_executor/query.html +/doc/asio/reference/any_completion_executor/require/ +/doc/asio/reference/any_completion_executor/require.html +/doc/asio/reference/any_completion_executor/require/overload1.html +/doc/asio/reference/any_completion_executor/require/overload2.html +/doc/asio/reference/any_completion_executor/swap/ +/doc/asio/reference/any_completion_executor/swap.html +/doc/asio/reference/any_completion_executor/swap/overload1.html +/doc/asio/reference/any_completion_executor/swap/overload2.html +/doc/asio/reference/any_completion_executor/target/ +/doc/asio/reference/any_completion_executor/target.html +/doc/asio/reference/any_completion_executor/target/overload1.html +/doc/asio/reference/any_completion_executor/target/overload2.html +/doc/asio/reference/any_completion_executor/target_type.html +/doc/asio/reference/any_completion_handler/ +/doc/asio/reference/any_completion_handler_allocator/ +/doc/asio/reference/any_completion_handler_allocator/allocate.html +/doc/asio/reference/any_completion_handler_allocator/any_completion_handler_allocator.html +/doc/asio/reference/any_completion_handler_allocator/deallocate.html +/doc/asio/reference/any_completion_handler_allocator.html +/doc/asio/reference/any_completion_handler_allocator_lt__void_comma__Signatures_ellipsis__gt_/ +/doc/asio/reference/any_completion_handler_allocator_lt__void_comma__Signatures_ellipsis__gt_/any_completion_handler_allocator.html +/doc/asio/reference/any_completion_handler_allocator_lt__void_comma__Signatures_ellipsis__gt_.html +/doc/asio/reference/any_completion_handler_allocator_lt__void_comma__Signatures_ellipsis__gt_/operator_eq__eq_.html +/doc/asio/reference/any_completion_handler_allocator_lt__void_comma__Signatures_ellipsis__gt_/operator_not__eq_.html +/doc/asio/reference/any_completion_handler_allocator_lt__void_comma__Signatures_ellipsis__gt___rebind/ +/doc/asio/reference/any_completion_handler_allocator_lt__void_comma__Signatures_ellipsis__gt___rebind.html +/doc/asio/reference/any_completion_handler_allocator_lt__void_comma__Signatures_ellipsis__gt___rebind/other.html +/doc/asio/reference/any_completion_handler_allocator_lt__void_comma__Signatures_ellipsis__gt_/value_type.html +/doc/asio/reference/any_completion_handler_allocator/operator_eq__eq_.html +/doc/asio/reference/any_completion_handler_allocator/operator_not__eq_.html +/doc/asio/reference/any_completion_handler_allocator__rebind/ +/doc/asio/reference/any_completion_handler_allocator__rebind.html +/doc/asio/reference/any_completion_handler_allocator__rebind/other.html +/doc/asio/reference/any_completion_handler_allocator/value_type.html +/doc/asio/reference/any_completion_handler/any_completion_handler/ +/doc/asio/reference/any_completion_handler/_any_completion_handler.html +/doc/asio/reference/any_completion_handler/any_completion_handler.html +/doc/asio/reference/any_completion_handler/any_completion_handler/overload1.html +/doc/asio/reference/any_completion_handler/any_completion_handler/overload2.html +/doc/asio/reference/any_completion_handler/any_completion_handler/overload3.html +/doc/asio/reference/any_completion_handler/any_completion_handler/overload4.html +/doc/asio/reference/any_completion_handler/get_allocator.html +/doc/asio/reference/any_completion_handler/get_cancellation_slot.html +/doc/asio/reference/any_completion_handler.html +/doc/asio/reference/any_completion_handler/operator_bool.html +/doc/asio/reference/any_completion_handler/operator_eq_/ +/doc/asio/reference/any_completion_handler/operator_eq__eq_/ +/doc/asio/reference/any_completion_handler/operator_eq__eq_.html +/doc/asio/reference/any_completion_handler/operator_eq__eq_/overload1.html +/doc/asio/reference/any_completion_handler/operator_eq__eq_/overload2.html +/doc/asio/reference/any_completion_handler/operator_eq_.html +/doc/asio/reference/any_completion_handler/operator_eq_/overload1.html +/doc/asio/reference/any_completion_handler/operator_eq_/overload2.html +/doc/asio/reference/any_completion_handler/operator_lp__rp_.html +/doc/asio/reference/any_completion_handler/operator_not__eq_/ +/doc/asio/reference/any_completion_handler/operator_not__eq_.html +/doc/asio/reference/any_completion_handler/operator_not__eq_/overload1.html +/doc/asio/reference/any_completion_handler/operator_not__eq_/overload2.html +/doc/asio/reference/any_completion_handler/operator_not_.html +/doc/asio/reference/any_completion_handler/swap.html +/doc/asio/reference/any_io_executor/ +/doc/asio/reference/any_io_executor/any_io_executor/ +/doc/asio/reference/any_io_executor/_any_io_executor.html +/doc/asio/reference/any_io_executor/any_io_executor.html +/doc/asio/reference/any_io_executor/any_io_executor/overload10.html +/doc/asio/reference/any_io_executor/any_io_executor/overload1.html +/doc/asio/reference/any_io_executor/any_io_executor/overload2.html +/doc/asio/reference/any_io_executor/any_io_executor/overload3.html +/doc/asio/reference/any_io_executor/any_io_executor/overload4.html +/doc/asio/reference/any_io_executor/any_io_executor/overload5.html +/doc/asio/reference/any_io_executor/any_io_executor/overload6.html +/doc/asio/reference/any_io_executor/any_io_executor/overload7.html +/doc/asio/reference/any_io_executor/any_io_executor/overload8.html +/doc/asio/reference/any_io_executor/any_io_executor/overload9.html +/doc/asio/reference/any_io_executor/context.html +/doc/asio/reference/any_io_executor/execute.html /doc/asio/reference/any_io_executor.html +/doc/asio/reference/any_io_executor/operator_bool.html +/doc/asio/reference/any_io_executor/operator_eq_/ +/doc/asio/reference/any_io_executor/operator_eq__eq_/ +/doc/asio/reference/any_io_executor/operator_eq__eq_.html +/doc/asio/reference/any_io_executor/operator_eq__eq_/overload1.html +/doc/asio/reference/any_io_executor/operator_eq__eq_/overload2.html +/doc/asio/reference/any_io_executor/operator_eq__eq_/overload3.html +/doc/asio/reference/any_io_executor/operator_eq_.html +/doc/asio/reference/any_io_executor/operator_eq_/overload1.html +/doc/asio/reference/any_io_executor/operator_eq_/overload2.html +/doc/asio/reference/any_io_executor/operator_eq_/overload3.html +/doc/asio/reference/any_io_executor/operator_not__eq_/ +/doc/asio/reference/any_io_executor/operator_not__eq_.html +/doc/asio/reference/any_io_executor/operator_not__eq_/overload1.html +/doc/asio/reference/any_io_executor/operator_not__eq_/overload2.html +/doc/asio/reference/any_io_executor/operator_not__eq_/overload3.html +/doc/asio/reference/any_io_executor/prefer/ +/doc/asio/reference/any_io_executor/prefer.html +/doc/asio/reference/any_io_executor/prefer/overload1.html +/doc/asio/reference/any_io_executor/prefer/overload2.html +/doc/asio/reference/any_io_executor/prefer/overload3.html +/doc/asio/reference/any_io_executor/prefer/overload4.html +/doc/asio/reference/any_io_executor/prefer/overload5.html +/doc/asio/reference/any_io_executor/prefer/overload6.html +/doc/asio/reference/any_io_executor/prefer/overload7.html +/doc/asio/reference/any_io_executor/query.html +/doc/asio/reference/any_io_executor/require/ +/doc/asio/reference/any_io_executor/require.html +/doc/asio/reference/any_io_executor/require/overload1.html +/doc/asio/reference/any_io_executor/require/overload2.html +/doc/asio/reference/any_io_executor/require/overload3.html +/doc/asio/reference/any_io_executor/swap/ +/doc/asio/reference/any_io_executor/swap.html +/doc/asio/reference/any_io_executor/swap/overload1.html +/doc/asio/reference/any_io_executor/swap/overload2.html +/doc/asio/reference/any_io_executor/target/ +/doc/asio/reference/any_io_executor/target.html +/doc/asio/reference/any_io_executor/target/overload1.html +/doc/asio/reference/any_io_executor/target/overload2.html +/doc/asio/reference/any_io_executor/target_type.html +/doc/asio/reference/append.html +/doc/asio/reference/append_t/ +/doc/asio/reference/append_t/append_t.html +/doc/asio/reference/append_t.html +/doc/asio/reference/append_t/token_.html +/doc/asio/reference/append_t/values_.html /doc/asio/reference/asio_handler_allocate.html /doc/asio/reference/asio_handler_deallocate.html /doc/asio/reference/asio_handler_invoke/ @@ -82,13 +312,74 @@ /doc/asio/reference/asio_handler_invoke/overload2.html /doc/asio/reference/asio_handler_is_continuation.html /doc/asio/reference/associated_allocator/ -/doc/asio/reference/associated_allocator/get.html +/doc/asio/reference/associated_allocator/decltype/ +/doc/asio/reference/associated_allocator/decltype.html +/doc/asio/reference/associated_allocator/decltype/overload1.html +/doc/asio/reference/associated_allocator/decltype/overload2.html /doc/asio/reference/associated_allocator.html +/doc/asio/reference/associated_allocator_lt__reference_wrapper_lt__T__gt__comma__Allocator__gt_/ +/doc/asio/reference/associated_allocator_lt__reference_wrapper_lt__T__gt__comma__Allocator__gt_/get/ +/doc/asio/reference/associated_allocator_lt__reference_wrapper_lt__T__gt__comma__Allocator__gt_/get.html +/doc/asio/reference/associated_allocator_lt__reference_wrapper_lt__T__gt__comma__Allocator__gt_/get/overload1.html +/doc/asio/reference/associated_allocator_lt__reference_wrapper_lt__T__gt__comma__Allocator__gt_/get/overload2.html +/doc/asio/reference/associated_allocator_lt__reference_wrapper_lt__T__gt__comma__Allocator__gt_.html +/doc/asio/reference/associated_allocator_lt__reference_wrapper_lt__T__gt__comma__Allocator__gt_/type.html +/doc/asio/reference/associated_allocator/noexcept.html /doc/asio/reference/associated_allocator/type.html +/doc/asio/reference/associated_cancellation_slot/ +/doc/asio/reference/associated_cancellation_slot/decltype/ +/doc/asio/reference/associated_cancellation_slot/decltype.html +/doc/asio/reference/associated_cancellation_slot/decltype/overload1.html +/doc/asio/reference/associated_cancellation_slot/decltype/overload2.html +/doc/asio/reference/associated_cancellation_slot.html +/doc/asio/reference/associated_cancellation_slot_lt__reference_wrapper_lt__T__gt__comma__CancellationSlot__gt_/ +/doc/asio/reference/associated_cancellation_slot_lt__reference_wrapper_lt__T__gt__comma__CancellationSlot__gt_/get/ +/doc/asio/reference/associated_cancellation_slot_lt__reference_wrapper_lt__T__gt__comma__CancellationSlot__gt_/get.html +/doc/asio/reference/associated_cancellation_slot_lt__reference_wrapper_lt__T__gt__comma__CancellationSlot__gt_/get/overload1.html +/doc/asio/reference/associated_cancellation_slot_lt__reference_wrapper_lt__T__gt__comma__CancellationSlot__gt_/get/overload2.html +/doc/asio/reference/associated_cancellation_slot_lt__reference_wrapper_lt__T__gt__comma__CancellationSlot__gt_.html +/doc/asio/reference/associated_cancellation_slot_lt__reference_wrapper_lt__T__gt__comma__CancellationSlot__gt_/type.html +/doc/asio/reference/associated_cancellation_slot/noexcept.html +/doc/asio/reference/associated_cancellation_slot/type.html /doc/asio/reference/associated_executor/ -/doc/asio/reference/associated_executor/get.html +/doc/asio/reference/associated_executor/decltype/ +/doc/asio/reference/associated_executor/decltype.html +/doc/asio/reference/associated_executor/decltype/overload1.html +/doc/asio/reference/associated_executor/decltype/overload2.html /doc/asio/reference/associated_executor.html +/doc/asio/reference/associated_executor_lt__reference_wrapper_lt__T__gt__comma__Executor__gt_/ +/doc/asio/reference/associated_executor_lt__reference_wrapper_lt__T__gt__comma__Executor__gt_/get/ +/doc/asio/reference/associated_executor_lt__reference_wrapper_lt__T__gt__comma__Executor__gt_/get.html +/doc/asio/reference/associated_executor_lt__reference_wrapper_lt__T__gt__comma__Executor__gt_/get/overload1.html +/doc/asio/reference/associated_executor_lt__reference_wrapper_lt__T__gt__comma__Executor__gt_/get/overload2.html +/doc/asio/reference/associated_executor_lt__reference_wrapper_lt__T__gt__comma__Executor__gt_.html +/doc/asio/reference/associated_executor_lt__reference_wrapper_lt__T__gt__comma__Executor__gt_/type.html +/doc/asio/reference/associated_executor/noexcept.html /doc/asio/reference/associated_executor/type.html +/doc/asio/reference/associated_immediate_executor/ +/doc/asio/reference/associated_immediate_executor/decltype.html +/doc/asio/reference/associated_immediate_executor.html +/doc/asio/reference/associated_immediate_executor_lt__reference_wrapper_lt__T__gt__comma__Executor__gt_/ +/doc/asio/reference/associated_immediate_executor_lt__reference_wrapper_lt__T__gt__comma__Executor__gt_/get.html +/doc/asio/reference/associated_immediate_executor_lt__reference_wrapper_lt__T__gt__comma__Executor__gt_.html +/doc/asio/reference/associated_immediate_executor_lt__reference_wrapper_lt__T__gt__comma__Executor__gt_/type.html +/doc/asio/reference/associated_immediate_executor/noexcept.html +/doc/asio/reference/associated_immediate_executor/type.html +/doc/asio/reference/associator.html +/doc/asio/reference/as_tuple.html +/doc/asio/reference/as_tuple_t/ +/doc/asio/reference/as_tuple_t/as_default_on.html +/doc/asio/reference/as_tuple_t/as_tuple_t/ +/doc/asio/reference/as_tuple_t/as_tuple_t.html +/doc/asio/reference/as_tuple_t/as_tuple_t/overload1.html +/doc/asio/reference/as_tuple_t/as_tuple_t/overload2.html +/doc/asio/reference/as_tuple_t__default_constructor_tag.html +/doc/asio/reference/as_tuple_t__executor_with_default/ +/doc/asio/reference/as_tuple_t__executor_with_default/default_completion_token_type.html +/doc/asio/reference/as_tuple_t__executor_with_default/executor_with_default.html +/doc/asio/reference/as_tuple_t__executor_with_default.html +/doc/asio/reference/as_tuple_t.html +/doc/asio/reference/as_tuple_t/token_.html /doc/asio/reference/async_completion/ /doc/asio/reference/async_completion/async_completion.html /doc/asio/reference/async_completion/completion_handler.html @@ -146,6 +437,11 @@ /doc/asio/reference/async_result/get.html /doc/asio/reference/async_result.html /doc/asio/reference/async_result/initiate.html +/doc/asio/reference/async_result_lt__basic_yield_context_lt__Executor__gt__comma__Signature__gt_/ +/doc/asio/reference/async_result_lt__basic_yield_context_lt__Executor__gt__comma__Signature__gt_/handler_type.html +/doc/asio/reference/async_result_lt__basic_yield_context_lt__Executor__gt__comma__Signature__gt_.html +/doc/asio/reference/async_result_lt__basic_yield_context_lt__Executor__gt__comma__Signature__gt_/initiate.html +/doc/asio/reference/async_result_lt__basic_yield_context_lt__Executor__gt__comma__Signature__gt_/return_type.html /doc/asio/reference/async_result_lt__std__packaged_task_lt__Result_lp_Args_ellipsis__rp__gt__comma__Signature__gt_/ /doc/asio/reference/async_result_lt__std__packaged_task_lt__Result_lp_Args_ellipsis__rp__gt__comma__Signature__gt_/async_result.html /doc/asio/reference/async_result_lt__std__packaged_task_lt__Result_lp_Args_ellipsis__rp__gt__comma__Signature__gt_/completion_handler_type.html @@ -178,6 +474,7 @@ /doc/asio/reference/awaitable/awaitable/overload2.html /doc/asio/reference/awaitable/executor_type.html /doc/asio/reference/awaitable.html +/doc/asio/reference/awaitable/operator_eq_.html /doc/asio/reference/awaitable/valid.html /doc/asio/reference/awaitable/value_type.html /doc/asio/reference/bad_executor/ @@ -257,7 +554,6 @@ /doc/asio/reference/basic_datagram_socket/get_option/overload1.html /doc/asio/reference/basic_datagram_socket/get_option/overload2.html /doc/asio/reference/basic_datagram_socket.html -/doc/asio/reference/basic_datagram_socket/impl_.html /doc/asio/reference/basic_datagram_socket/io_control/ /doc/asio/reference/basic_datagram_socket/io_control.html /doc/asio/reference/basic_datagram_socket/io_control/overload1.html @@ -397,6 +693,81 @@ /doc/asio/reference/basic_deadline_timer/wait.html /doc/asio/reference/basic_deadline_timer/wait/overload1.html /doc/asio/reference/basic_deadline_timer/wait/overload2.html +/doc/asio/reference/basic_file/ +/doc/asio/reference/basic_file/append.html +/doc/asio/reference/basic_file/assign/ +/doc/asio/reference/basic_file/assign.html +/doc/asio/reference/basic_file/assign/overload1.html +/doc/asio/reference/basic_file/assign/overload2.html +/doc/asio/reference/basic_file/basic_file/ +/doc/asio/reference/basic_file/_basic_file.html +/doc/asio/reference/basic_file/basic_file.html +/doc/asio/reference/basic_file/basic_file/overload10.html +/doc/asio/reference/basic_file/basic_file/overload1.html +/doc/asio/reference/basic_file/basic_file/overload2.html +/doc/asio/reference/basic_file/basic_file/overload3.html +/doc/asio/reference/basic_file/basic_file/overload4.html +/doc/asio/reference/basic_file/basic_file/overload5.html +/doc/asio/reference/basic_file/basic_file/overload6.html +/doc/asio/reference/basic_file/basic_file/overload7.html +/doc/asio/reference/basic_file/basic_file/overload8.html +/doc/asio/reference/basic_file/basic_file/overload9.html +/doc/asio/reference/basic_file/cancel/ +/doc/asio/reference/basic_file/cancel.html +/doc/asio/reference/basic_file/cancel/overload1.html +/doc/asio/reference/basic_file/cancel/overload2.html +/doc/asio/reference/basic_file/close/ +/doc/asio/reference/basic_file/close.html +/doc/asio/reference/basic_file/close/overload1.html +/doc/asio/reference/basic_file/close/overload2.html +/doc/asio/reference/basic_file/create.html +/doc/asio/reference/basic_file/exclusive.html +/doc/asio/reference/basic_file/executor_type.html +/doc/asio/reference/basic_file/flags.html +/doc/asio/reference/basic_file/get_executor.html +/doc/asio/reference/basic_file.html +/doc/asio/reference/basic_file/is_open.html +/doc/asio/reference/basic_file/native_handle.html +/doc/asio/reference/basic_file/native_handle_type.html +/doc/asio/reference/basic_file/open/ +/doc/asio/reference/basic_file/open.html +/doc/asio/reference/basic_file/open/overload1.html +/doc/asio/reference/basic_file/open/overload2.html +/doc/asio/reference/basic_file/open/overload3.html +/doc/asio/reference/basic_file/open/overload4.html +/doc/asio/reference/basic_file/operator_eq_/ +/doc/asio/reference/basic_file/operator_eq_.html +/doc/asio/reference/basic_file/operator_eq_/overload1.html +/doc/asio/reference/basic_file/operator_eq_/overload2.html +/doc/asio/reference/basic_file/read_only.html +/doc/asio/reference/basic_file/read_write.html +/doc/asio/reference/basic_file__rebind_executor/ +/doc/asio/reference/basic_file__rebind_executor.html +/doc/asio/reference/basic_file__rebind_executor/other.html +/doc/asio/reference/basic_file/release/ +/doc/asio/reference/basic_file/release.html +/doc/asio/reference/basic_file/release/overload1.html +/doc/asio/reference/basic_file/release/overload2.html +/doc/asio/reference/basic_file/resize/ +/doc/asio/reference/basic_file/resize.html +/doc/asio/reference/basic_file/resize/overload1.html +/doc/asio/reference/basic_file/resize/overload2.html +/doc/asio/reference/basic_file/seek_basis.html +/doc/asio/reference/basic_file/size/ +/doc/asio/reference/basic_file/size.html +/doc/asio/reference/basic_file/size/overload1.html +/doc/asio/reference/basic_file/size/overload2.html +/doc/asio/reference/basic_file/sync_all/ +/doc/asio/reference/basic_file/sync_all.html +/doc/asio/reference/basic_file/sync_all_on_write.html +/doc/asio/reference/basic_file/sync_all/overload1.html +/doc/asio/reference/basic_file/sync_all/overload2.html +/doc/asio/reference/basic_file/sync_data/ +/doc/asio/reference/basic_file/sync_data.html +/doc/asio/reference/basic_file/sync_data/overload1.html +/doc/asio/reference/basic_file/sync_data/overload2.html +/doc/asio/reference/basic_file/truncate.html +/doc/asio/reference/basic_file/write_only.html /doc/asio/reference/basic_io_object/ /doc/asio/reference/basic_io_object/basic_io_object/ /doc/asio/reference/basic_io_object/_basic_io_object.html @@ -420,6 +791,91 @@ /doc/asio/reference/basic_io_object/implementation_type.html /doc/asio/reference/basic_io_object/operator_eq_.html /doc/asio/reference/basic_io_object/service_type.html +/doc/asio/reference/basic_random_access_file/ +/doc/asio/reference/basic_random_access_file/append.html +/doc/asio/reference/basic_random_access_file/assign/ +/doc/asio/reference/basic_random_access_file/assign.html +/doc/asio/reference/basic_random_access_file/assign/overload1.html +/doc/asio/reference/basic_random_access_file/assign/overload2.html +/doc/asio/reference/basic_random_access_file/async_read_some_at.html +/doc/asio/reference/basic_random_access_file/async_write_some_at.html +/doc/asio/reference/basic_random_access_file/basic_random_access_file/ +/doc/asio/reference/basic_random_access_file/_basic_random_access_file.html +/doc/asio/reference/basic_random_access_file/basic_random_access_file.html +/doc/asio/reference/basic_random_access_file/basic_random_access_file/overload10.html +/doc/asio/reference/basic_random_access_file/basic_random_access_file/overload1.html +/doc/asio/reference/basic_random_access_file/basic_random_access_file/overload2.html +/doc/asio/reference/basic_random_access_file/basic_random_access_file/overload3.html +/doc/asio/reference/basic_random_access_file/basic_random_access_file/overload4.html +/doc/asio/reference/basic_random_access_file/basic_random_access_file/overload5.html +/doc/asio/reference/basic_random_access_file/basic_random_access_file/overload6.html +/doc/asio/reference/basic_random_access_file/basic_random_access_file/overload7.html +/doc/asio/reference/basic_random_access_file/basic_random_access_file/overload8.html +/doc/asio/reference/basic_random_access_file/basic_random_access_file/overload9.html +/doc/asio/reference/basic_random_access_file/cancel/ +/doc/asio/reference/basic_random_access_file/cancel.html +/doc/asio/reference/basic_random_access_file/cancel/overload1.html +/doc/asio/reference/basic_random_access_file/cancel/overload2.html +/doc/asio/reference/basic_random_access_file/close/ +/doc/asio/reference/basic_random_access_file/close.html +/doc/asio/reference/basic_random_access_file/close/overload1.html +/doc/asio/reference/basic_random_access_file/close/overload2.html +/doc/asio/reference/basic_random_access_file/create.html +/doc/asio/reference/basic_random_access_file/exclusive.html +/doc/asio/reference/basic_random_access_file/executor_type.html +/doc/asio/reference/basic_random_access_file/flags.html +/doc/asio/reference/basic_random_access_file/get_executor.html +/doc/asio/reference/basic_random_access_file.html +/doc/asio/reference/basic_random_access_file/is_open.html +/doc/asio/reference/basic_random_access_file/native_handle.html +/doc/asio/reference/basic_random_access_file/native_handle_type.html +/doc/asio/reference/basic_random_access_file/open/ +/doc/asio/reference/basic_random_access_file/open.html +/doc/asio/reference/basic_random_access_file/open/overload1.html +/doc/asio/reference/basic_random_access_file/open/overload2.html +/doc/asio/reference/basic_random_access_file/open/overload3.html +/doc/asio/reference/basic_random_access_file/open/overload4.html +/doc/asio/reference/basic_random_access_file/operator_eq_/ +/doc/asio/reference/basic_random_access_file/operator_eq_.html +/doc/asio/reference/basic_random_access_file/operator_eq_/overload1.html +/doc/asio/reference/basic_random_access_file/operator_eq_/overload2.html +/doc/asio/reference/basic_random_access_file/read_only.html +/doc/asio/reference/basic_random_access_file/read_some_at/ +/doc/asio/reference/basic_random_access_file/read_some_at.html +/doc/asio/reference/basic_random_access_file/read_some_at/overload1.html +/doc/asio/reference/basic_random_access_file/read_some_at/overload2.html +/doc/asio/reference/basic_random_access_file/read_write.html +/doc/asio/reference/basic_random_access_file__rebind_executor/ +/doc/asio/reference/basic_random_access_file__rebind_executor.html +/doc/asio/reference/basic_random_access_file__rebind_executor/other.html +/doc/asio/reference/basic_random_access_file/release/ +/doc/asio/reference/basic_random_access_file/release.html +/doc/asio/reference/basic_random_access_file/release/overload1.html +/doc/asio/reference/basic_random_access_file/release/overload2.html +/doc/asio/reference/basic_random_access_file/resize/ +/doc/asio/reference/basic_random_access_file/resize.html +/doc/asio/reference/basic_random_access_file/resize/overload1.html +/doc/asio/reference/basic_random_access_file/resize/overload2.html +/doc/asio/reference/basic_random_access_file/seek_basis.html +/doc/asio/reference/basic_random_access_file/size/ +/doc/asio/reference/basic_random_access_file/size.html +/doc/asio/reference/basic_random_access_file/size/overload1.html +/doc/asio/reference/basic_random_access_file/size/overload2.html +/doc/asio/reference/basic_random_access_file/sync_all/ +/doc/asio/reference/basic_random_access_file/sync_all.html +/doc/asio/reference/basic_random_access_file/sync_all_on_write.html +/doc/asio/reference/basic_random_access_file/sync_all/overload1.html +/doc/asio/reference/basic_random_access_file/sync_all/overload2.html +/doc/asio/reference/basic_random_access_file/sync_data/ +/doc/asio/reference/basic_random_access_file/sync_data.html +/doc/asio/reference/basic_random_access_file/sync_data/overload1.html +/doc/asio/reference/basic_random_access_file/sync_data/overload2.html +/doc/asio/reference/basic_random_access_file/truncate.html +/doc/asio/reference/basic_random_access_file/write_only.html +/doc/asio/reference/basic_random_access_file/write_some_at/ +/doc/asio/reference/basic_random_access_file/write_some_at.html +/doc/asio/reference/basic_random_access_file/write_some_at/overload1.html +/doc/asio/reference/basic_random_access_file/write_some_at/overload2.html /doc/asio/reference/basic_raw_socket/ /doc/asio/reference/basic_raw_socket/assign/ /doc/asio/reference/basic_raw_socket/assign.html @@ -493,7 +949,6 @@ /doc/asio/reference/basic_raw_socket/get_option/overload1.html /doc/asio/reference/basic_raw_socket/get_option/overload2.html /doc/asio/reference/basic_raw_socket.html -/doc/asio/reference/basic_raw_socket/impl_.html /doc/asio/reference/basic_raw_socket/io_control/ /doc/asio/reference/basic_raw_socket/io_control.html /doc/asio/reference/basic_raw_socket/io_control/overload1.html @@ -589,6 +1044,55 @@ /doc/asio/reference/basic_raw_socket/wait/overload1.html /doc/asio/reference/basic_raw_socket/wait/overload2.html /doc/asio/reference/basic_raw_socket/wait_type.html +/doc/asio/reference/basic_readable_pipe/ +/doc/asio/reference/basic_readable_pipe/assign/ +/doc/asio/reference/basic_readable_pipe/assign.html +/doc/asio/reference/basic_readable_pipe/assign/overload1.html +/doc/asio/reference/basic_readable_pipe/assign/overload2.html +/doc/asio/reference/basic_readable_pipe/async_read_some.html +/doc/asio/reference/basic_readable_pipe/basic_readable_pipe/ +/doc/asio/reference/basic_readable_pipe/_basic_readable_pipe.html +/doc/asio/reference/basic_readable_pipe/basic_readable_pipe.html +/doc/asio/reference/basic_readable_pipe/basic_readable_pipe/overload1.html +/doc/asio/reference/basic_readable_pipe/basic_readable_pipe/overload2.html +/doc/asio/reference/basic_readable_pipe/basic_readable_pipe/overload3.html +/doc/asio/reference/basic_readable_pipe/basic_readable_pipe/overload4.html +/doc/asio/reference/basic_readable_pipe/basic_readable_pipe/overload5.html +/doc/asio/reference/basic_readable_pipe/basic_readable_pipe/overload6.html +/doc/asio/reference/basic_readable_pipe/cancel/ +/doc/asio/reference/basic_readable_pipe/cancel.html +/doc/asio/reference/basic_readable_pipe/cancel/overload1.html +/doc/asio/reference/basic_readable_pipe/cancel/overload2.html +/doc/asio/reference/basic_readable_pipe/close/ +/doc/asio/reference/basic_readable_pipe/close.html +/doc/asio/reference/basic_readable_pipe/close/overload1.html +/doc/asio/reference/basic_readable_pipe/close/overload2.html +/doc/asio/reference/basic_readable_pipe/executor_type.html +/doc/asio/reference/basic_readable_pipe/get_executor.html +/doc/asio/reference/basic_readable_pipe.html +/doc/asio/reference/basic_readable_pipe/is_open.html +/doc/asio/reference/basic_readable_pipe/lowest_layer/ +/doc/asio/reference/basic_readable_pipe/lowest_layer.html +/doc/asio/reference/basic_readable_pipe/lowest_layer/overload1.html +/doc/asio/reference/basic_readable_pipe/lowest_layer/overload2.html +/doc/asio/reference/basic_readable_pipe/lowest_layer_type.html +/doc/asio/reference/basic_readable_pipe/native_handle.html +/doc/asio/reference/basic_readable_pipe/native_handle_type.html +/doc/asio/reference/basic_readable_pipe/operator_eq_/ +/doc/asio/reference/basic_readable_pipe/operator_eq_.html +/doc/asio/reference/basic_readable_pipe/operator_eq_/overload1.html +/doc/asio/reference/basic_readable_pipe/operator_eq_/overload2.html +/doc/asio/reference/basic_readable_pipe/read_some/ +/doc/asio/reference/basic_readable_pipe/read_some.html +/doc/asio/reference/basic_readable_pipe/read_some/overload1.html +/doc/asio/reference/basic_readable_pipe/read_some/overload2.html +/doc/asio/reference/basic_readable_pipe__rebind_executor/ +/doc/asio/reference/basic_readable_pipe__rebind_executor.html +/doc/asio/reference/basic_readable_pipe__rebind_executor/other.html +/doc/asio/reference/basic_readable_pipe/release/ +/doc/asio/reference/basic_readable_pipe/release.html +/doc/asio/reference/basic_readable_pipe/release/overload1.html +/doc/asio/reference/basic_readable_pipe/release/overload2.html /doc/asio/reference/basic_seq_packet_socket/ /doc/asio/reference/basic_seq_packet_socket/assign/ /doc/asio/reference/basic_seq_packet_socket/assign.html @@ -651,7 +1155,6 @@ /doc/asio/reference/basic_seq_packet_socket/get_option/overload1.html /doc/asio/reference/basic_seq_packet_socket/get_option/overload2.html /doc/asio/reference/basic_seq_packet_socket.html -/doc/asio/reference/basic_seq_packet_socket/impl_.html /doc/asio/reference/basic_seq_packet_socket/io_control/ /doc/asio/reference/basic_seq_packet_socket/io_control.html /doc/asio/reference/basic_seq_packet_socket/io_control/overload1.html @@ -746,6 +1249,7 @@ /doc/asio/reference/basic_serial_port/basic_serial_port/ /doc/asio/reference/basic_serial_port/_basic_serial_port.html /doc/asio/reference/basic_serial_port/basic_serial_port.html +/doc/asio/reference/basic_serial_port/basic_serial_port/overload10.html /doc/asio/reference/basic_serial_port/basic_serial_port/overload1.html /doc/asio/reference/basic_serial_port/basic_serial_port/overload2.html /doc/asio/reference/basic_serial_port/basic_serial_port/overload3.html @@ -782,7 +1286,10 @@ /doc/asio/reference/basic_serial_port/open.html /doc/asio/reference/basic_serial_port/open/overload1.html /doc/asio/reference/basic_serial_port/open/overload2.html +/doc/asio/reference/basic_serial_port/operator_eq_/ /doc/asio/reference/basic_serial_port/operator_eq_.html +/doc/asio/reference/basic_serial_port/operator_eq_/overload1.html +/doc/asio/reference/basic_serial_port/operator_eq_/overload2.html /doc/asio/reference/basic_serial_port/read_some/ /doc/asio/reference/basic_serial_port/read_some.html /doc/asio/reference/basic_serial_port/read_some/overload1.html @@ -807,6 +1314,8 @@ /doc/asio/reference/basic_signal_set/add.html /doc/asio/reference/basic_signal_set/add/overload1.html /doc/asio/reference/basic_signal_set/add/overload2.html +/doc/asio/reference/basic_signal_set/add/overload3.html +/doc/asio/reference/basic_signal_set/add/overload4.html /doc/asio/reference/basic_signal_set/async_wait.html /doc/asio/reference/basic_signal_set/basic_signal_set/ /doc/asio/reference/basic_signal_set/_basic_signal_set.html @@ -828,6 +1337,8 @@ /doc/asio/reference/basic_signal_set/clear/overload1.html /doc/asio/reference/basic_signal_set/clear/overload2.html /doc/asio/reference/basic_signal_set/executor_type.html +/doc/asio/reference/basic_signal_set/flags.html +/doc/asio/reference/basic_signal_set/flags_t.html /doc/asio/reference/basic_signal_set/get_executor.html /doc/asio/reference/basic_signal_set.html /doc/asio/reference/basic_signal_set__rebind_executor/ @@ -1032,7 +1543,6 @@ /doc/asio/reference/basic_socket/get_option/overload1.html /doc/asio/reference/basic_socket/get_option/overload2.html /doc/asio/reference/basic_socket.html -/doc/asio/reference/basic_socket/impl_.html /doc/asio/reference/basic_socket/io_control/ /doc/asio/reference/basic_socket/io_control.html /doc/asio/reference/basic_socket/io_control/overload1.html @@ -1208,6 +1718,95 @@ /doc/asio/reference/basic_streambuf/reserve.html /doc/asio/reference/basic_streambuf/size.html /doc/asio/reference/basic_streambuf/underflow.html +/doc/asio/reference/basic_stream_file/ +/doc/asio/reference/basic_stream_file/append.html +/doc/asio/reference/basic_stream_file/assign/ +/doc/asio/reference/basic_stream_file/assign.html +/doc/asio/reference/basic_stream_file/assign/overload1.html +/doc/asio/reference/basic_stream_file/assign/overload2.html +/doc/asio/reference/basic_stream_file/async_read_some.html +/doc/asio/reference/basic_stream_file/async_write_some.html +/doc/asio/reference/basic_stream_file/basic_stream_file/ +/doc/asio/reference/basic_stream_file/_basic_stream_file.html +/doc/asio/reference/basic_stream_file/basic_stream_file.html +/doc/asio/reference/basic_stream_file/basic_stream_file/overload10.html +/doc/asio/reference/basic_stream_file/basic_stream_file/overload1.html +/doc/asio/reference/basic_stream_file/basic_stream_file/overload2.html +/doc/asio/reference/basic_stream_file/basic_stream_file/overload3.html +/doc/asio/reference/basic_stream_file/basic_stream_file/overload4.html +/doc/asio/reference/basic_stream_file/basic_stream_file/overload5.html +/doc/asio/reference/basic_stream_file/basic_stream_file/overload6.html +/doc/asio/reference/basic_stream_file/basic_stream_file/overload7.html +/doc/asio/reference/basic_stream_file/basic_stream_file/overload8.html +/doc/asio/reference/basic_stream_file/basic_stream_file/overload9.html +/doc/asio/reference/basic_stream_file/cancel/ +/doc/asio/reference/basic_stream_file/cancel.html +/doc/asio/reference/basic_stream_file/cancel/overload1.html +/doc/asio/reference/basic_stream_file/cancel/overload2.html +/doc/asio/reference/basic_stream_file/close/ +/doc/asio/reference/basic_stream_file/close.html +/doc/asio/reference/basic_stream_file/close/overload1.html +/doc/asio/reference/basic_stream_file/close/overload2.html +/doc/asio/reference/basic_stream_file/create.html +/doc/asio/reference/basic_stream_file/exclusive.html +/doc/asio/reference/basic_stream_file/executor_type.html +/doc/asio/reference/basic_stream_file/flags.html +/doc/asio/reference/basic_stream_file/get_executor.html +/doc/asio/reference/basic_stream_file.html +/doc/asio/reference/basic_stream_file/is_open.html +/doc/asio/reference/basic_stream_file/native_handle.html +/doc/asio/reference/basic_stream_file/native_handle_type.html +/doc/asio/reference/basic_stream_file/open/ +/doc/asio/reference/basic_stream_file/open.html +/doc/asio/reference/basic_stream_file/open/overload1.html +/doc/asio/reference/basic_stream_file/open/overload2.html +/doc/asio/reference/basic_stream_file/open/overload3.html +/doc/asio/reference/basic_stream_file/open/overload4.html +/doc/asio/reference/basic_stream_file/operator_eq_/ +/doc/asio/reference/basic_stream_file/operator_eq_.html +/doc/asio/reference/basic_stream_file/operator_eq_/overload1.html +/doc/asio/reference/basic_stream_file/operator_eq_/overload2.html +/doc/asio/reference/basic_stream_file/read_only.html +/doc/asio/reference/basic_stream_file/read_some/ +/doc/asio/reference/basic_stream_file/read_some.html +/doc/asio/reference/basic_stream_file/read_some/overload1.html +/doc/asio/reference/basic_stream_file/read_some/overload2.html +/doc/asio/reference/basic_stream_file/read_write.html +/doc/asio/reference/basic_stream_file__rebind_executor/ +/doc/asio/reference/basic_stream_file__rebind_executor.html +/doc/asio/reference/basic_stream_file__rebind_executor/other.html +/doc/asio/reference/basic_stream_file/release/ +/doc/asio/reference/basic_stream_file/release.html +/doc/asio/reference/basic_stream_file/release/overload1.html +/doc/asio/reference/basic_stream_file/release/overload2.html +/doc/asio/reference/basic_stream_file/resize/ +/doc/asio/reference/basic_stream_file/resize.html +/doc/asio/reference/basic_stream_file/resize/overload1.html +/doc/asio/reference/basic_stream_file/resize/overload2.html +/doc/asio/reference/basic_stream_file/seek/ +/doc/asio/reference/basic_stream_file/seek_basis.html +/doc/asio/reference/basic_stream_file/seek.html +/doc/asio/reference/basic_stream_file/seek/overload1.html +/doc/asio/reference/basic_stream_file/seek/overload2.html +/doc/asio/reference/basic_stream_file/size/ +/doc/asio/reference/basic_stream_file/size.html +/doc/asio/reference/basic_stream_file/size/overload1.html +/doc/asio/reference/basic_stream_file/size/overload2.html +/doc/asio/reference/basic_stream_file/sync_all/ +/doc/asio/reference/basic_stream_file/sync_all.html +/doc/asio/reference/basic_stream_file/sync_all_on_write.html +/doc/asio/reference/basic_stream_file/sync_all/overload1.html +/doc/asio/reference/basic_stream_file/sync_all/overload2.html +/doc/asio/reference/basic_stream_file/sync_data/ +/doc/asio/reference/basic_stream_file/sync_data.html +/doc/asio/reference/basic_stream_file/sync_data/overload1.html +/doc/asio/reference/basic_stream_file/sync_data/overload2.html +/doc/asio/reference/basic_stream_file/truncate.html +/doc/asio/reference/basic_stream_file/write_only.html +/doc/asio/reference/basic_stream_file/write_some/ +/doc/asio/reference/basic_stream_file/write_some.html +/doc/asio/reference/basic_stream_file/write_some/overload1.html +/doc/asio/reference/basic_stream_file/write_some/overload2.html /doc/asio/reference/basic_stream_socket/ /doc/asio/reference/basic_stream_socket/assign/ /doc/asio/reference/basic_stream_socket/assign.html @@ -1275,7 +1874,6 @@ /doc/asio/reference/basic_stream_socket/get_option/overload1.html /doc/asio/reference/basic_stream_socket/get_option/overload2.html /doc/asio/reference/basic_stream_socket.html -/doc/asio/reference/basic_stream_socket/impl_.html /doc/asio/reference/basic_stream_socket/io_control/ /doc/asio/reference/basic_stream_socket/io_control.html /doc/asio/reference/basic_stream_socket/io_control/overload1.html @@ -1452,19 +2050,81 @@ /doc/asio/reference/basic_waitable_timer/wait.html /doc/asio/reference/basic_waitable_timer/wait/overload1.html /doc/asio/reference/basic_waitable_timer/wait/overload2.html +/doc/asio/reference/basic_writable_pipe/ +/doc/asio/reference/basic_writable_pipe/assign/ +/doc/asio/reference/basic_writable_pipe/assign.html +/doc/asio/reference/basic_writable_pipe/assign/overload1.html +/doc/asio/reference/basic_writable_pipe/assign/overload2.html +/doc/asio/reference/basic_writable_pipe/async_write_some.html +/doc/asio/reference/basic_writable_pipe/basic_writable_pipe/ +/doc/asio/reference/basic_writable_pipe/_basic_writable_pipe.html +/doc/asio/reference/basic_writable_pipe/basic_writable_pipe.html +/doc/asio/reference/basic_writable_pipe/basic_writable_pipe/overload1.html +/doc/asio/reference/basic_writable_pipe/basic_writable_pipe/overload2.html +/doc/asio/reference/basic_writable_pipe/basic_writable_pipe/overload3.html +/doc/asio/reference/basic_writable_pipe/basic_writable_pipe/overload4.html +/doc/asio/reference/basic_writable_pipe/basic_writable_pipe/overload5.html +/doc/asio/reference/basic_writable_pipe/basic_writable_pipe/overload6.html +/doc/asio/reference/basic_writable_pipe/cancel/ +/doc/asio/reference/basic_writable_pipe/cancel.html +/doc/asio/reference/basic_writable_pipe/cancel/overload1.html +/doc/asio/reference/basic_writable_pipe/cancel/overload2.html +/doc/asio/reference/basic_writable_pipe/close/ +/doc/asio/reference/basic_writable_pipe/close.html +/doc/asio/reference/basic_writable_pipe/close/overload1.html +/doc/asio/reference/basic_writable_pipe/close/overload2.html +/doc/asio/reference/basic_writable_pipe/executor_type.html +/doc/asio/reference/basic_writable_pipe/get_executor.html +/doc/asio/reference/basic_writable_pipe.html +/doc/asio/reference/basic_writable_pipe/is_open.html +/doc/asio/reference/basic_writable_pipe/lowest_layer/ +/doc/asio/reference/basic_writable_pipe/lowest_layer.html +/doc/asio/reference/basic_writable_pipe/lowest_layer/overload1.html +/doc/asio/reference/basic_writable_pipe/lowest_layer/overload2.html +/doc/asio/reference/basic_writable_pipe/lowest_layer_type.html +/doc/asio/reference/basic_writable_pipe/native_handle.html +/doc/asio/reference/basic_writable_pipe/native_handle_type.html +/doc/asio/reference/basic_writable_pipe/operator_eq_/ +/doc/asio/reference/basic_writable_pipe/operator_eq_.html +/doc/asio/reference/basic_writable_pipe/operator_eq_/overload1.html +/doc/asio/reference/basic_writable_pipe/operator_eq_/overload2.html +/doc/asio/reference/basic_writable_pipe__rebind_executor/ +/doc/asio/reference/basic_writable_pipe__rebind_executor.html +/doc/asio/reference/basic_writable_pipe__rebind_executor/other.html +/doc/asio/reference/basic_writable_pipe/release/ +/doc/asio/reference/basic_writable_pipe/release.html +/doc/asio/reference/basic_writable_pipe/release/overload1.html +/doc/asio/reference/basic_writable_pipe/release/overload2.html +/doc/asio/reference/basic_writable_pipe/write_some/ +/doc/asio/reference/basic_writable_pipe/write_some.html +/doc/asio/reference/basic_writable_pipe/write_some/overload1.html +/doc/asio/reference/basic_writable_pipe/write_some/overload2.html /doc/asio/reference/basic_yield_context/ -/doc/asio/reference/basic_yield_context/basic_yield_context/ /doc/asio/reference/basic_yield_context/basic_yield_context.html -/doc/asio/reference/basic_yield_context/basic_yield_context/overload1.html -/doc/asio/reference/basic_yield_context/basic_yield_context/overload2.html -/doc/asio/reference/basic_yield_context/callee_type.html -/doc/asio/reference/basic_yield_context/caller_type.html +/doc/asio/reference/basic_yield_context/cancellation_slot_type.html +/doc/asio/reference/basic_yield_context/cancelled.html +/doc/asio/reference/basic_yield_context/executor_type.html +/doc/asio/reference/basic_yield_context/get_cancellation_slot.html +/doc/asio/reference/basic_yield_context/get_cancellation_state.html +/doc/asio/reference/basic_yield_context/get_executor.html /doc/asio/reference/basic_yield_context.html /doc/asio/reference/basic_yield_context/operator_lb__rb_.html +/doc/asio/reference/basic_yield_context/reset_cancellation_state/ +/doc/asio/reference/basic_yield_context/reset_cancellation_state.html +/doc/asio/reference/basic_yield_context/reset_cancellation_state/overload1.html +/doc/asio/reference/basic_yield_context/reset_cancellation_state/overload2.html +/doc/asio/reference/basic_yield_context/reset_cancellation_state/overload3.html +/doc/asio/reference/basic_yield_context/throw_if_cancelled/ +/doc/asio/reference/basic_yield_context/throw_if_cancelled.html +/doc/asio/reference/basic_yield_context/throw_if_cancelled/overload1.html +/doc/asio/reference/basic_yield_context/throw_if_cancelled/overload2.html +/doc/asio/reference/bind_allocator.html +/doc/asio/reference/bind_cancellation_slot.html /doc/asio/reference/bind_executor/ /doc/asio/reference/bind_executor.html /doc/asio/reference/bind_executor/overload1.html /doc/asio/reference/bind_executor/overload2.html +/doc/asio/reference/bind_immediate_executor.html /doc/asio/reference/buffer/ /doc/asio/reference/buffer_cast/ /doc/asio/reference/buffer_cast.html @@ -1475,6 +2135,7 @@ /doc/asio/reference/buffer_copy/overload1.html /doc/asio/reference/buffer_copy/overload2.html /doc/asio/reference/BufferedHandshakeHandler.html +/doc/asio/reference/BufferedHandshakeToken.html /doc/asio/reference/buffered_read_stream/ /doc/asio/reference/buffered_read_stream/async_fill.html /doc/asio/reference/buffered_read_stream/async_read_some.html @@ -1609,6 +2270,10 @@ /doc/asio/reference/buffered_write_stream/write_some/overload1.html /doc/asio/reference/buffered_write_stream/write_some/overload2.html /doc/asio/reference/buffer.html +/doc/asio/reference/buffer_literals__operator_quot__quot__buf/ +/doc/asio/reference/buffer_literals__operator_quot__quot__buf.html +/doc/asio/reference/buffer_literals__operator_quot__quot__buf/overload1.html +/doc/asio/reference/buffer_literals__operator_quot__quot__buf/overload2.html /doc/asio/reference/buffer/overload10.html /doc/asio/reference/buffer/overload11.html /doc/asio/reference/buffer/overload12.html @@ -1634,13 +2299,42 @@ /doc/asio/reference/buffer/overload30.html /doc/asio/reference/buffer/overload31.html /doc/asio/reference/buffer/overload32.html +/doc/asio/reference/buffer/overload33.html +/doc/asio/reference/buffer/overload34.html +/doc/asio/reference/buffer/overload35.html +/doc/asio/reference/buffer/overload36.html +/doc/asio/reference/buffer/overload37.html +/doc/asio/reference/buffer/overload38.html +/doc/asio/reference/buffer/overload39.html /doc/asio/reference/buffer/overload3.html +/doc/asio/reference/buffer/overload40.html +/doc/asio/reference/buffer/overload41.html +/doc/asio/reference/buffer/overload42.html /doc/asio/reference/buffer/overload4.html /doc/asio/reference/buffer/overload5.html /doc/asio/reference/buffer/overload6.html /doc/asio/reference/buffer/overload7.html /doc/asio/reference/buffer/overload8.html /doc/asio/reference/buffer/overload9.html +/doc/asio/reference/buffer_registration/ +/doc/asio/reference/buffer_registration/allocator_type.html +/doc/asio/reference/buffer_registration/at.html +/doc/asio/reference/buffer_registration/begin.html +/doc/asio/reference/buffer_registration/buffer_registration/ +/doc/asio/reference/buffer_registration/_buffer_registration.html +/doc/asio/reference/buffer_registration/buffer_registration.html +/doc/asio/reference/buffer_registration/buffer_registration/overload1.html +/doc/asio/reference/buffer_registration/buffer_registration/overload2.html +/doc/asio/reference/buffer_registration/buffer_registration/overload3.html +/doc/asio/reference/buffer_registration/cbegin.html +/doc/asio/reference/buffer_registration/cend.html +/doc/asio/reference/buffer_registration/const_iterator.html +/doc/asio/reference/buffer_registration/end.html +/doc/asio/reference/buffer_registration.html +/doc/asio/reference/buffer_registration/iterator.html +/doc/asio/reference/buffer_registration/operator_eq_.html +/doc/asio/reference/buffer_registration/operator_lb__rb_.html +/doc/asio/reference/buffer_registration/size.html /doc/asio/reference/buffers_begin.html /doc/asio/reference/buffers_end.html /doc/asio/reference/buffer_sequence_begin/ @@ -1649,12 +2343,16 @@ /doc/asio/reference/buffer_sequence_begin/overload2.html /doc/asio/reference/buffer_sequence_begin/overload3.html /doc/asio/reference/buffer_sequence_begin/overload4.html +/doc/asio/reference/buffer_sequence_begin/overload5.html +/doc/asio/reference/buffer_sequence_begin/overload6.html /doc/asio/reference/buffer_sequence_end/ /doc/asio/reference/buffer_sequence_end.html /doc/asio/reference/buffer_sequence_end/overload1.html /doc/asio/reference/buffer_sequence_end/overload2.html /doc/asio/reference/buffer_sequence_end/overload3.html /doc/asio/reference/buffer_sequence_end/overload4.html +/doc/asio/reference/buffer_sequence_end/overload5.html +/doc/asio/reference/buffer_sequence_end/overload6.html /doc/asio/reference/buffers_iterator/ /doc/asio/reference/buffers_iterator/begin.html /doc/asio/reference/buffers_iterator/buffers_iterator.html @@ -1693,12 +2391,77 @@ /doc/asio/reference/buffers_iterator/reference.html /doc/asio/reference/buffers_iterator/value_type.html /doc/asio/reference/buffer_size.html +/doc/asio/reference/cancellation_filter/ +/doc/asio/reference/cancellation_filter.html +/doc/asio/reference/cancellation_filter/operator_lp__rp_.html +/doc/asio/reference/CancellationHandler.html +/doc/asio/reference/cancellation_signal/ +/doc/asio/reference/cancellation_signal/_cancellation_signal.html +/doc/asio/reference/cancellation_signal/cancellation_signal.html +/doc/asio/reference/cancellation_signal/emit.html +/doc/asio/reference/cancellation_signal.html +/doc/asio/reference/cancellation_signal/slot.html +/doc/asio/reference/cancellation_slot/ +/doc/asio/reference/cancellation_slot/assign.html +/doc/asio/reference/cancellation_slot_binder/ +/doc/asio/reference/cancellation_slot_binder/argument_type.html +/doc/asio/reference/cancellation_slot_binder/cancellation_slot_binder/ +/doc/asio/reference/cancellation_slot_binder/_cancellation_slot_binder.html +/doc/asio/reference/cancellation_slot_binder/cancellation_slot_binder.html +/doc/asio/reference/cancellation_slot_binder/cancellation_slot_binder/overload1.html +/doc/asio/reference/cancellation_slot_binder/cancellation_slot_binder/overload2.html +/doc/asio/reference/cancellation_slot_binder/cancellation_slot_binder/overload3.html +/doc/asio/reference/cancellation_slot_binder/cancellation_slot_binder/overload4.html +/doc/asio/reference/cancellation_slot_binder/cancellation_slot_binder/overload5.html +/doc/asio/reference/cancellation_slot_binder/cancellation_slot_binder/overload6.html +/doc/asio/reference/cancellation_slot_binder/cancellation_slot_binder/overload7.html +/doc/asio/reference/cancellation_slot_binder/cancellation_slot_binder/overload8.html +/doc/asio/reference/cancellation_slot_binder/cancellation_slot_binder/overload9.html +/doc/asio/reference/cancellation_slot_binder/cancellation_slot_type.html +/doc/asio/reference/cancellation_slot_binder/first_argument_type.html +/doc/asio/reference/cancellation_slot_binder/get/ +/doc/asio/reference/cancellation_slot_binder/get_cancellation_slot.html +/doc/asio/reference/cancellation_slot_binder/get.html +/doc/asio/reference/cancellation_slot_binder/get/overload1.html +/doc/asio/reference/cancellation_slot_binder/get/overload2.html +/doc/asio/reference/cancellation_slot_binder.html +/doc/asio/reference/cancellation_slot_binder/operator_lp__rp_/ +/doc/asio/reference/cancellation_slot_binder/operator_lp__rp_.html +/doc/asio/reference/cancellation_slot_binder/operator_lp__rp_/overload1.html +/doc/asio/reference/cancellation_slot_binder/operator_lp__rp_/overload2.html +/doc/asio/reference/cancellation_slot_binder/result_type.html +/doc/asio/reference/cancellation_slot_binder/second_argument_type.html +/doc/asio/reference/cancellation_slot_binder/target_type.html +/doc/asio/reference/cancellation_slot/cancellation_slot.html +/doc/asio/reference/cancellation_slot/clear.html +/doc/asio/reference/cancellation_slot/emplace.html +/doc/asio/reference/cancellation_slot/has_handler.html +/doc/asio/reference/CancellationSlot.html +/doc/asio/reference/cancellation_slot.html +/doc/asio/reference/cancellation_slot/is_connected.html +/doc/asio/reference/cancellation_slot/operator_eq__eq_.html +/doc/asio/reference/cancellation_slot/operator_not__eq_.html +/doc/asio/reference/cancellation_state/ +/doc/asio/reference/cancellation_state/cancellation_state/ +/doc/asio/reference/cancellation_state/cancellation_state.html +/doc/asio/reference/cancellation_state/cancellation_state/overload1.html +/doc/asio/reference/cancellation_state/cancellation_state/overload2.html +/doc/asio/reference/cancellation_state/cancellation_state/overload3.html +/doc/asio/reference/cancellation_state/cancellation_state/overload4.html +/doc/asio/reference/cancellation_state/cancelled.html +/doc/asio/reference/cancellation_state/clear.html +/doc/asio/reference/cancellation_state.html +/doc/asio/reference/cancellation_state/slot.html +/doc/asio/reference/cancellation_type.html +/doc/asio/reference/cancellation_type_t.html /doc/asio/reference/can_prefer.html /doc/asio/reference/can_query.html /doc/asio/reference/can_require_concept.html /doc/asio/reference/can_require.html /doc/asio/reference/CompletionCondition.html -/doc/asio/reference/CompletionHandler.html +/doc/asio/reference/completion_signature_of/ +/doc/asio/reference/completion_signature_of.html +/doc/asio/reference/completion_signature_of/type.html /doc/asio/reference/connect/ /doc/asio/reference/ConnectCondition.html /doc/asio/reference/ConnectHandler.html @@ -1715,6 +2478,15 @@ /doc/asio/reference/connect/overload7.html /doc/asio/reference/connect/overload8.html /doc/asio/reference/connect/overload9.html +/doc/asio/reference/connect_pipe/ +/doc/asio/reference/connect_pipe.html +/doc/asio/reference/connect_pipe/overload1.html +/doc/asio/reference/connect_pipe/overload2.html +/doc/asio/reference/ConnectToken.html +/doc/asio/reference/consign.html +/doc/asio/reference/consign_t/ +/doc/asio/reference/consign_t/consign_t.html +/doc/asio/reference/consign_t.html /doc/asio/reference/const_buffer/ /doc/asio/reference/const_buffer/const_buffer/ /doc/asio/reference/const_buffer/const_buffer.html @@ -1747,6 +2519,21 @@ /doc/asio/reference/const_buffers_1/value_type.html /doc/asio/reference/ConstBufferSequence.html /doc/asio/reference/const_buffer/size.html +/doc/asio/reference/const_registered_buffer/ +/doc/asio/reference/const_registered_buffer/buffer.html +/doc/asio/reference/const_registered_buffer/const_registered_buffer/ +/doc/asio/reference/const_registered_buffer/const_registered_buffer.html +/doc/asio/reference/const_registered_buffer/const_registered_buffer/overload1.html +/doc/asio/reference/const_registered_buffer/const_registered_buffer/overload2.html +/doc/asio/reference/const_registered_buffer/data.html +/doc/asio/reference/const_registered_buffer.html +/doc/asio/reference/const_registered_buffer/id.html +/doc/asio/reference/const_registered_buffer/operator_plus_/ +/doc/asio/reference/const_registered_buffer/operator_plus__eq_.html +/doc/asio/reference/const_registered_buffer/operator_plus_.html +/doc/asio/reference/const_registered_buffer/operator_plus_/overload1.html +/doc/asio/reference/const_registered_buffer/operator_plus_/overload2.html +/doc/asio/reference/const_registered_buffer/size.html /doc/asio/reference/coroutine/ /doc/asio/reference/coroutine/coroutine.html /doc/asio/reference/coroutine.html @@ -1770,6 +2557,62 @@ /doc/asio/reference/defer/overload1.html /doc/asio/reference/defer/overload2.html /doc/asio/reference/defer/overload3.html +/doc/asio/reference/deferred_async_operation/ +/doc/asio/reference/deferred_async_operation/deferred_async_operation.html +/doc/asio/reference/deferred_async_operation/detail__index_sequence_for.html +/doc/asio/reference/deferred_async_operation.html +/doc/asio/reference/deferred_async_operation_lt__deferred_signatures_lt__Signatures_ellipsis__gt__comma__Initiation_comma__InitArgs_ellipsis__gt_/ +/doc/asio/reference/deferred_async_operation_lt__deferred_signatures_lt__Signatures_ellipsis__gt__comma__Initiation_comma__InitArgs_ellipsis__gt_/deferred_async_operation.html +/doc/asio/reference/deferred_async_operation_lt__deferred_signatures_lt__Signatures_ellipsis__gt__comma__Initiation_comma__InitArgs_ellipsis__gt_/detail__index_sequence_for.html +/doc/asio/reference/deferred_async_operation_lt__deferred_signatures_lt__Signatures_ellipsis__gt__comma__Initiation_comma__InitArgs_ellipsis__gt_.html +/doc/asio/reference/deferred_async_operation_lt__deferred_signatures_lt__Signatures_ellipsis__gt__comma__Initiation_comma__InitArgs_ellipsis__gt_/operator_lp__rp_.html +/doc/asio/reference/deferred_async_operation/operator_lp__rp_.html +/doc/asio/reference/deferred_conditional/ +/doc/asio/reference/deferred_conditional/deferred_conditional.html +/doc/asio/reference/deferred_conditional.html +/doc/asio/reference/deferred_conditional/operator_lp__rp_.html +/doc/asio/reference/deferred_conditional/otherwise.html +/doc/asio/reference/deferred_conditional/then.html +/doc/asio/reference/deferred_function/ +/doc/asio/reference/deferred_function/deferred_function.html +/doc/asio/reference/deferred_function/function_.html +/doc/asio/reference/deferred_function.html +/doc/asio/reference/deferred_function/operator_lp__rp_.html +/doc/asio/reference/deferred.html +/doc/asio/reference/deferred_init_tag.html +/doc/asio/reference/deferred_noop/ +/doc/asio/reference/deferred_noop.html +/doc/asio/reference/deferred_noop/operator_lp__rp_.html +/doc/asio/reference/deferred_sequence/ +/doc/asio/reference/deferred_sequence/deferred_sequence.html +/doc/asio/reference/deferred_sequence.html +/doc/asio/reference/deferred_sequence/operator_lp__rp_/ +/doc/asio/reference/deferred_sequence/operator_lp__rp_.html +/doc/asio/reference/deferred_sequence/operator_lp__rp_/overload1.html +/doc/asio/reference/deferred_sequence/operator_lp__rp_/overload2.html +/doc/asio/reference/deferred_signatures.html +/doc/asio/reference/deferred_t/ +/doc/asio/reference/deferred_t/as_default_on.html +/doc/asio/reference/deferred_t/deferred_t.html +/doc/asio/reference/deferred_t__executor_with_default/ +/doc/asio/reference/deferred_t__executor_with_default/default_completion_token_type.html +/doc/asio/reference/deferred_t__executor_with_default/executor_with_default.html +/doc/asio/reference/deferred_t__executor_with_default.html +/doc/asio/reference/deferred_t.html +/doc/asio/reference/deferred_t/operator_lp__rp_/ +/doc/asio/reference/deferred_t/operator_lp__rp_.html +/doc/asio/reference/deferred_t/operator_lp__rp_/overload1.html +/doc/asio/reference/deferred_t/operator_lp__rp_/overload2.html +/doc/asio/reference/deferred_t/values.html +/doc/asio/reference/deferred_t/when.html +/doc/asio/reference/deferred_values/ +/doc/asio/reference/deferred_values/deferred_values.html +/doc/asio/reference/deferred_values/detail__index_sequence_for.html +/doc/asio/reference/deferred_values.html +/doc/asio/reference/deferred_values__initiate/ +/doc/asio/reference/deferred_values__initiate.html +/doc/asio/reference/deferred_values__initiate/operator_lp__rp_.html +/doc/asio/reference/deferred_values/operator_lp__rp_.html /doc/asio/reference/detached.html /doc/asio/reference/detached_t/ /doc/asio/reference/detached_t/as_default_on.html @@ -1782,6 +2625,7 @@ /doc/asio/reference/detached_t__executor_with_default/executor_with_default/overload2.html /doc/asio/reference/detached_t__executor_with_default.html /doc/asio/reference/detached_t.html +/doc/asio/reference/disable_cancellation.html /doc/asio/reference/dispatch/ /doc/asio/reference/dispatch.html /doc/asio/reference/dispatch/overload1.html @@ -1840,6 +2684,9 @@ /doc/asio/reference/dynamic_vector_buffer/prepare.html /doc/asio/reference/dynamic_vector_buffer/shrink.html /doc/asio/reference/dynamic_vector_buffer/size.html +/doc/asio/reference/enable_partial_cancellation.html +/doc/asio/reference/enable_terminal_cancellation.html +/doc/asio/reference/enable_total_cancellation.html /doc/asio/reference/Endpoint.html /doc/asio/reference/EndpointSequence.html /doc/asio/reference/error__addrinfo_category.html @@ -1852,6 +2699,7 @@ /doc/asio/reference/error_category/name.html /doc/asio/reference/error_category/operator_eq__eq_.html /doc/asio/reference/error_category/operator_not__eq_.html +/doc/asio/reference/error__clear.html /doc/asio/reference/error_code/ /doc/asio/reference/error_code/assign.html /doc/asio/reference/error_code/category.html @@ -1902,12 +2750,16 @@ /doc/asio/reference/execution__any_executor/any_executor/ /doc/asio/reference/execution__any_executor/_any_executor.html /doc/asio/reference/execution__any_executor/any_executor.html +/doc/asio/reference/execution__any_executor/any_executor/overload10.html /doc/asio/reference/execution__any_executor/any_executor/overload1.html /doc/asio/reference/execution__any_executor/any_executor/overload2.html /doc/asio/reference/execution__any_executor/any_executor/overload3.html /doc/asio/reference/execution__any_executor/any_executor/overload4.html /doc/asio/reference/execution__any_executor/any_executor/overload5.html /doc/asio/reference/execution__any_executor/any_executor/overload6.html +/doc/asio/reference/execution__any_executor/any_executor/overload7.html +/doc/asio/reference/execution__any_executor/any_executor/overload8.html +/doc/asio/reference/execution__any_executor/any_executor/overload9.html /doc/asio/reference/execution__any_executor/context.html /doc/asio/reference/execution__any_executor/execute.html /doc/asio/reference/execution__any_executor.html @@ -2341,6 +3193,254 @@ /doc/asio/reference/executor_work_guard.html /doc/asio/reference/executor_work_guard/owns_work.html /doc/asio/reference/executor_work_guard/reset.html +/doc/asio/reference/experimental__as_single.html +/doc/asio/reference/experimental__as_single_t/ +/doc/asio/reference/experimental__as_single_t/as_default_on.html +/doc/asio/reference/experimental__as_single_t/as_single_t/ +/doc/asio/reference/experimental__as_single_t/as_single_t.html +/doc/asio/reference/experimental__as_single_t/as_single_t/overload1.html +/doc/asio/reference/experimental__as_single_t/as_single_t/overload2.html +/doc/asio/reference/experimental__as_single_t__default_constructor_tag.html +/doc/asio/reference/experimental__as_single_t__executor_with_default/ +/doc/asio/reference/experimental__as_single_t__executor_with_default/default_completion_token_type.html +/doc/asio/reference/experimental__as_single_t__executor_with_default/executor_with_default/ +/doc/asio/reference/experimental__as_single_t__executor_with_default/executor_with_default.html +/doc/asio/reference/experimental__as_single_t__executor_with_default/executor_with_default/overload1.html +/doc/asio/reference/experimental__as_single_t__executor_with_default/executor_with_default/overload2.html +/doc/asio/reference/experimental__as_single_t__executor_with_default.html +/doc/asio/reference/experimental__as_single_t.html +/doc/asio/reference/experimental__as_single_t/token_.html +/doc/asio/reference/experimental__awaitable_operators__operator__amp__amp_/ +/doc/asio/reference/experimental__awaitable_operators__operator__amp__amp_.html +/doc/asio/reference/experimental__awaitable_operators__operator__amp__amp_/overload1.html +/doc/asio/reference/experimental__awaitable_operators__operator__amp__amp_/overload2.html +/doc/asio/reference/experimental__awaitable_operators__operator__amp__amp_/overload3.html +/doc/asio/reference/experimental__awaitable_operators__operator__amp__amp_/overload4.html +/doc/asio/reference/experimental__awaitable_operators__operator__amp__amp_/overload5.html +/doc/asio/reference/experimental__awaitable_operators__operator__amp__amp_/overload6.html +/doc/asio/reference/experimental__awaitable_operators__operator_pipe__pipe_/ +/doc/asio/reference/experimental__awaitable_operators__operator_pipe__pipe_.html +/doc/asio/reference/experimental__awaitable_operators__operator_pipe__pipe_/overload1.html +/doc/asio/reference/experimental__awaitable_operators__operator_pipe__pipe_/overload2.html +/doc/asio/reference/experimental__awaitable_operators__operator_pipe__pipe_/overload3.html +/doc/asio/reference/experimental__awaitable_operators__operator_pipe__pipe_/overload4.html +/doc/asio/reference/experimental__awaitable_operators__operator_pipe__pipe_/overload5.html +/doc/asio/reference/experimental__awaitable_operators__operator_pipe__pipe_/overload6.html +/doc/asio/reference/experimental__basic_channel/ +/doc/asio/reference/experimental__basic_channel/async_receive.html +/doc/asio/reference/experimental__basic_channel/async_send.html +/doc/asio/reference/experimental__basic_channel/basic_channel/ +/doc/asio/reference/experimental__basic_channel/_basic_channel.html +/doc/asio/reference/experimental__basic_channel/basic_channel.html +/doc/asio/reference/experimental__basic_channel/basic_channel/overload1.html +/doc/asio/reference/experimental__basic_channel/basic_channel/overload2.html +/doc/asio/reference/experimental__basic_channel/basic_channel/overload3.html +/doc/asio/reference/experimental__basic_channel/basic_channel/overload4.html +/doc/asio/reference/experimental__basic_channel/cancel.html +/doc/asio/reference/experimental__basic_channel/capacity.html +/doc/asio/reference/experimental__basic_channel/close.html +/doc/asio/reference/experimental__basic_channel/executor_type.html +/doc/asio/reference/experimental__basic_channel/get_executor.html +/doc/asio/reference/experimental__basic_channel.html +/doc/asio/reference/experimental__basic_channel/is_open.html +/doc/asio/reference/experimental__basic_channel/operator_eq_/ +/doc/asio/reference/experimental__basic_channel/operator_eq_.html +/doc/asio/reference/experimental__basic_channel/operator_eq_/overload1.html +/doc/asio/reference/experimental__basic_channel/operator_eq_/overload2.html +/doc/asio/reference/experimental__basic_channel/ready.html +/doc/asio/reference/experimental__basic_channel__rebind_executor/ +/doc/asio/reference/experimental__basic_channel__rebind_executor.html +/doc/asio/reference/experimental__basic_channel__rebind_executor/other.html +/doc/asio/reference/experimental__basic_channel/reset.html +/doc/asio/reference/experimental__basic_channel/traits_type.html +/doc/asio/reference/experimental__basic_channel/try_receive.html +/doc/asio/reference/experimental__basic_channel/try_send.html +/doc/asio/reference/experimental__basic_channel/try_send_n.html +/doc/asio/reference/experimental__basic_concurrent_channel/ +/doc/asio/reference/experimental__basic_concurrent_channel/async_receive.html +/doc/asio/reference/experimental__basic_concurrent_channel/async_send.html +/doc/asio/reference/experimental__basic_concurrent_channel/basic_concurrent_channel/ +/doc/asio/reference/experimental__basic_concurrent_channel/_basic_concurrent_channel.html +/doc/asio/reference/experimental__basic_concurrent_channel/basic_concurrent_channel.html +/doc/asio/reference/experimental__basic_concurrent_channel/basic_concurrent_channel/overload1.html +/doc/asio/reference/experimental__basic_concurrent_channel/basic_concurrent_channel/overload2.html +/doc/asio/reference/experimental__basic_concurrent_channel/basic_concurrent_channel/overload3.html +/doc/asio/reference/experimental__basic_concurrent_channel/basic_concurrent_channel/overload4.html +/doc/asio/reference/experimental__basic_concurrent_channel/cancel.html +/doc/asio/reference/experimental__basic_concurrent_channel/capacity.html +/doc/asio/reference/experimental__basic_concurrent_channel/close.html +/doc/asio/reference/experimental__basic_concurrent_channel/executor_type.html +/doc/asio/reference/experimental__basic_concurrent_channel/get_executor.html +/doc/asio/reference/experimental__basic_concurrent_channel.html +/doc/asio/reference/experimental__basic_concurrent_channel/is_open.html +/doc/asio/reference/experimental__basic_concurrent_channel/operator_eq_/ +/doc/asio/reference/experimental__basic_concurrent_channel/operator_eq_.html +/doc/asio/reference/experimental__basic_concurrent_channel/operator_eq_/overload1.html +/doc/asio/reference/experimental__basic_concurrent_channel/operator_eq_/overload2.html +/doc/asio/reference/experimental__basic_concurrent_channel/ready.html +/doc/asio/reference/experimental__basic_concurrent_channel__rebind_executor/ +/doc/asio/reference/experimental__basic_concurrent_channel__rebind_executor.html +/doc/asio/reference/experimental__basic_concurrent_channel__rebind_executor/other.html +/doc/asio/reference/experimental__basic_concurrent_channel/reset.html +/doc/asio/reference/experimental__basic_concurrent_channel/traits_type.html +/doc/asio/reference/experimental__basic_concurrent_channel/try_receive.html +/doc/asio/reference/experimental__basic_concurrent_channel/try_send.html +/doc/asio/reference/experimental__basic_concurrent_channel/try_send_n.html +/doc/asio/reference/experimental__channel_traits/ +/doc/asio/reference/experimental__channel_traits__container/ +/doc/asio/reference/experimental__channel_traits__container.html +/doc/asio/reference/experimental__channel_traits__container/type.html +/doc/asio/reference/experimental__channel_traits.html +/doc/asio/reference/experimental__channel_traits/invoke_receive_cancelled.html +/doc/asio/reference/experimental__channel_traits/invoke_receive_closed.html +/doc/asio/reference/experimental__channel_traits__rebind/ +/doc/asio/reference/experimental__channel_traits__rebind.html +/doc/asio/reference/experimental__channel_traits__rebind/other.html +/doc/asio/reference/experimental__channel_traits/receive_cancelled_signature.html +/doc/asio/reference/experimental__channel_traits/receive_closed_signature.html +/doc/asio/reference/experimental__co_composed.html +/doc/asio/reference/experimental__coro/ +/doc/asio/reference/experimental__coro/async_resume/ +/doc/asio/reference/experimental__coro/async_resume.html +/doc/asio/reference/experimental__coro/async_resume/overload1.html +/doc/asio/reference/experimental__coro/async_resume/overload2.html +/doc/asio/reference/experimental__coro/coro/ +/doc/asio/reference/experimental__coro/_coro.html +/doc/asio/reference/experimental__coro/coro.html +/doc/asio/reference/experimental__coro/coro/overload1.html +/doc/asio/reference/experimental__coro/coro/overload2.html +/doc/asio/reference/experimental__coro/coro/overload3.html +/doc/asio/reference/experimental__coro/get_allocator.html +/doc/asio/reference/experimental__coro/get_executor.html +/doc/asio/reference/experimental__coro.html +/doc/asio/reference/experimental__coro/is_noexcept.html +/doc/asio/reference/experimental__coro/is_open.html +/doc/asio/reference/experimental__coro/operator_bool.html +/doc/asio/reference/experimental__coro/operator_co_await.html +/doc/asio/reference/experimental__coro/operator_eq_/ +/doc/asio/reference/experimental__coro/operator_eq_.html +/doc/asio/reference/experimental__coro/operator_eq_/overload1.html +/doc/asio/reference/experimental__coro/operator_eq_/overload2.html +/doc/asio/reference/experimental__coro/operator_lp__rp_.html +/doc/asio/reference/experimental__coro_traits/ +/doc/asio/reference/experimental__coro_traits.html +/doc/asio/reference/experimental__coro_traits/is_noexcept.html +/doc/asio/reference/experimental__co_spawn/ +/doc/asio/reference/experimental__co_spawn.html +/doc/asio/reference/experimental__co_spawn/overload1.html +/doc/asio/reference/experimental__co_spawn/overload2.html +/doc/asio/reference/experimental__co_spawn/overload3.html +/doc/asio/reference/experimental__co_spawn/overload4.html +/doc/asio/reference/experimental__co_spawn/overload5.html +/doc/asio/reference/experimental__co_spawn/overload6.html +/doc/asio/reference/experimental__error__channel_category.html +/doc/asio/reference/experimental__error__channel_errors.html +/doc/asio/reference/experimental__error__get_channel_category.html +/doc/asio/reference/experimental__error__make_error_code.html +/doc/asio/reference/experimental__is_async_operation_range/ +/doc/asio/reference/experimental__is_async_operation_range.html +/doc/asio/reference/experimental__is_async_operation_range/value.html +/doc/asio/reference/experimental__is_promise.html +/doc/asio/reference/experimental__is_promise_lt__promise_lt__Ts_ellipsis__gt__gt_.html +/doc/asio/reference/experimental__is_promise_v.html +/doc/asio/reference/experimental__make_parallel_group/ +/doc/asio/reference/experimental__make_parallel_group.html +/doc/asio/reference/experimental__make_parallel_group/overload1.html +/doc/asio/reference/experimental__make_parallel_group/overload2.html +/doc/asio/reference/experimental__make_parallel_group/overload3.html +/doc/asio/reference/experimental__parallel_group/ +/doc/asio/reference/experimental__parallel_group/async_wait.html +/doc/asio/reference/experimental__parallel_group.html +/doc/asio/reference/experimental__parallel_group/parallel_group.html +/doc/asio/reference/experimental__parallel_group/signature.html +/doc/asio/reference/experimental__promise/ +/doc/asio/reference/experimental__promise/cancel.html +/doc/asio/reference/experimental__promise/completed.html +/doc/asio/reference/experimental__promise.html +/doc/asio/reference/experimental__promise/operator_lp__rp_.html +/doc/asio/reference/experimental__promise/promise/ +/doc/asio/reference/experimental__promise/_promise.html +/doc/asio/reference/experimental__promise/promise.html +/doc/asio/reference/experimental__promise/promise/overload1.html +/doc/asio/reference/experimental__promise/promise/overload2.html +/doc/asio/reference/experimental__promise/promise/overload3.html +/doc/asio/reference/experimental__promise_value_type.html +/doc/asio/reference/experimental__promise_value_type_lt__gt_.html +/doc/asio/reference/experimental__promise_value_type_lt__T__gt_.html +/doc/asio/reference/experimental__ranged_parallel_group/ +/doc/asio/reference/experimental__ranged_parallel_group/async_wait.html +/doc/asio/reference/experimental__ranged_parallel_group.html +/doc/asio/reference/experimental__ranged_parallel_group/ranged_parallel_group.html +/doc/asio/reference/experimental__ranged_parallel_group/signature.html +/doc/asio/reference/experimental__use_coro.html +/doc/asio/reference/experimental__use_coro_t/ +/doc/asio/reference/experimental__use_coro_t/allocator_type.html +/doc/asio/reference/experimental__use_coro_t/as_default_on.html +/doc/asio/reference/experimental__use_coro_t__executor_with_default/ +/doc/asio/reference/experimental__use_coro_t__executor_with_default/default_completion_token_type.html +/doc/asio/reference/experimental__use_coro_t__executor_with_default/executor_with_default.html +/doc/asio/reference/experimental__use_coro_t__executor_with_default.html +/doc/asio/reference/experimental__use_coro_t/get_allocator.html +/doc/asio/reference/experimental__use_coro_t.html +/doc/asio/reference/experimental__use_coro_t/rebind.html +/doc/asio/reference/experimental__use_coro_t/use_coro_t/ +/doc/asio/reference/experimental__use_coro_t/use_coro_t.html +/doc/asio/reference/experimental__use_coro_t/use_coro_t/overload1.html +/doc/asio/reference/experimental__use_coro_t/use_coro_t/overload2.html +/doc/asio/reference/experimental__use_promise.html +/doc/asio/reference/experimental__use_promise_t/ +/doc/asio/reference/experimental__use_promise_t/allocator_type.html +/doc/asio/reference/experimental__use_promise_t/as_default_on.html +/doc/asio/reference/experimental__use_promise_t__executor_with_default/ +/doc/asio/reference/experimental__use_promise_t__executor_with_default/default_completion_token_type.html +/doc/asio/reference/experimental__use_promise_t__executor_with_default/executor_with_default/ +/doc/asio/reference/experimental__use_promise_t__executor_with_default/executor_with_default.html +/doc/asio/reference/experimental__use_promise_t__executor_with_default/executor_with_default/overload1.html +/doc/asio/reference/experimental__use_promise_t__executor_with_default/executor_with_default/overload2.html +/doc/asio/reference/experimental__use_promise_t__executor_with_default.html +/doc/asio/reference/experimental__use_promise_t/get_allocator.html +/doc/asio/reference/experimental__use_promise_t.html +/doc/asio/reference/experimental__use_promise_t/rebind.html +/doc/asio/reference/experimental__use_promise_t/use_promise_t/ +/doc/asio/reference/experimental__use_promise_t/use_promise_t.html +/doc/asio/reference/experimental__use_promise_t/use_promise_t/overload1.html +/doc/asio/reference/experimental__use_promise_t/use_promise_t/overload2.html +/doc/asio/reference/experimental__wait_for_all/ +/doc/asio/reference/experimental__wait_for_all.html +/doc/asio/reference/experimental__wait_for_all/operator_lp__rp_.html +/doc/asio/reference/experimental__wait_for_one/ +/doc/asio/reference/experimental__wait_for_one_error/ +/doc/asio/reference/experimental__wait_for_one_error.html +/doc/asio/reference/experimental__wait_for_one_error/operator_lp__rp_/ +/doc/asio/reference/experimental__wait_for_one_error/operator_lp__rp_.html +/doc/asio/reference/experimental__wait_for_one_error/operator_lp__rp_/overload1.html +/doc/asio/reference/experimental__wait_for_one_error/operator_lp__rp_/overload2.html +/doc/asio/reference/experimental__wait_for_one_error/operator_lp__rp_/overload3.html +/doc/asio/reference/experimental__wait_for_one_error/wait_for_one_error.html +/doc/asio/reference/experimental__wait_for_one.html +/doc/asio/reference/experimental__wait_for_one/operator_lp__rp_.html +/doc/asio/reference/experimental__wait_for_one_success/ +/doc/asio/reference/experimental__wait_for_one_success.html +/doc/asio/reference/experimental__wait_for_one_success/operator_lp__rp_/ +/doc/asio/reference/experimental__wait_for_one_success/operator_lp__rp_.html +/doc/asio/reference/experimental__wait_for_one_success/operator_lp__rp_/overload1.html +/doc/asio/reference/experimental__wait_for_one_success/operator_lp__rp_/overload2.html +/doc/asio/reference/experimental__wait_for_one_success/operator_lp__rp_/overload3.html +/doc/asio/reference/experimental__wait_for_one_success/wait_for_one_success.html +/doc/asio/reference/experimental__wait_for_one/wait_for_one.html +/doc/asio/reference/file_base/ +/doc/asio/reference/file_base/append.html +/doc/asio/reference/file_base/create.html +/doc/asio/reference/file_base/exclusive.html +/doc/asio/reference/file_base/_file_base.html +/doc/asio/reference/file_base/flags.html +/doc/asio/reference/file_base.html +/doc/asio/reference/file_base/read_only.html +/doc/asio/reference/file_base/read_write.html +/doc/asio/reference/file_base/seek_basis.html +/doc/asio/reference/file_base/sync_all_on_write.html +/doc/asio/reference/file_base/truncate.html +/doc/asio/reference/file_base/write_only.html /doc/asio/reference/generic__basic_endpoint/ /doc/asio/reference/generic__basic_endpoint/basic_endpoint/ /doc/asio/reference/generic__basic_endpoint/basic_endpoint.html @@ -2423,17 +3523,55 @@ /doc/asio/reference/get_associated_allocator.html /doc/asio/reference/get_associated_allocator/overload1.html /doc/asio/reference/get_associated_allocator/overload2.html +/doc/asio/reference/get_associated_cancellation_slot/ +/doc/asio/reference/get_associated_cancellation_slot.html +/doc/asio/reference/get_associated_cancellation_slot/overload1.html +/doc/asio/reference/get_associated_cancellation_slot/overload2.html /doc/asio/reference/get_associated_executor/ /doc/asio/reference/get_associated_executor.html /doc/asio/reference/get_associated_executor/overload1.html /doc/asio/reference/get_associated_executor/overload2.html /doc/asio/reference/get_associated_executor/overload3.html +/doc/asio/reference/get_associated_immediate_executor/ +/doc/asio/reference/get_associated_immediate_executor.html +/doc/asio/reference/get_associated_immediate_executor/overload1.html +/doc/asio/reference/get_associated_immediate_executor/overload2.html /doc/asio/reference/GettableSerialPortOption.html /doc/asio/reference/GettableSocketOption.html /doc/asio/reference/Handler.html /doc/asio/reference/HandshakeHandler.html +/doc/asio/reference/HandshakeToken.html /doc/asio/reference/high_resolution_timer.html /doc/asio/reference.html +/doc/asio/reference/immediate_executor_binder/ +/doc/asio/reference/immediate_executor_binder/argument_type.html +/doc/asio/reference/immediate_executor_binder/first_argument_type.html +/doc/asio/reference/immediate_executor_binder/get/ +/doc/asio/reference/immediate_executor_binder/get.html +/doc/asio/reference/immediate_executor_binder/get_immediate_executor.html +/doc/asio/reference/immediate_executor_binder/get/overload1.html +/doc/asio/reference/immediate_executor_binder/get/overload2.html +/doc/asio/reference/immediate_executor_binder.html +/doc/asio/reference/immediate_executor_binder/immediate_executor_binder/ +/doc/asio/reference/immediate_executor_binder/_immediate_executor_binder.html +/doc/asio/reference/immediate_executor_binder/immediate_executor_binder.html +/doc/asio/reference/immediate_executor_binder/immediate_executor_binder/overload1.html +/doc/asio/reference/immediate_executor_binder/immediate_executor_binder/overload2.html +/doc/asio/reference/immediate_executor_binder/immediate_executor_binder/overload3.html +/doc/asio/reference/immediate_executor_binder/immediate_executor_binder/overload4.html +/doc/asio/reference/immediate_executor_binder/immediate_executor_binder/overload5.html +/doc/asio/reference/immediate_executor_binder/immediate_executor_binder/overload6.html +/doc/asio/reference/immediate_executor_binder/immediate_executor_binder/overload7.html +/doc/asio/reference/immediate_executor_binder/immediate_executor_binder/overload8.html +/doc/asio/reference/immediate_executor_binder/immediate_executor_binder/overload9.html +/doc/asio/reference/immediate_executor_binder/immediate_executor_type.html +/doc/asio/reference/immediate_executor_binder/operator_lp__rp_/ +/doc/asio/reference/immediate_executor_binder/operator_lp__rp_.html +/doc/asio/reference/immediate_executor_binder/operator_lp__rp_/overload1.html +/doc/asio/reference/immediate_executor_binder/operator_lp__rp_/overload2.html +/doc/asio/reference/immediate_executor_binder/result_type.html +/doc/asio/reference/immediate_executor_binder/second_argument_type.html +/doc/asio/reference/immediate_executor_binder/target_type.html /doc/asio/reference/InternetProtocol.html /doc/asio/reference/invalid_service_owner/ /doc/asio/reference/invalid_service_owner.html @@ -2872,6 +4010,7 @@ /doc/asio/reference/ip__basic_resolver/basic_resolver/overload1.html /doc/asio/reference/ip__basic_resolver/basic_resolver/overload2.html /doc/asio/reference/ip__basic_resolver/basic_resolver/overload3.html +/doc/asio/reference/ip__basic_resolver/basic_resolver/overload4.html /doc/asio/reference/ip__basic_resolver/cancel.html /doc/asio/reference/ip__basic_resolver/canonical_name.html /doc/asio/reference/ip__basic_resolver/endpoint_type.html @@ -2929,7 +4068,10 @@ /doc/asio/reference/ip__basic_resolver_iterator/value_type.html /doc/asio/reference/ip__basic_resolver/numeric_host.html /doc/asio/reference/ip__basic_resolver/numeric_service.html +/doc/asio/reference/ip__basic_resolver/operator_eq_/ /doc/asio/reference/ip__basic_resolver/operator_eq_.html +/doc/asio/reference/ip__basic_resolver/operator_eq_/overload1.html +/doc/asio/reference/ip__basic_resolver/operator_eq_/overload2.html /doc/asio/reference/ip__basic_resolver/passive.html /doc/asio/reference/ip__basic_resolver/protocol_type.html /doc/asio/reference/ip__basic_resolver_query/ @@ -3103,6 +4245,7 @@ /doc/asio/reference/ip__network_v6/to_string.html /doc/asio/reference/ip__network_v6/to_string/overload1.html /doc/asio/reference/ip__network_v6/to_string/overload2.html +/doc/asio/reference/ip__port_type.html /doc/asio/reference/ip__resolver_base/ /doc/asio/reference/ip__resolver_base/address_configured.html /doc/asio/reference/ip__resolver_base/all_matching.html @@ -3125,6 +4268,7 @@ /doc/asio/reference/ip__resolver_query_base/passive.html /doc/asio/reference/ip__resolver_query_base/_resolver_query_base.html /doc/asio/reference/ip__resolver_query_base/v4_mapped.html +/doc/asio/reference/ip__scope_id_type.html /doc/asio/reference/ip__tcp/ /doc/asio/reference/ip__tcp/acceptor.html /doc/asio/reference/ip__tcp/endpoint.html @@ -3156,7 +4300,10 @@ /doc/asio/reference/ip__v4_mapped_t.html /doc/asio/reference/ip__v6_only.html /doc/asio/reference/is_applicable_property.html +/doc/asio/reference/is_async_operation.html /doc/asio/reference/is_const_buffer_sequence.html +/doc/asio/reference/is_contiguous_iterator.html +/doc/asio/reference/is_deferred.html /doc/asio/reference/is_dynamic_buffer.html /doc/asio/reference/is_dynamic_buffer_v1.html /doc/asio/reference/is_dynamic_buffer_v2.html @@ -3179,6 +4326,7 @@ /doc/asio/reference/is_write_buffered.html /doc/asio/reference/is_write_buffered/value.html /doc/asio/reference/IteratorConnectHandler.html +/doc/asio/reference/IteratorConnectToken.html /doc/asio/reference/LegacyCompletionHandler.html /doc/asio/reference/local__basic_endpoint/ /doc/asio/reference/local__basic_endpoint/basic_endpoint/ @@ -3222,6 +4370,14 @@ /doc/asio/reference/local__datagram_protocol/protocol.html /doc/asio/reference/local__datagram_protocol/socket.html /doc/asio/reference/local__datagram_protocol/type.html +/doc/asio/reference/local__seq_packet_protocol/ +/doc/asio/reference/local__seq_packet_protocol/acceptor.html +/doc/asio/reference/local__seq_packet_protocol/endpoint.html +/doc/asio/reference/local__seq_packet_protocol/family.html +/doc/asio/reference/local__seq_packet_protocol.html +/doc/asio/reference/local__seq_packet_protocol/protocol.html +/doc/asio/reference/local__seq_packet_protocol/socket.html +/doc/asio/reference/local__seq_packet_protocol/type.html /doc/asio/reference/local__stream_protocol/ /doc/asio/reference/local__stream_protocol/acceptor.html /doc/asio/reference/local__stream_protocol/endpoint.html @@ -3243,6 +4399,7 @@ /doc/asio/reference/make_work_guard/overload4.html /doc/asio/reference/make_work_guard/overload5.html /doc/asio/reference/MoveAcceptHandler.html +/doc/asio/reference/MoveAcceptToken.html /doc/asio/reference/multiple_exceptions/ /doc/asio/reference/multiple_exceptions/first_exception.html /doc/asio/reference/multiple_exceptions.html @@ -3279,6 +4436,19 @@ /doc/asio/reference/mutable_buffers_1/value_type.html /doc/asio/reference/MutableBufferSequence.html /doc/asio/reference/mutable_buffer/size.html +/doc/asio/reference/mutable_registered_buffer/ +/doc/asio/reference/mutable_registered_buffer/buffer.html +/doc/asio/reference/mutable_registered_buffer/data.html +/doc/asio/reference/mutable_registered_buffer.html +/doc/asio/reference/mutable_registered_buffer/id.html +/doc/asio/reference/mutable_registered_buffer/mutable_registered_buffer.html +/doc/asio/reference/mutable_registered_buffer/operator_plus_/ +/doc/asio/reference/mutable_registered_buffer/operator_plus__eq_.html +/doc/asio/reference/mutable_registered_buffer/operator_plus_.html +/doc/asio/reference/mutable_registered_buffer/operator_plus_/overload1.html +/doc/asio/reference/mutable_registered_buffer/operator_plus_/overload2.html +/doc/asio/reference/mutable_registered_buffer/size.html +/doc/asio/reference/NullaryToken.html /doc/asio/reference/null_buffers/ /doc/asio/reference/null_buffers/begin.html /doc/asio/reference/null_buffers/const_iterator.html @@ -3287,6 +4457,7 @@ /doc/asio/reference/null_buffers/value_type.html /doc/asio/reference/OperationState.html /doc/asio/reference/operator_lt__lt_.html +/doc/asio/reference/operator_pipe_.html /doc/asio/reference/placeholders__bytes_transferred.html /doc/asio/reference/placeholders__endpoint.html /doc/asio/reference/placeholders__error.html @@ -3307,6 +4478,7 @@ /doc/asio/reference/posix__basic_descriptor/basic_descriptor/overload3.html /doc/asio/reference/posix__basic_descriptor/basic_descriptor/overload4.html /doc/asio/reference/posix__basic_descriptor/basic_descriptor/overload5.html +/doc/asio/reference/posix__basic_descriptor/basic_descriptor/overload6.html /doc/asio/reference/posix__basic_descriptor/bytes_readable.html /doc/asio/reference/posix__basic_descriptor/cancel/ /doc/asio/reference/posix__basic_descriptor/cancel.html @@ -3319,7 +4491,6 @@ /doc/asio/reference/posix__basic_descriptor/executor_type.html /doc/asio/reference/posix__basic_descriptor/get_executor.html /doc/asio/reference/posix__basic_descriptor.html -/doc/asio/reference/posix__basic_descriptor/impl_.html /doc/asio/reference/posix__basic_descriptor/io_control/ /doc/asio/reference/posix__basic_descriptor/io_control.html /doc/asio/reference/posix__basic_descriptor/io_control/overload1.html @@ -3342,7 +4513,10 @@ /doc/asio/reference/posix__basic_descriptor/non_blocking/overload1.html /doc/asio/reference/posix__basic_descriptor/non_blocking/overload2.html /doc/asio/reference/posix__basic_descriptor/non_blocking/overload3.html +/doc/asio/reference/posix__basic_descriptor/operator_eq_/ /doc/asio/reference/posix__basic_descriptor/operator_eq_.html +/doc/asio/reference/posix__basic_descriptor/operator_eq_/overload1.html +/doc/asio/reference/posix__basic_descriptor/operator_eq_/overload2.html /doc/asio/reference/posix__basic_descriptor__rebind_executor/ /doc/asio/reference/posix__basic_descriptor__rebind_executor.html /doc/asio/reference/posix__basic_descriptor__rebind_executor/other.html @@ -3367,6 +4541,7 @@ /doc/asio/reference/posix__basic_stream_descriptor/basic_stream_descriptor/overload3.html /doc/asio/reference/posix__basic_stream_descriptor/basic_stream_descriptor/overload4.html /doc/asio/reference/posix__basic_stream_descriptor/basic_stream_descriptor/overload5.html +/doc/asio/reference/posix__basic_stream_descriptor/basic_stream_descriptor/overload6.html /doc/asio/reference/posix__basic_stream_descriptor/bytes_readable.html /doc/asio/reference/posix__basic_stream_descriptor/cancel/ /doc/asio/reference/posix__basic_stream_descriptor/cancel.html @@ -3379,7 +4554,6 @@ /doc/asio/reference/posix__basic_stream_descriptor/executor_type.html /doc/asio/reference/posix__basic_stream_descriptor/get_executor.html /doc/asio/reference/posix__basic_stream_descriptor.html -/doc/asio/reference/posix__basic_stream_descriptor/impl_.html /doc/asio/reference/posix__basic_stream_descriptor/io_control/ /doc/asio/reference/posix__basic_stream_descriptor/io_control.html /doc/asio/reference/posix__basic_stream_descriptor/io_control/overload1.html @@ -3402,7 +4576,10 @@ /doc/asio/reference/posix__basic_stream_descriptor/non_blocking/overload1.html /doc/asio/reference/posix__basic_stream_descriptor/non_blocking/overload2.html /doc/asio/reference/posix__basic_stream_descriptor/non_blocking/overload3.html +/doc/asio/reference/posix__basic_stream_descriptor/operator_eq_/ /doc/asio/reference/posix__basic_stream_descriptor/operator_eq_.html +/doc/asio/reference/posix__basic_stream_descriptor/operator_eq_/overload1.html +/doc/asio/reference/posix__basic_stream_descriptor/operator_eq_/overload2.html /doc/asio/reference/posix__basic_stream_descriptor/read_some/ /doc/asio/reference/posix__basic_stream_descriptor/read_some.html /doc/asio/reference/posix__basic_stream_descriptor/read_some/overload1.html @@ -3436,14 +4613,23 @@ /doc/asio/reference/prefer_result/ /doc/asio/reference/prefer_result.html /doc/asio/reference/prefer_result/type.html +/doc/asio/reference/prepend.html +/doc/asio/reference/prepend_t/ +/doc/asio/reference/prepend_t.html +/doc/asio/reference/prepend_t/prepend_t.html +/doc/asio/reference/prepend_t/token_.html +/doc/asio/reference/prepend_t/values_.html /doc/asio/reference/ProtoAllocator.html /doc/asio/reference/Protocol.html /doc/asio/reference/query.html /doc/asio/reference/query_result/ /doc/asio/reference/query_result.html /doc/asio/reference/query_result/type.html +/doc/asio/reference/random_access_file.html /doc/asio/reference/RangeConnectHandler.html +/doc/asio/reference/RangeConnectToken.html /doc/asio/reference/read/ +/doc/asio/reference/readable_pipe.html /doc/asio/reference/read_at/ /doc/asio/reference/read_at.html /doc/asio/reference/read_at/overload1.html @@ -3472,6 +4658,7 @@ /doc/asio/reference/read/overload7.html /doc/asio/reference/read/overload8.html /doc/asio/reference/read/overload9.html +/doc/asio/reference/ReadToken.html /doc/asio/reference/read_until/ /doc/asio/reference/read_until.html /doc/asio/reference/read_until/overload10.html @@ -3500,12 +4687,51 @@ /doc/asio/reference/read_until/overload9.html /doc/asio/reference/read_write_operations.html /doc/asio/reference/Receiver.html +/doc/asio/reference/recycling_allocator/ +/doc/asio/reference/recycling_allocator/allocate.html +/doc/asio/reference/recycling_allocator/deallocate.html +/doc/asio/reference/recycling_allocator.html +/doc/asio/reference/recycling_allocator_lt__void__gt_/ +/doc/asio/reference/recycling_allocator_lt__void__gt_.html +/doc/asio/reference/recycling_allocator_lt__void__gt_/operator_eq__eq_.html +/doc/asio/reference/recycling_allocator_lt__void__gt_/operator_not__eq_.html +/doc/asio/reference/recycling_allocator_lt__void__gt___rebind/ +/doc/asio/reference/recycling_allocator_lt__void__gt___rebind.html +/doc/asio/reference/recycling_allocator_lt__void__gt___rebind/other.html +/doc/asio/reference/recycling_allocator_lt__void__gt_/recycling_allocator/ +/doc/asio/reference/recycling_allocator_lt__void__gt_/recycling_allocator.html +/doc/asio/reference/recycling_allocator_lt__void__gt_/recycling_allocator/overload1.html +/doc/asio/reference/recycling_allocator_lt__void__gt_/recycling_allocator/overload2.html +/doc/asio/reference/recycling_allocator_lt__void__gt_/value_type.html +/doc/asio/reference/recycling_allocator/operator_eq__eq_.html +/doc/asio/reference/recycling_allocator/operator_not__eq_.html +/doc/asio/reference/recycling_allocator__rebind/ +/doc/asio/reference/recycling_allocator__rebind.html +/doc/asio/reference/recycling_allocator__rebind/other.html +/doc/asio/reference/recycling_allocator/recycling_allocator/ +/doc/asio/reference/recycling_allocator/recycling_allocator.html +/doc/asio/reference/recycling_allocator/recycling_allocator/overload1.html +/doc/asio/reference/recycling_allocator/recycling_allocator/overload2.html +/doc/asio/reference/recycling_allocator/value_type.html /doc/asio/reference/redirect_error.html /doc/asio/reference/redirect_error_t/ /doc/asio/reference/redirect_error_t/ec_.html /doc/asio/reference/redirect_error_t.html /doc/asio/reference/redirect_error_t/redirect_error_t.html /doc/asio/reference/redirect_error_t/token_.html +/doc/asio/reference/register_buffers/ +/doc/asio/reference/register_buffers.html +/doc/asio/reference/register_buffers/overload1.html +/doc/asio/reference/register_buffers/overload2.html +/doc/asio/reference/register_buffers/overload3.html +/doc/asio/reference/register_buffers/overload4.html +/doc/asio/reference/registered_buffer_id/ +/doc/asio/reference/registered_buffer_id.html +/doc/asio/reference/registered_buffer_id/native_handle.html +/doc/asio/reference/registered_buffer_id/native_handle_type.html +/doc/asio/reference/registered_buffer_id/operator_eq__eq_.html +/doc/asio/reference/registered_buffer_id/operator_not__eq_.html +/doc/asio/reference/registered_buffer_id/registered_buffer_id.html /doc/asio/reference/require_concept.html /doc/asio/reference/require_concept_result/ /doc/asio/reference/require_concept_result.html @@ -3516,6 +4742,7 @@ /doc/asio/reference/require_result/type.html /doc/asio/reference/ResolveHandler.html /doc/asio/reference/resolver_errc__try_again.html +/doc/asio/reference/ResolveToken.html /doc/asio/reference/Scheduler.html /doc/asio/reference/Sender.html /doc/asio/reference/serial_port_base/ @@ -3562,8 +4789,15 @@ /doc/asio/reference/SettableSerialPortOption.html /doc/asio/reference/SettableSocketOption.html /doc/asio/reference/ShutdownHandler.html +/doc/asio/reference/ShutdownToken.html /doc/asio/reference/SignalHandler.html +/doc/asio/reference/signal_set_base/ +/doc/asio/reference/signal_set_base/flags.html +/doc/asio/reference/signal_set_base/flags_t.html +/doc/asio/reference/signal_set_base.html +/doc/asio/reference/signal_set_base/_signal_set_base.html /doc/asio/reference/signal_set.html +/doc/asio/reference/SignalToken.html /doc/asio/reference/socket_base/ /doc/asio/reference/socket_base/broadcast.html /doc/asio/reference/socket_base/bytes_readable.html @@ -3591,6 +4825,10 @@ /doc/asio/reference/socket_base/wait_type.html /doc/asio/reference/spawn/ /doc/asio/reference/spawn.html +/doc/asio/reference/spawn/overload10.html +/doc/asio/reference/spawn/overload11.html +/doc/asio/reference/spawn/overload12.html +/doc/asio/reference/spawn/overload13.html /doc/asio/reference/spawn/overload1.html /doc/asio/reference/spawn/overload2.html /doc/asio/reference/spawn/overload3.html @@ -3598,6 +4836,8 @@ /doc/asio/reference/spawn/overload5.html /doc/asio/reference/spawn/overload6.html /doc/asio/reference/spawn/overload7.html +/doc/asio/reference/spawn/overload8.html +/doc/asio/reference/spawn/overload9.html /doc/asio/reference/ssl__context/ /doc/asio/reference/ssl__context/add_certificate_authority/ /doc/asio/reference/ssl__context/add_certificate_authority.html @@ -3769,6 +5009,7 @@ /doc/asio/reference/ssl__stream/next_layer/overload1.html /doc/asio/reference/ssl__stream/next_layer/overload2.html /doc/asio/reference/ssl__stream/next_layer_type.html +/doc/asio/reference/ssl__stream/operator_eq_.html /doc/asio/reference/ssl__stream/read_some/ /doc/asio/reference/ssl__stream/read_some.html /doc/asio/reference/ssl__stream/read_some/overload1.html @@ -3794,6 +5035,7 @@ /doc/asio/reference/ssl__stream/stream.html /doc/asio/reference/ssl__stream/stream/overload1.html /doc/asio/reference/ssl__stream/stream/overload2.html +/doc/asio/reference/ssl__stream/stream/overload3.html /doc/asio/reference/ssl__stream/write_some/ /doc/asio/reference/ssl__stream/write_some.html /doc/asio/reference/ssl__stream/write_some/overload1.html @@ -3811,12 +5053,15 @@ /doc/asio/reference/static_thread_pool.html /doc/asio/reference/steady_timer.html /doc/asio/reference/strand/ +/doc/asio/reference/strand/context.html /doc/asio/reference/strand/defer.html /doc/asio/reference/strand/dispatch.html /doc/asio/reference/strand/execute.html /doc/asio/reference/strand/get_inner_executor.html /doc/asio/reference/strand.html /doc/asio/reference/strand/inner_executor_type.html +/doc/asio/reference/strand/on_work_finished.html +/doc/asio/reference/strand/on_work_started.html /doc/asio/reference/strand/operator_eq_/ /doc/asio/reference/strand/operator_eq__eq_.html /doc/asio/reference/strand/operator_eq_.html @@ -3840,6 +5085,7 @@ /doc/asio/reference/strand/strand/overload5.html /doc/asio/reference/strand/strand/overload6.html /doc/asio/reference/streambuf.html +/doc/asio/reference/stream_file.html /doc/asio/reference/synchronous_socket_operations.html /doc/asio/reference/SyncRandomAccessReadDevice.html /doc/asio/reference/SyncRandomAccessWriteDevice.html @@ -3878,10 +5124,23 @@ /doc/asio/reference/system_error/what.html /doc/asio/reference/system_executor.html /doc/asio/reference/system_timer.html +/doc/asio/reference/this_coro__cancellation_state.html +/doc/asio/reference/this_coro__cancellation_state_t/ +/doc/asio/reference/this_coro__cancellation_state_t/cancellation_state_t.html +/doc/asio/reference/this_coro__cancellation_state_t.html /doc/asio/reference/this_coro__executor.html /doc/asio/reference/this_coro__executor_t/ /doc/asio/reference/this_coro__executor_t/executor_t.html /doc/asio/reference/this_coro__executor_t.html +/doc/asio/reference/this_coro__reset_cancellation_state/ +/doc/asio/reference/this_coro__reset_cancellation_state.html +/doc/asio/reference/this_coro__reset_cancellation_state/overload1.html +/doc/asio/reference/this_coro__reset_cancellation_state/overload2.html +/doc/asio/reference/this_coro__reset_cancellation_state/overload3.html +/doc/asio/reference/this_coro__throw_if_cancelled/ +/doc/asio/reference/this_coro__throw_if_cancelled.html +/doc/asio/reference/this_coro__throw_if_cancelled/overload1.html +/doc/asio/reference/this_coro__throw_if_cancelled/overload2.html /doc/asio/reference/thread/ /doc/asio/reference/thread.html /doc/asio/reference/thread/join.html @@ -3895,11 +5154,13 @@ /doc/asio/reference/thread_pool__basic_executor_type/basic_executor_type/overload1.html /doc/asio/reference/thread_pool__basic_executor_type/basic_executor_type/overload2.html /doc/asio/reference/thread_pool__basic_executor_type/bulk_execute.html +/doc/asio/reference/thread_pool__basic_executor_type/connect.html /doc/asio/reference/thread_pool__basic_executor_type/context.html /doc/asio/reference/thread_pool__basic_executor_type/defer.html /doc/asio/reference/thread_pool__basic_executor_type/dispatch.html /doc/asio/reference/thread_pool__basic_executor_type/execute.html /doc/asio/reference/thread_pool__basic_executor_type.html +/doc/asio/reference/thread_pool__basic_executor_type/index_type.html /doc/asio/reference/thread_pool__basic_executor_type/on_work_finished.html /doc/asio/reference/thread_pool__basic_executor_type/on_work_started.html /doc/asio/reference/thread_pool__basic_executor_type/operator_eq_/ @@ -3936,6 +5197,7 @@ /doc/asio/reference/thread_pool__basic_executor_type/running_in_this_thread.html /doc/asio/reference/thread_pool__basic_executor_type/schedule.html /doc/asio/reference/thread_pool__basic_executor_type/sender_type.html +/doc/asio/reference/thread_pool__basic_executor_type/shape_type.html /doc/asio/reference/thread_pool/destroy.html /doc/asio/reference/thread_pool/executor.html /doc/asio/reference/thread_pool/executor_type.html @@ -3980,10 +5242,7 @@ /doc/asio/reference/use_awaitable_t/as_default_on.html /doc/asio/reference/use_awaitable_t__executor_with_default/ /doc/asio/reference/use_awaitable_t__executor_with_default/default_completion_token_type.html -/doc/asio/reference/use_awaitable_t__executor_with_default/executor_with_default/ /doc/asio/reference/use_awaitable_t__executor_with_default/executor_with_default.html -/doc/asio/reference/use_awaitable_t__executor_with_default/executor_with_default/overload1.html -/doc/asio/reference/use_awaitable_t__executor_with_default/executor_with_default/overload2.html /doc/asio/reference/use_awaitable_t__executor_with_default.html /doc/asio/reference/use_awaitable_t.html /doc/asio/reference/use_awaitable_t/use_awaitable_t/ @@ -4004,6 +5263,7 @@ /doc/asio/reference/use_future_t/use_future_t/overload2.html /doc/asio/reference/uses_executor.html /doc/asio/reference/WaitHandler.html +/doc/asio/reference/WaitToken.html /doc/asio/reference/wait_traits/ /doc/asio/reference/WaitTraits.html /doc/asio/reference/wait_traits.html @@ -4024,6 +5284,7 @@ /doc/asio/reference/windows__basic_object_handle/basic_object_handle/overload3.html /doc/asio/reference/windows__basic_object_handle/basic_object_handle/overload4.html /doc/asio/reference/windows__basic_object_handle/basic_object_handle/overload5.html +/doc/asio/reference/windows__basic_object_handle/basic_object_handle/overload6.html /doc/asio/reference/windows__basic_object_handle/cancel/ /doc/asio/reference/windows__basic_object_handle/cancel.html /doc/asio/reference/windows__basic_object_handle/cancel/overload1.html @@ -4043,7 +5304,10 @@ /doc/asio/reference/windows__basic_object_handle/lowest_layer_type.html /doc/asio/reference/windows__basic_object_handle/native_handle.html /doc/asio/reference/windows__basic_object_handle/native_handle_type.html +/doc/asio/reference/windows__basic_object_handle/operator_eq_/ /doc/asio/reference/windows__basic_object_handle/operator_eq_.html +/doc/asio/reference/windows__basic_object_handle/operator_eq_/overload1.html +/doc/asio/reference/windows__basic_object_handle/operator_eq_/overload2.html /doc/asio/reference/windows__basic_object_handle__rebind_executor/ /doc/asio/reference/windows__basic_object_handle__rebind_executor.html /doc/asio/reference/windows__basic_object_handle__rebind_executor/other.html @@ -4064,6 +5328,7 @@ /doc/asio/reference/windows__basic_overlapped_handle/basic_overlapped_handle/overload3.html /doc/asio/reference/windows__basic_overlapped_handle/basic_overlapped_handle/overload4.html /doc/asio/reference/windows__basic_overlapped_handle/basic_overlapped_handle/overload5.html +/doc/asio/reference/windows__basic_overlapped_handle/basic_overlapped_handle/overload6.html /doc/asio/reference/windows__basic_overlapped_handle/cancel/ /doc/asio/reference/windows__basic_overlapped_handle/cancel.html /doc/asio/reference/windows__basic_overlapped_handle/cancel/overload1.html @@ -4075,7 +5340,6 @@ /doc/asio/reference/windows__basic_overlapped_handle/executor_type.html /doc/asio/reference/windows__basic_overlapped_handle/get_executor.html /doc/asio/reference/windows__basic_overlapped_handle.html -/doc/asio/reference/windows__basic_overlapped_handle/impl_.html /doc/asio/reference/windows__basic_overlapped_handle/is_open.html /doc/asio/reference/windows__basic_overlapped_handle/lowest_layer/ /doc/asio/reference/windows__basic_overlapped_handle/lowest_layer.html @@ -4084,10 +5348,17 @@ /doc/asio/reference/windows__basic_overlapped_handle/lowest_layer_type.html /doc/asio/reference/windows__basic_overlapped_handle/native_handle.html /doc/asio/reference/windows__basic_overlapped_handle/native_handle_type.html +/doc/asio/reference/windows__basic_overlapped_handle/operator_eq_/ /doc/asio/reference/windows__basic_overlapped_handle/operator_eq_.html +/doc/asio/reference/windows__basic_overlapped_handle/operator_eq_/overload1.html +/doc/asio/reference/windows__basic_overlapped_handle/operator_eq_/overload2.html /doc/asio/reference/windows__basic_overlapped_handle__rebind_executor/ /doc/asio/reference/windows__basic_overlapped_handle__rebind_executor.html /doc/asio/reference/windows__basic_overlapped_handle__rebind_executor/other.html +/doc/asio/reference/windows__basic_overlapped_handle/release/ +/doc/asio/reference/windows__basic_overlapped_handle/release.html +/doc/asio/reference/windows__basic_overlapped_handle/release/overload1.html +/doc/asio/reference/windows__basic_overlapped_handle/release/overload2.html /doc/asio/reference/windows__basic_random_access_handle/ /doc/asio/reference/windows__basic_random_access_handle/assign/ /doc/asio/reference/windows__basic_random_access_handle/assign.html @@ -4102,6 +5373,7 @@ /doc/asio/reference/windows__basic_random_access_handle/basic_random_access_handle/overload3.html /doc/asio/reference/windows__basic_random_access_handle/basic_random_access_handle/overload4.html /doc/asio/reference/windows__basic_random_access_handle/basic_random_access_handle/overload5.html +/doc/asio/reference/windows__basic_random_access_handle/basic_random_access_handle/overload6.html /doc/asio/reference/windows__basic_random_access_handle/cancel/ /doc/asio/reference/windows__basic_random_access_handle/cancel.html /doc/asio/reference/windows__basic_random_access_handle/cancel/overload1.html @@ -4113,7 +5385,6 @@ /doc/asio/reference/windows__basic_random_access_handle/executor_type.html /doc/asio/reference/windows__basic_random_access_handle/get_executor.html /doc/asio/reference/windows__basic_random_access_handle.html -/doc/asio/reference/windows__basic_random_access_handle/impl_.html /doc/asio/reference/windows__basic_random_access_handle/is_open.html /doc/asio/reference/windows__basic_random_access_handle/lowest_layer/ /doc/asio/reference/windows__basic_random_access_handle/lowest_layer.html @@ -4122,7 +5393,10 @@ /doc/asio/reference/windows__basic_random_access_handle/lowest_layer_type.html /doc/asio/reference/windows__basic_random_access_handle/native_handle.html /doc/asio/reference/windows__basic_random_access_handle/native_handle_type.html +/doc/asio/reference/windows__basic_random_access_handle/operator_eq_/ /doc/asio/reference/windows__basic_random_access_handle/operator_eq_.html +/doc/asio/reference/windows__basic_random_access_handle/operator_eq_/overload1.html +/doc/asio/reference/windows__basic_random_access_handle/operator_eq_/overload2.html /doc/asio/reference/windows__basic_random_access_handle/read_some_at/ /doc/asio/reference/windows__basic_random_access_handle/read_some_at.html /doc/asio/reference/windows__basic_random_access_handle/read_some_at/overload1.html @@ -4130,6 +5404,10 @@ /doc/asio/reference/windows__basic_random_access_handle__rebind_executor/ /doc/asio/reference/windows__basic_random_access_handle__rebind_executor.html /doc/asio/reference/windows__basic_random_access_handle__rebind_executor/other.html +/doc/asio/reference/windows__basic_random_access_handle/release/ +/doc/asio/reference/windows__basic_random_access_handle/release.html +/doc/asio/reference/windows__basic_random_access_handle/release/overload1.html +/doc/asio/reference/windows__basic_random_access_handle/release/overload2.html /doc/asio/reference/windows__basic_random_access_handle/write_some_at/ /doc/asio/reference/windows__basic_random_access_handle/write_some_at.html /doc/asio/reference/windows__basic_random_access_handle/write_some_at/overload1.html @@ -4148,6 +5426,7 @@ /doc/asio/reference/windows__basic_stream_handle/basic_stream_handle/overload3.html /doc/asio/reference/windows__basic_stream_handle/basic_stream_handle/overload4.html /doc/asio/reference/windows__basic_stream_handle/basic_stream_handle/overload5.html +/doc/asio/reference/windows__basic_stream_handle/basic_stream_handle/overload6.html /doc/asio/reference/windows__basic_stream_handle/cancel/ /doc/asio/reference/windows__basic_stream_handle/cancel.html /doc/asio/reference/windows__basic_stream_handle/cancel/overload1.html @@ -4159,7 +5438,6 @@ /doc/asio/reference/windows__basic_stream_handle/executor_type.html /doc/asio/reference/windows__basic_stream_handle/get_executor.html /doc/asio/reference/windows__basic_stream_handle.html -/doc/asio/reference/windows__basic_stream_handle/impl_.html /doc/asio/reference/windows__basic_stream_handle/is_open.html /doc/asio/reference/windows__basic_stream_handle/lowest_layer/ /doc/asio/reference/windows__basic_stream_handle/lowest_layer.html @@ -4168,7 +5446,10 @@ /doc/asio/reference/windows__basic_stream_handle/lowest_layer_type.html /doc/asio/reference/windows__basic_stream_handle/native_handle.html /doc/asio/reference/windows__basic_stream_handle/native_handle_type.html +/doc/asio/reference/windows__basic_stream_handle/operator_eq_/ /doc/asio/reference/windows__basic_stream_handle/operator_eq_.html +/doc/asio/reference/windows__basic_stream_handle/operator_eq_/overload1.html +/doc/asio/reference/windows__basic_stream_handle/operator_eq_/overload2.html /doc/asio/reference/windows__basic_stream_handle/read_some/ /doc/asio/reference/windows__basic_stream_handle/read_some.html /doc/asio/reference/windows__basic_stream_handle/read_some/overload1.html @@ -4176,6 +5457,10 @@ /doc/asio/reference/windows__basic_stream_handle__rebind_executor/ /doc/asio/reference/windows__basic_stream_handle__rebind_executor.html /doc/asio/reference/windows__basic_stream_handle__rebind_executor/other.html +/doc/asio/reference/windows__basic_stream_handle/release/ +/doc/asio/reference/windows__basic_stream_handle/release.html +/doc/asio/reference/windows__basic_stream_handle/release/overload1.html +/doc/asio/reference/windows__basic_stream_handle/release/overload2.html /doc/asio/reference/windows__basic_stream_handle/write_some/ /doc/asio/reference/windows__basic_stream_handle/write_some.html /doc/asio/reference/windows__basic_stream_handle/write_some/overload1.html @@ -4203,6 +5488,7 @@ /doc/asio/reference/windows__overlapped_ptr/reset/overload3.html /doc/asio/reference/windows__random_access_handle.html /doc/asio/reference/windows__stream_handle.html +/doc/asio/reference/writable_pipe.html /doc/asio/reference/write/ /doc/asio/reference/write_at/ /doc/asio/reference/write_at.html @@ -4232,7 +5518,9 @@ /doc/asio/reference/write/overload7.html /doc/asio/reference/write/overload8.html /doc/asio/reference/write/overload9.html +/doc/asio/reference/WriteToken.html /doc/asio/reference/yield_context.html +/doc/asio/std_executors.html /doc/asio/tutorial/ /doc/asio/tutorial/boost_bind.html /doc/asio/tutorial.html @@ -4273,11 +5561,20 @@ /doc/asio/tutorial/tuttimer5.html /doc/asio/tutorial/tuttimer5/src.html /doc/asio/using.html +/doc/async_agent_chain.png +/doc/async_agent_model.png +/doc/async_child_agent_chain.png /doc/async_op1.png /doc/async_op2.png +/doc/async_op_init_complete.png +/doc/async_op_model.png +/doc/async_op_phases.png +/doc/async_op_trivial_chain.png /doc/blank.png /doc/boostbook.css /doc/caution.png +/doc/completion_token_model.png +/doc/completion_token_transform.png /doc/draft.png /doc/examples/ /doc/examples/diffs/ @@ -4289,6 +5586,9 @@ /doc/examples/diffs/chat/chat_client.cpp.html /doc/examples/diffs/chat/chat_message.hpp.html /doc/examples/diffs/chat/chat_server.cpp.html +/doc/examples/diffs/deferred/ +/doc/examples/diffs/deferred/deferred_1.cpp.html +/doc/examples/diffs/deferred/deferred_2.cpp.html /doc/examples/diffs/echo/ /doc/examples/diffs/echo/async_tcp_echo_server.cpp.html /doc/examples/diffs/echo/async_udp_echo_server.cpp.html @@ -4303,6 +5603,9 @@ /doc/examples/diffs/executors/fork_join.cpp.html /doc/examples/diffs/executors/pipeline.cpp.html /doc/examples/diffs/executors/priority_scheduler.cpp.html +/doc/examples/diffs/files/ +/doc/examples/diffs/files/async_file_copy.cpp.html +/doc/examples/diffs/files/blocking_file_copy.cpp.html /doc/examples/diffs/fork/ /doc/examples/diffs/fork/daemon.cpp.html /doc/examples/diffs/fork/process_per_connection.cpp.html @@ -4336,6 +5639,8 @@ /doc/examples/diffs/iostreams/http_client.cpp.html /doc/examples/diffs/local/ /doc/examples/diffs/local/connect_pair.cpp.html +/doc/examples/diffs/local/fd_passing_stream_client.cpp.html +/doc/examples/diffs/local/fd_passing_stream_server.cpp.html /doc/examples/diffs/local/iostream_client.cpp.html /doc/examples/diffs/local/stream_client.cpp.html /doc/examples/diffs/local/stream_server.cpp.html @@ -4353,6 +5658,12 @@ /doc/examples/diffs/operations/composed_6.cpp.html /doc/examples/diffs/operations/composed_7.cpp.html /doc/examples/diffs/operations/composed_8.cpp.html +/doc/examples/diffs/parallel_group/ +/doc/examples/diffs/parallel_group/ranged_wait_for_all.cpp.html +/doc/examples/diffs/parallel_group/wait_for_all.cpp.html +/doc/examples/diffs/parallel_group/wait_for_one.cpp.html +/doc/examples/diffs/parallel_group/wait_for_one_error.cpp.html +/doc/examples/diffs/parallel_group/wait_for_one_success.cpp.html /doc/examples/diffs/socks4/ /doc/examples/diffs/socks4/socks4.hpp.html /doc/examples/diffs/socks4/sync_client.cpp.html @@ -4370,6 +5681,14 @@ /doc/examples/diffs/timeouts/server.cpp.html /doc/examples/diffs/timers/ /doc/examples/diffs/timers/time_t_timer.cpp.html +/doc/examples/diffs/type_erasure/ +/doc/examples/diffs/type_erasure/line_reader.hpp.html +/doc/examples/diffs/type_erasure/main.cpp.html +/doc/examples/diffs/type_erasure/sleep.cpp.html +/doc/examples/diffs/type_erasure/sleep.hpp.html +/doc/examples/diffs/type_erasure/stdin_line_reader.cpp.html +/doc/examples/diffs/type_erasure/stdin_line_reader.hpp.html +/doc/higher_level_model.png /doc/home.png /doc/important.png /doc/index.html @@ -4379,7 +5698,6 @@ /doc/prev_disabled.png /doc/prev.png /doc/proactor.png -/doc/standalone_HTML.manifest /doc/sync_op.png /doc/tip.png /doc/up_disabled.png @@ -4387,15 +5705,25 @@ /doc/warning.png /include/ /include/asio/ +/include/asio/any_completion_executor.hpp +/include/asio/any_completion_handler.hpp /include/asio/any_io_executor.hpp +/include/asio/append.hpp /include/asio/associated_allocator.hpp +/include/asio/associated_cancellation_slot.hpp /include/asio/associated_executor.hpp +/include/asio/associated_immediate_executor.hpp +/include/asio/associator.hpp +/include/asio/as_tuple.hpp /include/asio/async_result.hpp /include/asio/awaitable.hpp /include/asio/basic_datagram_socket.hpp /include/asio/basic_deadline_timer.hpp +/include/asio/basic_file.hpp /include/asio/basic_io_object.hpp +/include/asio/basic_random_access_file.hpp /include/asio/basic_raw_socket.hpp +/include/asio/basic_readable_pipe.hpp /include/asio/basic_seq_packet_socket.hpp /include/asio/basic_serial_port.hpp /include/asio/basic_signal_set.hpp @@ -4405,9 +5733,14 @@ /include/asio/basic_socket_streambuf.hpp /include/asio/basic_streambuf_fwd.hpp /include/asio/basic_streambuf.hpp +/include/asio/basic_stream_file.hpp /include/asio/basic_stream_socket.hpp /include/asio/basic_waitable_timer.hpp +/include/asio/basic_writable_pipe.hpp +/include/asio/bind_allocator.hpp +/include/asio/bind_cancellation_slot.hpp /include/asio/bind_executor.hpp +/include/asio/bind_immediate_executor.hpp /include/asio/buffered_read_stream_fwd.hpp /include/asio/buffered_read_stream.hpp /include/asio/buffered_stream_fwd.hpp @@ -4415,20 +5748,28 @@ /include/asio/buffered_write_stream_fwd.hpp /include/asio/buffered_write_stream.hpp /include/asio/buffer.hpp +/include/asio/buffer_registration.hpp /include/asio/buffers_iterator.hpp +/include/asio/cancellation_signal.hpp +/include/asio/cancellation_state.hpp +/include/asio/cancellation_type.hpp /include/asio/completion_condition.hpp /include/asio/compose.hpp /include/asio/connect.hpp +/include/asio/connect_pipe.hpp +/include/asio/consign.hpp /include/asio/coroutine.hpp /include/asio/co_spawn.hpp /include/asio/deadline_timer.hpp /include/asio/defer.hpp +/include/asio/deferred.hpp /include/asio/detached.hpp /include/asio/detail/ /include/asio/detail/array_fwd.hpp /include/asio/detail/array.hpp /include/asio/detail/assert.hpp /include/asio/detail/atomic_count.hpp +/include/asio/detail/base_from_cancellation_state.hpp /include/asio/detail/base_from_completion_cond.hpp /include/asio/detail/bind_handler.hpp /include/asio/detail/blocking_executor_op.hpp @@ -4440,6 +5781,7 @@ /include/asio/detail/chrono.hpp /include/asio/detail/chrono_time_traits.hpp /include/asio/detail/completion_handler.hpp +/include/asio/detail/composed_work.hpp /include/asio/detail/concurrency_hint.hpp /include/asio/detail/conditionally_enabled_event.hpp /include/asio/detail/conditionally_enabled_mutex.hpp @@ -4457,6 +5799,7 @@ /include/asio/detail/epoll_reactor.hpp /include/asio/detail/eventfd_select_interrupter.hpp /include/asio/detail/event.hpp +/include/asio/detail/exception.hpp /include/asio/detail/executor_function.hpp /include/asio/detail/executor_op.hpp /include/asio/detail/fd_set_adapter.hpp @@ -4484,16 +5827,21 @@ /include/asio/detail/impl/epoll_reactor.ipp /include/asio/detail/impl/eventfd_select_interrupter.ipp /include/asio/detail/impl/handler_tracking.ipp +/include/asio/detail/impl/io_uring_descriptor_service.ipp +/include/asio/detail/impl/io_uring_file_service.ipp +/include/asio/detail/impl/io_uring_service.hpp +/include/asio/detail/impl/io_uring_service.ipp +/include/asio/detail/impl/io_uring_socket_service_base.ipp /include/asio/detail/impl/kqueue_reactor.hpp /include/asio/detail/impl/kqueue_reactor.ipp /include/asio/detail/impl/null_event.ipp /include/asio/detail/impl/pipe_select_interrupter.ipp /include/asio/detail/impl/posix_event.ipp /include/asio/detail/impl/posix_mutex.ipp +/include/asio/detail/impl/posix_serial_port_service.ipp /include/asio/detail/impl/posix_thread.ipp /include/asio/detail/impl/posix_tss_ptr.ipp /include/asio/detail/impl/reactive_descriptor_service.ipp -/include/asio/detail/impl/reactive_serial_port_service.ipp /include/asio/detail/impl/reactive_socket_service_base.ipp /include/asio/detail/impl/resolver_service_base.ipp /include/asio/detail/impl/scheduler.ipp @@ -4508,10 +5856,12 @@ /include/asio/detail/impl/strand_executor_service.ipp /include/asio/detail/impl/strand_service.hpp /include/asio/detail/impl/strand_service.ipp +/include/asio/detail/impl/thread_context.ipp /include/asio/detail/impl/throw_error.ipp /include/asio/detail/impl/timer_queue_ptime.ipp /include/asio/detail/impl/timer_queue_set.ipp /include/asio/detail/impl/win_event.ipp +/include/asio/detail/impl/win_iocp_file_service.ipp /include/asio/detail/impl/win_iocp_handle_service.ipp /include/asio/detail/impl/win_iocp_io_context.hpp /include/asio/detail/impl/win_iocp_io_context.ipp @@ -4526,8 +5876,30 @@ /include/asio/detail/impl/win_static_mutex.ipp /include/asio/detail/impl/win_thread.ipp /include/asio/detail/impl/win_tss_ptr.ipp +/include/asio/detail/initiate_defer.hpp +/include/asio/detail/initiate_dispatch.hpp +/include/asio/detail/initiate_post.hpp /include/asio/detail/io_control.hpp /include/asio/detail/io_object_impl.hpp +/include/asio/detail/io_uring_descriptor_read_at_op.hpp +/include/asio/detail/io_uring_descriptor_read_op.hpp +/include/asio/detail/io_uring_descriptor_service.hpp +/include/asio/detail/io_uring_descriptor_write_at_op.hpp +/include/asio/detail/io_uring_descriptor_write_op.hpp +/include/asio/detail/io_uring_file_service.hpp +/include/asio/detail/io_uring_null_buffers_op.hpp +/include/asio/detail/io_uring_operation.hpp +/include/asio/detail/io_uring_service.hpp +/include/asio/detail/io_uring_socket_accept_op.hpp +/include/asio/detail/io_uring_socket_connect_op.hpp +/include/asio/detail/io_uring_socket_recvfrom_op.hpp +/include/asio/detail/io_uring_socket_recvmsg_op.hpp +/include/asio/detail/io_uring_socket_recv_op.hpp +/include/asio/detail/io_uring_socket_send_op.hpp +/include/asio/detail/io_uring_socket_sendto_op.hpp +/include/asio/detail/io_uring_socket_service_base.hpp +/include/asio/detail/io_uring_socket_service.hpp +/include/asio/detail/io_uring_wait_op.hpp /include/asio/detail/is_buffer_sequence.hpp /include/asio/detail/is_executor.hpp /include/asio/detail/keyword_tss_ptr.hpp @@ -4559,6 +5931,7 @@ /include/asio/detail/posix_fd_set_adapter.hpp /include/asio/detail/posix_global.hpp /include/asio/detail/posix_mutex.hpp +/include/asio/detail/posix_serial_port_service.hpp /include/asio/detail/posix_signal_blocker.hpp /include/asio/detail/posix_static_mutex.hpp /include/asio/detail/posix_thread.hpp @@ -4566,7 +5939,6 @@ /include/asio/detail/push_options.hpp /include/asio/detail/reactive_descriptor_service.hpp /include/asio/detail/reactive_null_buffers_op.hpp -/include/asio/detail/reactive_serial_port_service.hpp /include/asio/detail/reactive_socket_accept_op.hpp /include/asio/detail/reactive_socket_connect_op.hpp /include/asio/detail/reactive_socket_recvfrom_op.hpp @@ -4577,7 +5949,6 @@ /include/asio/detail/reactive_socket_service_base.hpp /include/asio/detail/reactive_socket_service.hpp /include/asio/detail/reactive_wait_op.hpp -/include/asio/detail/reactor_fwd.hpp /include/asio/detail/reactor.hpp /include/asio/detail/reactor_op.hpp /include/asio/detail/reactor_op_queue.hpp @@ -4590,6 +5961,7 @@ /include/asio/detail/resolver_service.hpp /include/asio/detail/scheduler.hpp /include/asio/detail/scheduler_operation.hpp +/include/asio/detail/scheduler_task.hpp /include/asio/detail/scheduler_thread_info.hpp /include/asio/detail/scoped_lock.hpp /include/asio/detail/scoped_ptr.hpp @@ -4632,6 +6004,7 @@ /include/asio/detail/timer_scheduler.hpp /include/asio/detail/tss_ptr.hpp /include/asio/detail/type_traits.hpp +/include/asio/detail/utility.hpp /include/asio/detail/variadic_templates.hpp /include/asio/detail/wait_handler.hpp /include/asio/detail/wait_op.hpp @@ -4641,6 +6014,7 @@ /include/asio/detail/win_fd_set_adapter.hpp /include/asio/detail/win_fenced_block.hpp /include/asio/detail/win_global.hpp +/include/asio/detail/win_iocp_file_service.hpp /include/asio/detail/win_iocp_handle_read_op.hpp /include/asio/detail/win_iocp_handle_service.hpp /include/asio/detail/win_iocp_handle_write_op.hpp @@ -4726,6 +6100,53 @@ /include/asio/execution/submit.hpp /include/asio/executor.hpp /include/asio/executor_work_guard.hpp +/include/asio/experimental/ +/include/asio/experimental/append.hpp +/include/asio/experimental/as_single.hpp +/include/asio/experimental/as_tuple.hpp +/include/asio/experimental/awaitable_operators.hpp +/include/asio/experimental/basic_channel.hpp +/include/asio/experimental/basic_concurrent_channel.hpp +/include/asio/experimental/cancellation_condition.hpp +/include/asio/experimental/channel_error.hpp +/include/asio/experimental/channel.hpp +/include/asio/experimental/channel_traits.hpp +/include/asio/experimental/co_composed.hpp +/include/asio/experimental/concurrent_channel.hpp +/include/asio/experimental/coro.hpp +/include/asio/experimental/coro_traits.hpp +/include/asio/experimental/co_spawn.hpp +/include/asio/experimental/deferred.hpp +/include/asio/experimental/detail/ +/include/asio/experimental/detail/channel_handler.hpp +/include/asio/experimental/detail/channel_message.hpp +/include/asio/experimental/detail/channel_operation.hpp +/include/asio/experimental/detail/channel_payload.hpp +/include/asio/experimental/detail/channel_receive_op.hpp +/include/asio/experimental/detail/channel_send_functions.hpp +/include/asio/experimental/detail/channel_send_op.hpp +/include/asio/experimental/detail/channel_service.hpp +/include/asio/experimental/detail/coro_completion_handler.hpp +/include/asio/experimental/detail/coro_promise_allocator.hpp +/include/asio/experimental/detail/has_signature.hpp +/include/asio/experimental/detail/impl/ +/include/asio/experimental/detail/impl/channel_service.hpp +/include/asio/experimental/detail/partial_promise.hpp +/include/asio/experimental/impl/ +/include/asio/experimental/impl/as_single.hpp +/include/asio/experimental/impl/channel_error.ipp +/include/asio/experimental/impl/co_composed.hpp +/include/asio/experimental/impl/coro.hpp +/include/asio/experimental/impl/parallel_group.hpp +/include/asio/experimental/impl/promise.hpp +/include/asio/experimental/impl/use_coro.hpp +/include/asio/experimental/impl/use_promise.hpp +/include/asio/experimental/parallel_group.hpp +/include/asio/experimental/prepend.hpp +/include/asio/experimental/promise.hpp +/include/asio/experimental/use_coro.hpp +/include/asio/experimental/use_promise.hpp +/include/asio/file_base.hpp /include/asio/generic/ /include/asio/generic/basic_endpoint.hpp /include/asio/generic/datagram_protocol.hpp @@ -4742,15 +6163,21 @@ /include/asio/high_resolution_timer.hpp /include/asio.hpp /include/asio/impl/ +/include/asio/impl/any_completion_executor.ipp +/include/asio/impl/any_io_executor.ipp +/include/asio/impl/append.hpp +/include/asio/impl/as_tuple.hpp /include/asio/impl/awaitable.hpp /include/asio/impl/buffered_read_stream.hpp /include/asio/impl/buffered_write_stream.hpp -/include/asio/impl/compose.hpp +/include/asio/impl/cancellation_signal.ipp /include/asio/impl/connect.hpp +/include/asio/impl/connect_pipe.hpp +/include/asio/impl/connect_pipe.ipp +/include/asio/impl/consign.hpp /include/asio/impl/co_spawn.hpp -/include/asio/impl/defer.hpp +/include/asio/impl/deferred.hpp /include/asio/impl/detached.hpp -/include/asio/impl/dispatch.hpp /include/asio/impl/error_code.ipp /include/asio/impl/error.ipp /include/asio/impl/execution_context.hpp @@ -4761,7 +6188,7 @@ /include/asio/impl/io_context.hpp /include/asio/impl/io_context.ipp /include/asio/impl/multiple_exceptions.ipp -/include/asio/impl/post.hpp +/include/asio/impl/prepend.hpp /include/asio/impl/read_at.hpp /include/asio/impl/read.hpp /include/asio/impl/read_until.hpp @@ -4769,7 +6196,6 @@ /include/asio/impl/serial_port_base.hpp /include/asio/impl/serial_port_base.ipp /include/asio/impl/spawn.hpp -/include/asio/impl/src.cpp /include/asio/impl/src.hpp /include/asio/impl/system_context.hpp /include/asio/impl/system_context.ipp @@ -4829,6 +6255,7 @@ /include/asio/ip/unicast.hpp /include/asio/ip/v6_only.hpp /include/asio/is_applicable_property.hpp +/include/asio/is_contiguous_iterator.hpp /include/asio/is_executor.hpp /include/asio/is_read_buffered.hpp /include/asio/is_write_buffered.hpp @@ -4840,6 +6267,7 @@ /include/asio/local/detail/endpoint.hpp /include/asio/local/detail/impl/ /include/asio/local/detail/impl/endpoint.ipp +/include/asio/local/seq_packet_protocol.hpp /include/asio/local/stream_protocol.hpp /include/asio/multiple_exceptions.hpp /include/asio/packaged_task.hpp @@ -4852,15 +6280,21 @@ /include/asio/posix/stream_descriptor.hpp /include/asio/post.hpp /include/asio/prefer.hpp +/include/asio/prepend.hpp /include/asio/query.hpp +/include/asio/random_access_file.hpp +/include/asio/readable_pipe.hpp /include/asio/read_at.hpp /include/asio/read.hpp /include/asio/read_until.hpp +/include/asio/recycling_allocator.hpp /include/asio/redirect_error.hpp +/include/asio/registered_buffer.hpp /include/asio/require_concept.hpp /include/asio/require.hpp /include/asio/serial_port_base.hpp /include/asio/serial_port.hpp +/include/asio/signal_set_base.hpp /include/asio/signal_set.hpp /include/asio/socket_base.hpp /include/asio/spawn.hpp @@ -4902,6 +6336,7 @@ /include/asio/steady_timer.hpp /include/asio/strand.hpp /include/asio/streambuf.hpp +/include/asio/stream_file.hpp /include/asio/system_context.hpp /include/asio/system_error.hpp /include/asio/system_executor.hpp @@ -4967,6 +6402,7 @@ /include/asio/windows/overlapped_ptr.hpp /include/asio/windows/random_access_handle.hpp /include/asio/windows/stream_handle.hpp +/include/asio/writable_pipe.hpp /include/asio/write_at.hpp /include/asio/write.hpp /include/asio/yield.hpp @@ -5119,7 +6555,7 @@ /src/examples/cpp03/ssl/ /src/examples/cpp03/ssl/ca.pem /src/examples/cpp03/ssl/client.cpp -/src/examples/cpp03/ssl/dh2048.pem +/src/examples/cpp03/ssl/dh4096.pem /src/examples/cpp03/ssl/README /src/examples/cpp03/ssl/server.cpp /src/examples/cpp03/ssl/server.pem @@ -5167,6 +6603,9 @@ /src/examples/cpp11/chat/chat_client.cpp /src/examples/cpp11/chat/chat_message.hpp /src/examples/cpp11/chat/chat_server.cpp +/src/examples/cpp11/deferred/ +/src/examples/cpp11/deferred/deferred_1.cpp +/src/examples/cpp11/deferred/deferred_2.cpp /src/examples/cpp11/echo/ /src/examples/cpp11/echo/async_tcp_echo_server.cpp /src/examples/cpp11/echo/async_udp_echo_server.cpp @@ -5181,6 +6620,9 @@ /src/examples/cpp11/executors/fork_join.cpp /src/examples/cpp11/executors/pipeline.cpp /src/examples/cpp11/executors/priority_scheduler.cpp +/src/examples/cpp11/files/ +/src/examples/cpp11/files/async_file_copy.cpp +/src/examples/cpp11/files/blocking_file_copy.cpp /src/examples/cpp11/fork/ /src/examples/cpp11/fork/daemon.cpp /src/examples/cpp11/fork/process_per_connection.cpp @@ -5214,6 +6656,8 @@ /src/examples/cpp11/iostreams/http_client.cpp /src/examples/cpp11/local/ /src/examples/cpp11/local/connect_pair.cpp +/src/examples/cpp11/local/fd_passing_stream_client.cpp +/src/examples/cpp11/local/fd_passing_stream_server.cpp /src/examples/cpp11/local/iostream_client.cpp /src/examples/cpp11/local/stream_client.cpp /src/examples/cpp11/local/stream_server.cpp @@ -5233,6 +6677,12 @@ /src/examples/cpp11/operations/composed_6.cpp /src/examples/cpp11/operations/composed_7.cpp /src/examples/cpp11/operations/composed_8.cpp +/src/examples/cpp11/parallel_group/ +/src/examples/cpp11/parallel_group/ranged_wait_for_all.cpp +/src/examples/cpp11/parallel_group/wait_for_all.cpp +/src/examples/cpp11/parallel_group/wait_for_one.cpp +/src/examples/cpp11/parallel_group/wait_for_one_error.cpp +/src/examples/cpp11/parallel_group/wait_for_one_success.cpp /src/examples/cpp11/socks4/ /src/examples/cpp11/socks4/socks4.hpp /src/examples/cpp11/socks4/sync_client.cpp @@ -5240,8 +6690,12 @@ /src/examples/cpp11/spawn/echo_server.cpp /src/examples/cpp11/spawn/parallel_grep.cpp /src/examples/cpp11/ssl/ +/src/examples/cpp11/ssl/ca.pem /src/examples/cpp11/ssl/client.cpp +/src/examples/cpp11/ssl/dh4096.pem +/src/examples/cpp11/ssl/README /src/examples/cpp11/ssl/server.cpp +/src/examples/cpp11/ssl/server.pem /src/examples/cpp11/timeouts/ /src/examples/cpp11/timeouts/async_tcp_client.cpp /src/examples/cpp11/timeouts/blocking_tcp_client.cpp @@ -5250,7 +6704,22 @@ /src/examples/cpp11/timeouts/server.cpp /src/examples/cpp11/timers/ /src/examples/cpp11/timers/time_t_timer.cpp +/src/examples/cpp11/type_erasure/ +/src/examples/cpp11/type_erasure/line_reader.hpp +/src/examples/cpp11/type_erasure/main.cpp +/src/examples/cpp11/type_erasure/sleep.cpp +/src/examples/cpp11/type_erasure/sleep.hpp +/src/examples/cpp11/type_erasure/stdin_line_reader.cpp +/src/examples/cpp11/type_erasure/stdin_line_reader.hpp /src/examples/cpp14/ +/src/examples/cpp14/deferred/ +/src/examples/cpp14/deferred/deferred_1.cpp +/src/examples/cpp14/deferred/deferred_2.cpp +/src/examples/cpp14/deferred/deferred_3.cpp +/src/examples/cpp14/deferred/deferred_4.cpp +/src/examples/cpp14/deferred/deferred_5.cpp +/src/examples/cpp14/deferred/deferred_6.cpp +/src/examples/cpp14/deferred/deferred_7.cpp /src/examples/cpp14/echo/ /src/examples/cpp14/echo/async_tcp_echo_server.cpp /src/examples/cpp14/echo/async_udp_echo_server.cpp @@ -5272,6 +6741,8 @@ /src/examples/cpp14/Makefile.am /src/examples/cpp14/Makefile.in /src/examples/cpp14/operations/ +/src/examples/cpp14/operations/callback_wrapper.cpp +/src/examples/cpp14/operations/c_callback_wrapper.cpp /src/examples/cpp14/operations/composed_1.cpp /src/examples/cpp14/operations/composed_2.cpp /src/examples/cpp14/operations/composed_3.cpp @@ -5280,15 +6751,57 @@ /src/examples/cpp14/operations/composed_6.cpp /src/examples/cpp14/operations/composed_7.cpp /src/examples/cpp14/operations/composed_8.cpp +/src/examples/cpp14/parallel_group/ +/src/examples/cpp14/parallel_group/parallel_sort.cpp +/src/examples/cpp14/parallel_group/ranged_wait_for_all.cpp +/src/examples/cpp14/parallel_group/wait_for_all.cpp +/src/examples/cpp14/parallel_group/wait_for_one.cpp +/src/examples/cpp14/parallel_group/wait_for_one_error.cpp +/src/examples/cpp14/parallel_group/wait_for_one_success.cpp /src/examples/cpp17/ /src/examples/cpp17/coroutines_ts/ /src/examples/cpp17/coroutines_ts/chat_server.cpp /src/examples/cpp17/coroutines_ts/echo_server.cpp +/src/examples/cpp17/coroutines_ts/echo_server_with_as_single_default.cpp +/src/examples/cpp17/coroutines_ts/echo_server_with_as_tuple_default.cpp /src/examples/cpp17/coroutines_ts/echo_server_with_default.cpp /src/examples/cpp17/coroutines_ts/range_based_for.cpp /src/examples/cpp17/coroutines_ts/refactored_echo_server.cpp /src/examples/cpp17/Makefile.am /src/examples/cpp17/Makefile.in +/src/examples/cpp20/ +/src/examples/cpp20/channels/ +/src/examples/cpp20/channels/throttling_proxy.cpp +/src/examples/cpp20/coroutines/ +/src/examples/cpp20/coroutines/chat_server.cpp +/src/examples/cpp20/coroutines/echo_server.cpp +/src/examples/cpp20/coroutines/echo_server_with_as_single_default.cpp +/src/examples/cpp20/coroutines/echo_server_with_as_tuple_default.cpp +/src/examples/cpp20/coroutines/echo_server_with_default.cpp +/src/examples/cpp20/coroutines/echo_server_with_deferred.cpp +/src/examples/cpp20/coroutines/echo_server_with_deferred_default.cpp +/src/examples/cpp20/coroutines/refactored_echo_server.cpp +/src/examples/cpp20/coroutines/timeout.cpp +/src/examples/cpp20/Makefile.am +/src/examples/cpp20/Makefile.in +/src/examples/cpp20/operations/ +/src/examples/cpp20/operations/callback_wrapper.cpp +/src/examples/cpp20/operations/c_callback_wrapper.cpp +/src/examples/cpp20/operations/composed_1.cpp +/src/examples/cpp20/operations/composed_2.cpp +/src/examples/cpp20/operations/composed_3.cpp +/src/examples/cpp20/operations/composed_4.cpp +/src/examples/cpp20/operations/composed_5.cpp +/src/examples/cpp20/operations/composed_6.cpp +/src/examples/cpp20/operations/composed_7.cpp +/src/examples/cpp20/operations/composed_8.cpp +/src/examples/cpp20/type_erasure/ +/src/examples/cpp20/type_erasure/line_reader.hpp +/src/examples/cpp20/type_erasure/main.cpp +/src/examples/cpp20/type_erasure/sleep.cpp +/src/examples/cpp20/type_erasure/sleep.hpp +/src/examples/cpp20/type_erasure/stdin_line_reader.cpp +/src/examples/cpp20/type_erasure/stdin_line_reader.hpp /src/Makefile.am /src/Makefile.in /src/Makefile.mgw @@ -5485,6 +6998,7 @@ /src/tests/properties/Makefile.am /src/tests/properties/Makefile.in /src/tests/unit/ +/src/tests/unit/append.cpp /src/tests/unit/archetypes/ /src/tests/unit/archetypes/async_ops.hpp /src/tests/unit/archetypes/async_result.hpp @@ -5492,33 +7006,52 @@ /src/tests/unit/archetypes/io_control_command.hpp /src/tests/unit/archetypes/settable_socket_option.hpp /src/tests/unit/associated_allocator.cpp +/src/tests/unit/associated_cancellation_slot.cpp /src/tests/unit/associated_executor.cpp +/src/tests/unit/associated_immediate_executor.cpp +/src/tests/unit/associator.cpp +/src/tests/unit/as_tuple.cpp /src/tests/unit/async_result.cpp /src/tests/unit/awaitable.cpp /src/tests/unit/basic_datagram_socket.cpp /src/tests/unit/basic_deadline_timer.cpp +/src/tests/unit/basic_file.cpp +/src/tests/unit/basic_random_access_file.cpp /src/tests/unit/basic_raw_socket.cpp +/src/tests/unit/basic_readable_pipe.cpp /src/tests/unit/basic_seq_packet_socket.cpp /src/tests/unit/basic_serial_port.cpp /src/tests/unit/basic_signal_set.cpp /src/tests/unit/basic_socket_acceptor.cpp /src/tests/unit/basic_socket.cpp /src/tests/unit/basic_streambuf.cpp +/src/tests/unit/basic_stream_file.cpp /src/tests/unit/basic_stream_socket.cpp /src/tests/unit/basic_waitable_timer.cpp +/src/tests/unit/basic_writable_pipe.cpp +/src/tests/unit/bind_allocator.cpp +/src/tests/unit/bind_cancellation_slot.cpp /src/tests/unit/bind_executor.cpp +/src/tests/unit/bind_immediate_executor.cpp /src/tests/unit/buffer.cpp /src/tests/unit/buffered_read_stream.cpp /src/tests/unit/buffered_stream.cpp /src/tests/unit/buffered_write_stream.cpp +/src/tests/unit/buffer_registration.cpp /src/tests/unit/buffers_iterator.cpp +/src/tests/unit/cancellation_signal.cpp +/src/tests/unit/cancellation_state.cpp +/src/tests/unit/cancellation_type.cpp /src/tests/unit/completion_condition.cpp /src/tests/unit/compose.cpp /src/tests/unit/connect.cpp +/src/tests/unit/connect_pipe.cpp +/src/tests/unit/consign.cpp /src/tests/unit/coroutine.cpp /src/tests/unit/co_spawn.cpp /src/tests/unit/deadline_timer.cpp /src/tests/unit/defer.cpp +/src/tests/unit/deferred.cpp /src/tests/unit/detached.cpp /src/tests/unit/dispatch.cpp /src/tests/unit/error.cpp @@ -5550,6 +7083,26 @@ /src/tests/unit/execution/submit.cpp /src/tests/unit/executor.cpp /src/tests/unit/executor_work_guard.cpp +/src/tests/unit/experimental/ +/src/tests/unit/experimental/awaitable_operators.cpp +/src/tests/unit/experimental/basic_channel.cpp +/src/tests/unit/experimental/basic_concurrent_channel.cpp +/src/tests/unit/experimental/channel.cpp +/src/tests/unit/experimental/channel_traits.cpp +/src/tests/unit/experimental/co_composed.cpp +/src/tests/unit/experimental/concurrent_channel.cpp +/src/tests/unit/experimental/coro/ +/src/tests/unit/experimental/coro/allocator.cpp +/src/tests/unit/experimental/coro/cancel.cpp +/src/tests/unit/experimental/coro/co_spawn.cpp +/src/tests/unit/experimental/coro/exception.cpp +/src/tests/unit/experimental/coro/executor.cpp +/src/tests/unit/experimental/coro/partial.cpp +/src/tests/unit/experimental/coro/simple_test.cpp +/src/tests/unit/experimental/coro/stack_test.cpp +/src/tests/unit/experimental/coro/use_coro.cpp +/src/tests/unit/experimental/promise.cpp +/src/tests/unit/file_base.cpp /src/tests/unit/generic/ /src/tests/unit/generic/basic_endpoint.cpp /src/tests/unit/generic/datagram_protocol.cpp @@ -5588,6 +7141,7 @@ /src/tests/unit/local/basic_endpoint.cpp /src/tests/unit/local/connect_pair.cpp /src/tests/unit/local/datagram_protocol.cpp +/src/tests/unit/local/seq_packet_protocol.cpp /src/tests/unit/local/stream_protocol.cpp /src/tests/unit/packaged_task.cpp /src/tests/unit/placeholders.cpp @@ -5598,12 +7152,18 @@ /src/tests/unit/posix/descriptor.cpp /src/tests/unit/posix/stream_descriptor.cpp /src/tests/unit/post.cpp +/src/tests/unit/prepend.cpp +/src/tests/unit/random_access_file.cpp +/src/tests/unit/readable_pipe.cpp /src/tests/unit/read_at.cpp /src/tests/unit/read.cpp /src/tests/unit/read_until.cpp +/src/tests/unit/recycling_allocator.cpp /src/tests/unit/redirect_error.cpp +/src/tests/unit/registered_buffer.cpp /src/tests/unit/serial_port_base.cpp /src/tests/unit/serial_port.cpp +/src/tests/unit/signal_set_base.cpp /src/tests/unit/signal_set.cpp /src/tests/unit/socket_base.cpp /src/tests/unit/ssl/ @@ -5618,6 +7178,7 @@ /src/tests/unit/steady_timer.cpp /src/tests/unit/strand.cpp /src/tests/unit/streambuf.cpp +/src/tests/unit/stream_file.cpp /src/tests/unit/system_context.cpp /src/tests/unit/system_executor.cpp /src/tests/unit/system_timer.cpp @@ -5649,6 +7210,7 @@ /src/tests/unit/windows/overlapped_ptr.cpp /src/tests/unit/windows/random_access_handle.cpp /src/tests/unit/windows/stream_handle.cpp +/src/tests/unit/writable_pipe.cpp /src/tests/unit/write_at.cpp /src/tests/unit/write.cpp /src/tools/ diff --git a/tidal-link/link/modules/asio-standalone/asio/asio.pc.in b/tidal-link/link/modules/asio-standalone/asio/asio.pc.in new file mode 100644 index 000000000..b93eb673d --- /dev/null +++ b/tidal-link/link/modules/asio-standalone/asio/asio.pc.in @@ -0,0 +1,11 @@ +prefix=@prefix@ +exec_prefix=@exec_prefix@ +includedir=@includedir@ + +Name: @PACKAGE_NAME@ +Description: A cross-platform C++ library for network and low-level I/O programming that provides developers with a consistent asynchronous model using a modern C++ approach. +Version: @PACKAGE_VERSION@ +Cflags: -I${includedir} +Lflags: +Requires: +Requires.private: diff --git a/tidal-link/link/modules/asio-standalone/asio/autogen.sh b/tidal-link/link/modules/asio-standalone/asio/autogen.sh old mode 100644 new mode 100755 diff --git a/tidal-link/link/modules/asio-standalone/asio/boost_asio.manifest b/tidal-link/link/modules/asio-standalone/asio/boost_asio.manifest index 9c6c6e2bc..8258b2a8a 100644 --- a/tidal-link/link/modules/asio-standalone/asio/boost_asio.manifest +++ b/tidal-link/link/modules/asio-standalone/asio/boost_asio.manifest @@ -1,15 +1,25 @@ / /boost/ /boost/asio/ +/boost/asio/any_completion_executor.hpp +/boost/asio/any_completion_handler.hpp /boost/asio/any_io_executor.hpp +/boost/asio/append.hpp /boost/asio/associated_allocator.hpp +/boost/asio/associated_cancellation_slot.hpp /boost/asio/associated_executor.hpp +/boost/asio/associated_immediate_executor.hpp +/boost/asio/associator.hpp +/boost/asio/as_tuple.hpp /boost/asio/async_result.hpp /boost/asio/awaitable.hpp /boost/asio/basic_datagram_socket.hpp /boost/asio/basic_deadline_timer.hpp +/boost/asio/basic_file.hpp /boost/asio/basic_io_object.hpp +/boost/asio/basic_random_access_file.hpp /boost/asio/basic_raw_socket.hpp +/boost/asio/basic_readable_pipe.hpp /boost/asio/basic_seq_packet_socket.hpp /boost/asio/basic_serial_port.hpp /boost/asio/basic_signal_set.hpp @@ -19,9 +29,14 @@ /boost/asio/basic_socket_streambuf.hpp /boost/asio/basic_streambuf_fwd.hpp /boost/asio/basic_streambuf.hpp +/boost/asio/basic_stream_file.hpp /boost/asio/basic_stream_socket.hpp /boost/asio/basic_waitable_timer.hpp +/boost/asio/basic_writable_pipe.hpp +/boost/asio/bind_allocator.hpp +/boost/asio/bind_cancellation_slot.hpp /boost/asio/bind_executor.hpp +/boost/asio/bind_immediate_executor.hpp /boost/asio/buffered_read_stream_fwd.hpp /boost/asio/buffered_read_stream.hpp /boost/asio/buffered_stream_fwd.hpp @@ -29,20 +44,28 @@ /boost/asio/buffered_write_stream_fwd.hpp /boost/asio/buffered_write_stream.hpp /boost/asio/buffer.hpp +/boost/asio/buffer_registration.hpp /boost/asio/buffers_iterator.hpp +/boost/asio/cancellation_signal.hpp +/boost/asio/cancellation_state.hpp +/boost/asio/cancellation_type.hpp /boost/asio/completion_condition.hpp /boost/asio/compose.hpp /boost/asio/connect.hpp +/boost/asio/connect_pipe.hpp +/boost/asio/consign.hpp /boost/asio/coroutine.hpp /boost/asio/co_spawn.hpp /boost/asio/deadline_timer.hpp /boost/asio/defer.hpp +/boost/asio/deferred.hpp /boost/asio/detached.hpp /boost/asio/detail/ /boost/asio/detail/array_fwd.hpp /boost/asio/detail/array.hpp /boost/asio/detail/assert.hpp /boost/asio/detail/atomic_count.hpp +/boost/asio/detail/base_from_cancellation_state.hpp /boost/asio/detail/base_from_completion_cond.hpp /boost/asio/detail/bind_handler.hpp /boost/asio/detail/blocking_executor_op.hpp @@ -54,6 +77,7 @@ /boost/asio/detail/chrono.hpp /boost/asio/detail/chrono_time_traits.hpp /boost/asio/detail/completion_handler.hpp +/boost/asio/detail/composed_work.hpp /boost/asio/detail/concurrency_hint.hpp /boost/asio/detail/conditionally_enabled_event.hpp /boost/asio/detail/conditionally_enabled_mutex.hpp @@ -71,6 +95,7 @@ /boost/asio/detail/epoll_reactor.hpp /boost/asio/detail/eventfd_select_interrupter.hpp /boost/asio/detail/event.hpp +/boost/asio/detail/exception.hpp /boost/asio/detail/executor_function.hpp /boost/asio/detail/executor_op.hpp /boost/asio/detail/fd_set_adapter.hpp @@ -98,16 +123,21 @@ /boost/asio/detail/impl/epoll_reactor.ipp /boost/asio/detail/impl/eventfd_select_interrupter.ipp /boost/asio/detail/impl/handler_tracking.ipp +/boost/asio/detail/impl/io_uring_descriptor_service.ipp +/boost/asio/detail/impl/io_uring_file_service.ipp +/boost/asio/detail/impl/io_uring_service.hpp +/boost/asio/detail/impl/io_uring_service.ipp +/boost/asio/detail/impl/io_uring_socket_service_base.ipp /boost/asio/detail/impl/kqueue_reactor.hpp /boost/asio/detail/impl/kqueue_reactor.ipp /boost/asio/detail/impl/null_event.ipp /boost/asio/detail/impl/pipe_select_interrupter.ipp /boost/asio/detail/impl/posix_event.ipp /boost/asio/detail/impl/posix_mutex.ipp +/boost/asio/detail/impl/posix_serial_port_service.ipp /boost/asio/detail/impl/posix_thread.ipp /boost/asio/detail/impl/posix_tss_ptr.ipp /boost/asio/detail/impl/reactive_descriptor_service.ipp -/boost/asio/detail/impl/reactive_serial_port_service.ipp /boost/asio/detail/impl/reactive_socket_service_base.ipp /boost/asio/detail/impl/resolver_service_base.ipp /boost/asio/detail/impl/scheduler.ipp @@ -122,10 +152,12 @@ /boost/asio/detail/impl/strand_executor_service.ipp /boost/asio/detail/impl/strand_service.hpp /boost/asio/detail/impl/strand_service.ipp +/boost/asio/detail/impl/thread_context.ipp /boost/asio/detail/impl/throw_error.ipp /boost/asio/detail/impl/timer_queue_ptime.ipp /boost/asio/detail/impl/timer_queue_set.ipp /boost/asio/detail/impl/win_event.ipp +/boost/asio/detail/impl/win_iocp_file_service.ipp /boost/asio/detail/impl/win_iocp_handle_service.ipp /boost/asio/detail/impl/win_iocp_io_context.hpp /boost/asio/detail/impl/win_iocp_io_context.ipp @@ -140,8 +172,30 @@ /boost/asio/detail/impl/win_static_mutex.ipp /boost/asio/detail/impl/win_thread.ipp /boost/asio/detail/impl/win_tss_ptr.ipp +/boost/asio/detail/initiate_defer.hpp +/boost/asio/detail/initiate_dispatch.hpp +/boost/asio/detail/initiate_post.hpp /boost/asio/detail/io_control.hpp /boost/asio/detail/io_object_impl.hpp +/boost/asio/detail/io_uring_descriptor_read_at_op.hpp +/boost/asio/detail/io_uring_descriptor_read_op.hpp +/boost/asio/detail/io_uring_descriptor_service.hpp +/boost/asio/detail/io_uring_descriptor_write_at_op.hpp +/boost/asio/detail/io_uring_descriptor_write_op.hpp +/boost/asio/detail/io_uring_file_service.hpp +/boost/asio/detail/io_uring_null_buffers_op.hpp +/boost/asio/detail/io_uring_operation.hpp +/boost/asio/detail/io_uring_service.hpp +/boost/asio/detail/io_uring_socket_accept_op.hpp +/boost/asio/detail/io_uring_socket_connect_op.hpp +/boost/asio/detail/io_uring_socket_recvfrom_op.hpp +/boost/asio/detail/io_uring_socket_recvmsg_op.hpp +/boost/asio/detail/io_uring_socket_recv_op.hpp +/boost/asio/detail/io_uring_socket_send_op.hpp +/boost/asio/detail/io_uring_socket_sendto_op.hpp +/boost/asio/detail/io_uring_socket_service_base.hpp +/boost/asio/detail/io_uring_socket_service.hpp +/boost/asio/detail/io_uring_wait_op.hpp /boost/asio/detail/is_buffer_sequence.hpp /boost/asio/detail/is_executor.hpp /boost/asio/detail/keyword_tss_ptr.hpp @@ -173,6 +227,7 @@ /boost/asio/detail/posix_fd_set_adapter.hpp /boost/asio/detail/posix_global.hpp /boost/asio/detail/posix_mutex.hpp +/boost/asio/detail/posix_serial_port_service.hpp /boost/asio/detail/posix_signal_blocker.hpp /boost/asio/detail/posix_static_mutex.hpp /boost/asio/detail/posix_thread.hpp @@ -180,7 +235,6 @@ /boost/asio/detail/push_options.hpp /boost/asio/detail/reactive_descriptor_service.hpp /boost/asio/detail/reactive_null_buffers_op.hpp -/boost/asio/detail/reactive_serial_port_service.hpp /boost/asio/detail/reactive_socket_accept_op.hpp /boost/asio/detail/reactive_socket_connect_op.hpp /boost/asio/detail/reactive_socket_recvfrom_op.hpp @@ -191,7 +245,6 @@ /boost/asio/detail/reactive_socket_service_base.hpp /boost/asio/detail/reactive_socket_service.hpp /boost/asio/detail/reactive_wait_op.hpp -/boost/asio/detail/reactor_fwd.hpp /boost/asio/detail/reactor.hpp /boost/asio/detail/reactor_op.hpp /boost/asio/detail/reactor_op_queue.hpp @@ -204,6 +257,7 @@ /boost/asio/detail/resolver_service.hpp /boost/asio/detail/scheduler.hpp /boost/asio/detail/scheduler_operation.hpp +/boost/asio/detail/scheduler_task.hpp /boost/asio/detail/scheduler_thread_info.hpp /boost/asio/detail/scoped_lock.hpp /boost/asio/detail/scoped_ptr.hpp @@ -246,6 +300,7 @@ /boost/asio/detail/timer_scheduler.hpp /boost/asio/detail/tss_ptr.hpp /boost/asio/detail/type_traits.hpp +/boost/asio/detail/utility.hpp /boost/asio/detail/variadic_templates.hpp /boost/asio/detail/wait_handler.hpp /boost/asio/detail/wait_op.hpp @@ -255,6 +310,7 @@ /boost/asio/detail/win_fd_set_adapter.hpp /boost/asio/detail/win_fenced_block.hpp /boost/asio/detail/win_global.hpp +/boost/asio/detail/win_iocp_file_service.hpp /boost/asio/detail/win_iocp_handle_read_op.hpp /boost/asio/detail/win_iocp_handle_service.hpp /boost/asio/detail/win_iocp_handle_write_op.hpp @@ -339,6 +395,53 @@ /boost/asio/execution/submit.hpp /boost/asio/executor.hpp /boost/asio/executor_work_guard.hpp +/boost/asio/experimental/ +/boost/asio/experimental/append.hpp +/boost/asio/experimental/as_single.hpp +/boost/asio/experimental/as_tuple.hpp +/boost/asio/experimental/awaitable_operators.hpp +/boost/asio/experimental/basic_channel.hpp +/boost/asio/experimental/basic_concurrent_channel.hpp +/boost/asio/experimental/cancellation_condition.hpp +/boost/asio/experimental/channel_error.hpp +/boost/asio/experimental/channel.hpp +/boost/asio/experimental/channel_traits.hpp +/boost/asio/experimental/co_composed.hpp +/boost/asio/experimental/concurrent_channel.hpp +/boost/asio/experimental/coro.hpp +/boost/asio/experimental/coro_traits.hpp +/boost/asio/experimental/co_spawn.hpp +/boost/asio/experimental/deferred.hpp +/boost/asio/experimental/detail/ +/boost/asio/experimental/detail/channel_handler.hpp +/boost/asio/experimental/detail/channel_message.hpp +/boost/asio/experimental/detail/channel_operation.hpp +/boost/asio/experimental/detail/channel_payload.hpp +/boost/asio/experimental/detail/channel_receive_op.hpp +/boost/asio/experimental/detail/channel_send_functions.hpp +/boost/asio/experimental/detail/channel_send_op.hpp +/boost/asio/experimental/detail/channel_service.hpp +/boost/asio/experimental/detail/coro_completion_handler.hpp +/boost/asio/experimental/detail/coro_promise_allocator.hpp +/boost/asio/experimental/detail/has_signature.hpp +/boost/asio/experimental/detail/impl/ +/boost/asio/experimental/detail/impl/channel_service.hpp +/boost/asio/experimental/detail/partial_promise.hpp +/boost/asio/experimental/impl/ +/boost/asio/experimental/impl/as_single.hpp +/boost/asio/experimental/impl/channel_error.ipp +/boost/asio/experimental/impl/co_composed.hpp +/boost/asio/experimental/impl/coro.hpp +/boost/asio/experimental/impl/parallel_group.hpp +/boost/asio/experimental/impl/promise.hpp +/boost/asio/experimental/impl/use_coro.hpp +/boost/asio/experimental/impl/use_promise.hpp +/boost/asio/experimental/parallel_group.hpp +/boost/asio/experimental/prepend.hpp +/boost/asio/experimental/promise.hpp +/boost/asio/experimental/use_coro.hpp +/boost/asio/experimental/use_promise.hpp +/boost/asio/file_base.hpp /boost/asio/generic/ /boost/asio/generic/basic_endpoint.hpp /boost/asio/generic/datagram_protocol.hpp @@ -355,15 +458,21 @@ /boost/asio/high_resolution_timer.hpp /boost/asio.hpp /boost/asio/impl/ +/boost/asio/impl/any_completion_executor.ipp +/boost/asio/impl/any_io_executor.ipp +/boost/asio/impl/append.hpp +/boost/asio/impl/as_tuple.hpp /boost/asio/impl/awaitable.hpp /boost/asio/impl/buffered_read_stream.hpp /boost/asio/impl/buffered_write_stream.hpp -/boost/asio/impl/compose.hpp +/boost/asio/impl/cancellation_signal.ipp /boost/asio/impl/connect.hpp +/boost/asio/impl/connect_pipe.hpp +/boost/asio/impl/connect_pipe.ipp +/boost/asio/impl/consign.hpp /boost/asio/impl/co_spawn.hpp -/boost/asio/impl/defer.hpp +/boost/asio/impl/deferred.hpp /boost/asio/impl/detached.hpp -/boost/asio/impl/dispatch.hpp /boost/asio/impl/error.ipp /boost/asio/impl/execution_context.hpp /boost/asio/impl/execution_context.ipp @@ -373,7 +482,7 @@ /boost/asio/impl/io_context.hpp /boost/asio/impl/io_context.ipp /boost/asio/impl/multiple_exceptions.ipp -/boost/asio/impl/post.hpp +/boost/asio/impl/prepend.hpp /boost/asio/impl/read_at.hpp /boost/asio/impl/read.hpp /boost/asio/impl/read_until.hpp @@ -381,7 +490,6 @@ /boost/asio/impl/serial_port_base.hpp /boost/asio/impl/serial_port_base.ipp /boost/asio/impl/spawn.hpp -/boost/asio/impl/src.cpp /boost/asio/impl/src.hpp /boost/asio/impl/system_context.hpp /boost/asio/impl/system_context.ipp @@ -441,6 +549,7 @@ /boost/asio/ip/unicast.hpp /boost/asio/ip/v6_only.hpp /boost/asio/is_applicable_property.hpp +/boost/asio/is_contiguous_iterator.hpp /boost/asio/is_executor.hpp /boost/asio/is_read_buffered.hpp /boost/asio/is_write_buffered.hpp @@ -452,6 +561,7 @@ /boost/asio/local/detail/endpoint.hpp /boost/asio/local/detail/impl/ /boost/asio/local/detail/impl/endpoint.ipp +/boost/asio/local/seq_packet_protocol.hpp /boost/asio/local/stream_protocol.hpp /boost/asio/multiple_exceptions.hpp /boost/asio/packaged_task.hpp @@ -464,15 +574,21 @@ /boost/asio/posix/stream_descriptor.hpp /boost/asio/post.hpp /boost/asio/prefer.hpp +/boost/asio/prepend.hpp /boost/asio/query.hpp +/boost/asio/random_access_file.hpp +/boost/asio/readable_pipe.hpp /boost/asio/read_at.hpp /boost/asio/read.hpp /boost/asio/read_until.hpp +/boost/asio/recycling_allocator.hpp /boost/asio/redirect_error.hpp +/boost/asio/registered_buffer.hpp /boost/asio/require_concept.hpp /boost/asio/require.hpp /boost/asio/serial_port_base.hpp /boost/asio/serial_port.hpp +/boost/asio/signal_set_base.hpp /boost/asio/signal_set.hpp /boost/asio/socket_base.hpp /boost/asio/spawn.hpp @@ -514,6 +630,7 @@ /boost/asio/steady_timer.hpp /boost/asio/strand.hpp /boost/asio/streambuf.hpp +/boost/asio/stream_file.hpp /boost/asio/system_context.hpp /boost/asio/system_executor.hpp /boost/asio/system_timer.hpp @@ -577,6 +694,7 @@ /boost/asio/windows/overlapped_ptr.hpp /boost/asio/windows/random_access_handle.hpp /boost/asio/windows/stream_handle.hpp +/boost/asio/writable_pipe.hpp /boost/asio/write_at.hpp /boost/asio/write.hpp /boost/asio/yield.hpp @@ -588,20 +706,56 @@ /boost/system/config.hpp /boost/system/cygwin_error.hpp /boost/system/detail/ +/boost/system/detail/append_int.hpp +/boost/system/detail/cerrno.hpp /boost/system/detail/config.hpp +/boost/system/detail/enable_if.hpp +/boost/system/detail/errc.hpp +/boost/system/detail/error_category.hpp +/boost/system/detail/error_category_impl.hpp +/boost/system/detail/error_code.hpp +/boost/system/detail/error_condition.hpp /boost/system/detail/generic_category.hpp -/boost/system/detail/std_interoperability.hpp -/boost/system/detail/system_category_posix.hpp -/boost/system/detail/system_category_win32.hpp +/boost/system/detail/generic_category_message.hpp +/boost/system/detail/interop_category.hpp +/boost/system/detail/is_same.hpp +/boost/system/detail/mutex.hpp +/boost/system/detail/requires_cxx11.hpp +/boost/system/detail/snprintf.hpp +/boost/system/detail/std_category.hpp +/boost/system/detail/std_category_impl.hpp +/boost/system/detail/system_category_condition_win32.hpp +/boost/system/detail/system_category.hpp +/boost/system/detail/system_category_impl.hpp +/boost/system/detail/system_category_message.hpp +/boost/system/detail/system_category_message_win32.hpp +/boost/system/detail/throws.hpp +/boost/system/errc.hpp +/boost/system/error_category.hpp /boost/system/error_code.hpp +/boost/system/error_condition.hpp +/boost/system/generic_category.hpp +/boost/system/is_error_code_enum.hpp +/boost/system/is_error_condition_enum.hpp /boost/system/linux_error.hpp +/boost/system/result.hpp +/boost/system/system_category.hpp /boost/system/system_error.hpp /boost/system/windows_error.hpp /doc/ /doc/html/ /doc/html/boost_asio/ +/doc/html/boost_asio/async_agent_chain.png +/doc/html/boost_asio/async_agent_model.png +/doc/html/boost_asio/async_child_agent_chain.png /doc/html/boost_asio/async_op1.png /doc/html/boost_asio/async_op2.png +/doc/html/boost_asio/async_op_init_complete.png +/doc/html/boost_asio/async_op_model.png +/doc/html/boost_asio/async_op_phases.png +/doc/html/boost_asio/async_op_trivial_chain.png +/doc/html/boost_asio/completion_token_model.png +/doc/html/boost_asio/completion_token_transform.png /doc/html/boost_asio/example/ /doc/html/boost_asio/example/cpp03/ /doc/html/boost_asio/example/cpp03/allocation/ @@ -756,6 +910,9 @@ /doc/html/boost_asio/example/cpp11/chat/chat_client.cpp /doc/html/boost_asio/example/cpp11/chat/chat_message.hpp /doc/html/boost_asio/example/cpp11/chat/chat_server.cpp +/doc/html/boost_asio/example/cpp11/deferred/ +/doc/html/boost_asio/example/cpp11/deferred/deferred_1.cpp +/doc/html/boost_asio/example/cpp11/deferred/deferred_2.cpp /doc/html/boost_asio/example/cpp11/echo/ /doc/html/boost_asio/example/cpp11/echo/async_tcp_echo_server.cpp /doc/html/boost_asio/example/cpp11/echo/async_udp_echo_server.cpp @@ -801,6 +958,8 @@ /doc/html/boost_asio/example/cpp11/invocation/prioritised_handlers.cpp /doc/html/boost_asio/example/cpp11/local/ /doc/html/boost_asio/example/cpp11/local/connect_pair.cpp +/doc/html/boost_asio/example/cpp11/local/fd_passing_stream_client.cpp +/doc/html/boost_asio/example/cpp11/local/fd_passing_stream_server.cpp /doc/html/boost_asio/example/cpp11/local/iostream_client.cpp /doc/html/boost_asio/example/cpp11/local/stream_client.cpp /doc/html/boost_asio/example/cpp11/local/stream_server.cpp @@ -818,6 +977,12 @@ /doc/html/boost_asio/example/cpp11/operations/composed_6.cpp /doc/html/boost_asio/example/cpp11/operations/composed_7.cpp /doc/html/boost_asio/example/cpp11/operations/composed_8.cpp +/doc/html/boost_asio/example/cpp11/parallel_group/ +/doc/html/boost_asio/example/cpp11/parallel_group/ranged_wait_for_all.cpp +/doc/html/boost_asio/example/cpp11/parallel_group/wait_for_all.cpp +/doc/html/boost_asio/example/cpp11/parallel_group/wait_for_one.cpp +/doc/html/boost_asio/example/cpp11/parallel_group/wait_for_one_error.cpp +/doc/html/boost_asio/example/cpp11/parallel_group/wait_for_one_success.cpp /doc/html/boost_asio/example/cpp11/socks4/ /doc/html/boost_asio/example/cpp11/socks4/socks4.hpp /doc/html/boost_asio/example/cpp11/socks4/sync_client.cpp @@ -835,8 +1000,36 @@ /doc/html/boost_asio/example/cpp11/timeouts/server.cpp /doc/html/boost_asio/example/cpp11/timers/ /doc/html/boost_asio/example/cpp11/timers/time_t_timer.cpp +/doc/html/boost_asio/example/cpp11/type_erasure/ +/doc/html/boost_asio/example/cpp11/type_erasure/line_reader.hpp +/doc/html/boost_asio/example/cpp11/type_erasure/main.cpp +/doc/html/boost_asio/example/cpp11/type_erasure/sleep.cpp +/doc/html/boost_asio/example/cpp11/type_erasure/sleep.hpp +/doc/html/boost_asio/example/cpp11/type_erasure/stdin_line_reader.cpp +/doc/html/boost_asio/example/cpp11/type_erasure/stdin_line_reader.hpp /doc/html/boost_asio/example/cpp14/ +/doc/html/boost_asio/example/cpp14/deferred/ +/doc/html/boost_asio/example/cpp14/deferred/deferred_1.cpp +/doc/html/boost_asio/example/cpp14/deferred/deferred_2.cpp +/doc/html/boost_asio/example/cpp14/deferred/deferred_3.cpp +/doc/html/boost_asio/example/cpp14/deferred/deferred_4.cpp +/doc/html/boost_asio/example/cpp14/deferred/deferred_5.cpp +/doc/html/boost_asio/example/cpp14/deferred/deferred_6.cpp +/doc/html/boost_asio/example/cpp14/deferred/deferred_7.cpp +/doc/html/boost_asio/example/cpp14/executors/ +/doc/html/boost_asio/example/cpp14/executors/actor.cpp +/doc/html/boost_asio/example/cpp14/executors/async_1.cpp +/doc/html/boost_asio/example/cpp14/executors/async_2.cpp +/doc/html/boost_asio/example/cpp14/executors/bank_account_1.cpp +/doc/html/boost_asio/example/cpp14/executors/bank_account_2.cpp +/doc/html/boost_asio/example/cpp14/executors/fork_join.cpp +/doc/html/boost_asio/example/cpp14/executors/pipeline.cpp +/doc/html/boost_asio/example/cpp14/executors/priority_scheduler.cpp +/doc/html/boost_asio/example/cpp14/iostreams/ +/doc/html/boost_asio/example/cpp14/iostreams/http_client.cpp /doc/html/boost_asio/example/cpp14/operations/ +/doc/html/boost_asio/example/cpp14/operations/callback_wrapper.cpp +/doc/html/boost_asio/example/cpp14/operations/c_callback_wrapper.cpp /doc/html/boost_asio/example/cpp14/operations/composed_1.cpp /doc/html/boost_asio/example/cpp14/operations/composed_2.cpp /doc/html/boost_asio/example/cpp14/operations/composed_3.cpp @@ -845,37 +1038,92 @@ /doc/html/boost_asio/example/cpp14/operations/composed_6.cpp /doc/html/boost_asio/example/cpp14/operations/composed_7.cpp /doc/html/boost_asio/example/cpp14/operations/composed_8.cpp +/doc/html/boost_asio/example/cpp14/parallel_group/ +/doc/html/boost_asio/example/cpp14/parallel_group/parallel_sort.cpp +/doc/html/boost_asio/example/cpp14/parallel_group/ranged_wait_for_all.cpp +/doc/html/boost_asio/example/cpp14/parallel_group/wait_for_all.cpp +/doc/html/boost_asio/example/cpp14/parallel_group/wait_for_one.cpp +/doc/html/boost_asio/example/cpp14/parallel_group/wait_for_one_error.cpp +/doc/html/boost_asio/example/cpp14/parallel_group/wait_for_one_success.cpp /doc/html/boost_asio/example/cpp17/ /doc/html/boost_asio/example/cpp17/coroutines_ts/ /doc/html/boost_asio/example/cpp17/coroutines_ts/chat_server.cpp /doc/html/boost_asio/example/cpp17/coroutines_ts/echo_server.cpp +/doc/html/boost_asio/example/cpp17/coroutines_ts/echo_server_with_as_single_default.cpp +/doc/html/boost_asio/example/cpp17/coroutines_ts/echo_server_with_as_tuple_default.cpp /doc/html/boost_asio/example/cpp17/coroutines_ts/echo_server_with_default.cpp /doc/html/boost_asio/example/cpp17/coroutines_ts/range_based_for.cpp /doc/html/boost_asio/example/cpp17/coroutines_ts/refactored_echo_server.cpp +/doc/html/boost_asio/example/cpp20/ +/doc/html/boost_asio/example/cpp20/channels/ +/doc/html/boost_asio/example/cpp20/channels/throttling_proxy.cpp +/doc/html/boost_asio/example/cpp20/coroutines/ +/doc/html/boost_asio/example/cpp20/coroutines/chat_server.cpp +/doc/html/boost_asio/example/cpp20/coroutines/echo_server.cpp +/doc/html/boost_asio/example/cpp20/coroutines/echo_server_with_as_single_default.cpp +/doc/html/boost_asio/example/cpp20/coroutines/echo_server_with_as_tuple_default.cpp +/doc/html/boost_asio/example/cpp20/coroutines/echo_server_with_default.cpp +/doc/html/boost_asio/example/cpp20/coroutines/echo_server_with_deferred.cpp +/doc/html/boost_asio/example/cpp20/coroutines/echo_server_with_deferred_default.cpp +/doc/html/boost_asio/example/cpp20/coroutines/refactored_echo_server.cpp +/doc/html/boost_asio/example/cpp20/coroutines/timeout.cpp +/doc/html/boost_asio/example/cpp20/operations/ +/doc/html/boost_asio/example/cpp20/operations/callback_wrapper.cpp +/doc/html/boost_asio/example/cpp20/operations/c_callback_wrapper.cpp +/doc/html/boost_asio/example/cpp20/operations/composed_1.cpp +/doc/html/boost_asio/example/cpp20/operations/composed_2.cpp +/doc/html/boost_asio/example/cpp20/operations/composed_3.cpp +/doc/html/boost_asio/example/cpp20/operations/composed_4.cpp +/doc/html/boost_asio/example/cpp20/operations/composed_5.cpp +/doc/html/boost_asio/example/cpp20/operations/composed_6.cpp +/doc/html/boost_asio/example/cpp20/operations/composed_7.cpp +/doc/html/boost_asio/example/cpp20/operations/composed_8.cpp +/doc/html/boost_asio/example/cpp20/type_erasure/ +/doc/html/boost_asio/example/cpp20/type_erasure/line_reader.hpp +/doc/html/boost_asio/example/cpp20/type_erasure/main.cpp +/doc/html/boost_asio/example/cpp20/type_erasure/sleep.cpp +/doc/html/boost_asio/example/cpp20/type_erasure/sleep.hpp +/doc/html/boost_asio/example/cpp20/type_erasure/stdin_line_reader.cpp +/doc/html/boost_asio/example/cpp20/type_erasure/stdin_line_reader.hpp /doc/html/boost_asio/examples/ /doc/html/boost_asio/examples/cpp03_examples.html /doc/html/boost_asio/examples/cpp11_examples.html /doc/html/boost_asio/examples/cpp14_examples.html /doc/html/boost_asio/examples/cpp17_examples.html +/doc/html/boost_asio/examples/cpp20_examples.html /doc/html/boost_asio/examples.html +/doc/html/boost_asio/higher_level_model.png /doc/html/boost_asio/history.html /doc/html/boost_asio.html /doc/html/boost_asio/index.html /doc/html/boost_asio/net_ts.html /doc/html/boost_asio/overview/ +/doc/html/boost_asio/overview/basics.html +/doc/html/boost_asio/overview/channels.html +/doc/html/boost_asio/overview/composition/ +/doc/html/boost_asio/overview/composition/compose.html +/doc/html/boost_asio/overview/composition/coro.html +/doc/html/boost_asio/overview/composition/coroutine.html +/doc/html/boost_asio/overview/composition/cpp20_coroutines.html +/doc/html/boost_asio/overview/composition/deferred.html +/doc/html/boost_asio/overview/composition/futures.html +/doc/html/boost_asio/overview/composition.html +/doc/html/boost_asio/overview/composition/immediate_completion.html +/doc/html/boost_asio/overview/composition/parallel_group.html +/doc/html/boost_asio/overview/composition/promises.html +/doc/html/boost_asio/overview/composition/spawn.html +/doc/html/boost_asio/overview/composition/token_adapters.html +/doc/html/boost_asio/overview/composition/type_erasure.html /doc/html/boost_asio/overview/core/ /doc/html/boost_asio/overview/core/allocation.html /doc/html/boost_asio/overview/core/async.html -/doc/html/boost_asio/overview/core/basics.html /doc/html/boost_asio/overview/core/buffers.html +/doc/html/boost_asio/overview/core/cancellation.html /doc/html/boost_asio/overview/core/concurrency_hint.html -/doc/html/boost_asio/overview/core/coroutine.html -/doc/html/boost_asio/overview/core/coroutines_ts.html /doc/html/boost_asio/overview/core/handler_tracking.html /doc/html/boost_asio/overview/core.html /doc/html/boost_asio/overview/core/line_based.html /doc/html/boost_asio/overview/core/reactor.html -/doc/html/boost_asio/overview/core/spawn.html /doc/html/boost_asio/overview/core/strands.html /doc/html/boost_asio/overview/core/streams.html /doc/html/boost_asio/overview/core/threads.html @@ -883,20 +1131,33 @@ /doc/html/boost_asio/overview/cpp2011/array.html /doc/html/boost_asio/overview/cpp2011/atomic.html /doc/html/boost_asio/overview/cpp2011/chrono.html -/doc/html/boost_asio/overview/cpp2011/futures.html /doc/html/boost_asio/overview/cpp2011.html /doc/html/boost_asio/overview/cpp2011/move_handlers.html /doc/html/boost_asio/overview/cpp2011/move_objects.html /doc/html/boost_asio/overview/cpp2011/shared_ptr.html /doc/html/boost_asio/overview/cpp2011/variadic.html +/doc/html/boost_asio/overview/files.html /doc/html/boost_asio/overview.html /doc/html/boost_asio/overview/implementation.html +/doc/html/boost_asio/overview/model/ +/doc/html/boost_asio/overview/model/allocators.html +/doc/html/boost_asio/overview/model/associators.html +/doc/html/boost_asio/overview/model/async_agents.html +/doc/html/boost_asio/overview/model/async_ops.html +/doc/html/boost_asio/overview/model/cancellation.html +/doc/html/boost_asio/overview/model/child_agents.html +/doc/html/boost_asio/overview/model/completion_tokens.html +/doc/html/boost_asio/overview/model/executors.html +/doc/html/boost_asio/overview/model/higher_levels.html +/doc/html/boost_asio/overview/model.html +/doc/html/boost_asio/overview/model/library_elements.html /doc/html/boost_asio/overview/networking/ /doc/html/boost_asio/overview/networking/bsd_sockets.html /doc/html/boost_asio/overview/networking.html /doc/html/boost_asio/overview/networking/iostreams.html /doc/html/boost_asio/overview/networking/other_protocols.html /doc/html/boost_asio/overview/networking/protocols.html +/doc/html/boost_asio/overview/pipes.html /doc/html/boost_asio/overview/posix/ /doc/html/boost_asio/overview/posix/fork.html /doc/html/boost_asio/overview/posix.html @@ -916,7 +1177,201 @@ /doc/html/boost_asio/reference/ /doc/html/boost_asio/reference/AcceptableProtocol.html /doc/html/boost_asio/reference/AcceptHandler.html +/doc/html/boost_asio/reference/AcceptToken.html +/doc/html/boost_asio/reference/allocator_binder/ +/doc/html/boost_asio/reference/allocator_binder/allocator_binder/ +/doc/html/boost_asio/reference/allocator_binder/_allocator_binder.html +/doc/html/boost_asio/reference/allocator_binder/allocator_binder.html +/doc/html/boost_asio/reference/allocator_binder/allocator_binder/overload1.html +/doc/html/boost_asio/reference/allocator_binder/allocator_binder/overload2.html +/doc/html/boost_asio/reference/allocator_binder/allocator_binder/overload3.html +/doc/html/boost_asio/reference/allocator_binder/allocator_binder/overload4.html +/doc/html/boost_asio/reference/allocator_binder/allocator_binder/overload5.html +/doc/html/boost_asio/reference/allocator_binder/allocator_binder/overload6.html +/doc/html/boost_asio/reference/allocator_binder/allocator_binder/overload7.html +/doc/html/boost_asio/reference/allocator_binder/allocator_binder/overload8.html +/doc/html/boost_asio/reference/allocator_binder/allocator_binder/overload9.html +/doc/html/boost_asio/reference/allocator_binder/allocator_type.html +/doc/html/boost_asio/reference/allocator_binder/argument_type.html +/doc/html/boost_asio/reference/allocator_binder/first_argument_type.html +/doc/html/boost_asio/reference/allocator_binder/get/ +/doc/html/boost_asio/reference/allocator_binder/get_allocator.html +/doc/html/boost_asio/reference/allocator_binder/get.html +/doc/html/boost_asio/reference/allocator_binder/get/overload1.html +/doc/html/boost_asio/reference/allocator_binder/get/overload2.html +/doc/html/boost_asio/reference/allocator_binder.html +/doc/html/boost_asio/reference/allocator_binder/operator_lp__rp_/ +/doc/html/boost_asio/reference/allocator_binder/operator_lp__rp_.html +/doc/html/boost_asio/reference/allocator_binder/operator_lp__rp_/overload1.html +/doc/html/boost_asio/reference/allocator_binder/operator_lp__rp_/overload2.html +/doc/html/boost_asio/reference/allocator_binder/result_type.html +/doc/html/boost_asio/reference/allocator_binder/second_argument_type.html +/doc/html/boost_asio/reference/allocator_binder/target_type.html +/doc/html/boost_asio/reference/any_completion_executor/ +/doc/html/boost_asio/reference/any_completion_executor/any_completion_executor/ +/doc/html/boost_asio/reference/any_completion_executor/_any_completion_executor.html +/doc/html/boost_asio/reference/any_completion_executor/any_completion_executor.html +/doc/html/boost_asio/reference/any_completion_executor/any_completion_executor/overload10.html +/doc/html/boost_asio/reference/any_completion_executor/any_completion_executor/overload1.html +/doc/html/boost_asio/reference/any_completion_executor/any_completion_executor/overload2.html +/doc/html/boost_asio/reference/any_completion_executor/any_completion_executor/overload3.html +/doc/html/boost_asio/reference/any_completion_executor/any_completion_executor/overload4.html +/doc/html/boost_asio/reference/any_completion_executor/any_completion_executor/overload5.html +/doc/html/boost_asio/reference/any_completion_executor/any_completion_executor/overload6.html +/doc/html/boost_asio/reference/any_completion_executor/any_completion_executor/overload7.html +/doc/html/boost_asio/reference/any_completion_executor/any_completion_executor/overload8.html +/doc/html/boost_asio/reference/any_completion_executor/any_completion_executor/overload9.html +/doc/html/boost_asio/reference/any_completion_executor/context.html +/doc/html/boost_asio/reference/any_completion_executor/execute.html +/doc/html/boost_asio/reference/any_completion_executor.html +/doc/html/boost_asio/reference/any_completion_executor/operator_bool.html +/doc/html/boost_asio/reference/any_completion_executor/operator_eq_/ +/doc/html/boost_asio/reference/any_completion_executor/operator_eq__eq_/ +/doc/html/boost_asio/reference/any_completion_executor/operator_eq__eq_.html +/doc/html/boost_asio/reference/any_completion_executor/operator_eq__eq_/overload1.html +/doc/html/boost_asio/reference/any_completion_executor/operator_eq__eq_/overload2.html +/doc/html/boost_asio/reference/any_completion_executor/operator_eq__eq_/overload3.html +/doc/html/boost_asio/reference/any_completion_executor/operator_eq_.html +/doc/html/boost_asio/reference/any_completion_executor/operator_eq_/overload1.html +/doc/html/boost_asio/reference/any_completion_executor/operator_eq_/overload2.html +/doc/html/boost_asio/reference/any_completion_executor/operator_eq_/overload3.html +/doc/html/boost_asio/reference/any_completion_executor/operator_not__eq_/ +/doc/html/boost_asio/reference/any_completion_executor/operator_not__eq_.html +/doc/html/boost_asio/reference/any_completion_executor/operator_not__eq_/overload1.html +/doc/html/boost_asio/reference/any_completion_executor/operator_not__eq_/overload2.html +/doc/html/boost_asio/reference/any_completion_executor/operator_not__eq_/overload3.html +/doc/html/boost_asio/reference/any_completion_executor/prefer/ +/doc/html/boost_asio/reference/any_completion_executor/prefer.html +/doc/html/boost_asio/reference/any_completion_executor/prefer/overload1.html +/doc/html/boost_asio/reference/any_completion_executor/prefer/overload2.html +/doc/html/boost_asio/reference/any_completion_executor/prefer/overload3.html +/doc/html/boost_asio/reference/any_completion_executor/prefer/overload4.html +/doc/html/boost_asio/reference/any_completion_executor/prefer/overload5.html +/doc/html/boost_asio/reference/any_completion_executor/prefer/overload6.html +/doc/html/boost_asio/reference/any_completion_executor/query.html +/doc/html/boost_asio/reference/any_completion_executor/require/ +/doc/html/boost_asio/reference/any_completion_executor/require.html +/doc/html/boost_asio/reference/any_completion_executor/require/overload1.html +/doc/html/boost_asio/reference/any_completion_executor/require/overload2.html +/doc/html/boost_asio/reference/any_completion_executor/swap/ +/doc/html/boost_asio/reference/any_completion_executor/swap.html +/doc/html/boost_asio/reference/any_completion_executor/swap/overload1.html +/doc/html/boost_asio/reference/any_completion_executor/swap/overload2.html +/doc/html/boost_asio/reference/any_completion_executor/target/ +/doc/html/boost_asio/reference/any_completion_executor/target.html +/doc/html/boost_asio/reference/any_completion_executor/target/overload1.html +/doc/html/boost_asio/reference/any_completion_executor/target/overload2.html +/doc/html/boost_asio/reference/any_completion_executor/target_type.html +/doc/html/boost_asio/reference/any_completion_handler/ +/doc/html/boost_asio/reference/any_completion_handler_allocator/ +/doc/html/boost_asio/reference/any_completion_handler_allocator/allocate.html +/doc/html/boost_asio/reference/any_completion_handler_allocator/any_completion_handler_allocator.html +/doc/html/boost_asio/reference/any_completion_handler_allocator/deallocate.html +/doc/html/boost_asio/reference/any_completion_handler_allocator.html +/doc/html/boost_asio/reference/any_completion_handler_allocator_lt__void_comma__Signatures_ellipsis__gt_/ +/doc/html/boost_asio/reference/any_completion_handler_allocator_lt__void_comma__Signatures_ellipsis__gt_/any_completion_handler_allocator.html +/doc/html/boost_asio/reference/any_completion_handler_allocator_lt__void_comma__Signatures_ellipsis__gt_.html +/doc/html/boost_asio/reference/any_completion_handler_allocator_lt__void_comma__Signatures_ellipsis__gt_/operator_eq__eq_.html +/doc/html/boost_asio/reference/any_completion_handler_allocator_lt__void_comma__Signatures_ellipsis__gt_/operator_not__eq_.html +/doc/html/boost_asio/reference/any_completion_handler_allocator_lt__void_comma__Signatures_ellipsis__gt___rebind/ +/doc/html/boost_asio/reference/any_completion_handler_allocator_lt__void_comma__Signatures_ellipsis__gt___rebind.html +/doc/html/boost_asio/reference/any_completion_handler_allocator_lt__void_comma__Signatures_ellipsis__gt___rebind/other.html +/doc/html/boost_asio/reference/any_completion_handler_allocator_lt__void_comma__Signatures_ellipsis__gt_/value_type.html +/doc/html/boost_asio/reference/any_completion_handler_allocator/operator_eq__eq_.html +/doc/html/boost_asio/reference/any_completion_handler_allocator/operator_not__eq_.html +/doc/html/boost_asio/reference/any_completion_handler_allocator__rebind/ +/doc/html/boost_asio/reference/any_completion_handler_allocator__rebind.html +/doc/html/boost_asio/reference/any_completion_handler_allocator__rebind/other.html +/doc/html/boost_asio/reference/any_completion_handler_allocator/value_type.html +/doc/html/boost_asio/reference/any_completion_handler/any_completion_handler/ +/doc/html/boost_asio/reference/any_completion_handler/_any_completion_handler.html +/doc/html/boost_asio/reference/any_completion_handler/any_completion_handler.html +/doc/html/boost_asio/reference/any_completion_handler/any_completion_handler/overload1.html +/doc/html/boost_asio/reference/any_completion_handler/any_completion_handler/overload2.html +/doc/html/boost_asio/reference/any_completion_handler/any_completion_handler/overload3.html +/doc/html/boost_asio/reference/any_completion_handler/any_completion_handler/overload4.html +/doc/html/boost_asio/reference/any_completion_handler/get_allocator.html +/doc/html/boost_asio/reference/any_completion_handler/get_cancellation_slot.html +/doc/html/boost_asio/reference/any_completion_handler.html +/doc/html/boost_asio/reference/any_completion_handler/operator_bool.html +/doc/html/boost_asio/reference/any_completion_handler/operator_eq_/ +/doc/html/boost_asio/reference/any_completion_handler/operator_eq__eq_/ +/doc/html/boost_asio/reference/any_completion_handler/operator_eq__eq_.html +/doc/html/boost_asio/reference/any_completion_handler/operator_eq__eq_/overload1.html +/doc/html/boost_asio/reference/any_completion_handler/operator_eq__eq_/overload2.html +/doc/html/boost_asio/reference/any_completion_handler/operator_eq_.html +/doc/html/boost_asio/reference/any_completion_handler/operator_eq_/overload1.html +/doc/html/boost_asio/reference/any_completion_handler/operator_eq_/overload2.html +/doc/html/boost_asio/reference/any_completion_handler/operator_lp__rp_.html +/doc/html/boost_asio/reference/any_completion_handler/operator_not__eq_/ +/doc/html/boost_asio/reference/any_completion_handler/operator_not__eq_.html +/doc/html/boost_asio/reference/any_completion_handler/operator_not__eq_/overload1.html +/doc/html/boost_asio/reference/any_completion_handler/operator_not__eq_/overload2.html +/doc/html/boost_asio/reference/any_completion_handler/operator_not_.html +/doc/html/boost_asio/reference/any_completion_handler/swap.html +/doc/html/boost_asio/reference/any_io_executor/ +/doc/html/boost_asio/reference/any_io_executor/any_io_executor/ +/doc/html/boost_asio/reference/any_io_executor/_any_io_executor.html +/doc/html/boost_asio/reference/any_io_executor/any_io_executor.html +/doc/html/boost_asio/reference/any_io_executor/any_io_executor/overload10.html +/doc/html/boost_asio/reference/any_io_executor/any_io_executor/overload1.html +/doc/html/boost_asio/reference/any_io_executor/any_io_executor/overload2.html +/doc/html/boost_asio/reference/any_io_executor/any_io_executor/overload3.html +/doc/html/boost_asio/reference/any_io_executor/any_io_executor/overload4.html +/doc/html/boost_asio/reference/any_io_executor/any_io_executor/overload5.html +/doc/html/boost_asio/reference/any_io_executor/any_io_executor/overload6.html +/doc/html/boost_asio/reference/any_io_executor/any_io_executor/overload7.html +/doc/html/boost_asio/reference/any_io_executor/any_io_executor/overload8.html +/doc/html/boost_asio/reference/any_io_executor/any_io_executor/overload9.html +/doc/html/boost_asio/reference/any_io_executor/context.html +/doc/html/boost_asio/reference/any_io_executor/execute.html /doc/html/boost_asio/reference/any_io_executor.html +/doc/html/boost_asio/reference/any_io_executor/operator_bool.html +/doc/html/boost_asio/reference/any_io_executor/operator_eq_/ +/doc/html/boost_asio/reference/any_io_executor/operator_eq__eq_/ +/doc/html/boost_asio/reference/any_io_executor/operator_eq__eq_.html +/doc/html/boost_asio/reference/any_io_executor/operator_eq__eq_/overload1.html +/doc/html/boost_asio/reference/any_io_executor/operator_eq__eq_/overload2.html +/doc/html/boost_asio/reference/any_io_executor/operator_eq__eq_/overload3.html +/doc/html/boost_asio/reference/any_io_executor/operator_eq_.html +/doc/html/boost_asio/reference/any_io_executor/operator_eq_/overload1.html +/doc/html/boost_asio/reference/any_io_executor/operator_eq_/overload2.html +/doc/html/boost_asio/reference/any_io_executor/operator_eq_/overload3.html +/doc/html/boost_asio/reference/any_io_executor/operator_not__eq_/ +/doc/html/boost_asio/reference/any_io_executor/operator_not__eq_.html +/doc/html/boost_asio/reference/any_io_executor/operator_not__eq_/overload1.html +/doc/html/boost_asio/reference/any_io_executor/operator_not__eq_/overload2.html +/doc/html/boost_asio/reference/any_io_executor/operator_not__eq_/overload3.html +/doc/html/boost_asio/reference/any_io_executor/prefer/ +/doc/html/boost_asio/reference/any_io_executor/prefer.html +/doc/html/boost_asio/reference/any_io_executor/prefer/overload1.html +/doc/html/boost_asio/reference/any_io_executor/prefer/overload2.html +/doc/html/boost_asio/reference/any_io_executor/prefer/overload3.html +/doc/html/boost_asio/reference/any_io_executor/prefer/overload4.html +/doc/html/boost_asio/reference/any_io_executor/prefer/overload5.html +/doc/html/boost_asio/reference/any_io_executor/prefer/overload6.html +/doc/html/boost_asio/reference/any_io_executor/prefer/overload7.html +/doc/html/boost_asio/reference/any_io_executor/query.html +/doc/html/boost_asio/reference/any_io_executor/require/ +/doc/html/boost_asio/reference/any_io_executor/require.html +/doc/html/boost_asio/reference/any_io_executor/require/overload1.html +/doc/html/boost_asio/reference/any_io_executor/require/overload2.html +/doc/html/boost_asio/reference/any_io_executor/require/overload3.html +/doc/html/boost_asio/reference/any_io_executor/swap/ +/doc/html/boost_asio/reference/any_io_executor/swap.html +/doc/html/boost_asio/reference/any_io_executor/swap/overload1.html +/doc/html/boost_asio/reference/any_io_executor/swap/overload2.html +/doc/html/boost_asio/reference/any_io_executor/target/ +/doc/html/boost_asio/reference/any_io_executor/target.html +/doc/html/boost_asio/reference/any_io_executor/target/overload1.html +/doc/html/boost_asio/reference/any_io_executor/target/overload2.html +/doc/html/boost_asio/reference/any_io_executor/target_type.html +/doc/html/boost_asio/reference/append.html +/doc/html/boost_asio/reference/append_t/ +/doc/html/boost_asio/reference/append_t/append_t.html +/doc/html/boost_asio/reference/append_t.html +/doc/html/boost_asio/reference/append_t/token_.html +/doc/html/boost_asio/reference/append_t/values_.html /doc/html/boost_asio/reference/asio_handler_allocate.html /doc/html/boost_asio/reference/asio_handler_deallocate.html /doc/html/boost_asio/reference/asio_handler_invoke/ @@ -925,13 +1380,74 @@ /doc/html/boost_asio/reference/asio_handler_invoke/overload2.html /doc/html/boost_asio/reference/asio_handler_is_continuation.html /doc/html/boost_asio/reference/associated_allocator/ -/doc/html/boost_asio/reference/associated_allocator/get.html +/doc/html/boost_asio/reference/associated_allocator/decltype/ +/doc/html/boost_asio/reference/associated_allocator/decltype.html +/doc/html/boost_asio/reference/associated_allocator/decltype/overload1.html +/doc/html/boost_asio/reference/associated_allocator/decltype/overload2.html /doc/html/boost_asio/reference/associated_allocator.html +/doc/html/boost_asio/reference/associated_allocator_lt__reference_wrapper_lt__T__gt__comma__Allocator__gt_/ +/doc/html/boost_asio/reference/associated_allocator_lt__reference_wrapper_lt__T__gt__comma__Allocator__gt_/get/ +/doc/html/boost_asio/reference/associated_allocator_lt__reference_wrapper_lt__T__gt__comma__Allocator__gt_/get.html +/doc/html/boost_asio/reference/associated_allocator_lt__reference_wrapper_lt__T__gt__comma__Allocator__gt_/get/overload1.html +/doc/html/boost_asio/reference/associated_allocator_lt__reference_wrapper_lt__T__gt__comma__Allocator__gt_/get/overload2.html +/doc/html/boost_asio/reference/associated_allocator_lt__reference_wrapper_lt__T__gt__comma__Allocator__gt_.html +/doc/html/boost_asio/reference/associated_allocator_lt__reference_wrapper_lt__T__gt__comma__Allocator__gt_/type.html +/doc/html/boost_asio/reference/associated_allocator/noexcept.html /doc/html/boost_asio/reference/associated_allocator/type.html +/doc/html/boost_asio/reference/associated_cancellation_slot/ +/doc/html/boost_asio/reference/associated_cancellation_slot/decltype/ +/doc/html/boost_asio/reference/associated_cancellation_slot/decltype.html +/doc/html/boost_asio/reference/associated_cancellation_slot/decltype/overload1.html +/doc/html/boost_asio/reference/associated_cancellation_slot/decltype/overload2.html +/doc/html/boost_asio/reference/associated_cancellation_slot.html +/doc/html/boost_asio/reference/associated_cancellation_slot_lt__reference_wrapper_lt__T__gt__comma__CancellationSlot__gt_/ +/doc/html/boost_asio/reference/associated_cancellation_slot_lt__reference_wrapper_lt__T__gt__comma__CancellationSlot__gt_/get/ +/doc/html/boost_asio/reference/associated_cancellation_slot_lt__reference_wrapper_lt__T__gt__comma__CancellationSlot__gt_/get.html +/doc/html/boost_asio/reference/associated_cancellation_slot_lt__reference_wrapper_lt__T__gt__comma__CancellationSlot__gt_/get/overload1.html +/doc/html/boost_asio/reference/associated_cancellation_slot_lt__reference_wrapper_lt__T__gt__comma__CancellationSlot__gt_/get/overload2.html +/doc/html/boost_asio/reference/associated_cancellation_slot_lt__reference_wrapper_lt__T__gt__comma__CancellationSlot__gt_.html +/doc/html/boost_asio/reference/associated_cancellation_slot_lt__reference_wrapper_lt__T__gt__comma__CancellationSlot__gt_/type.html +/doc/html/boost_asio/reference/associated_cancellation_slot/noexcept.html +/doc/html/boost_asio/reference/associated_cancellation_slot/type.html /doc/html/boost_asio/reference/associated_executor/ -/doc/html/boost_asio/reference/associated_executor/get.html +/doc/html/boost_asio/reference/associated_executor/decltype/ +/doc/html/boost_asio/reference/associated_executor/decltype.html +/doc/html/boost_asio/reference/associated_executor/decltype/overload1.html +/doc/html/boost_asio/reference/associated_executor/decltype/overload2.html /doc/html/boost_asio/reference/associated_executor.html +/doc/html/boost_asio/reference/associated_executor_lt__reference_wrapper_lt__T__gt__comma__Executor__gt_/ +/doc/html/boost_asio/reference/associated_executor_lt__reference_wrapper_lt__T__gt__comma__Executor__gt_/get/ +/doc/html/boost_asio/reference/associated_executor_lt__reference_wrapper_lt__T__gt__comma__Executor__gt_/get.html +/doc/html/boost_asio/reference/associated_executor_lt__reference_wrapper_lt__T__gt__comma__Executor__gt_/get/overload1.html +/doc/html/boost_asio/reference/associated_executor_lt__reference_wrapper_lt__T__gt__comma__Executor__gt_/get/overload2.html +/doc/html/boost_asio/reference/associated_executor_lt__reference_wrapper_lt__T__gt__comma__Executor__gt_.html +/doc/html/boost_asio/reference/associated_executor_lt__reference_wrapper_lt__T__gt__comma__Executor__gt_/type.html +/doc/html/boost_asio/reference/associated_executor/noexcept.html /doc/html/boost_asio/reference/associated_executor/type.html +/doc/html/boost_asio/reference/associated_immediate_executor/ +/doc/html/boost_asio/reference/associated_immediate_executor/decltype.html +/doc/html/boost_asio/reference/associated_immediate_executor.html +/doc/html/boost_asio/reference/associated_immediate_executor_lt__reference_wrapper_lt__T__gt__comma__Executor__gt_/ +/doc/html/boost_asio/reference/associated_immediate_executor_lt__reference_wrapper_lt__T__gt__comma__Executor__gt_/get.html +/doc/html/boost_asio/reference/associated_immediate_executor_lt__reference_wrapper_lt__T__gt__comma__Executor__gt_.html +/doc/html/boost_asio/reference/associated_immediate_executor_lt__reference_wrapper_lt__T__gt__comma__Executor__gt_/type.html +/doc/html/boost_asio/reference/associated_immediate_executor/noexcept.html +/doc/html/boost_asio/reference/associated_immediate_executor/type.html +/doc/html/boost_asio/reference/associator.html +/doc/html/boost_asio/reference/as_tuple.html +/doc/html/boost_asio/reference/as_tuple_t/ +/doc/html/boost_asio/reference/as_tuple_t/as_default_on.html +/doc/html/boost_asio/reference/as_tuple_t/as_tuple_t/ +/doc/html/boost_asio/reference/as_tuple_t/as_tuple_t.html +/doc/html/boost_asio/reference/as_tuple_t/as_tuple_t/overload1.html +/doc/html/boost_asio/reference/as_tuple_t/as_tuple_t/overload2.html +/doc/html/boost_asio/reference/as_tuple_t__default_constructor_tag.html +/doc/html/boost_asio/reference/as_tuple_t__executor_with_default/ +/doc/html/boost_asio/reference/as_tuple_t__executor_with_default/default_completion_token_type.html +/doc/html/boost_asio/reference/as_tuple_t__executor_with_default/executor_with_default.html +/doc/html/boost_asio/reference/as_tuple_t__executor_with_default.html +/doc/html/boost_asio/reference/as_tuple_t.html +/doc/html/boost_asio/reference/as_tuple_t/token_.html /doc/html/boost_asio/reference/async_completion/ /doc/html/boost_asio/reference/async_completion/async_completion.html /doc/html/boost_asio/reference/async_completion/completion_handler.html @@ -989,6 +1505,11 @@ /doc/html/boost_asio/reference/async_result/get.html /doc/html/boost_asio/reference/async_result.html /doc/html/boost_asio/reference/async_result/initiate.html +/doc/html/boost_asio/reference/async_result_lt__basic_yield_context_lt__Executor__gt__comma__Signature__gt_/ +/doc/html/boost_asio/reference/async_result_lt__basic_yield_context_lt__Executor__gt__comma__Signature__gt_/handler_type.html +/doc/html/boost_asio/reference/async_result_lt__basic_yield_context_lt__Executor__gt__comma__Signature__gt_.html +/doc/html/boost_asio/reference/async_result_lt__basic_yield_context_lt__Executor__gt__comma__Signature__gt_/initiate.html +/doc/html/boost_asio/reference/async_result_lt__basic_yield_context_lt__Executor__gt__comma__Signature__gt_/return_type.html /doc/html/boost_asio/reference/async_result_lt__std__packaged_task_lt__Result_lp_Args_ellipsis__rp__gt__comma__Signature__gt_/ /doc/html/boost_asio/reference/async_result_lt__std__packaged_task_lt__Result_lp_Args_ellipsis__rp__gt__comma__Signature__gt_/async_result.html /doc/html/boost_asio/reference/async_result_lt__std__packaged_task_lt__Result_lp_Args_ellipsis__rp__gt__comma__Signature__gt_/completion_handler_type.html @@ -1021,6 +1542,7 @@ /doc/html/boost_asio/reference/awaitable/awaitable/overload2.html /doc/html/boost_asio/reference/awaitable/executor_type.html /doc/html/boost_asio/reference/awaitable.html +/doc/html/boost_asio/reference/awaitable/operator_eq_.html /doc/html/boost_asio/reference/awaitable/valid.html /doc/html/boost_asio/reference/awaitable/value_type.html /doc/html/boost_asio/reference/bad_executor/ @@ -1100,7 +1622,6 @@ /doc/html/boost_asio/reference/basic_datagram_socket/get_option/overload1.html /doc/html/boost_asio/reference/basic_datagram_socket/get_option/overload2.html /doc/html/boost_asio/reference/basic_datagram_socket.html -/doc/html/boost_asio/reference/basic_datagram_socket/impl_.html /doc/html/boost_asio/reference/basic_datagram_socket/io_control/ /doc/html/boost_asio/reference/basic_datagram_socket/io_control.html /doc/html/boost_asio/reference/basic_datagram_socket/io_control/overload1.html @@ -1240,6 +1761,81 @@ /doc/html/boost_asio/reference/basic_deadline_timer/wait.html /doc/html/boost_asio/reference/basic_deadline_timer/wait/overload1.html /doc/html/boost_asio/reference/basic_deadline_timer/wait/overload2.html +/doc/html/boost_asio/reference/basic_file/ +/doc/html/boost_asio/reference/basic_file/append.html +/doc/html/boost_asio/reference/basic_file/assign/ +/doc/html/boost_asio/reference/basic_file/assign.html +/doc/html/boost_asio/reference/basic_file/assign/overload1.html +/doc/html/boost_asio/reference/basic_file/assign/overload2.html +/doc/html/boost_asio/reference/basic_file/basic_file/ +/doc/html/boost_asio/reference/basic_file/_basic_file.html +/doc/html/boost_asio/reference/basic_file/basic_file.html +/doc/html/boost_asio/reference/basic_file/basic_file/overload10.html +/doc/html/boost_asio/reference/basic_file/basic_file/overload1.html +/doc/html/boost_asio/reference/basic_file/basic_file/overload2.html +/doc/html/boost_asio/reference/basic_file/basic_file/overload3.html +/doc/html/boost_asio/reference/basic_file/basic_file/overload4.html +/doc/html/boost_asio/reference/basic_file/basic_file/overload5.html +/doc/html/boost_asio/reference/basic_file/basic_file/overload6.html +/doc/html/boost_asio/reference/basic_file/basic_file/overload7.html +/doc/html/boost_asio/reference/basic_file/basic_file/overload8.html +/doc/html/boost_asio/reference/basic_file/basic_file/overload9.html +/doc/html/boost_asio/reference/basic_file/cancel/ +/doc/html/boost_asio/reference/basic_file/cancel.html +/doc/html/boost_asio/reference/basic_file/cancel/overload1.html +/doc/html/boost_asio/reference/basic_file/cancel/overload2.html +/doc/html/boost_asio/reference/basic_file/close/ +/doc/html/boost_asio/reference/basic_file/close.html +/doc/html/boost_asio/reference/basic_file/close/overload1.html +/doc/html/boost_asio/reference/basic_file/close/overload2.html +/doc/html/boost_asio/reference/basic_file/create.html +/doc/html/boost_asio/reference/basic_file/exclusive.html +/doc/html/boost_asio/reference/basic_file/executor_type.html +/doc/html/boost_asio/reference/basic_file/flags.html +/doc/html/boost_asio/reference/basic_file/get_executor.html +/doc/html/boost_asio/reference/basic_file.html +/doc/html/boost_asio/reference/basic_file/is_open.html +/doc/html/boost_asio/reference/basic_file/native_handle.html +/doc/html/boost_asio/reference/basic_file/native_handle_type.html +/doc/html/boost_asio/reference/basic_file/open/ +/doc/html/boost_asio/reference/basic_file/open.html +/doc/html/boost_asio/reference/basic_file/open/overload1.html +/doc/html/boost_asio/reference/basic_file/open/overload2.html +/doc/html/boost_asio/reference/basic_file/open/overload3.html +/doc/html/boost_asio/reference/basic_file/open/overload4.html +/doc/html/boost_asio/reference/basic_file/operator_eq_/ +/doc/html/boost_asio/reference/basic_file/operator_eq_.html +/doc/html/boost_asio/reference/basic_file/operator_eq_/overload1.html +/doc/html/boost_asio/reference/basic_file/operator_eq_/overload2.html +/doc/html/boost_asio/reference/basic_file/read_only.html +/doc/html/boost_asio/reference/basic_file/read_write.html +/doc/html/boost_asio/reference/basic_file__rebind_executor/ +/doc/html/boost_asio/reference/basic_file__rebind_executor.html +/doc/html/boost_asio/reference/basic_file__rebind_executor/other.html +/doc/html/boost_asio/reference/basic_file/release/ +/doc/html/boost_asio/reference/basic_file/release.html +/doc/html/boost_asio/reference/basic_file/release/overload1.html +/doc/html/boost_asio/reference/basic_file/release/overload2.html +/doc/html/boost_asio/reference/basic_file/resize/ +/doc/html/boost_asio/reference/basic_file/resize.html +/doc/html/boost_asio/reference/basic_file/resize/overload1.html +/doc/html/boost_asio/reference/basic_file/resize/overload2.html +/doc/html/boost_asio/reference/basic_file/seek_basis.html +/doc/html/boost_asio/reference/basic_file/size/ +/doc/html/boost_asio/reference/basic_file/size.html +/doc/html/boost_asio/reference/basic_file/size/overload1.html +/doc/html/boost_asio/reference/basic_file/size/overload2.html +/doc/html/boost_asio/reference/basic_file/sync_all/ +/doc/html/boost_asio/reference/basic_file/sync_all.html +/doc/html/boost_asio/reference/basic_file/sync_all_on_write.html +/doc/html/boost_asio/reference/basic_file/sync_all/overload1.html +/doc/html/boost_asio/reference/basic_file/sync_all/overload2.html +/doc/html/boost_asio/reference/basic_file/sync_data/ +/doc/html/boost_asio/reference/basic_file/sync_data.html +/doc/html/boost_asio/reference/basic_file/sync_data/overload1.html +/doc/html/boost_asio/reference/basic_file/sync_data/overload2.html +/doc/html/boost_asio/reference/basic_file/truncate.html +/doc/html/boost_asio/reference/basic_file/write_only.html /doc/html/boost_asio/reference/basic_io_object/ /doc/html/boost_asio/reference/basic_io_object/basic_io_object/ /doc/html/boost_asio/reference/basic_io_object/_basic_io_object.html @@ -1263,6 +1859,91 @@ /doc/html/boost_asio/reference/basic_io_object/implementation_type.html /doc/html/boost_asio/reference/basic_io_object/operator_eq_.html /doc/html/boost_asio/reference/basic_io_object/service_type.html +/doc/html/boost_asio/reference/basic_random_access_file/ +/doc/html/boost_asio/reference/basic_random_access_file/append.html +/doc/html/boost_asio/reference/basic_random_access_file/assign/ +/doc/html/boost_asio/reference/basic_random_access_file/assign.html +/doc/html/boost_asio/reference/basic_random_access_file/assign/overload1.html +/doc/html/boost_asio/reference/basic_random_access_file/assign/overload2.html +/doc/html/boost_asio/reference/basic_random_access_file/async_read_some_at.html +/doc/html/boost_asio/reference/basic_random_access_file/async_write_some_at.html +/doc/html/boost_asio/reference/basic_random_access_file/basic_random_access_file/ +/doc/html/boost_asio/reference/basic_random_access_file/_basic_random_access_file.html +/doc/html/boost_asio/reference/basic_random_access_file/basic_random_access_file.html +/doc/html/boost_asio/reference/basic_random_access_file/basic_random_access_file/overload10.html +/doc/html/boost_asio/reference/basic_random_access_file/basic_random_access_file/overload1.html +/doc/html/boost_asio/reference/basic_random_access_file/basic_random_access_file/overload2.html +/doc/html/boost_asio/reference/basic_random_access_file/basic_random_access_file/overload3.html +/doc/html/boost_asio/reference/basic_random_access_file/basic_random_access_file/overload4.html +/doc/html/boost_asio/reference/basic_random_access_file/basic_random_access_file/overload5.html +/doc/html/boost_asio/reference/basic_random_access_file/basic_random_access_file/overload6.html +/doc/html/boost_asio/reference/basic_random_access_file/basic_random_access_file/overload7.html +/doc/html/boost_asio/reference/basic_random_access_file/basic_random_access_file/overload8.html +/doc/html/boost_asio/reference/basic_random_access_file/basic_random_access_file/overload9.html +/doc/html/boost_asio/reference/basic_random_access_file/cancel/ +/doc/html/boost_asio/reference/basic_random_access_file/cancel.html +/doc/html/boost_asio/reference/basic_random_access_file/cancel/overload1.html +/doc/html/boost_asio/reference/basic_random_access_file/cancel/overload2.html +/doc/html/boost_asio/reference/basic_random_access_file/close/ +/doc/html/boost_asio/reference/basic_random_access_file/close.html +/doc/html/boost_asio/reference/basic_random_access_file/close/overload1.html +/doc/html/boost_asio/reference/basic_random_access_file/close/overload2.html +/doc/html/boost_asio/reference/basic_random_access_file/create.html +/doc/html/boost_asio/reference/basic_random_access_file/exclusive.html +/doc/html/boost_asio/reference/basic_random_access_file/executor_type.html +/doc/html/boost_asio/reference/basic_random_access_file/flags.html +/doc/html/boost_asio/reference/basic_random_access_file/get_executor.html +/doc/html/boost_asio/reference/basic_random_access_file.html +/doc/html/boost_asio/reference/basic_random_access_file/is_open.html +/doc/html/boost_asio/reference/basic_random_access_file/native_handle.html +/doc/html/boost_asio/reference/basic_random_access_file/native_handle_type.html +/doc/html/boost_asio/reference/basic_random_access_file/open/ +/doc/html/boost_asio/reference/basic_random_access_file/open.html +/doc/html/boost_asio/reference/basic_random_access_file/open/overload1.html +/doc/html/boost_asio/reference/basic_random_access_file/open/overload2.html +/doc/html/boost_asio/reference/basic_random_access_file/open/overload3.html +/doc/html/boost_asio/reference/basic_random_access_file/open/overload4.html +/doc/html/boost_asio/reference/basic_random_access_file/operator_eq_/ +/doc/html/boost_asio/reference/basic_random_access_file/operator_eq_.html +/doc/html/boost_asio/reference/basic_random_access_file/operator_eq_/overload1.html +/doc/html/boost_asio/reference/basic_random_access_file/operator_eq_/overload2.html +/doc/html/boost_asio/reference/basic_random_access_file/read_only.html +/doc/html/boost_asio/reference/basic_random_access_file/read_some_at/ +/doc/html/boost_asio/reference/basic_random_access_file/read_some_at.html +/doc/html/boost_asio/reference/basic_random_access_file/read_some_at/overload1.html +/doc/html/boost_asio/reference/basic_random_access_file/read_some_at/overload2.html +/doc/html/boost_asio/reference/basic_random_access_file/read_write.html +/doc/html/boost_asio/reference/basic_random_access_file__rebind_executor/ +/doc/html/boost_asio/reference/basic_random_access_file__rebind_executor.html +/doc/html/boost_asio/reference/basic_random_access_file__rebind_executor/other.html +/doc/html/boost_asio/reference/basic_random_access_file/release/ +/doc/html/boost_asio/reference/basic_random_access_file/release.html +/doc/html/boost_asio/reference/basic_random_access_file/release/overload1.html +/doc/html/boost_asio/reference/basic_random_access_file/release/overload2.html +/doc/html/boost_asio/reference/basic_random_access_file/resize/ +/doc/html/boost_asio/reference/basic_random_access_file/resize.html +/doc/html/boost_asio/reference/basic_random_access_file/resize/overload1.html +/doc/html/boost_asio/reference/basic_random_access_file/resize/overload2.html +/doc/html/boost_asio/reference/basic_random_access_file/seek_basis.html +/doc/html/boost_asio/reference/basic_random_access_file/size/ +/doc/html/boost_asio/reference/basic_random_access_file/size.html +/doc/html/boost_asio/reference/basic_random_access_file/size/overload1.html +/doc/html/boost_asio/reference/basic_random_access_file/size/overload2.html +/doc/html/boost_asio/reference/basic_random_access_file/sync_all/ +/doc/html/boost_asio/reference/basic_random_access_file/sync_all.html +/doc/html/boost_asio/reference/basic_random_access_file/sync_all_on_write.html +/doc/html/boost_asio/reference/basic_random_access_file/sync_all/overload1.html +/doc/html/boost_asio/reference/basic_random_access_file/sync_all/overload2.html +/doc/html/boost_asio/reference/basic_random_access_file/sync_data/ +/doc/html/boost_asio/reference/basic_random_access_file/sync_data.html +/doc/html/boost_asio/reference/basic_random_access_file/sync_data/overload1.html +/doc/html/boost_asio/reference/basic_random_access_file/sync_data/overload2.html +/doc/html/boost_asio/reference/basic_random_access_file/truncate.html +/doc/html/boost_asio/reference/basic_random_access_file/write_only.html +/doc/html/boost_asio/reference/basic_random_access_file/write_some_at/ +/doc/html/boost_asio/reference/basic_random_access_file/write_some_at.html +/doc/html/boost_asio/reference/basic_random_access_file/write_some_at/overload1.html +/doc/html/boost_asio/reference/basic_random_access_file/write_some_at/overload2.html /doc/html/boost_asio/reference/basic_raw_socket/ /doc/html/boost_asio/reference/basic_raw_socket/assign/ /doc/html/boost_asio/reference/basic_raw_socket/assign.html @@ -1336,7 +2017,6 @@ /doc/html/boost_asio/reference/basic_raw_socket/get_option/overload1.html /doc/html/boost_asio/reference/basic_raw_socket/get_option/overload2.html /doc/html/boost_asio/reference/basic_raw_socket.html -/doc/html/boost_asio/reference/basic_raw_socket/impl_.html /doc/html/boost_asio/reference/basic_raw_socket/io_control/ /doc/html/boost_asio/reference/basic_raw_socket/io_control.html /doc/html/boost_asio/reference/basic_raw_socket/io_control/overload1.html @@ -1432,6 +2112,55 @@ /doc/html/boost_asio/reference/basic_raw_socket/wait/overload1.html /doc/html/boost_asio/reference/basic_raw_socket/wait/overload2.html /doc/html/boost_asio/reference/basic_raw_socket/wait_type.html +/doc/html/boost_asio/reference/basic_readable_pipe/ +/doc/html/boost_asio/reference/basic_readable_pipe/assign/ +/doc/html/boost_asio/reference/basic_readable_pipe/assign.html +/doc/html/boost_asio/reference/basic_readable_pipe/assign/overload1.html +/doc/html/boost_asio/reference/basic_readable_pipe/assign/overload2.html +/doc/html/boost_asio/reference/basic_readable_pipe/async_read_some.html +/doc/html/boost_asio/reference/basic_readable_pipe/basic_readable_pipe/ +/doc/html/boost_asio/reference/basic_readable_pipe/_basic_readable_pipe.html +/doc/html/boost_asio/reference/basic_readable_pipe/basic_readable_pipe.html +/doc/html/boost_asio/reference/basic_readable_pipe/basic_readable_pipe/overload1.html +/doc/html/boost_asio/reference/basic_readable_pipe/basic_readable_pipe/overload2.html +/doc/html/boost_asio/reference/basic_readable_pipe/basic_readable_pipe/overload3.html +/doc/html/boost_asio/reference/basic_readable_pipe/basic_readable_pipe/overload4.html +/doc/html/boost_asio/reference/basic_readable_pipe/basic_readable_pipe/overload5.html +/doc/html/boost_asio/reference/basic_readable_pipe/basic_readable_pipe/overload6.html +/doc/html/boost_asio/reference/basic_readable_pipe/cancel/ +/doc/html/boost_asio/reference/basic_readable_pipe/cancel.html +/doc/html/boost_asio/reference/basic_readable_pipe/cancel/overload1.html +/doc/html/boost_asio/reference/basic_readable_pipe/cancel/overload2.html +/doc/html/boost_asio/reference/basic_readable_pipe/close/ +/doc/html/boost_asio/reference/basic_readable_pipe/close.html +/doc/html/boost_asio/reference/basic_readable_pipe/close/overload1.html +/doc/html/boost_asio/reference/basic_readable_pipe/close/overload2.html +/doc/html/boost_asio/reference/basic_readable_pipe/executor_type.html +/doc/html/boost_asio/reference/basic_readable_pipe/get_executor.html +/doc/html/boost_asio/reference/basic_readable_pipe.html +/doc/html/boost_asio/reference/basic_readable_pipe/is_open.html +/doc/html/boost_asio/reference/basic_readable_pipe/lowest_layer/ +/doc/html/boost_asio/reference/basic_readable_pipe/lowest_layer.html +/doc/html/boost_asio/reference/basic_readable_pipe/lowest_layer/overload1.html +/doc/html/boost_asio/reference/basic_readable_pipe/lowest_layer/overload2.html +/doc/html/boost_asio/reference/basic_readable_pipe/lowest_layer_type.html +/doc/html/boost_asio/reference/basic_readable_pipe/native_handle.html +/doc/html/boost_asio/reference/basic_readable_pipe/native_handle_type.html +/doc/html/boost_asio/reference/basic_readable_pipe/operator_eq_/ +/doc/html/boost_asio/reference/basic_readable_pipe/operator_eq_.html +/doc/html/boost_asio/reference/basic_readable_pipe/operator_eq_/overload1.html +/doc/html/boost_asio/reference/basic_readable_pipe/operator_eq_/overload2.html +/doc/html/boost_asio/reference/basic_readable_pipe/read_some/ +/doc/html/boost_asio/reference/basic_readable_pipe/read_some.html +/doc/html/boost_asio/reference/basic_readable_pipe/read_some/overload1.html +/doc/html/boost_asio/reference/basic_readable_pipe/read_some/overload2.html +/doc/html/boost_asio/reference/basic_readable_pipe__rebind_executor/ +/doc/html/boost_asio/reference/basic_readable_pipe__rebind_executor.html +/doc/html/boost_asio/reference/basic_readable_pipe__rebind_executor/other.html +/doc/html/boost_asio/reference/basic_readable_pipe/release/ +/doc/html/boost_asio/reference/basic_readable_pipe/release.html +/doc/html/boost_asio/reference/basic_readable_pipe/release/overload1.html +/doc/html/boost_asio/reference/basic_readable_pipe/release/overload2.html /doc/html/boost_asio/reference/basic_seq_packet_socket/ /doc/html/boost_asio/reference/basic_seq_packet_socket/assign/ /doc/html/boost_asio/reference/basic_seq_packet_socket/assign.html @@ -1494,7 +2223,6 @@ /doc/html/boost_asio/reference/basic_seq_packet_socket/get_option/overload1.html /doc/html/boost_asio/reference/basic_seq_packet_socket/get_option/overload2.html /doc/html/boost_asio/reference/basic_seq_packet_socket.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/impl_.html /doc/html/boost_asio/reference/basic_seq_packet_socket/io_control/ /doc/html/boost_asio/reference/basic_seq_packet_socket/io_control.html /doc/html/boost_asio/reference/basic_seq_packet_socket/io_control/overload1.html @@ -1589,6 +2317,7 @@ /doc/html/boost_asio/reference/basic_serial_port/basic_serial_port/ /doc/html/boost_asio/reference/basic_serial_port/_basic_serial_port.html /doc/html/boost_asio/reference/basic_serial_port/basic_serial_port.html +/doc/html/boost_asio/reference/basic_serial_port/basic_serial_port/overload10.html /doc/html/boost_asio/reference/basic_serial_port/basic_serial_port/overload1.html /doc/html/boost_asio/reference/basic_serial_port/basic_serial_port/overload2.html /doc/html/boost_asio/reference/basic_serial_port/basic_serial_port/overload3.html @@ -1625,7 +2354,10 @@ /doc/html/boost_asio/reference/basic_serial_port/open.html /doc/html/boost_asio/reference/basic_serial_port/open/overload1.html /doc/html/boost_asio/reference/basic_serial_port/open/overload2.html +/doc/html/boost_asio/reference/basic_serial_port/operator_eq_/ /doc/html/boost_asio/reference/basic_serial_port/operator_eq_.html +/doc/html/boost_asio/reference/basic_serial_port/operator_eq_/overload1.html +/doc/html/boost_asio/reference/basic_serial_port/operator_eq_/overload2.html /doc/html/boost_asio/reference/basic_serial_port/read_some/ /doc/html/boost_asio/reference/basic_serial_port/read_some.html /doc/html/boost_asio/reference/basic_serial_port/read_some/overload1.html @@ -1650,6 +2382,8 @@ /doc/html/boost_asio/reference/basic_signal_set/add.html /doc/html/boost_asio/reference/basic_signal_set/add/overload1.html /doc/html/boost_asio/reference/basic_signal_set/add/overload2.html +/doc/html/boost_asio/reference/basic_signal_set/add/overload3.html +/doc/html/boost_asio/reference/basic_signal_set/add/overload4.html /doc/html/boost_asio/reference/basic_signal_set/async_wait.html /doc/html/boost_asio/reference/basic_signal_set/basic_signal_set/ /doc/html/boost_asio/reference/basic_signal_set/_basic_signal_set.html @@ -1671,6 +2405,8 @@ /doc/html/boost_asio/reference/basic_signal_set/clear/overload1.html /doc/html/boost_asio/reference/basic_signal_set/clear/overload2.html /doc/html/boost_asio/reference/basic_signal_set/executor_type.html +/doc/html/boost_asio/reference/basic_signal_set/flags.html +/doc/html/boost_asio/reference/basic_signal_set/flags_t.html /doc/html/boost_asio/reference/basic_signal_set/get_executor.html /doc/html/boost_asio/reference/basic_signal_set.html /doc/html/boost_asio/reference/basic_signal_set__rebind_executor/ @@ -1875,7 +2611,6 @@ /doc/html/boost_asio/reference/basic_socket/get_option/overload1.html /doc/html/boost_asio/reference/basic_socket/get_option/overload2.html /doc/html/boost_asio/reference/basic_socket.html -/doc/html/boost_asio/reference/basic_socket/impl_.html /doc/html/boost_asio/reference/basic_socket/io_control/ /doc/html/boost_asio/reference/basic_socket/io_control.html /doc/html/boost_asio/reference/basic_socket/io_control/overload1.html @@ -2051,6 +2786,95 @@ /doc/html/boost_asio/reference/basic_streambuf/reserve.html /doc/html/boost_asio/reference/basic_streambuf/size.html /doc/html/boost_asio/reference/basic_streambuf/underflow.html +/doc/html/boost_asio/reference/basic_stream_file/ +/doc/html/boost_asio/reference/basic_stream_file/append.html +/doc/html/boost_asio/reference/basic_stream_file/assign/ +/doc/html/boost_asio/reference/basic_stream_file/assign.html +/doc/html/boost_asio/reference/basic_stream_file/assign/overload1.html +/doc/html/boost_asio/reference/basic_stream_file/assign/overload2.html +/doc/html/boost_asio/reference/basic_stream_file/async_read_some.html +/doc/html/boost_asio/reference/basic_stream_file/async_write_some.html +/doc/html/boost_asio/reference/basic_stream_file/basic_stream_file/ +/doc/html/boost_asio/reference/basic_stream_file/_basic_stream_file.html +/doc/html/boost_asio/reference/basic_stream_file/basic_stream_file.html +/doc/html/boost_asio/reference/basic_stream_file/basic_stream_file/overload10.html +/doc/html/boost_asio/reference/basic_stream_file/basic_stream_file/overload1.html +/doc/html/boost_asio/reference/basic_stream_file/basic_stream_file/overload2.html +/doc/html/boost_asio/reference/basic_stream_file/basic_stream_file/overload3.html +/doc/html/boost_asio/reference/basic_stream_file/basic_stream_file/overload4.html +/doc/html/boost_asio/reference/basic_stream_file/basic_stream_file/overload5.html +/doc/html/boost_asio/reference/basic_stream_file/basic_stream_file/overload6.html +/doc/html/boost_asio/reference/basic_stream_file/basic_stream_file/overload7.html +/doc/html/boost_asio/reference/basic_stream_file/basic_stream_file/overload8.html +/doc/html/boost_asio/reference/basic_stream_file/basic_stream_file/overload9.html +/doc/html/boost_asio/reference/basic_stream_file/cancel/ +/doc/html/boost_asio/reference/basic_stream_file/cancel.html +/doc/html/boost_asio/reference/basic_stream_file/cancel/overload1.html +/doc/html/boost_asio/reference/basic_stream_file/cancel/overload2.html +/doc/html/boost_asio/reference/basic_stream_file/close/ +/doc/html/boost_asio/reference/basic_stream_file/close.html +/doc/html/boost_asio/reference/basic_stream_file/close/overload1.html +/doc/html/boost_asio/reference/basic_stream_file/close/overload2.html +/doc/html/boost_asio/reference/basic_stream_file/create.html +/doc/html/boost_asio/reference/basic_stream_file/exclusive.html +/doc/html/boost_asio/reference/basic_stream_file/executor_type.html +/doc/html/boost_asio/reference/basic_stream_file/flags.html +/doc/html/boost_asio/reference/basic_stream_file/get_executor.html +/doc/html/boost_asio/reference/basic_stream_file.html +/doc/html/boost_asio/reference/basic_stream_file/is_open.html +/doc/html/boost_asio/reference/basic_stream_file/native_handle.html +/doc/html/boost_asio/reference/basic_stream_file/native_handle_type.html +/doc/html/boost_asio/reference/basic_stream_file/open/ +/doc/html/boost_asio/reference/basic_stream_file/open.html +/doc/html/boost_asio/reference/basic_stream_file/open/overload1.html +/doc/html/boost_asio/reference/basic_stream_file/open/overload2.html +/doc/html/boost_asio/reference/basic_stream_file/open/overload3.html +/doc/html/boost_asio/reference/basic_stream_file/open/overload4.html +/doc/html/boost_asio/reference/basic_stream_file/operator_eq_/ +/doc/html/boost_asio/reference/basic_stream_file/operator_eq_.html +/doc/html/boost_asio/reference/basic_stream_file/operator_eq_/overload1.html +/doc/html/boost_asio/reference/basic_stream_file/operator_eq_/overload2.html +/doc/html/boost_asio/reference/basic_stream_file/read_only.html +/doc/html/boost_asio/reference/basic_stream_file/read_some/ +/doc/html/boost_asio/reference/basic_stream_file/read_some.html +/doc/html/boost_asio/reference/basic_stream_file/read_some/overload1.html +/doc/html/boost_asio/reference/basic_stream_file/read_some/overload2.html +/doc/html/boost_asio/reference/basic_stream_file/read_write.html +/doc/html/boost_asio/reference/basic_stream_file__rebind_executor/ +/doc/html/boost_asio/reference/basic_stream_file__rebind_executor.html +/doc/html/boost_asio/reference/basic_stream_file__rebind_executor/other.html +/doc/html/boost_asio/reference/basic_stream_file/release/ +/doc/html/boost_asio/reference/basic_stream_file/release.html +/doc/html/boost_asio/reference/basic_stream_file/release/overload1.html +/doc/html/boost_asio/reference/basic_stream_file/release/overload2.html +/doc/html/boost_asio/reference/basic_stream_file/resize/ +/doc/html/boost_asio/reference/basic_stream_file/resize.html +/doc/html/boost_asio/reference/basic_stream_file/resize/overload1.html +/doc/html/boost_asio/reference/basic_stream_file/resize/overload2.html +/doc/html/boost_asio/reference/basic_stream_file/seek/ +/doc/html/boost_asio/reference/basic_stream_file/seek_basis.html +/doc/html/boost_asio/reference/basic_stream_file/seek.html +/doc/html/boost_asio/reference/basic_stream_file/seek/overload1.html +/doc/html/boost_asio/reference/basic_stream_file/seek/overload2.html +/doc/html/boost_asio/reference/basic_stream_file/size/ +/doc/html/boost_asio/reference/basic_stream_file/size.html +/doc/html/boost_asio/reference/basic_stream_file/size/overload1.html +/doc/html/boost_asio/reference/basic_stream_file/size/overload2.html +/doc/html/boost_asio/reference/basic_stream_file/sync_all/ +/doc/html/boost_asio/reference/basic_stream_file/sync_all.html +/doc/html/boost_asio/reference/basic_stream_file/sync_all_on_write.html +/doc/html/boost_asio/reference/basic_stream_file/sync_all/overload1.html +/doc/html/boost_asio/reference/basic_stream_file/sync_all/overload2.html +/doc/html/boost_asio/reference/basic_stream_file/sync_data/ +/doc/html/boost_asio/reference/basic_stream_file/sync_data.html +/doc/html/boost_asio/reference/basic_stream_file/sync_data/overload1.html +/doc/html/boost_asio/reference/basic_stream_file/sync_data/overload2.html +/doc/html/boost_asio/reference/basic_stream_file/truncate.html +/doc/html/boost_asio/reference/basic_stream_file/write_only.html +/doc/html/boost_asio/reference/basic_stream_file/write_some/ +/doc/html/boost_asio/reference/basic_stream_file/write_some.html +/doc/html/boost_asio/reference/basic_stream_file/write_some/overload1.html +/doc/html/boost_asio/reference/basic_stream_file/write_some/overload2.html /doc/html/boost_asio/reference/basic_stream_socket/ /doc/html/boost_asio/reference/basic_stream_socket/assign/ /doc/html/boost_asio/reference/basic_stream_socket/assign.html @@ -2118,7 +2942,6 @@ /doc/html/boost_asio/reference/basic_stream_socket/get_option/overload1.html /doc/html/boost_asio/reference/basic_stream_socket/get_option/overload2.html /doc/html/boost_asio/reference/basic_stream_socket.html -/doc/html/boost_asio/reference/basic_stream_socket/impl_.html /doc/html/boost_asio/reference/basic_stream_socket/io_control/ /doc/html/boost_asio/reference/basic_stream_socket/io_control.html /doc/html/boost_asio/reference/basic_stream_socket/io_control/overload1.html @@ -2295,19 +3118,81 @@ /doc/html/boost_asio/reference/basic_waitable_timer/wait.html /doc/html/boost_asio/reference/basic_waitable_timer/wait/overload1.html /doc/html/boost_asio/reference/basic_waitable_timer/wait/overload2.html +/doc/html/boost_asio/reference/basic_writable_pipe/ +/doc/html/boost_asio/reference/basic_writable_pipe/assign/ +/doc/html/boost_asio/reference/basic_writable_pipe/assign.html +/doc/html/boost_asio/reference/basic_writable_pipe/assign/overload1.html +/doc/html/boost_asio/reference/basic_writable_pipe/assign/overload2.html +/doc/html/boost_asio/reference/basic_writable_pipe/async_write_some.html +/doc/html/boost_asio/reference/basic_writable_pipe/basic_writable_pipe/ +/doc/html/boost_asio/reference/basic_writable_pipe/_basic_writable_pipe.html +/doc/html/boost_asio/reference/basic_writable_pipe/basic_writable_pipe.html +/doc/html/boost_asio/reference/basic_writable_pipe/basic_writable_pipe/overload1.html +/doc/html/boost_asio/reference/basic_writable_pipe/basic_writable_pipe/overload2.html +/doc/html/boost_asio/reference/basic_writable_pipe/basic_writable_pipe/overload3.html +/doc/html/boost_asio/reference/basic_writable_pipe/basic_writable_pipe/overload4.html +/doc/html/boost_asio/reference/basic_writable_pipe/basic_writable_pipe/overload5.html +/doc/html/boost_asio/reference/basic_writable_pipe/basic_writable_pipe/overload6.html +/doc/html/boost_asio/reference/basic_writable_pipe/cancel/ +/doc/html/boost_asio/reference/basic_writable_pipe/cancel.html +/doc/html/boost_asio/reference/basic_writable_pipe/cancel/overload1.html +/doc/html/boost_asio/reference/basic_writable_pipe/cancel/overload2.html +/doc/html/boost_asio/reference/basic_writable_pipe/close/ +/doc/html/boost_asio/reference/basic_writable_pipe/close.html +/doc/html/boost_asio/reference/basic_writable_pipe/close/overload1.html +/doc/html/boost_asio/reference/basic_writable_pipe/close/overload2.html +/doc/html/boost_asio/reference/basic_writable_pipe/executor_type.html +/doc/html/boost_asio/reference/basic_writable_pipe/get_executor.html +/doc/html/boost_asio/reference/basic_writable_pipe.html +/doc/html/boost_asio/reference/basic_writable_pipe/is_open.html +/doc/html/boost_asio/reference/basic_writable_pipe/lowest_layer/ +/doc/html/boost_asio/reference/basic_writable_pipe/lowest_layer.html +/doc/html/boost_asio/reference/basic_writable_pipe/lowest_layer/overload1.html +/doc/html/boost_asio/reference/basic_writable_pipe/lowest_layer/overload2.html +/doc/html/boost_asio/reference/basic_writable_pipe/lowest_layer_type.html +/doc/html/boost_asio/reference/basic_writable_pipe/native_handle.html +/doc/html/boost_asio/reference/basic_writable_pipe/native_handle_type.html +/doc/html/boost_asio/reference/basic_writable_pipe/operator_eq_/ +/doc/html/boost_asio/reference/basic_writable_pipe/operator_eq_.html +/doc/html/boost_asio/reference/basic_writable_pipe/operator_eq_/overload1.html +/doc/html/boost_asio/reference/basic_writable_pipe/operator_eq_/overload2.html +/doc/html/boost_asio/reference/basic_writable_pipe__rebind_executor/ +/doc/html/boost_asio/reference/basic_writable_pipe__rebind_executor.html +/doc/html/boost_asio/reference/basic_writable_pipe__rebind_executor/other.html +/doc/html/boost_asio/reference/basic_writable_pipe/release/ +/doc/html/boost_asio/reference/basic_writable_pipe/release.html +/doc/html/boost_asio/reference/basic_writable_pipe/release/overload1.html +/doc/html/boost_asio/reference/basic_writable_pipe/release/overload2.html +/doc/html/boost_asio/reference/basic_writable_pipe/write_some/ +/doc/html/boost_asio/reference/basic_writable_pipe/write_some.html +/doc/html/boost_asio/reference/basic_writable_pipe/write_some/overload1.html +/doc/html/boost_asio/reference/basic_writable_pipe/write_some/overload2.html /doc/html/boost_asio/reference/basic_yield_context/ -/doc/html/boost_asio/reference/basic_yield_context/basic_yield_context/ /doc/html/boost_asio/reference/basic_yield_context/basic_yield_context.html -/doc/html/boost_asio/reference/basic_yield_context/basic_yield_context/overload1.html -/doc/html/boost_asio/reference/basic_yield_context/basic_yield_context/overload2.html -/doc/html/boost_asio/reference/basic_yield_context/callee_type.html -/doc/html/boost_asio/reference/basic_yield_context/caller_type.html +/doc/html/boost_asio/reference/basic_yield_context/cancellation_slot_type.html +/doc/html/boost_asio/reference/basic_yield_context/cancelled.html +/doc/html/boost_asio/reference/basic_yield_context/executor_type.html +/doc/html/boost_asio/reference/basic_yield_context/get_cancellation_slot.html +/doc/html/boost_asio/reference/basic_yield_context/get_cancellation_state.html +/doc/html/boost_asio/reference/basic_yield_context/get_executor.html /doc/html/boost_asio/reference/basic_yield_context.html /doc/html/boost_asio/reference/basic_yield_context/operator_lb__rb_.html +/doc/html/boost_asio/reference/basic_yield_context/reset_cancellation_state/ +/doc/html/boost_asio/reference/basic_yield_context/reset_cancellation_state.html +/doc/html/boost_asio/reference/basic_yield_context/reset_cancellation_state/overload1.html +/doc/html/boost_asio/reference/basic_yield_context/reset_cancellation_state/overload2.html +/doc/html/boost_asio/reference/basic_yield_context/reset_cancellation_state/overload3.html +/doc/html/boost_asio/reference/basic_yield_context/throw_if_cancelled/ +/doc/html/boost_asio/reference/basic_yield_context/throw_if_cancelled.html +/doc/html/boost_asio/reference/basic_yield_context/throw_if_cancelled/overload1.html +/doc/html/boost_asio/reference/basic_yield_context/throw_if_cancelled/overload2.html +/doc/html/boost_asio/reference/bind_allocator.html +/doc/html/boost_asio/reference/bind_cancellation_slot.html /doc/html/boost_asio/reference/bind_executor/ /doc/html/boost_asio/reference/bind_executor.html /doc/html/boost_asio/reference/bind_executor/overload1.html /doc/html/boost_asio/reference/bind_executor/overload2.html +/doc/html/boost_asio/reference/bind_immediate_executor.html /doc/html/boost_asio/reference/buffer/ /doc/html/boost_asio/reference/buffer_cast/ /doc/html/boost_asio/reference/buffer_cast.html @@ -2318,6 +3203,7 @@ /doc/html/boost_asio/reference/buffer_copy/overload1.html /doc/html/boost_asio/reference/buffer_copy/overload2.html /doc/html/boost_asio/reference/BufferedHandshakeHandler.html +/doc/html/boost_asio/reference/BufferedHandshakeToken.html /doc/html/boost_asio/reference/buffered_read_stream/ /doc/html/boost_asio/reference/buffered_read_stream/async_fill.html /doc/html/boost_asio/reference/buffered_read_stream/async_read_some.html @@ -2452,6 +3338,10 @@ /doc/html/boost_asio/reference/buffered_write_stream/write_some/overload1.html /doc/html/boost_asio/reference/buffered_write_stream/write_some/overload2.html /doc/html/boost_asio/reference/buffer.html +/doc/html/boost_asio/reference/buffer_literals__operator_quot__quot__buf/ +/doc/html/boost_asio/reference/buffer_literals__operator_quot__quot__buf.html +/doc/html/boost_asio/reference/buffer_literals__operator_quot__quot__buf/overload1.html +/doc/html/boost_asio/reference/buffer_literals__operator_quot__quot__buf/overload2.html /doc/html/boost_asio/reference/buffer/overload10.html /doc/html/boost_asio/reference/buffer/overload11.html /doc/html/boost_asio/reference/buffer/overload12.html @@ -2477,13 +3367,42 @@ /doc/html/boost_asio/reference/buffer/overload30.html /doc/html/boost_asio/reference/buffer/overload31.html /doc/html/boost_asio/reference/buffer/overload32.html +/doc/html/boost_asio/reference/buffer/overload33.html +/doc/html/boost_asio/reference/buffer/overload34.html +/doc/html/boost_asio/reference/buffer/overload35.html +/doc/html/boost_asio/reference/buffer/overload36.html +/doc/html/boost_asio/reference/buffer/overload37.html +/doc/html/boost_asio/reference/buffer/overload38.html +/doc/html/boost_asio/reference/buffer/overload39.html /doc/html/boost_asio/reference/buffer/overload3.html +/doc/html/boost_asio/reference/buffer/overload40.html +/doc/html/boost_asio/reference/buffer/overload41.html +/doc/html/boost_asio/reference/buffer/overload42.html /doc/html/boost_asio/reference/buffer/overload4.html /doc/html/boost_asio/reference/buffer/overload5.html /doc/html/boost_asio/reference/buffer/overload6.html /doc/html/boost_asio/reference/buffer/overload7.html /doc/html/boost_asio/reference/buffer/overload8.html /doc/html/boost_asio/reference/buffer/overload9.html +/doc/html/boost_asio/reference/buffer_registration/ +/doc/html/boost_asio/reference/buffer_registration/allocator_type.html +/doc/html/boost_asio/reference/buffer_registration/at.html +/doc/html/boost_asio/reference/buffer_registration/begin.html +/doc/html/boost_asio/reference/buffer_registration/buffer_registration/ +/doc/html/boost_asio/reference/buffer_registration/_buffer_registration.html +/doc/html/boost_asio/reference/buffer_registration/buffer_registration.html +/doc/html/boost_asio/reference/buffer_registration/buffer_registration/overload1.html +/doc/html/boost_asio/reference/buffer_registration/buffer_registration/overload2.html +/doc/html/boost_asio/reference/buffer_registration/buffer_registration/overload3.html +/doc/html/boost_asio/reference/buffer_registration/cbegin.html +/doc/html/boost_asio/reference/buffer_registration/cend.html +/doc/html/boost_asio/reference/buffer_registration/const_iterator.html +/doc/html/boost_asio/reference/buffer_registration/end.html +/doc/html/boost_asio/reference/buffer_registration.html +/doc/html/boost_asio/reference/buffer_registration/iterator.html +/doc/html/boost_asio/reference/buffer_registration/operator_eq_.html +/doc/html/boost_asio/reference/buffer_registration/operator_lb__rb_.html +/doc/html/boost_asio/reference/buffer_registration/size.html /doc/html/boost_asio/reference/buffers_begin.html /doc/html/boost_asio/reference/buffers_end.html /doc/html/boost_asio/reference/buffer_sequence_begin/ @@ -2492,12 +3411,16 @@ /doc/html/boost_asio/reference/buffer_sequence_begin/overload2.html /doc/html/boost_asio/reference/buffer_sequence_begin/overload3.html /doc/html/boost_asio/reference/buffer_sequence_begin/overload4.html +/doc/html/boost_asio/reference/buffer_sequence_begin/overload5.html +/doc/html/boost_asio/reference/buffer_sequence_begin/overload6.html /doc/html/boost_asio/reference/buffer_sequence_end/ /doc/html/boost_asio/reference/buffer_sequence_end.html /doc/html/boost_asio/reference/buffer_sequence_end/overload1.html /doc/html/boost_asio/reference/buffer_sequence_end/overload2.html /doc/html/boost_asio/reference/buffer_sequence_end/overload3.html /doc/html/boost_asio/reference/buffer_sequence_end/overload4.html +/doc/html/boost_asio/reference/buffer_sequence_end/overload5.html +/doc/html/boost_asio/reference/buffer_sequence_end/overload6.html /doc/html/boost_asio/reference/buffers_iterator/ /doc/html/boost_asio/reference/buffers_iterator/begin.html /doc/html/boost_asio/reference/buffers_iterator/buffers_iterator.html @@ -2536,12 +3459,77 @@ /doc/html/boost_asio/reference/buffers_iterator/reference.html /doc/html/boost_asio/reference/buffers_iterator/value_type.html /doc/html/boost_asio/reference/buffer_size.html +/doc/html/boost_asio/reference/cancellation_filter/ +/doc/html/boost_asio/reference/cancellation_filter.html +/doc/html/boost_asio/reference/cancellation_filter/operator_lp__rp_.html +/doc/html/boost_asio/reference/CancellationHandler.html +/doc/html/boost_asio/reference/cancellation_signal/ +/doc/html/boost_asio/reference/cancellation_signal/_cancellation_signal.html +/doc/html/boost_asio/reference/cancellation_signal/cancellation_signal.html +/doc/html/boost_asio/reference/cancellation_signal/emit.html +/doc/html/boost_asio/reference/cancellation_signal.html +/doc/html/boost_asio/reference/cancellation_signal/slot.html +/doc/html/boost_asio/reference/cancellation_slot/ +/doc/html/boost_asio/reference/cancellation_slot/assign.html +/doc/html/boost_asio/reference/cancellation_slot_binder/ +/doc/html/boost_asio/reference/cancellation_slot_binder/argument_type.html +/doc/html/boost_asio/reference/cancellation_slot_binder/cancellation_slot_binder/ +/doc/html/boost_asio/reference/cancellation_slot_binder/_cancellation_slot_binder.html +/doc/html/boost_asio/reference/cancellation_slot_binder/cancellation_slot_binder.html +/doc/html/boost_asio/reference/cancellation_slot_binder/cancellation_slot_binder/overload1.html +/doc/html/boost_asio/reference/cancellation_slot_binder/cancellation_slot_binder/overload2.html +/doc/html/boost_asio/reference/cancellation_slot_binder/cancellation_slot_binder/overload3.html +/doc/html/boost_asio/reference/cancellation_slot_binder/cancellation_slot_binder/overload4.html +/doc/html/boost_asio/reference/cancellation_slot_binder/cancellation_slot_binder/overload5.html +/doc/html/boost_asio/reference/cancellation_slot_binder/cancellation_slot_binder/overload6.html +/doc/html/boost_asio/reference/cancellation_slot_binder/cancellation_slot_binder/overload7.html +/doc/html/boost_asio/reference/cancellation_slot_binder/cancellation_slot_binder/overload8.html +/doc/html/boost_asio/reference/cancellation_slot_binder/cancellation_slot_binder/overload9.html +/doc/html/boost_asio/reference/cancellation_slot_binder/cancellation_slot_type.html +/doc/html/boost_asio/reference/cancellation_slot_binder/first_argument_type.html +/doc/html/boost_asio/reference/cancellation_slot_binder/get/ +/doc/html/boost_asio/reference/cancellation_slot_binder/get_cancellation_slot.html +/doc/html/boost_asio/reference/cancellation_slot_binder/get.html +/doc/html/boost_asio/reference/cancellation_slot_binder/get/overload1.html +/doc/html/boost_asio/reference/cancellation_slot_binder/get/overload2.html +/doc/html/boost_asio/reference/cancellation_slot_binder.html +/doc/html/boost_asio/reference/cancellation_slot_binder/operator_lp__rp_/ +/doc/html/boost_asio/reference/cancellation_slot_binder/operator_lp__rp_.html +/doc/html/boost_asio/reference/cancellation_slot_binder/operator_lp__rp_/overload1.html +/doc/html/boost_asio/reference/cancellation_slot_binder/operator_lp__rp_/overload2.html +/doc/html/boost_asio/reference/cancellation_slot_binder/result_type.html +/doc/html/boost_asio/reference/cancellation_slot_binder/second_argument_type.html +/doc/html/boost_asio/reference/cancellation_slot_binder/target_type.html +/doc/html/boost_asio/reference/cancellation_slot/cancellation_slot.html +/doc/html/boost_asio/reference/cancellation_slot/clear.html +/doc/html/boost_asio/reference/cancellation_slot/emplace.html +/doc/html/boost_asio/reference/cancellation_slot/has_handler.html +/doc/html/boost_asio/reference/CancellationSlot.html +/doc/html/boost_asio/reference/cancellation_slot.html +/doc/html/boost_asio/reference/cancellation_slot/is_connected.html +/doc/html/boost_asio/reference/cancellation_slot/operator_eq__eq_.html +/doc/html/boost_asio/reference/cancellation_slot/operator_not__eq_.html +/doc/html/boost_asio/reference/cancellation_state/ +/doc/html/boost_asio/reference/cancellation_state/cancellation_state/ +/doc/html/boost_asio/reference/cancellation_state/cancellation_state.html +/doc/html/boost_asio/reference/cancellation_state/cancellation_state/overload1.html +/doc/html/boost_asio/reference/cancellation_state/cancellation_state/overload2.html +/doc/html/boost_asio/reference/cancellation_state/cancellation_state/overload3.html +/doc/html/boost_asio/reference/cancellation_state/cancellation_state/overload4.html +/doc/html/boost_asio/reference/cancellation_state/cancelled.html +/doc/html/boost_asio/reference/cancellation_state/clear.html +/doc/html/boost_asio/reference/cancellation_state.html +/doc/html/boost_asio/reference/cancellation_state/slot.html +/doc/html/boost_asio/reference/cancellation_type.html +/doc/html/boost_asio/reference/cancellation_type_t.html /doc/html/boost_asio/reference/can_prefer.html /doc/html/boost_asio/reference/can_query.html /doc/html/boost_asio/reference/can_require_concept.html /doc/html/boost_asio/reference/can_require.html /doc/html/boost_asio/reference/CompletionCondition.html -/doc/html/boost_asio/reference/CompletionHandler.html +/doc/html/boost_asio/reference/completion_signature_of/ +/doc/html/boost_asio/reference/completion_signature_of.html +/doc/html/boost_asio/reference/completion_signature_of/type.html /doc/html/boost_asio/reference/connect/ /doc/html/boost_asio/reference/ConnectCondition.html /doc/html/boost_asio/reference/ConnectHandler.html @@ -2558,6 +3546,15 @@ /doc/html/boost_asio/reference/connect/overload7.html /doc/html/boost_asio/reference/connect/overload8.html /doc/html/boost_asio/reference/connect/overload9.html +/doc/html/boost_asio/reference/connect_pipe/ +/doc/html/boost_asio/reference/connect_pipe.html +/doc/html/boost_asio/reference/connect_pipe/overload1.html +/doc/html/boost_asio/reference/connect_pipe/overload2.html +/doc/html/boost_asio/reference/ConnectToken.html +/doc/html/boost_asio/reference/consign.html +/doc/html/boost_asio/reference/consign_t/ +/doc/html/boost_asio/reference/consign_t/consign_t.html +/doc/html/boost_asio/reference/consign_t.html /doc/html/boost_asio/reference/const_buffer/ /doc/html/boost_asio/reference/const_buffer/const_buffer/ /doc/html/boost_asio/reference/const_buffer/const_buffer.html @@ -2590,6 +3587,21 @@ /doc/html/boost_asio/reference/const_buffers_1/value_type.html /doc/html/boost_asio/reference/ConstBufferSequence.html /doc/html/boost_asio/reference/const_buffer/size.html +/doc/html/boost_asio/reference/const_registered_buffer/ +/doc/html/boost_asio/reference/const_registered_buffer/buffer.html +/doc/html/boost_asio/reference/const_registered_buffer/const_registered_buffer/ +/doc/html/boost_asio/reference/const_registered_buffer/const_registered_buffer.html +/doc/html/boost_asio/reference/const_registered_buffer/const_registered_buffer/overload1.html +/doc/html/boost_asio/reference/const_registered_buffer/const_registered_buffer/overload2.html +/doc/html/boost_asio/reference/const_registered_buffer/data.html +/doc/html/boost_asio/reference/const_registered_buffer.html +/doc/html/boost_asio/reference/const_registered_buffer/id.html +/doc/html/boost_asio/reference/const_registered_buffer/operator_plus_/ +/doc/html/boost_asio/reference/const_registered_buffer/operator_plus__eq_.html +/doc/html/boost_asio/reference/const_registered_buffer/operator_plus_.html +/doc/html/boost_asio/reference/const_registered_buffer/operator_plus_/overload1.html +/doc/html/boost_asio/reference/const_registered_buffer/operator_plus_/overload2.html +/doc/html/boost_asio/reference/const_registered_buffer/size.html /doc/html/boost_asio/reference/coroutine/ /doc/html/boost_asio/reference/coroutine/coroutine.html /doc/html/boost_asio/reference/coroutine.html @@ -2613,6 +3625,62 @@ /doc/html/boost_asio/reference/defer/overload1.html /doc/html/boost_asio/reference/defer/overload2.html /doc/html/boost_asio/reference/defer/overload3.html +/doc/html/boost_asio/reference/deferred_async_operation/ +/doc/html/boost_asio/reference/deferred_async_operation/deferred_async_operation.html +/doc/html/boost_asio/reference/deferred_async_operation/detail__index_sequence_for.html +/doc/html/boost_asio/reference/deferred_async_operation.html +/doc/html/boost_asio/reference/deferred_async_operation_lt__deferred_signatures_lt__Signatures_ellipsis__gt__comma__Initiation_comma__InitArgs_ellipsis__gt_/ +/doc/html/boost_asio/reference/deferred_async_operation_lt__deferred_signatures_lt__Signatures_ellipsis__gt__comma__Initiation_comma__InitArgs_ellipsis__gt_/deferred_async_operation.html +/doc/html/boost_asio/reference/deferred_async_operation_lt__deferred_signatures_lt__Signatures_ellipsis__gt__comma__Initiation_comma__InitArgs_ellipsis__gt_/detail__index_sequence_for.html +/doc/html/boost_asio/reference/deferred_async_operation_lt__deferred_signatures_lt__Signatures_ellipsis__gt__comma__Initiation_comma__InitArgs_ellipsis__gt_.html +/doc/html/boost_asio/reference/deferred_async_operation_lt__deferred_signatures_lt__Signatures_ellipsis__gt__comma__Initiation_comma__InitArgs_ellipsis__gt_/operator_lp__rp_.html +/doc/html/boost_asio/reference/deferred_async_operation/operator_lp__rp_.html +/doc/html/boost_asio/reference/deferred_conditional/ +/doc/html/boost_asio/reference/deferred_conditional/deferred_conditional.html +/doc/html/boost_asio/reference/deferred_conditional.html +/doc/html/boost_asio/reference/deferred_conditional/operator_lp__rp_.html +/doc/html/boost_asio/reference/deferred_conditional/otherwise.html +/doc/html/boost_asio/reference/deferred_conditional/then.html +/doc/html/boost_asio/reference/deferred_function/ +/doc/html/boost_asio/reference/deferred_function/deferred_function.html +/doc/html/boost_asio/reference/deferred_function/function_.html +/doc/html/boost_asio/reference/deferred_function.html +/doc/html/boost_asio/reference/deferred_function/operator_lp__rp_.html +/doc/html/boost_asio/reference/deferred.html +/doc/html/boost_asio/reference/deferred_init_tag.html +/doc/html/boost_asio/reference/deferred_noop/ +/doc/html/boost_asio/reference/deferred_noop.html +/doc/html/boost_asio/reference/deferred_noop/operator_lp__rp_.html +/doc/html/boost_asio/reference/deferred_sequence/ +/doc/html/boost_asio/reference/deferred_sequence/deferred_sequence.html +/doc/html/boost_asio/reference/deferred_sequence.html +/doc/html/boost_asio/reference/deferred_sequence/operator_lp__rp_/ +/doc/html/boost_asio/reference/deferred_sequence/operator_lp__rp_.html +/doc/html/boost_asio/reference/deferred_sequence/operator_lp__rp_/overload1.html +/doc/html/boost_asio/reference/deferred_sequence/operator_lp__rp_/overload2.html +/doc/html/boost_asio/reference/deferred_signatures.html +/doc/html/boost_asio/reference/deferred_t/ +/doc/html/boost_asio/reference/deferred_t/as_default_on.html +/doc/html/boost_asio/reference/deferred_t/deferred_t.html +/doc/html/boost_asio/reference/deferred_t__executor_with_default/ +/doc/html/boost_asio/reference/deferred_t__executor_with_default/default_completion_token_type.html +/doc/html/boost_asio/reference/deferred_t__executor_with_default/executor_with_default.html +/doc/html/boost_asio/reference/deferred_t__executor_with_default.html +/doc/html/boost_asio/reference/deferred_t.html +/doc/html/boost_asio/reference/deferred_t/operator_lp__rp_/ +/doc/html/boost_asio/reference/deferred_t/operator_lp__rp_.html +/doc/html/boost_asio/reference/deferred_t/operator_lp__rp_/overload1.html +/doc/html/boost_asio/reference/deferred_t/operator_lp__rp_/overload2.html +/doc/html/boost_asio/reference/deferred_t/values.html +/doc/html/boost_asio/reference/deferred_t/when.html +/doc/html/boost_asio/reference/deferred_values/ +/doc/html/boost_asio/reference/deferred_values/deferred_values.html +/doc/html/boost_asio/reference/deferred_values/detail__index_sequence_for.html +/doc/html/boost_asio/reference/deferred_values.html +/doc/html/boost_asio/reference/deferred_values__initiate/ +/doc/html/boost_asio/reference/deferred_values__initiate.html +/doc/html/boost_asio/reference/deferred_values__initiate/operator_lp__rp_.html +/doc/html/boost_asio/reference/deferred_values/operator_lp__rp_.html /doc/html/boost_asio/reference/detached.html /doc/html/boost_asio/reference/detached_t/ /doc/html/boost_asio/reference/detached_t/as_default_on.html @@ -2625,6 +3693,7 @@ /doc/html/boost_asio/reference/detached_t__executor_with_default/executor_with_default/overload2.html /doc/html/boost_asio/reference/detached_t__executor_with_default.html /doc/html/boost_asio/reference/detached_t.html +/doc/html/boost_asio/reference/disable_cancellation.html /doc/html/boost_asio/reference/dispatch/ /doc/html/boost_asio/reference/dispatch.html /doc/html/boost_asio/reference/dispatch/overload1.html @@ -2683,11 +3752,15 @@ /doc/html/boost_asio/reference/dynamic_vector_buffer/prepare.html /doc/html/boost_asio/reference/dynamic_vector_buffer/shrink.html /doc/html/boost_asio/reference/dynamic_vector_buffer/size.html +/doc/html/boost_asio/reference/enable_partial_cancellation.html +/doc/html/boost_asio/reference/enable_terminal_cancellation.html +/doc/html/boost_asio/reference/enable_total_cancellation.html /doc/html/boost_asio/reference/Endpoint.html /doc/html/boost_asio/reference/EndpointSequence.html /doc/html/boost_asio/reference/error__addrinfo_category.html /doc/html/boost_asio/reference/error__addrinfo_errors.html /doc/html/boost_asio/reference/error__basic_errors.html +/doc/html/boost_asio/reference/error__clear.html /doc/html/boost_asio/reference/error__get_addrinfo_category.html /doc/html/boost_asio/reference/error__get_misc_category.html /doc/html/boost_asio/reference/error__get_netdb_category.html @@ -2719,12 +3792,16 @@ /doc/html/boost_asio/reference/execution__any_executor/any_executor/ /doc/html/boost_asio/reference/execution__any_executor/_any_executor.html /doc/html/boost_asio/reference/execution__any_executor/any_executor.html +/doc/html/boost_asio/reference/execution__any_executor/any_executor/overload10.html /doc/html/boost_asio/reference/execution__any_executor/any_executor/overload1.html /doc/html/boost_asio/reference/execution__any_executor/any_executor/overload2.html /doc/html/boost_asio/reference/execution__any_executor/any_executor/overload3.html /doc/html/boost_asio/reference/execution__any_executor/any_executor/overload4.html /doc/html/boost_asio/reference/execution__any_executor/any_executor/overload5.html /doc/html/boost_asio/reference/execution__any_executor/any_executor/overload6.html +/doc/html/boost_asio/reference/execution__any_executor/any_executor/overload7.html +/doc/html/boost_asio/reference/execution__any_executor/any_executor/overload8.html +/doc/html/boost_asio/reference/execution__any_executor/any_executor/overload9.html /doc/html/boost_asio/reference/execution__any_executor/context.html /doc/html/boost_asio/reference/execution__any_executor/execute.html /doc/html/boost_asio/reference/execution__any_executor.html @@ -3158,6 +4235,254 @@ /doc/html/boost_asio/reference/executor_work_guard.html /doc/html/boost_asio/reference/executor_work_guard/owns_work.html /doc/html/boost_asio/reference/executor_work_guard/reset.html +/doc/html/boost_asio/reference/experimental__as_single.html +/doc/html/boost_asio/reference/experimental__as_single_t/ +/doc/html/boost_asio/reference/experimental__as_single_t/as_default_on.html +/doc/html/boost_asio/reference/experimental__as_single_t/as_single_t/ +/doc/html/boost_asio/reference/experimental__as_single_t/as_single_t.html +/doc/html/boost_asio/reference/experimental__as_single_t/as_single_t/overload1.html +/doc/html/boost_asio/reference/experimental__as_single_t/as_single_t/overload2.html +/doc/html/boost_asio/reference/experimental__as_single_t__default_constructor_tag.html +/doc/html/boost_asio/reference/experimental__as_single_t__executor_with_default/ +/doc/html/boost_asio/reference/experimental__as_single_t__executor_with_default/default_completion_token_type.html +/doc/html/boost_asio/reference/experimental__as_single_t__executor_with_default/executor_with_default/ +/doc/html/boost_asio/reference/experimental__as_single_t__executor_with_default/executor_with_default.html +/doc/html/boost_asio/reference/experimental__as_single_t__executor_with_default/executor_with_default/overload1.html +/doc/html/boost_asio/reference/experimental__as_single_t__executor_with_default/executor_with_default/overload2.html +/doc/html/boost_asio/reference/experimental__as_single_t__executor_with_default.html +/doc/html/boost_asio/reference/experimental__as_single_t.html +/doc/html/boost_asio/reference/experimental__as_single_t/token_.html +/doc/html/boost_asio/reference/experimental__awaitable_operators__operator__amp__amp_/ +/doc/html/boost_asio/reference/experimental__awaitable_operators__operator__amp__amp_.html +/doc/html/boost_asio/reference/experimental__awaitable_operators__operator__amp__amp_/overload1.html +/doc/html/boost_asio/reference/experimental__awaitable_operators__operator__amp__amp_/overload2.html +/doc/html/boost_asio/reference/experimental__awaitable_operators__operator__amp__amp_/overload3.html +/doc/html/boost_asio/reference/experimental__awaitable_operators__operator__amp__amp_/overload4.html +/doc/html/boost_asio/reference/experimental__awaitable_operators__operator__amp__amp_/overload5.html +/doc/html/boost_asio/reference/experimental__awaitable_operators__operator__amp__amp_/overload6.html +/doc/html/boost_asio/reference/experimental__awaitable_operators__operator_pipe__pipe_/ +/doc/html/boost_asio/reference/experimental__awaitable_operators__operator_pipe__pipe_.html +/doc/html/boost_asio/reference/experimental__awaitable_operators__operator_pipe__pipe_/overload1.html +/doc/html/boost_asio/reference/experimental__awaitable_operators__operator_pipe__pipe_/overload2.html +/doc/html/boost_asio/reference/experimental__awaitable_operators__operator_pipe__pipe_/overload3.html +/doc/html/boost_asio/reference/experimental__awaitable_operators__operator_pipe__pipe_/overload4.html +/doc/html/boost_asio/reference/experimental__awaitable_operators__operator_pipe__pipe_/overload5.html +/doc/html/boost_asio/reference/experimental__awaitable_operators__operator_pipe__pipe_/overload6.html +/doc/html/boost_asio/reference/experimental__basic_channel/ +/doc/html/boost_asio/reference/experimental__basic_channel/async_receive.html +/doc/html/boost_asio/reference/experimental__basic_channel/async_send.html +/doc/html/boost_asio/reference/experimental__basic_channel/basic_channel/ +/doc/html/boost_asio/reference/experimental__basic_channel/_basic_channel.html +/doc/html/boost_asio/reference/experimental__basic_channel/basic_channel.html +/doc/html/boost_asio/reference/experimental__basic_channel/basic_channel/overload1.html +/doc/html/boost_asio/reference/experimental__basic_channel/basic_channel/overload2.html +/doc/html/boost_asio/reference/experimental__basic_channel/basic_channel/overload3.html +/doc/html/boost_asio/reference/experimental__basic_channel/basic_channel/overload4.html +/doc/html/boost_asio/reference/experimental__basic_channel/cancel.html +/doc/html/boost_asio/reference/experimental__basic_channel/capacity.html +/doc/html/boost_asio/reference/experimental__basic_channel/close.html +/doc/html/boost_asio/reference/experimental__basic_channel/executor_type.html +/doc/html/boost_asio/reference/experimental__basic_channel/get_executor.html +/doc/html/boost_asio/reference/experimental__basic_channel.html +/doc/html/boost_asio/reference/experimental__basic_channel/is_open.html +/doc/html/boost_asio/reference/experimental__basic_channel/operator_eq_/ +/doc/html/boost_asio/reference/experimental__basic_channel/operator_eq_.html +/doc/html/boost_asio/reference/experimental__basic_channel/operator_eq_/overload1.html +/doc/html/boost_asio/reference/experimental__basic_channel/operator_eq_/overload2.html +/doc/html/boost_asio/reference/experimental__basic_channel/ready.html +/doc/html/boost_asio/reference/experimental__basic_channel__rebind_executor/ +/doc/html/boost_asio/reference/experimental__basic_channel__rebind_executor.html +/doc/html/boost_asio/reference/experimental__basic_channel__rebind_executor/other.html +/doc/html/boost_asio/reference/experimental__basic_channel/reset.html +/doc/html/boost_asio/reference/experimental__basic_channel/traits_type.html +/doc/html/boost_asio/reference/experimental__basic_channel/try_receive.html +/doc/html/boost_asio/reference/experimental__basic_channel/try_send.html +/doc/html/boost_asio/reference/experimental__basic_channel/try_send_n.html +/doc/html/boost_asio/reference/experimental__basic_concurrent_channel/ +/doc/html/boost_asio/reference/experimental__basic_concurrent_channel/async_receive.html +/doc/html/boost_asio/reference/experimental__basic_concurrent_channel/async_send.html +/doc/html/boost_asio/reference/experimental__basic_concurrent_channel/basic_concurrent_channel/ +/doc/html/boost_asio/reference/experimental__basic_concurrent_channel/_basic_concurrent_channel.html +/doc/html/boost_asio/reference/experimental__basic_concurrent_channel/basic_concurrent_channel.html +/doc/html/boost_asio/reference/experimental__basic_concurrent_channel/basic_concurrent_channel/overload1.html +/doc/html/boost_asio/reference/experimental__basic_concurrent_channel/basic_concurrent_channel/overload2.html +/doc/html/boost_asio/reference/experimental__basic_concurrent_channel/basic_concurrent_channel/overload3.html +/doc/html/boost_asio/reference/experimental__basic_concurrent_channel/basic_concurrent_channel/overload4.html +/doc/html/boost_asio/reference/experimental__basic_concurrent_channel/cancel.html +/doc/html/boost_asio/reference/experimental__basic_concurrent_channel/capacity.html +/doc/html/boost_asio/reference/experimental__basic_concurrent_channel/close.html +/doc/html/boost_asio/reference/experimental__basic_concurrent_channel/executor_type.html +/doc/html/boost_asio/reference/experimental__basic_concurrent_channel/get_executor.html +/doc/html/boost_asio/reference/experimental__basic_concurrent_channel.html +/doc/html/boost_asio/reference/experimental__basic_concurrent_channel/is_open.html +/doc/html/boost_asio/reference/experimental__basic_concurrent_channel/operator_eq_/ +/doc/html/boost_asio/reference/experimental__basic_concurrent_channel/operator_eq_.html +/doc/html/boost_asio/reference/experimental__basic_concurrent_channel/operator_eq_/overload1.html +/doc/html/boost_asio/reference/experimental__basic_concurrent_channel/operator_eq_/overload2.html +/doc/html/boost_asio/reference/experimental__basic_concurrent_channel/ready.html +/doc/html/boost_asio/reference/experimental__basic_concurrent_channel__rebind_executor/ +/doc/html/boost_asio/reference/experimental__basic_concurrent_channel__rebind_executor.html +/doc/html/boost_asio/reference/experimental__basic_concurrent_channel__rebind_executor/other.html +/doc/html/boost_asio/reference/experimental__basic_concurrent_channel/reset.html +/doc/html/boost_asio/reference/experimental__basic_concurrent_channel/traits_type.html +/doc/html/boost_asio/reference/experimental__basic_concurrent_channel/try_receive.html +/doc/html/boost_asio/reference/experimental__basic_concurrent_channel/try_send.html +/doc/html/boost_asio/reference/experimental__basic_concurrent_channel/try_send_n.html +/doc/html/boost_asio/reference/experimental__channel_traits/ +/doc/html/boost_asio/reference/experimental__channel_traits__container/ +/doc/html/boost_asio/reference/experimental__channel_traits__container.html +/doc/html/boost_asio/reference/experimental__channel_traits__container/type.html +/doc/html/boost_asio/reference/experimental__channel_traits.html +/doc/html/boost_asio/reference/experimental__channel_traits/invoke_receive_cancelled.html +/doc/html/boost_asio/reference/experimental__channel_traits/invoke_receive_closed.html +/doc/html/boost_asio/reference/experimental__channel_traits__rebind/ +/doc/html/boost_asio/reference/experimental__channel_traits__rebind.html +/doc/html/boost_asio/reference/experimental__channel_traits__rebind/other.html +/doc/html/boost_asio/reference/experimental__channel_traits/receive_cancelled_signature.html +/doc/html/boost_asio/reference/experimental__channel_traits/receive_closed_signature.html +/doc/html/boost_asio/reference/experimental__co_composed.html +/doc/html/boost_asio/reference/experimental__coro/ +/doc/html/boost_asio/reference/experimental__coro/async_resume/ +/doc/html/boost_asio/reference/experimental__coro/async_resume.html +/doc/html/boost_asio/reference/experimental__coro/async_resume/overload1.html +/doc/html/boost_asio/reference/experimental__coro/async_resume/overload2.html +/doc/html/boost_asio/reference/experimental__coro/coro/ +/doc/html/boost_asio/reference/experimental__coro/_coro.html +/doc/html/boost_asio/reference/experimental__coro/coro.html +/doc/html/boost_asio/reference/experimental__coro/coro/overload1.html +/doc/html/boost_asio/reference/experimental__coro/coro/overload2.html +/doc/html/boost_asio/reference/experimental__coro/coro/overload3.html +/doc/html/boost_asio/reference/experimental__coro/get_allocator.html +/doc/html/boost_asio/reference/experimental__coro/get_executor.html +/doc/html/boost_asio/reference/experimental__coro.html +/doc/html/boost_asio/reference/experimental__coro/is_noexcept.html +/doc/html/boost_asio/reference/experimental__coro/is_open.html +/doc/html/boost_asio/reference/experimental__coro/operator_bool.html +/doc/html/boost_asio/reference/experimental__coro/operator_co_await.html +/doc/html/boost_asio/reference/experimental__coro/operator_eq_/ +/doc/html/boost_asio/reference/experimental__coro/operator_eq_.html +/doc/html/boost_asio/reference/experimental__coro/operator_eq_/overload1.html +/doc/html/boost_asio/reference/experimental__coro/operator_eq_/overload2.html +/doc/html/boost_asio/reference/experimental__coro/operator_lp__rp_.html +/doc/html/boost_asio/reference/experimental__coro_traits/ +/doc/html/boost_asio/reference/experimental__coro_traits.html +/doc/html/boost_asio/reference/experimental__coro_traits/is_noexcept.html +/doc/html/boost_asio/reference/experimental__co_spawn/ +/doc/html/boost_asio/reference/experimental__co_spawn.html +/doc/html/boost_asio/reference/experimental__co_spawn/overload1.html +/doc/html/boost_asio/reference/experimental__co_spawn/overload2.html +/doc/html/boost_asio/reference/experimental__co_spawn/overload3.html +/doc/html/boost_asio/reference/experimental__co_spawn/overload4.html +/doc/html/boost_asio/reference/experimental__co_spawn/overload5.html +/doc/html/boost_asio/reference/experimental__co_spawn/overload6.html +/doc/html/boost_asio/reference/experimental__error__channel_category.html +/doc/html/boost_asio/reference/experimental__error__channel_errors.html +/doc/html/boost_asio/reference/experimental__error__get_channel_category.html +/doc/html/boost_asio/reference/experimental__error__make_error_code.html +/doc/html/boost_asio/reference/experimental__is_async_operation_range/ +/doc/html/boost_asio/reference/experimental__is_async_operation_range.html +/doc/html/boost_asio/reference/experimental__is_async_operation_range/value.html +/doc/html/boost_asio/reference/experimental__is_promise.html +/doc/html/boost_asio/reference/experimental__is_promise_lt__promise_lt__Ts_ellipsis__gt__gt_.html +/doc/html/boost_asio/reference/experimental__is_promise_v.html +/doc/html/boost_asio/reference/experimental__make_parallel_group/ +/doc/html/boost_asio/reference/experimental__make_parallel_group.html +/doc/html/boost_asio/reference/experimental__make_parallel_group/overload1.html +/doc/html/boost_asio/reference/experimental__make_parallel_group/overload2.html +/doc/html/boost_asio/reference/experimental__make_parallel_group/overload3.html +/doc/html/boost_asio/reference/experimental__parallel_group/ +/doc/html/boost_asio/reference/experimental__parallel_group/async_wait.html +/doc/html/boost_asio/reference/experimental__parallel_group.html +/doc/html/boost_asio/reference/experimental__parallel_group/parallel_group.html +/doc/html/boost_asio/reference/experimental__parallel_group/signature.html +/doc/html/boost_asio/reference/experimental__promise/ +/doc/html/boost_asio/reference/experimental__promise/cancel.html +/doc/html/boost_asio/reference/experimental__promise/completed.html +/doc/html/boost_asio/reference/experimental__promise.html +/doc/html/boost_asio/reference/experimental__promise/operator_lp__rp_.html +/doc/html/boost_asio/reference/experimental__promise/promise/ +/doc/html/boost_asio/reference/experimental__promise/_promise.html +/doc/html/boost_asio/reference/experimental__promise/promise.html +/doc/html/boost_asio/reference/experimental__promise/promise/overload1.html +/doc/html/boost_asio/reference/experimental__promise/promise/overload2.html +/doc/html/boost_asio/reference/experimental__promise/promise/overload3.html +/doc/html/boost_asio/reference/experimental__promise_value_type.html +/doc/html/boost_asio/reference/experimental__promise_value_type_lt__gt_.html +/doc/html/boost_asio/reference/experimental__promise_value_type_lt__T__gt_.html +/doc/html/boost_asio/reference/experimental__ranged_parallel_group/ +/doc/html/boost_asio/reference/experimental__ranged_parallel_group/async_wait.html +/doc/html/boost_asio/reference/experimental__ranged_parallel_group.html +/doc/html/boost_asio/reference/experimental__ranged_parallel_group/ranged_parallel_group.html +/doc/html/boost_asio/reference/experimental__ranged_parallel_group/signature.html +/doc/html/boost_asio/reference/experimental__use_coro.html +/doc/html/boost_asio/reference/experimental__use_coro_t/ +/doc/html/boost_asio/reference/experimental__use_coro_t/allocator_type.html +/doc/html/boost_asio/reference/experimental__use_coro_t/as_default_on.html +/doc/html/boost_asio/reference/experimental__use_coro_t__executor_with_default/ +/doc/html/boost_asio/reference/experimental__use_coro_t__executor_with_default/default_completion_token_type.html +/doc/html/boost_asio/reference/experimental__use_coro_t__executor_with_default/executor_with_default.html +/doc/html/boost_asio/reference/experimental__use_coro_t__executor_with_default.html +/doc/html/boost_asio/reference/experimental__use_coro_t/get_allocator.html +/doc/html/boost_asio/reference/experimental__use_coro_t.html +/doc/html/boost_asio/reference/experimental__use_coro_t/rebind.html +/doc/html/boost_asio/reference/experimental__use_coro_t/use_coro_t/ +/doc/html/boost_asio/reference/experimental__use_coro_t/use_coro_t.html +/doc/html/boost_asio/reference/experimental__use_coro_t/use_coro_t/overload1.html +/doc/html/boost_asio/reference/experimental__use_coro_t/use_coro_t/overload2.html +/doc/html/boost_asio/reference/experimental__use_promise.html +/doc/html/boost_asio/reference/experimental__use_promise_t/ +/doc/html/boost_asio/reference/experimental__use_promise_t/allocator_type.html +/doc/html/boost_asio/reference/experimental__use_promise_t/as_default_on.html +/doc/html/boost_asio/reference/experimental__use_promise_t__executor_with_default/ +/doc/html/boost_asio/reference/experimental__use_promise_t__executor_with_default/default_completion_token_type.html +/doc/html/boost_asio/reference/experimental__use_promise_t__executor_with_default/executor_with_default/ +/doc/html/boost_asio/reference/experimental__use_promise_t__executor_with_default/executor_with_default.html +/doc/html/boost_asio/reference/experimental__use_promise_t__executor_with_default/executor_with_default/overload1.html +/doc/html/boost_asio/reference/experimental__use_promise_t__executor_with_default/executor_with_default/overload2.html +/doc/html/boost_asio/reference/experimental__use_promise_t__executor_with_default.html +/doc/html/boost_asio/reference/experimental__use_promise_t/get_allocator.html +/doc/html/boost_asio/reference/experimental__use_promise_t.html +/doc/html/boost_asio/reference/experimental__use_promise_t/rebind.html +/doc/html/boost_asio/reference/experimental__use_promise_t/use_promise_t/ +/doc/html/boost_asio/reference/experimental__use_promise_t/use_promise_t.html +/doc/html/boost_asio/reference/experimental__use_promise_t/use_promise_t/overload1.html +/doc/html/boost_asio/reference/experimental__use_promise_t/use_promise_t/overload2.html +/doc/html/boost_asio/reference/experimental__wait_for_all/ +/doc/html/boost_asio/reference/experimental__wait_for_all.html +/doc/html/boost_asio/reference/experimental__wait_for_all/operator_lp__rp_.html +/doc/html/boost_asio/reference/experimental__wait_for_one/ +/doc/html/boost_asio/reference/experimental__wait_for_one_error/ +/doc/html/boost_asio/reference/experimental__wait_for_one_error.html +/doc/html/boost_asio/reference/experimental__wait_for_one_error/operator_lp__rp_/ +/doc/html/boost_asio/reference/experimental__wait_for_one_error/operator_lp__rp_.html +/doc/html/boost_asio/reference/experimental__wait_for_one_error/operator_lp__rp_/overload1.html +/doc/html/boost_asio/reference/experimental__wait_for_one_error/operator_lp__rp_/overload2.html +/doc/html/boost_asio/reference/experimental__wait_for_one_error/operator_lp__rp_/overload3.html +/doc/html/boost_asio/reference/experimental__wait_for_one_error/wait_for_one_error.html +/doc/html/boost_asio/reference/experimental__wait_for_one.html +/doc/html/boost_asio/reference/experimental__wait_for_one/operator_lp__rp_.html +/doc/html/boost_asio/reference/experimental__wait_for_one_success/ +/doc/html/boost_asio/reference/experimental__wait_for_one_success.html +/doc/html/boost_asio/reference/experimental__wait_for_one_success/operator_lp__rp_/ +/doc/html/boost_asio/reference/experimental__wait_for_one_success/operator_lp__rp_.html +/doc/html/boost_asio/reference/experimental__wait_for_one_success/operator_lp__rp_/overload1.html +/doc/html/boost_asio/reference/experimental__wait_for_one_success/operator_lp__rp_/overload2.html +/doc/html/boost_asio/reference/experimental__wait_for_one_success/operator_lp__rp_/overload3.html +/doc/html/boost_asio/reference/experimental__wait_for_one_success/wait_for_one_success.html +/doc/html/boost_asio/reference/experimental__wait_for_one/wait_for_one.html +/doc/html/boost_asio/reference/file_base/ +/doc/html/boost_asio/reference/file_base/append.html +/doc/html/boost_asio/reference/file_base/create.html +/doc/html/boost_asio/reference/file_base/exclusive.html +/doc/html/boost_asio/reference/file_base/_file_base.html +/doc/html/boost_asio/reference/file_base/flags.html +/doc/html/boost_asio/reference/file_base.html +/doc/html/boost_asio/reference/file_base/read_only.html +/doc/html/boost_asio/reference/file_base/read_write.html +/doc/html/boost_asio/reference/file_base/seek_basis.html +/doc/html/boost_asio/reference/file_base/sync_all_on_write.html +/doc/html/boost_asio/reference/file_base/truncate.html +/doc/html/boost_asio/reference/file_base/write_only.html /doc/html/boost_asio/reference/generic__basic_endpoint/ /doc/html/boost_asio/reference/generic__basic_endpoint/basic_endpoint/ /doc/html/boost_asio/reference/generic__basic_endpoint/basic_endpoint.html @@ -3240,17 +4565,55 @@ /doc/html/boost_asio/reference/get_associated_allocator.html /doc/html/boost_asio/reference/get_associated_allocator/overload1.html /doc/html/boost_asio/reference/get_associated_allocator/overload2.html +/doc/html/boost_asio/reference/get_associated_cancellation_slot/ +/doc/html/boost_asio/reference/get_associated_cancellation_slot.html +/doc/html/boost_asio/reference/get_associated_cancellation_slot/overload1.html +/doc/html/boost_asio/reference/get_associated_cancellation_slot/overload2.html /doc/html/boost_asio/reference/get_associated_executor/ /doc/html/boost_asio/reference/get_associated_executor.html /doc/html/boost_asio/reference/get_associated_executor/overload1.html /doc/html/boost_asio/reference/get_associated_executor/overload2.html /doc/html/boost_asio/reference/get_associated_executor/overload3.html +/doc/html/boost_asio/reference/get_associated_immediate_executor/ +/doc/html/boost_asio/reference/get_associated_immediate_executor.html +/doc/html/boost_asio/reference/get_associated_immediate_executor/overload1.html +/doc/html/boost_asio/reference/get_associated_immediate_executor/overload2.html /doc/html/boost_asio/reference/GettableSerialPortOption.html /doc/html/boost_asio/reference/GettableSocketOption.html /doc/html/boost_asio/reference/Handler.html /doc/html/boost_asio/reference/HandshakeHandler.html +/doc/html/boost_asio/reference/HandshakeToken.html /doc/html/boost_asio/reference/high_resolution_timer.html /doc/html/boost_asio/reference.html +/doc/html/boost_asio/reference/immediate_executor_binder/ +/doc/html/boost_asio/reference/immediate_executor_binder/argument_type.html +/doc/html/boost_asio/reference/immediate_executor_binder/first_argument_type.html +/doc/html/boost_asio/reference/immediate_executor_binder/get/ +/doc/html/boost_asio/reference/immediate_executor_binder/get.html +/doc/html/boost_asio/reference/immediate_executor_binder/get_immediate_executor.html +/doc/html/boost_asio/reference/immediate_executor_binder/get/overload1.html +/doc/html/boost_asio/reference/immediate_executor_binder/get/overload2.html +/doc/html/boost_asio/reference/immediate_executor_binder.html +/doc/html/boost_asio/reference/immediate_executor_binder/immediate_executor_binder/ +/doc/html/boost_asio/reference/immediate_executor_binder/_immediate_executor_binder.html +/doc/html/boost_asio/reference/immediate_executor_binder/immediate_executor_binder.html +/doc/html/boost_asio/reference/immediate_executor_binder/immediate_executor_binder/overload1.html +/doc/html/boost_asio/reference/immediate_executor_binder/immediate_executor_binder/overload2.html +/doc/html/boost_asio/reference/immediate_executor_binder/immediate_executor_binder/overload3.html +/doc/html/boost_asio/reference/immediate_executor_binder/immediate_executor_binder/overload4.html +/doc/html/boost_asio/reference/immediate_executor_binder/immediate_executor_binder/overload5.html +/doc/html/boost_asio/reference/immediate_executor_binder/immediate_executor_binder/overload6.html +/doc/html/boost_asio/reference/immediate_executor_binder/immediate_executor_binder/overload7.html +/doc/html/boost_asio/reference/immediate_executor_binder/immediate_executor_binder/overload8.html +/doc/html/boost_asio/reference/immediate_executor_binder/immediate_executor_binder/overload9.html +/doc/html/boost_asio/reference/immediate_executor_binder/immediate_executor_type.html +/doc/html/boost_asio/reference/immediate_executor_binder/operator_lp__rp_/ +/doc/html/boost_asio/reference/immediate_executor_binder/operator_lp__rp_.html +/doc/html/boost_asio/reference/immediate_executor_binder/operator_lp__rp_/overload1.html +/doc/html/boost_asio/reference/immediate_executor_binder/operator_lp__rp_/overload2.html +/doc/html/boost_asio/reference/immediate_executor_binder/result_type.html +/doc/html/boost_asio/reference/immediate_executor_binder/second_argument_type.html +/doc/html/boost_asio/reference/immediate_executor_binder/target_type.html /doc/html/boost_asio/reference/InternetProtocol.html /doc/html/boost_asio/reference/invalid_service_owner/ /doc/html/boost_asio/reference/invalid_service_owner.html @@ -3689,6 +5052,7 @@ /doc/html/boost_asio/reference/ip__basic_resolver/basic_resolver/overload1.html /doc/html/boost_asio/reference/ip__basic_resolver/basic_resolver/overload2.html /doc/html/boost_asio/reference/ip__basic_resolver/basic_resolver/overload3.html +/doc/html/boost_asio/reference/ip__basic_resolver/basic_resolver/overload4.html /doc/html/boost_asio/reference/ip__basic_resolver/cancel.html /doc/html/boost_asio/reference/ip__basic_resolver/canonical_name.html /doc/html/boost_asio/reference/ip__basic_resolver/endpoint_type.html @@ -3746,7 +5110,10 @@ /doc/html/boost_asio/reference/ip__basic_resolver_iterator/value_type.html /doc/html/boost_asio/reference/ip__basic_resolver/numeric_host.html /doc/html/boost_asio/reference/ip__basic_resolver/numeric_service.html +/doc/html/boost_asio/reference/ip__basic_resolver/operator_eq_/ /doc/html/boost_asio/reference/ip__basic_resolver/operator_eq_.html +/doc/html/boost_asio/reference/ip__basic_resolver/operator_eq_/overload1.html +/doc/html/boost_asio/reference/ip__basic_resolver/operator_eq_/overload2.html /doc/html/boost_asio/reference/ip__basic_resolver/passive.html /doc/html/boost_asio/reference/ip__basic_resolver/protocol_type.html /doc/html/boost_asio/reference/ip__basic_resolver_query/ @@ -3920,6 +5287,7 @@ /doc/html/boost_asio/reference/ip__network_v6/to_string.html /doc/html/boost_asio/reference/ip__network_v6/to_string/overload1.html /doc/html/boost_asio/reference/ip__network_v6/to_string/overload2.html +/doc/html/boost_asio/reference/ip__port_type.html /doc/html/boost_asio/reference/ip__resolver_base/ /doc/html/boost_asio/reference/ip__resolver_base/address_configured.html /doc/html/boost_asio/reference/ip__resolver_base/all_matching.html @@ -3942,6 +5310,7 @@ /doc/html/boost_asio/reference/ip__resolver_query_base/passive.html /doc/html/boost_asio/reference/ip__resolver_query_base/_resolver_query_base.html /doc/html/boost_asio/reference/ip__resolver_query_base/v4_mapped.html +/doc/html/boost_asio/reference/ip__scope_id_type.html /doc/html/boost_asio/reference/ip__tcp/ /doc/html/boost_asio/reference/ip__tcp/acceptor.html /doc/html/boost_asio/reference/ip__tcp/endpoint.html @@ -3973,7 +5342,10 @@ /doc/html/boost_asio/reference/ip__v4_mapped_t.html /doc/html/boost_asio/reference/ip__v6_only.html /doc/html/boost_asio/reference/is_applicable_property.html +/doc/html/boost_asio/reference/is_async_operation.html /doc/html/boost_asio/reference/is_const_buffer_sequence.html +/doc/html/boost_asio/reference/is_contiguous_iterator.html +/doc/html/boost_asio/reference/is_deferred.html /doc/html/boost_asio/reference/is_dynamic_buffer.html /doc/html/boost_asio/reference/is_dynamic_buffer_v1.html /doc/html/boost_asio/reference/is_dynamic_buffer_v2.html @@ -3986,6 +5358,9 @@ /doc/html/boost_asio/reference/is_error_code_enum_lt__basic_errors__gt_/ /doc/html/boost_asio/reference/is_error_code_enum_lt__basic_errors__gt_.html /doc/html/boost_asio/reference/is_error_code_enum_lt__basic_errors__gt_/value.html +/doc/html/boost_asio/reference/is_error_code_enum_lt__boost__asio__experimental__error__channel_errors__gt_/ +/doc/html/boost_asio/reference/is_error_code_enum_lt__boost__asio__experimental__error__channel_errors__gt_.html +/doc/html/boost_asio/reference/is_error_code_enum_lt__boost__asio__experimental__error__channel_errors__gt_/value.html /doc/html/boost_asio/reference/is_error_code_enum_lt__boost__asio__ssl__error__stream_errors__gt_/ /doc/html/boost_asio/reference/is_error_code_enum_lt__boost__asio__ssl__error__stream_errors__gt_.html /doc/html/boost_asio/reference/is_error_code_enum_lt__boost__asio__ssl__error__stream_errors__gt_/value.html @@ -4014,6 +5389,7 @@ /doc/html/boost_asio/reference/is_write_buffered.html /doc/html/boost_asio/reference/is_write_buffered/value.html /doc/html/boost_asio/reference/IteratorConnectHandler.html +/doc/html/boost_asio/reference/IteratorConnectToken.html /doc/html/boost_asio/reference/LegacyCompletionHandler.html /doc/html/boost_asio/reference/local__basic_endpoint/ /doc/html/boost_asio/reference/local__basic_endpoint/basic_endpoint/ @@ -4057,6 +5433,14 @@ /doc/html/boost_asio/reference/local__datagram_protocol/protocol.html /doc/html/boost_asio/reference/local__datagram_protocol/socket.html /doc/html/boost_asio/reference/local__datagram_protocol/type.html +/doc/html/boost_asio/reference/local__seq_packet_protocol/ +/doc/html/boost_asio/reference/local__seq_packet_protocol/acceptor.html +/doc/html/boost_asio/reference/local__seq_packet_protocol/endpoint.html +/doc/html/boost_asio/reference/local__seq_packet_protocol/family.html +/doc/html/boost_asio/reference/local__seq_packet_protocol.html +/doc/html/boost_asio/reference/local__seq_packet_protocol/protocol.html +/doc/html/boost_asio/reference/local__seq_packet_protocol/socket.html +/doc/html/boost_asio/reference/local__seq_packet_protocol/type.html /doc/html/boost_asio/reference/local__stream_protocol/ /doc/html/boost_asio/reference/local__stream_protocol/acceptor.html /doc/html/boost_asio/reference/local__stream_protocol/endpoint.html @@ -4078,6 +5462,7 @@ /doc/html/boost_asio/reference/make_work_guard/overload4.html /doc/html/boost_asio/reference/make_work_guard/overload5.html /doc/html/boost_asio/reference/MoveAcceptHandler.html +/doc/html/boost_asio/reference/MoveAcceptToken.html /doc/html/boost_asio/reference/multiple_exceptions/ /doc/html/boost_asio/reference/multiple_exceptions/first_exception.html /doc/html/boost_asio/reference/multiple_exceptions.html @@ -4114,6 +5499,19 @@ /doc/html/boost_asio/reference/mutable_buffers_1/value_type.html /doc/html/boost_asio/reference/MutableBufferSequence.html /doc/html/boost_asio/reference/mutable_buffer/size.html +/doc/html/boost_asio/reference/mutable_registered_buffer/ +/doc/html/boost_asio/reference/mutable_registered_buffer/buffer.html +/doc/html/boost_asio/reference/mutable_registered_buffer/data.html +/doc/html/boost_asio/reference/mutable_registered_buffer.html +/doc/html/boost_asio/reference/mutable_registered_buffer/id.html +/doc/html/boost_asio/reference/mutable_registered_buffer/mutable_registered_buffer.html +/doc/html/boost_asio/reference/mutable_registered_buffer/operator_plus_/ +/doc/html/boost_asio/reference/mutable_registered_buffer/operator_plus__eq_.html +/doc/html/boost_asio/reference/mutable_registered_buffer/operator_plus_.html +/doc/html/boost_asio/reference/mutable_registered_buffer/operator_plus_/overload1.html +/doc/html/boost_asio/reference/mutable_registered_buffer/operator_plus_/overload2.html +/doc/html/boost_asio/reference/mutable_registered_buffer/size.html +/doc/html/boost_asio/reference/NullaryToken.html /doc/html/boost_asio/reference/null_buffers/ /doc/html/boost_asio/reference/null_buffers/begin.html /doc/html/boost_asio/reference/null_buffers/const_iterator.html @@ -4121,6 +5519,7 @@ /doc/html/boost_asio/reference/null_buffers.html /doc/html/boost_asio/reference/null_buffers/value_type.html /doc/html/boost_asio/reference/OperationState.html +/doc/html/boost_asio/reference/operator_pipe_.html /doc/html/boost_asio/reference/placeholders__bytes_transferred.html /doc/html/boost_asio/reference/placeholders__endpoint.html /doc/html/boost_asio/reference/placeholders__error.html @@ -4141,6 +5540,7 @@ /doc/html/boost_asio/reference/posix__basic_descriptor/basic_descriptor/overload3.html /doc/html/boost_asio/reference/posix__basic_descriptor/basic_descriptor/overload4.html /doc/html/boost_asio/reference/posix__basic_descriptor/basic_descriptor/overload5.html +/doc/html/boost_asio/reference/posix__basic_descriptor/basic_descriptor/overload6.html /doc/html/boost_asio/reference/posix__basic_descriptor/bytes_readable.html /doc/html/boost_asio/reference/posix__basic_descriptor/cancel/ /doc/html/boost_asio/reference/posix__basic_descriptor/cancel.html @@ -4153,7 +5553,6 @@ /doc/html/boost_asio/reference/posix__basic_descriptor/executor_type.html /doc/html/boost_asio/reference/posix__basic_descriptor/get_executor.html /doc/html/boost_asio/reference/posix__basic_descriptor.html -/doc/html/boost_asio/reference/posix__basic_descriptor/impl_.html /doc/html/boost_asio/reference/posix__basic_descriptor/io_control/ /doc/html/boost_asio/reference/posix__basic_descriptor/io_control.html /doc/html/boost_asio/reference/posix__basic_descriptor/io_control/overload1.html @@ -4176,7 +5575,10 @@ /doc/html/boost_asio/reference/posix__basic_descriptor/non_blocking/overload1.html /doc/html/boost_asio/reference/posix__basic_descriptor/non_blocking/overload2.html /doc/html/boost_asio/reference/posix__basic_descriptor/non_blocking/overload3.html +/doc/html/boost_asio/reference/posix__basic_descriptor/operator_eq_/ /doc/html/boost_asio/reference/posix__basic_descriptor/operator_eq_.html +/doc/html/boost_asio/reference/posix__basic_descriptor/operator_eq_/overload1.html +/doc/html/boost_asio/reference/posix__basic_descriptor/operator_eq_/overload2.html /doc/html/boost_asio/reference/posix__basic_descriptor__rebind_executor/ /doc/html/boost_asio/reference/posix__basic_descriptor__rebind_executor.html /doc/html/boost_asio/reference/posix__basic_descriptor__rebind_executor/other.html @@ -4201,6 +5603,7 @@ /doc/html/boost_asio/reference/posix__basic_stream_descriptor/basic_stream_descriptor/overload3.html /doc/html/boost_asio/reference/posix__basic_stream_descriptor/basic_stream_descriptor/overload4.html /doc/html/boost_asio/reference/posix__basic_stream_descriptor/basic_stream_descriptor/overload5.html +/doc/html/boost_asio/reference/posix__basic_stream_descriptor/basic_stream_descriptor/overload6.html /doc/html/boost_asio/reference/posix__basic_stream_descriptor/bytes_readable.html /doc/html/boost_asio/reference/posix__basic_stream_descriptor/cancel/ /doc/html/boost_asio/reference/posix__basic_stream_descriptor/cancel.html @@ -4213,7 +5616,6 @@ /doc/html/boost_asio/reference/posix__basic_stream_descriptor/executor_type.html /doc/html/boost_asio/reference/posix__basic_stream_descriptor/get_executor.html /doc/html/boost_asio/reference/posix__basic_stream_descriptor.html -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/impl_.html /doc/html/boost_asio/reference/posix__basic_stream_descriptor/io_control/ /doc/html/boost_asio/reference/posix__basic_stream_descriptor/io_control.html /doc/html/boost_asio/reference/posix__basic_stream_descriptor/io_control/overload1.html @@ -4236,7 +5638,10 @@ /doc/html/boost_asio/reference/posix__basic_stream_descriptor/non_blocking/overload1.html /doc/html/boost_asio/reference/posix__basic_stream_descriptor/non_blocking/overload2.html /doc/html/boost_asio/reference/posix__basic_stream_descriptor/non_blocking/overload3.html +/doc/html/boost_asio/reference/posix__basic_stream_descriptor/operator_eq_/ /doc/html/boost_asio/reference/posix__basic_stream_descriptor/operator_eq_.html +/doc/html/boost_asio/reference/posix__basic_stream_descriptor/operator_eq_/overload1.html +/doc/html/boost_asio/reference/posix__basic_stream_descriptor/operator_eq_/overload2.html /doc/html/boost_asio/reference/posix__basic_stream_descriptor/read_some/ /doc/html/boost_asio/reference/posix__basic_stream_descriptor/read_some.html /doc/html/boost_asio/reference/posix__basic_stream_descriptor/read_some/overload1.html @@ -4270,14 +5675,23 @@ /doc/html/boost_asio/reference/prefer_result/ /doc/html/boost_asio/reference/prefer_result.html /doc/html/boost_asio/reference/prefer_result/type.html +/doc/html/boost_asio/reference/prepend.html +/doc/html/boost_asio/reference/prepend_t/ +/doc/html/boost_asio/reference/prepend_t.html +/doc/html/boost_asio/reference/prepend_t/prepend_t.html +/doc/html/boost_asio/reference/prepend_t/token_.html +/doc/html/boost_asio/reference/prepend_t/values_.html /doc/html/boost_asio/reference/ProtoAllocator.html /doc/html/boost_asio/reference/Protocol.html /doc/html/boost_asio/reference/query.html /doc/html/boost_asio/reference/query_result/ /doc/html/boost_asio/reference/query_result.html /doc/html/boost_asio/reference/query_result/type.html +/doc/html/boost_asio/reference/random_access_file.html /doc/html/boost_asio/reference/RangeConnectHandler.html +/doc/html/boost_asio/reference/RangeConnectToken.html /doc/html/boost_asio/reference/read/ +/doc/html/boost_asio/reference/readable_pipe.html /doc/html/boost_asio/reference/read_at/ /doc/html/boost_asio/reference/read_at.html /doc/html/boost_asio/reference/read_at/overload1.html @@ -4306,6 +5720,7 @@ /doc/html/boost_asio/reference/read/overload7.html /doc/html/boost_asio/reference/read/overload8.html /doc/html/boost_asio/reference/read/overload9.html +/doc/html/boost_asio/reference/ReadToken.html /doc/html/boost_asio/reference/read_until/ /doc/html/boost_asio/reference/read_until.html /doc/html/boost_asio/reference/read_until/overload10.html @@ -4334,12 +5749,51 @@ /doc/html/boost_asio/reference/read_until/overload9.html /doc/html/boost_asio/reference/read_write_operations.html /doc/html/boost_asio/reference/Receiver.html +/doc/html/boost_asio/reference/recycling_allocator/ +/doc/html/boost_asio/reference/recycling_allocator/allocate.html +/doc/html/boost_asio/reference/recycling_allocator/deallocate.html +/doc/html/boost_asio/reference/recycling_allocator.html +/doc/html/boost_asio/reference/recycling_allocator_lt__void__gt_/ +/doc/html/boost_asio/reference/recycling_allocator_lt__void__gt_.html +/doc/html/boost_asio/reference/recycling_allocator_lt__void__gt_/operator_eq__eq_.html +/doc/html/boost_asio/reference/recycling_allocator_lt__void__gt_/operator_not__eq_.html +/doc/html/boost_asio/reference/recycling_allocator_lt__void__gt___rebind/ +/doc/html/boost_asio/reference/recycling_allocator_lt__void__gt___rebind.html +/doc/html/boost_asio/reference/recycling_allocator_lt__void__gt___rebind/other.html +/doc/html/boost_asio/reference/recycling_allocator_lt__void__gt_/recycling_allocator/ +/doc/html/boost_asio/reference/recycling_allocator_lt__void__gt_/recycling_allocator.html +/doc/html/boost_asio/reference/recycling_allocator_lt__void__gt_/recycling_allocator/overload1.html +/doc/html/boost_asio/reference/recycling_allocator_lt__void__gt_/recycling_allocator/overload2.html +/doc/html/boost_asio/reference/recycling_allocator_lt__void__gt_/value_type.html +/doc/html/boost_asio/reference/recycling_allocator/operator_eq__eq_.html +/doc/html/boost_asio/reference/recycling_allocator/operator_not__eq_.html +/doc/html/boost_asio/reference/recycling_allocator__rebind/ +/doc/html/boost_asio/reference/recycling_allocator__rebind.html +/doc/html/boost_asio/reference/recycling_allocator__rebind/other.html +/doc/html/boost_asio/reference/recycling_allocator/recycling_allocator/ +/doc/html/boost_asio/reference/recycling_allocator/recycling_allocator.html +/doc/html/boost_asio/reference/recycling_allocator/recycling_allocator/overload1.html +/doc/html/boost_asio/reference/recycling_allocator/recycling_allocator/overload2.html +/doc/html/boost_asio/reference/recycling_allocator/value_type.html /doc/html/boost_asio/reference/redirect_error.html /doc/html/boost_asio/reference/redirect_error_t/ /doc/html/boost_asio/reference/redirect_error_t/ec_.html /doc/html/boost_asio/reference/redirect_error_t.html /doc/html/boost_asio/reference/redirect_error_t/redirect_error_t.html /doc/html/boost_asio/reference/redirect_error_t/token_.html +/doc/html/boost_asio/reference/register_buffers/ +/doc/html/boost_asio/reference/register_buffers.html +/doc/html/boost_asio/reference/register_buffers/overload1.html +/doc/html/boost_asio/reference/register_buffers/overload2.html +/doc/html/boost_asio/reference/register_buffers/overload3.html +/doc/html/boost_asio/reference/register_buffers/overload4.html +/doc/html/boost_asio/reference/registered_buffer_id/ +/doc/html/boost_asio/reference/registered_buffer_id.html +/doc/html/boost_asio/reference/registered_buffer_id/native_handle.html +/doc/html/boost_asio/reference/registered_buffer_id/native_handle_type.html +/doc/html/boost_asio/reference/registered_buffer_id/operator_eq__eq_.html +/doc/html/boost_asio/reference/registered_buffer_id/operator_not__eq_.html +/doc/html/boost_asio/reference/registered_buffer_id/registered_buffer_id.html /doc/html/boost_asio/reference/require_concept.html /doc/html/boost_asio/reference/require_concept_result/ /doc/html/boost_asio/reference/require_concept_result.html @@ -4350,6 +5804,7 @@ /doc/html/boost_asio/reference/require_result/type.html /doc/html/boost_asio/reference/ResolveHandler.html /doc/html/boost_asio/reference/resolver_errc__try_again.html +/doc/html/boost_asio/reference/ResolveToken.html /doc/html/boost_asio/reference/Scheduler.html /doc/html/boost_asio/reference/Sender.html /doc/html/boost_asio/reference/serial_port_base/ @@ -4396,8 +5851,15 @@ /doc/html/boost_asio/reference/SettableSerialPortOption.html /doc/html/boost_asio/reference/SettableSocketOption.html /doc/html/boost_asio/reference/ShutdownHandler.html +/doc/html/boost_asio/reference/ShutdownToken.html /doc/html/boost_asio/reference/SignalHandler.html +/doc/html/boost_asio/reference/signal_set_base/ +/doc/html/boost_asio/reference/signal_set_base/flags.html +/doc/html/boost_asio/reference/signal_set_base/flags_t.html +/doc/html/boost_asio/reference/signal_set_base.html +/doc/html/boost_asio/reference/signal_set_base/_signal_set_base.html /doc/html/boost_asio/reference/signal_set.html +/doc/html/boost_asio/reference/SignalToken.html /doc/html/boost_asio/reference/socket_base/ /doc/html/boost_asio/reference/socket_base/broadcast.html /doc/html/boost_asio/reference/socket_base/bytes_readable.html @@ -4425,6 +5887,10 @@ /doc/html/boost_asio/reference/socket_base/wait_type.html /doc/html/boost_asio/reference/spawn/ /doc/html/boost_asio/reference/spawn.html +/doc/html/boost_asio/reference/spawn/overload10.html +/doc/html/boost_asio/reference/spawn/overload11.html +/doc/html/boost_asio/reference/spawn/overload12.html +/doc/html/boost_asio/reference/spawn/overload13.html /doc/html/boost_asio/reference/spawn/overload1.html /doc/html/boost_asio/reference/spawn/overload2.html /doc/html/boost_asio/reference/spawn/overload3.html @@ -4432,6 +5898,8 @@ /doc/html/boost_asio/reference/spawn/overload5.html /doc/html/boost_asio/reference/spawn/overload6.html /doc/html/boost_asio/reference/spawn/overload7.html +/doc/html/boost_asio/reference/spawn/overload8.html +/doc/html/boost_asio/reference/spawn/overload9.html /doc/html/boost_asio/reference/ssl__context/ /doc/html/boost_asio/reference/ssl__context/add_certificate_authority/ /doc/html/boost_asio/reference/ssl__context/add_certificate_authority.html @@ -4603,6 +6071,7 @@ /doc/html/boost_asio/reference/ssl__stream/next_layer/overload1.html /doc/html/boost_asio/reference/ssl__stream/next_layer/overload2.html /doc/html/boost_asio/reference/ssl__stream/next_layer_type.html +/doc/html/boost_asio/reference/ssl__stream/operator_eq_.html /doc/html/boost_asio/reference/ssl__stream/read_some/ /doc/html/boost_asio/reference/ssl__stream/read_some.html /doc/html/boost_asio/reference/ssl__stream/read_some/overload1.html @@ -4628,6 +6097,7 @@ /doc/html/boost_asio/reference/ssl__stream/stream.html /doc/html/boost_asio/reference/ssl__stream/stream/overload1.html /doc/html/boost_asio/reference/ssl__stream/stream/overload2.html +/doc/html/boost_asio/reference/ssl__stream/stream/overload3.html /doc/html/boost_asio/reference/ssl__stream/write_some/ /doc/html/boost_asio/reference/ssl__stream/write_some.html /doc/html/boost_asio/reference/ssl__stream/write_some/overload1.html @@ -4645,12 +6115,15 @@ /doc/html/boost_asio/reference/static_thread_pool.html /doc/html/boost_asio/reference/steady_timer.html /doc/html/boost_asio/reference/strand/ +/doc/html/boost_asio/reference/strand/context.html /doc/html/boost_asio/reference/strand/defer.html /doc/html/boost_asio/reference/strand/dispatch.html /doc/html/boost_asio/reference/strand/execute.html /doc/html/boost_asio/reference/strand/get_inner_executor.html /doc/html/boost_asio/reference/strand.html /doc/html/boost_asio/reference/strand/inner_executor_type.html +/doc/html/boost_asio/reference/strand/on_work_finished.html +/doc/html/boost_asio/reference/strand/on_work_started.html /doc/html/boost_asio/reference/strand/operator_eq_/ /doc/html/boost_asio/reference/strand/operator_eq__eq_.html /doc/html/boost_asio/reference/strand/operator_eq_.html @@ -4674,6 +6147,7 @@ /doc/html/boost_asio/reference/strand/strand/overload5.html /doc/html/boost_asio/reference/strand/strand/overload6.html /doc/html/boost_asio/reference/streambuf.html +/doc/html/boost_asio/reference/stream_file.html /doc/html/boost_asio/reference/synchronous_socket_operations.html /doc/html/boost_asio/reference/SyncRandomAccessReadDevice.html /doc/html/boost_asio/reference/SyncRandomAccessWriteDevice.html @@ -4700,10 +6174,23 @@ /doc/html/boost_asio/reference/system_context/use_service/overload2.html /doc/html/boost_asio/reference/system_executor.html /doc/html/boost_asio/reference/system_timer.html +/doc/html/boost_asio/reference/this_coro__cancellation_state.html +/doc/html/boost_asio/reference/this_coro__cancellation_state_t/ +/doc/html/boost_asio/reference/this_coro__cancellation_state_t/cancellation_state_t.html +/doc/html/boost_asio/reference/this_coro__cancellation_state_t.html /doc/html/boost_asio/reference/this_coro__executor.html /doc/html/boost_asio/reference/this_coro__executor_t/ /doc/html/boost_asio/reference/this_coro__executor_t/executor_t.html /doc/html/boost_asio/reference/this_coro__executor_t.html +/doc/html/boost_asio/reference/this_coro__reset_cancellation_state/ +/doc/html/boost_asio/reference/this_coro__reset_cancellation_state.html +/doc/html/boost_asio/reference/this_coro__reset_cancellation_state/overload1.html +/doc/html/boost_asio/reference/this_coro__reset_cancellation_state/overload2.html +/doc/html/boost_asio/reference/this_coro__reset_cancellation_state/overload3.html +/doc/html/boost_asio/reference/this_coro__throw_if_cancelled/ +/doc/html/boost_asio/reference/this_coro__throw_if_cancelled.html +/doc/html/boost_asio/reference/this_coro__throw_if_cancelled/overload1.html +/doc/html/boost_asio/reference/this_coro__throw_if_cancelled/overload2.html /doc/html/boost_asio/reference/thread_pool/ /doc/html/boost_asio/reference/thread_pool/add_service.html /doc/html/boost_asio/reference/thread_pool/attach.html @@ -4714,11 +6201,13 @@ /doc/html/boost_asio/reference/thread_pool__basic_executor_type/basic_executor_type/overload1.html /doc/html/boost_asio/reference/thread_pool__basic_executor_type/basic_executor_type/overload2.html /doc/html/boost_asio/reference/thread_pool__basic_executor_type/bulk_execute.html +/doc/html/boost_asio/reference/thread_pool__basic_executor_type/connect.html /doc/html/boost_asio/reference/thread_pool__basic_executor_type/context.html /doc/html/boost_asio/reference/thread_pool__basic_executor_type/defer.html /doc/html/boost_asio/reference/thread_pool__basic_executor_type/dispatch.html /doc/html/boost_asio/reference/thread_pool__basic_executor_type/execute.html /doc/html/boost_asio/reference/thread_pool__basic_executor_type.html +/doc/html/boost_asio/reference/thread_pool__basic_executor_type/index_type.html /doc/html/boost_asio/reference/thread_pool__basic_executor_type/on_work_finished.html /doc/html/boost_asio/reference/thread_pool__basic_executor_type/on_work_started.html /doc/html/boost_asio/reference/thread_pool__basic_executor_type/operator_eq_/ @@ -4755,6 +6244,7 @@ /doc/html/boost_asio/reference/thread_pool__basic_executor_type/running_in_this_thread.html /doc/html/boost_asio/reference/thread_pool__basic_executor_type/schedule.html /doc/html/boost_asio/reference/thread_pool__basic_executor_type/sender_type.html +/doc/html/boost_asio/reference/thread_pool__basic_executor_type/shape_type.html /doc/html/boost_asio/reference/thread_pool/destroy.html /doc/html/boost_asio/reference/thread_pool/executor.html /doc/html/boost_asio/reference/thread_pool/executor_type.html @@ -4797,10 +6287,7 @@ /doc/html/boost_asio/reference/use_awaitable_t/as_default_on.html /doc/html/boost_asio/reference/use_awaitable_t__executor_with_default/ /doc/html/boost_asio/reference/use_awaitable_t__executor_with_default/default_completion_token_type.html -/doc/html/boost_asio/reference/use_awaitable_t__executor_with_default/executor_with_default/ /doc/html/boost_asio/reference/use_awaitable_t__executor_with_default/executor_with_default.html -/doc/html/boost_asio/reference/use_awaitable_t__executor_with_default/executor_with_default/overload1.html -/doc/html/boost_asio/reference/use_awaitable_t__executor_with_default/executor_with_default/overload2.html /doc/html/boost_asio/reference/use_awaitable_t__executor_with_default.html /doc/html/boost_asio/reference/use_awaitable_t.html /doc/html/boost_asio/reference/use_awaitable_t/use_awaitable_t/ @@ -4821,6 +6308,7 @@ /doc/html/boost_asio/reference/use_future_t/use_future_t/overload2.html /doc/html/boost_asio/reference/uses_executor.html /doc/html/boost_asio/reference/WaitHandler.html +/doc/html/boost_asio/reference/WaitToken.html /doc/html/boost_asio/reference/wait_traits/ /doc/html/boost_asio/reference/WaitTraits.html /doc/html/boost_asio/reference/wait_traits.html @@ -4841,6 +6329,7 @@ /doc/html/boost_asio/reference/windows__basic_object_handle/basic_object_handle/overload3.html /doc/html/boost_asio/reference/windows__basic_object_handle/basic_object_handle/overload4.html /doc/html/boost_asio/reference/windows__basic_object_handle/basic_object_handle/overload5.html +/doc/html/boost_asio/reference/windows__basic_object_handle/basic_object_handle/overload6.html /doc/html/boost_asio/reference/windows__basic_object_handle/cancel/ /doc/html/boost_asio/reference/windows__basic_object_handle/cancel.html /doc/html/boost_asio/reference/windows__basic_object_handle/cancel/overload1.html @@ -4860,7 +6349,10 @@ /doc/html/boost_asio/reference/windows__basic_object_handle/lowest_layer_type.html /doc/html/boost_asio/reference/windows__basic_object_handle/native_handle.html /doc/html/boost_asio/reference/windows__basic_object_handle/native_handle_type.html +/doc/html/boost_asio/reference/windows__basic_object_handle/operator_eq_/ /doc/html/boost_asio/reference/windows__basic_object_handle/operator_eq_.html +/doc/html/boost_asio/reference/windows__basic_object_handle/operator_eq_/overload1.html +/doc/html/boost_asio/reference/windows__basic_object_handle/operator_eq_/overload2.html /doc/html/boost_asio/reference/windows__basic_object_handle__rebind_executor/ /doc/html/boost_asio/reference/windows__basic_object_handle__rebind_executor.html /doc/html/boost_asio/reference/windows__basic_object_handle__rebind_executor/other.html @@ -4881,6 +6373,7 @@ /doc/html/boost_asio/reference/windows__basic_overlapped_handle/basic_overlapped_handle/overload3.html /doc/html/boost_asio/reference/windows__basic_overlapped_handle/basic_overlapped_handle/overload4.html /doc/html/boost_asio/reference/windows__basic_overlapped_handle/basic_overlapped_handle/overload5.html +/doc/html/boost_asio/reference/windows__basic_overlapped_handle/basic_overlapped_handle/overload6.html /doc/html/boost_asio/reference/windows__basic_overlapped_handle/cancel/ /doc/html/boost_asio/reference/windows__basic_overlapped_handle/cancel.html /doc/html/boost_asio/reference/windows__basic_overlapped_handle/cancel/overload1.html @@ -4892,7 +6385,6 @@ /doc/html/boost_asio/reference/windows__basic_overlapped_handle/executor_type.html /doc/html/boost_asio/reference/windows__basic_overlapped_handle/get_executor.html /doc/html/boost_asio/reference/windows__basic_overlapped_handle.html -/doc/html/boost_asio/reference/windows__basic_overlapped_handle/impl_.html /doc/html/boost_asio/reference/windows__basic_overlapped_handle/is_open.html /doc/html/boost_asio/reference/windows__basic_overlapped_handle/lowest_layer/ /doc/html/boost_asio/reference/windows__basic_overlapped_handle/lowest_layer.html @@ -4901,10 +6393,17 @@ /doc/html/boost_asio/reference/windows__basic_overlapped_handle/lowest_layer_type.html /doc/html/boost_asio/reference/windows__basic_overlapped_handle/native_handle.html /doc/html/boost_asio/reference/windows__basic_overlapped_handle/native_handle_type.html +/doc/html/boost_asio/reference/windows__basic_overlapped_handle/operator_eq_/ /doc/html/boost_asio/reference/windows__basic_overlapped_handle/operator_eq_.html +/doc/html/boost_asio/reference/windows__basic_overlapped_handle/operator_eq_/overload1.html +/doc/html/boost_asio/reference/windows__basic_overlapped_handle/operator_eq_/overload2.html /doc/html/boost_asio/reference/windows__basic_overlapped_handle__rebind_executor/ /doc/html/boost_asio/reference/windows__basic_overlapped_handle__rebind_executor.html /doc/html/boost_asio/reference/windows__basic_overlapped_handle__rebind_executor/other.html +/doc/html/boost_asio/reference/windows__basic_overlapped_handle/release/ +/doc/html/boost_asio/reference/windows__basic_overlapped_handle/release.html +/doc/html/boost_asio/reference/windows__basic_overlapped_handle/release/overload1.html +/doc/html/boost_asio/reference/windows__basic_overlapped_handle/release/overload2.html /doc/html/boost_asio/reference/windows__basic_random_access_handle/ /doc/html/boost_asio/reference/windows__basic_random_access_handle/assign/ /doc/html/boost_asio/reference/windows__basic_random_access_handle/assign.html @@ -4919,6 +6418,7 @@ /doc/html/boost_asio/reference/windows__basic_random_access_handle/basic_random_access_handle/overload3.html /doc/html/boost_asio/reference/windows__basic_random_access_handle/basic_random_access_handle/overload4.html /doc/html/boost_asio/reference/windows__basic_random_access_handle/basic_random_access_handle/overload5.html +/doc/html/boost_asio/reference/windows__basic_random_access_handle/basic_random_access_handle/overload6.html /doc/html/boost_asio/reference/windows__basic_random_access_handle/cancel/ /doc/html/boost_asio/reference/windows__basic_random_access_handle/cancel.html /doc/html/boost_asio/reference/windows__basic_random_access_handle/cancel/overload1.html @@ -4930,7 +6430,6 @@ /doc/html/boost_asio/reference/windows__basic_random_access_handle/executor_type.html /doc/html/boost_asio/reference/windows__basic_random_access_handle/get_executor.html /doc/html/boost_asio/reference/windows__basic_random_access_handle.html -/doc/html/boost_asio/reference/windows__basic_random_access_handle/impl_.html /doc/html/boost_asio/reference/windows__basic_random_access_handle/is_open.html /doc/html/boost_asio/reference/windows__basic_random_access_handle/lowest_layer/ /doc/html/boost_asio/reference/windows__basic_random_access_handle/lowest_layer.html @@ -4939,7 +6438,10 @@ /doc/html/boost_asio/reference/windows__basic_random_access_handle/lowest_layer_type.html /doc/html/boost_asio/reference/windows__basic_random_access_handle/native_handle.html /doc/html/boost_asio/reference/windows__basic_random_access_handle/native_handle_type.html +/doc/html/boost_asio/reference/windows__basic_random_access_handle/operator_eq_/ /doc/html/boost_asio/reference/windows__basic_random_access_handle/operator_eq_.html +/doc/html/boost_asio/reference/windows__basic_random_access_handle/operator_eq_/overload1.html +/doc/html/boost_asio/reference/windows__basic_random_access_handle/operator_eq_/overload2.html /doc/html/boost_asio/reference/windows__basic_random_access_handle/read_some_at/ /doc/html/boost_asio/reference/windows__basic_random_access_handle/read_some_at.html /doc/html/boost_asio/reference/windows__basic_random_access_handle/read_some_at/overload1.html @@ -4947,6 +6449,10 @@ /doc/html/boost_asio/reference/windows__basic_random_access_handle__rebind_executor/ /doc/html/boost_asio/reference/windows__basic_random_access_handle__rebind_executor.html /doc/html/boost_asio/reference/windows__basic_random_access_handle__rebind_executor/other.html +/doc/html/boost_asio/reference/windows__basic_random_access_handle/release/ +/doc/html/boost_asio/reference/windows__basic_random_access_handle/release.html +/doc/html/boost_asio/reference/windows__basic_random_access_handle/release/overload1.html +/doc/html/boost_asio/reference/windows__basic_random_access_handle/release/overload2.html /doc/html/boost_asio/reference/windows__basic_random_access_handle/write_some_at/ /doc/html/boost_asio/reference/windows__basic_random_access_handle/write_some_at.html /doc/html/boost_asio/reference/windows__basic_random_access_handle/write_some_at/overload1.html @@ -4965,6 +6471,7 @@ /doc/html/boost_asio/reference/windows__basic_stream_handle/basic_stream_handle/overload3.html /doc/html/boost_asio/reference/windows__basic_stream_handle/basic_stream_handle/overload4.html /doc/html/boost_asio/reference/windows__basic_stream_handle/basic_stream_handle/overload5.html +/doc/html/boost_asio/reference/windows__basic_stream_handle/basic_stream_handle/overload6.html /doc/html/boost_asio/reference/windows__basic_stream_handle/cancel/ /doc/html/boost_asio/reference/windows__basic_stream_handle/cancel.html /doc/html/boost_asio/reference/windows__basic_stream_handle/cancel/overload1.html @@ -4976,7 +6483,6 @@ /doc/html/boost_asio/reference/windows__basic_stream_handle/executor_type.html /doc/html/boost_asio/reference/windows__basic_stream_handle/get_executor.html /doc/html/boost_asio/reference/windows__basic_stream_handle.html -/doc/html/boost_asio/reference/windows__basic_stream_handle/impl_.html /doc/html/boost_asio/reference/windows__basic_stream_handle/is_open.html /doc/html/boost_asio/reference/windows__basic_stream_handle/lowest_layer/ /doc/html/boost_asio/reference/windows__basic_stream_handle/lowest_layer.html @@ -4985,7 +6491,10 @@ /doc/html/boost_asio/reference/windows__basic_stream_handle/lowest_layer_type.html /doc/html/boost_asio/reference/windows__basic_stream_handle/native_handle.html /doc/html/boost_asio/reference/windows__basic_stream_handle/native_handle_type.html +/doc/html/boost_asio/reference/windows__basic_stream_handle/operator_eq_/ /doc/html/boost_asio/reference/windows__basic_stream_handle/operator_eq_.html +/doc/html/boost_asio/reference/windows__basic_stream_handle/operator_eq_/overload1.html +/doc/html/boost_asio/reference/windows__basic_stream_handle/operator_eq_/overload2.html /doc/html/boost_asio/reference/windows__basic_stream_handle/read_some/ /doc/html/boost_asio/reference/windows__basic_stream_handle/read_some.html /doc/html/boost_asio/reference/windows__basic_stream_handle/read_some/overload1.html @@ -4993,6 +6502,10 @@ /doc/html/boost_asio/reference/windows__basic_stream_handle__rebind_executor/ /doc/html/boost_asio/reference/windows__basic_stream_handle__rebind_executor.html /doc/html/boost_asio/reference/windows__basic_stream_handle__rebind_executor/other.html +/doc/html/boost_asio/reference/windows__basic_stream_handle/release/ +/doc/html/boost_asio/reference/windows__basic_stream_handle/release.html +/doc/html/boost_asio/reference/windows__basic_stream_handle/release/overload1.html +/doc/html/boost_asio/reference/windows__basic_stream_handle/release/overload2.html /doc/html/boost_asio/reference/windows__basic_stream_handle/write_some/ /doc/html/boost_asio/reference/windows__basic_stream_handle/write_some.html /doc/html/boost_asio/reference/windows__basic_stream_handle/write_some/overload1.html @@ -5020,6 +6533,7 @@ /doc/html/boost_asio/reference/windows__overlapped_ptr/reset/overload3.html /doc/html/boost_asio/reference/windows__random_access_handle.html /doc/html/boost_asio/reference/windows__stream_handle.html +/doc/html/boost_asio/reference/writable_pipe.html /doc/html/boost_asio/reference/write/ /doc/html/boost_asio/reference/write_at/ /doc/html/boost_asio/reference/write_at.html @@ -5049,7 +6563,9 @@ /doc/html/boost_asio/reference/write/overload7.html /doc/html/boost_asio/reference/write/overload8.html /doc/html/boost_asio/reference/write/overload9.html +/doc/html/boost_asio/reference/WriteToken.html /doc/html/boost_asio/reference/yield_context.html +/doc/html/boost_asio/std_executors.html /doc/html/boost_asio/sync_op.png /doc/html/boost_asio/tutorial/ /doc/html/boost_asio/tutorial.html @@ -5092,167 +6608,15 @@ /doc/html/boost_asio/using.html /libs/ /libs/asio/ +/libs/asio/CMakeLists.txt /libs/asio/doc/ /libs/asio/doc/asio.qbk /libs/asio/doc/doxy2qbk.pl /libs/asio/doc/examples.qbk /libs/asio/doc/history.qbk -/libs/asio/doc/html/ -/libs/asio/doc/html/boost_asio/ -/libs/asio/doc/html/boost_asio/example/ -/libs/asio/doc/html/boost_asio/example/cpp03/ -/libs/asio/doc/html/boost_asio/example/cpp03/allocation/ -/libs/asio/doc/html/boost_asio/example/cpp03/buffers/ -/libs/asio/doc/html/boost_asio/example/cpp03/chat/ -/libs/asio/doc/html/boost_asio/example/cpp03/echo/ -/libs/asio/doc/html/boost_asio/example/cpp03/fork/ -/libs/asio/doc/html/boost_asio/example/cpp03/http/ -/libs/asio/doc/html/boost_asio/example/cpp03/http/client/ -/libs/asio/doc/html/boost_asio/example/cpp03/http/server/ -/libs/asio/doc/html/boost_asio/example/cpp03/http/server2/ -/libs/asio/doc/html/boost_asio/example/cpp03/http/server3/ -/libs/asio/doc/html/boost_asio/example/cpp03/http/server4/ -/libs/asio/doc/html/boost_asio/example/cpp03/icmp/ -/libs/asio/doc/html/boost_asio/example/cpp03/invocation/ -/libs/asio/doc/html/boost_asio/example/cpp03/iostreams/ -/libs/asio/doc/html/boost_asio/example/cpp03/local/ -/libs/asio/doc/html/boost_asio/example/cpp03/multicast/ -/libs/asio/doc/html/boost_asio/example/cpp03/nonblocking/ -/libs/asio/doc/html/boost_asio/example/cpp03/porthopper/ -/libs/asio/doc/html/boost_asio/example/cpp03/serialization/ -/libs/asio/doc/html/boost_asio/example/cpp03/services/ -/libs/asio/doc/html/boost_asio/example/cpp03/socks4/ -/libs/asio/doc/html/boost_asio/example/cpp03/spawn/ -/libs/asio/doc/html/boost_asio/example/cpp03/ssl/ -/libs/asio/doc/html/boost_asio/example/cpp03/timeouts/ -/libs/asio/doc/html/boost_asio/example/cpp03/timers/ -/libs/asio/doc/html/boost_asio/example/cpp03/windows/ -/libs/asio/doc/html/boost_asio/example/cpp11/ -/libs/asio/doc/html/boost_asio/example/cpp11/allocation/ -/libs/asio/doc/html/boost_asio/example/cpp11/buffers/ -/libs/asio/doc/html/boost_asio/example/cpp11/chat/ -/libs/asio/doc/html/boost_asio/example/cpp11/echo/ -/libs/asio/doc/html/boost_asio/example/cpp11/executors/ -/libs/asio/doc/html/boost_asio/example/cpp11/fork/ -/libs/asio/doc/html/boost_asio/example/cpp11/futures/ -/libs/asio/doc/html/boost_asio/example/cpp11/handler_tracking/ -/libs/asio/doc/html/boost_asio/example/cpp11/http/ -/libs/asio/doc/html/boost_asio/example/cpp11/http/server/ -/libs/asio/doc/html/boost_asio/example/cpp11/invocation/ -/libs/asio/doc/html/boost_asio/example/cpp11/local/ -/libs/asio/doc/html/boost_asio/example/cpp11/multicast/ -/libs/asio/doc/html/boost_asio/example/cpp11/nonblocking/ -/libs/asio/doc/html/boost_asio/example/cpp11/operations/ -/libs/asio/doc/html/boost_asio/example/cpp11/socks4/ -/libs/asio/doc/html/boost_asio/example/cpp11/spawn/ -/libs/asio/doc/html/boost_asio/example/cpp11/ssl/ -/libs/asio/doc/html/boost_asio/example/cpp11/timeouts/ -/libs/asio/doc/html/boost_asio/example/cpp11/timers/ -/libs/asio/doc/html/boost_asio/example/cpp14/ -/libs/asio/doc/html/boost_asio/example/cpp14/operations/ -/libs/asio/doc/html/boost_asio/example/cpp17/ -/libs/asio/doc/html/boost_asio/example/cpp17/coroutines_ts/ -/libs/asio/doc/html/boost_asio/examples/ -/libs/asio/doc/html/boost_asio/examples/cpp03_examples.html -/libs/asio/doc/html/boost_asio/examples/cpp11_examples.html -/libs/asio/doc/html/boost_asio/examples/cpp14_examples.html -/libs/asio/doc/html/boost_asio/examples/cpp17_examples.html -/libs/asio/doc/html/boost_asio/examples.html -/libs/asio/doc/html/boost_asio/history.html -/libs/asio/doc/html/boost_asio/index.html -/libs/asio/doc/html/boost_asio/net_ts.html -/libs/asio/doc/html/boost_asio/overview/ -/libs/asio/doc/html/boost_asio/overview/core/ -/libs/asio/doc/html/boost_asio/overview/core/allocation.html -/libs/asio/doc/html/boost_asio/overview/core/async.html -/libs/asio/doc/html/boost_asio/overview/core/basics.html -/libs/asio/doc/html/boost_asio/overview/core/buffers.html -/libs/asio/doc/html/boost_asio/overview/core/concurrency_hint.html -/libs/asio/doc/html/boost_asio/overview/core/coroutine.html -/libs/asio/doc/html/boost_asio/overview/core/coroutines_ts.html -/libs/asio/doc/html/boost_asio/overview/core/handler_tracking.html -/libs/asio/doc/html/boost_asio/overview/core.html -/libs/asio/doc/html/boost_asio/overview/core/line_based.html -/libs/asio/doc/html/boost_asio/overview/core/reactor.html -/libs/asio/doc/html/boost_asio/overview/core/spawn.html -/libs/asio/doc/html/boost_asio/overview/core/strands.html -/libs/asio/doc/html/boost_asio/overview/core/streams.html -/libs/asio/doc/html/boost_asio/overview/core/threads.html -/libs/asio/doc/html/boost_asio/overview/cpp2011/ -/libs/asio/doc/html/boost_asio/overview/cpp2011/array.html -/libs/asio/doc/html/boost_asio/overview/cpp2011/atomic.html -/libs/asio/doc/html/boost_asio/overview/cpp2011/chrono.html -/libs/asio/doc/html/boost_asio/overview/cpp2011/futures.html -/libs/asio/doc/html/boost_asio/overview/cpp2011.html -/libs/asio/doc/html/boost_asio/overview/cpp2011/move_handlers.html -/libs/asio/doc/html/boost_asio/overview/cpp2011/move_objects.html -/libs/asio/doc/html/boost_asio/overview/cpp2011/shared_ptr.html -/libs/asio/doc/html/boost_asio/overview/cpp2011/variadic.html -/libs/asio/doc/html/boost_asio/overview.html -/libs/asio/doc/html/boost_asio/overview/implementation.html -/libs/asio/doc/html/boost_asio/overview/networking/ -/libs/asio/doc/html/boost_asio/overview/networking/bsd_sockets.html -/libs/asio/doc/html/boost_asio/overview/networking.html -/libs/asio/doc/html/boost_asio/overview/networking/iostreams.html -/libs/asio/doc/html/boost_asio/overview/networking/other_protocols.html -/libs/asio/doc/html/boost_asio/overview/networking/protocols.html -/libs/asio/doc/html/boost_asio/overview/posix/ -/libs/asio/doc/html/boost_asio/overview/posix/fork.html -/libs/asio/doc/html/boost_asio/overview/posix.html -/libs/asio/doc/html/boost_asio/overview/posix/local.html -/libs/asio/doc/html/boost_asio/overview/posix/stream_descriptor.html -/libs/asio/doc/html/boost_asio/overview/rationale.html -/libs/asio/doc/html/boost_asio/overview/serial_ports.html -/libs/asio/doc/html/boost_asio/overview/signals.html -/libs/asio/doc/html/boost_asio/overview/ssl.html -/libs/asio/doc/html/boost_asio/overview/timers.html -/libs/asio/doc/html/boost_asio/overview/windows/ -/libs/asio/doc/html/boost_asio/overview/windows.html -/libs/asio/doc/html/boost_asio/overview/windows/object_handle.html -/libs/asio/doc/html/boost_asio/overview/windows/random_access_handle.html -/libs/asio/doc/html/boost_asio/overview/windows/stream_handle.html -/libs/asio/doc/html/boost_asio/tutorial/ -/libs/asio/doc/html/boost_asio/tutorial.html -/libs/asio/doc/html/boost_asio/tutorial/tutdaytime1/ -/libs/asio/doc/html/boost_asio/tutorial/tutdaytime1.html -/libs/asio/doc/html/boost_asio/tutorial/tutdaytime1/src.html -/libs/asio/doc/html/boost_asio/tutorial/tutdaytime2/ -/libs/asio/doc/html/boost_asio/tutorial/tutdaytime2.html -/libs/asio/doc/html/boost_asio/tutorial/tutdaytime2/src.html -/libs/asio/doc/html/boost_asio/tutorial/tutdaytime3/ -/libs/asio/doc/html/boost_asio/tutorial/tutdaytime3.html -/libs/asio/doc/html/boost_asio/tutorial/tutdaytime3/src.html -/libs/asio/doc/html/boost_asio/tutorial/tutdaytime4/ -/libs/asio/doc/html/boost_asio/tutorial/tutdaytime4.html -/libs/asio/doc/html/boost_asio/tutorial/tutdaytime4/src.html -/libs/asio/doc/html/boost_asio/tutorial/tutdaytime5/ -/libs/asio/doc/html/boost_asio/tutorial/tutdaytime5.html -/libs/asio/doc/html/boost_asio/tutorial/tutdaytime5/src.html -/libs/asio/doc/html/boost_asio/tutorial/tutdaytime6/ -/libs/asio/doc/html/boost_asio/tutorial/tutdaytime6.html -/libs/asio/doc/html/boost_asio/tutorial/tutdaytime6/src.html -/libs/asio/doc/html/boost_asio/tutorial/tutdaytime7/ -/libs/asio/doc/html/boost_asio/tutorial/tutdaytime7.html -/libs/asio/doc/html/boost_asio/tutorial/tutdaytime7/src.html -/libs/asio/doc/html/boost_asio/tutorial/tuttimer1/ -/libs/asio/doc/html/boost_asio/tutorial/tuttimer1.html -/libs/asio/doc/html/boost_asio/tutorial/tuttimer1/src.html -/libs/asio/doc/html/boost_asio/tutorial/tuttimer2/ -/libs/asio/doc/html/boost_asio/tutorial/tuttimer2.html -/libs/asio/doc/html/boost_asio/tutorial/tuttimer2/src.html -/libs/asio/doc/html/boost_asio/tutorial/tuttimer3/ -/libs/asio/doc/html/boost_asio/tutorial/tuttimer3.html -/libs/asio/doc/html/boost_asio/tutorial/tuttimer3/src.html -/libs/asio/doc/html/boost_asio/tutorial/tuttimer4/ -/libs/asio/doc/html/boost_asio/tutorial/tuttimer4.html -/libs/asio/doc/html/boost_asio/tutorial/tuttimer4/src.html -/libs/asio/doc/html/boost_asio/tutorial/tuttimer5/ -/libs/asio/doc/html/boost_asio/tutorial/tuttimer5.html -/libs/asio/doc/html/boost_asio/tutorial/tuttimer5/src.html -/libs/asio/doc/html/boost_asio/using.html -/libs/asio/doc/html/index.html /libs/asio/doc/index.xml /libs/asio/doc/Jamfile.v2 +/libs/asio/doc/model_dox.txt /libs/asio/doc/net_ts.qbk /libs/asio/doc/noncopyable_dox.txt /libs/asio/doc/overview/ @@ -5265,18 +6629,51 @@ /libs/asio/doc/overview/basics.qbk /libs/asio/doc/overview/bsd_sockets.qbk /libs/asio/doc/overview/buffers.qbk +/libs/asio/doc/overview/cancellation.qbk +/libs/asio/doc/overview/channels.qbk +/libs/asio/doc/overview/compose.qbk /libs/asio/doc/overview/concurrency_hint.qbk +/libs/asio/doc/overview/coro.qbk /libs/asio/doc/overview/coroutine.qbk -/libs/asio/doc/overview/coroutines_ts.qbk /libs/asio/doc/overview/cpp2011.qbk +/libs/asio/doc/overview/cpp20_coroutines.qbk +/libs/asio/doc/overview/deferred.qbk +/libs/asio/doc/overview/files.qbk +/libs/asio/doc/overview/futures.qbk /libs/asio/doc/overview/handler_tracking.qbk +/libs/asio/doc/overview/immediate_completion.qbk /libs/asio/doc/overview/implementation.qbk /libs/asio/doc/overview/iostreams.qbk /libs/asio/doc/overview/line_based.qbk +/libs/asio/doc/overview/model/ +/libs/asio/doc/overview/model/allocators.qbk +/libs/asio/doc/overview/model/associators.qbk +/libs/asio/doc/overview/model/async_agent_chain.png +/libs/asio/doc/overview/model/async_agent_model.png +/libs/asio/doc/overview/model/async_agents.qbk +/libs/asio/doc/overview/model/async_child_agent_chain.png +/libs/asio/doc/overview/model/async_op_init_complete.png +/libs/asio/doc/overview/model/async_op_model.png +/libs/asio/doc/overview/model/async_op_phases.png +/libs/asio/doc/overview/model/async_ops.qbk +/libs/asio/doc/overview/model/async_op_trivial_chain.png +/libs/asio/doc/overview/model/cancellation.qbk +/libs/asio/doc/overview/model/child_agents.qbk +/libs/asio/doc/overview/model/completion_token_model.png +/libs/asio/doc/overview/model/completion_tokens.qbk +/libs/asio/doc/overview/model/completion_token_transform.png +/libs/asio/doc/overview/model/executors.qbk +/libs/asio/doc/overview/model/higher_level_model.png +/libs/asio/doc/overview/model/higher_levels.qbk +/libs/asio/doc/overview/model/library_elements.qbk +/libs/asio/doc/overview/model.qbk /libs/asio/doc/overview/other_protocols.qbk +/libs/asio/doc/overview/parallel_group.qbk +/libs/asio/doc/overview/pipes.qbk /libs/asio/doc/overview/posix.qbk /libs/asio/doc/overview/proactor.dot /libs/asio/doc/overview/proactor.png +/libs/asio/doc/overview/promises.qbk /libs/asio/doc/overview/protocols.qbk /libs/asio/doc/overview.qbk /libs/asio/doc/overview/rationale.qbk @@ -5291,7 +6688,11 @@ /libs/asio/doc/overview/sync_op.png /libs/asio/doc/overview/threads.qbk /libs/asio/doc/overview/timers.qbk +/libs/asio/doc/overview/token_adapters.qbk +/libs/asio/doc/overview/type_erasure.qbk /libs/asio/doc/overview/windows.qbk +/libs/asio/doc/platform_macros.pl +/libs/asio/doc/platform_macros.qbk /libs/asio/doc/quickref.xml /libs/asio/doc/reference.dox /libs/asio/doc/reference.qbk @@ -5299,6 +6700,7 @@ /libs/asio/doc/requirements/ /libs/asio/doc/requirements/AcceptableProtocol.qbk /libs/asio/doc/requirements/AcceptHandler.qbk +/libs/asio/doc/requirements/AcceptToken.qbk /libs/asio/doc/requirements/asynchronous_operations.qbk /libs/asio/doc/requirements/asynchronous_socket_operations.qbk /libs/asio/doc/requirements/AsyncRandomAccessReadDevice.qbk @@ -5306,10 +6708,13 @@ /libs/asio/doc/requirements/AsyncReadStream.qbk /libs/asio/doc/requirements/AsyncWriteStream.qbk /libs/asio/doc/requirements/BufferedHandshakeHandler.qbk +/libs/asio/doc/requirements/BufferedHandshakeToken.qbk +/libs/asio/doc/requirements/CancellationHandler.qbk +/libs/asio/doc/requirements/CancellationSlot.qbk /libs/asio/doc/requirements/CompletionCondition.qbk -/libs/asio/doc/requirements/CompletionHandler.qbk /libs/asio/doc/requirements/ConnectCondition.qbk /libs/asio/doc/requirements/ConnectHandler.qbk +/libs/asio/doc/requirements/ConnectToken.qbk /libs/asio/doc/requirements/ConstBufferSequence.qbk /libs/asio/doc/requirements/DynamicBuffer.qbk /libs/asio/doc/requirements/DynamicBuffer_v1.qbk @@ -5322,29 +6727,38 @@ /libs/asio/doc/requirements/GettableSocketOption.qbk /libs/asio/doc/requirements/Handler.qbk /libs/asio/doc/requirements/HandshakeHandler.qbk +/libs/asio/doc/requirements/HandshakeToken.qbk /libs/asio/doc/requirements/InternetProtocol.qbk /libs/asio/doc/requirements/IoControlCommand.qbk /libs/asio/doc/requirements/IoObjectService.qbk /libs/asio/doc/requirements/IteratorConnectHandler.qbk +/libs/asio/doc/requirements/IteratorConnectToken.qbk /libs/asio/doc/requirements/LegacyCompletionHandler.qbk /libs/asio/doc/requirements/MoveAcceptHandler.qbk +/libs/asio/doc/requirements/MoveAcceptToken.qbk /libs/asio/doc/requirements/MutableBufferSequence.qbk +/libs/asio/doc/requirements/NullaryToken.qbk /libs/asio/doc/requirements/OperationState.qbk /libs/asio/doc/requirements/ProtoAllocator.qbk /libs/asio/doc/requirements/Protocol.qbk /libs/asio/doc/requirements.qbk /libs/asio/doc/requirements/RangeConnectHandler.qbk +/libs/asio/doc/requirements/RangeConnectToken.qbk /libs/asio/doc/requirements/ReadHandler.qbk +/libs/asio/doc/requirements/ReadToken.qbk /libs/asio/doc/requirements/read_write_operations.qbk /libs/asio/doc/requirements/Receiver.qbk /libs/asio/doc/requirements/ResolveHandler.qbk +/libs/asio/doc/requirements/ResolveToken.qbk /libs/asio/doc/requirements/Scheduler.qbk /libs/asio/doc/requirements/Sender.qbk /libs/asio/doc/requirements/Service.qbk /libs/asio/doc/requirements/SettableSerialPortOption.qbk /libs/asio/doc/requirements/SettableSocketOption.qbk /libs/asio/doc/requirements/ShutdownHandler.qbk +/libs/asio/doc/requirements/ShutdownToken.qbk /libs/asio/doc/requirements/SignalHandler.qbk +/libs/asio/doc/requirements/SignalToken.qbk /libs/asio/doc/requirements/synchronous_socket_operations.qbk /libs/asio/doc/requirements/SyncRandomAccessReadDevice.qbk /libs/asio/doc/requirements/SyncRandomAccessWriteDevice.qbk @@ -5352,9 +6766,12 @@ /libs/asio/doc/requirements/SyncWriteStream.qbk /libs/asio/doc/requirements/TimeTraits.qbk /libs/asio/doc/requirements/WaitHandler.qbk +/libs/asio/doc/requirements/WaitToken.qbk /libs/asio/doc/requirements/WaitTraits.qbk /libs/asio/doc/requirements/WriteHandler.qbk +/libs/asio/doc/requirements/WriteToken.qbk /libs/asio/doc/std_exception_dox.txt +/libs/asio/doc/std_executors.qbk /libs/asio/doc/tutorial.dox /libs/asio/doc/tutorial.qbk /libs/asio/doc/tutorial.xsl @@ -5520,7 +6937,7 @@ /libs/asio/example/cpp03/ssl/ /libs/asio/example/cpp03/ssl/ca.pem /libs/asio/example/cpp03/ssl/client.cpp -/libs/asio/example/cpp03/ssl/dh2048.pem +/libs/asio/example/cpp03/ssl/dh4096.pem /libs/asio/example/cpp03/ssl/Jamfile.v2 /libs/asio/example/cpp03/ssl/README /libs/asio/example/cpp03/ssl/server.cpp @@ -5579,6 +6996,10 @@ /libs/asio/example/cpp11/chat/chat_message.hpp /libs/asio/example/cpp11/chat/chat_server.cpp /libs/asio/example/cpp11/chat/Jamfile.v2 +/libs/asio/example/cpp11/deferred/ +/libs/asio/example/cpp11/deferred/deferred_1.cpp +/libs/asio/example/cpp11/deferred/deferred_2.cpp +/libs/asio/example/cpp11/deferred/Jamfile.v2 /libs/asio/example/cpp11/echo/ /libs/asio/example/cpp11/echo/async_tcp_echo_server.cpp /libs/asio/example/cpp11/echo/async_udp_echo_server.cpp @@ -5595,6 +7016,10 @@ /libs/asio/example/cpp11/executors/Jamfile.v2 /libs/asio/example/cpp11/executors/pipeline.cpp /libs/asio/example/cpp11/executors/priority_scheduler.cpp +/libs/asio/example/cpp11/files/ +/libs/asio/example/cpp11/files/async_file_copy.cpp +/libs/asio/example/cpp11/files/blocking_file_copy.cpp +/libs/asio/example/cpp11/files/Jamfile.v2 /libs/asio/example/cpp11/fork/ /libs/asio/example/cpp11/fork/daemon.cpp /libs/asio/example/cpp11/fork/Jamfile.v2 @@ -5634,6 +7059,8 @@ /libs/asio/example/cpp11/iostreams/Jamfile.v2 /libs/asio/example/cpp11/local/ /libs/asio/example/cpp11/local/connect_pair.cpp +/libs/asio/example/cpp11/local/fd_passing_stream_client.cpp +/libs/asio/example/cpp11/local/fd_passing_stream_server.cpp /libs/asio/example/cpp11/local/iostream_client.cpp /libs/asio/example/cpp11/local/Jamfile.v2 /libs/asio/example/cpp11/local/stream_client.cpp @@ -5655,6 +7082,13 @@ /libs/asio/example/cpp11/operations/composed_7.cpp /libs/asio/example/cpp11/operations/composed_8.cpp /libs/asio/example/cpp11/operations/Jamfile.v2 +/libs/asio/example/cpp11/parallel_group/ +/libs/asio/example/cpp11/parallel_group/Jamfile.v2 +/libs/asio/example/cpp11/parallel_group/ranged_wait_for_all.cpp +/libs/asio/example/cpp11/parallel_group/wait_for_all.cpp +/libs/asio/example/cpp11/parallel_group/wait_for_one.cpp +/libs/asio/example/cpp11/parallel_group/wait_for_one_error.cpp +/libs/asio/example/cpp11/parallel_group/wait_for_one_success.cpp /libs/asio/example/cpp11/socks4/ /libs/asio/example/cpp11/socks4/Jamfile.v2 /libs/asio/example/cpp11/socks4/socks4.hpp @@ -5666,7 +7100,7 @@ /libs/asio/example/cpp11/ssl/ /libs/asio/example/cpp11/ssl/ca.pem /libs/asio/example/cpp11/ssl/client.cpp -/libs/asio/example/cpp11/ssl/dh2048.pem +/libs/asio/example/cpp11/ssl/dh4096.pem /libs/asio/example/cpp11/ssl/Jamfile.v2 /libs/asio/example/cpp11/ssl/README /libs/asio/example/cpp11/ssl/server.cpp @@ -5681,7 +7115,24 @@ /libs/asio/example/cpp11/timers/ /libs/asio/example/cpp11/timers/Jamfile.v2 /libs/asio/example/cpp11/timers/time_t_timer.cpp +/libs/asio/example/cpp11/type_erasure/ +/libs/asio/example/cpp11/type_erasure/Jamfile.v2 +/libs/asio/example/cpp11/type_erasure/line_reader.hpp +/libs/asio/example/cpp11/type_erasure/main.cpp +/libs/asio/example/cpp11/type_erasure/sleep.cpp +/libs/asio/example/cpp11/type_erasure/sleep.hpp +/libs/asio/example/cpp11/type_erasure/stdin_line_reader.cpp +/libs/asio/example/cpp11/type_erasure/stdin_line_reader.hpp /libs/asio/example/cpp14/ +/libs/asio/example/cpp14/deferred/ +/libs/asio/example/cpp14/deferred/deferred_1.cpp +/libs/asio/example/cpp14/deferred/deferred_2.cpp +/libs/asio/example/cpp14/deferred/deferred_3.cpp +/libs/asio/example/cpp14/deferred/deferred_4.cpp +/libs/asio/example/cpp14/deferred/deferred_5.cpp +/libs/asio/example/cpp14/deferred/deferred_6.cpp +/libs/asio/example/cpp14/deferred/deferred_7.cpp +/libs/asio/example/cpp14/deferred/Jamfile.v2 /libs/asio/example/cpp14/executors/ /libs/asio/example/cpp14/executors/actor.cpp /libs/asio/example/cpp14/executors/async_1.cpp @@ -5692,7 +7143,12 @@ /libs/asio/example/cpp14/executors/Jamfile.v2 /libs/asio/example/cpp14/executors/pipeline.cpp /libs/asio/example/cpp14/executors/priority_scheduler.cpp +/libs/asio/example/cpp14/iostreams/ +/libs/asio/example/cpp14/iostreams/http_client.cpp +/libs/asio/example/cpp14/iostreams/Jamfile.v2 /libs/asio/example/cpp14/operations/ +/libs/asio/example/cpp14/operations/callback_wrapper.cpp +/libs/asio/example/cpp14/operations/c_callback_wrapper.cpp /libs/asio/example/cpp14/operations/composed_1.cpp /libs/asio/example/cpp14/operations/composed_2.cpp /libs/asio/example/cpp14/operations/composed_3.cpp @@ -5702,13 +7158,57 @@ /libs/asio/example/cpp14/operations/composed_7.cpp /libs/asio/example/cpp14/operations/composed_8.cpp /libs/asio/example/cpp14/operations/Jamfile.v2 +/libs/asio/example/cpp14/parallel_group/ +/libs/asio/example/cpp14/parallel_group/Jamfile.v2 +/libs/asio/example/cpp14/parallel_group/parallel_sort.cpp +/libs/asio/example/cpp14/parallel_group/ranged_wait_for_all.cpp +/libs/asio/example/cpp14/parallel_group/wait_for_all.cpp +/libs/asio/example/cpp14/parallel_group/wait_for_one.cpp +/libs/asio/example/cpp14/parallel_group/wait_for_one_error.cpp +/libs/asio/example/cpp14/parallel_group/wait_for_one_success.cpp /libs/asio/example/cpp17/ /libs/asio/example/cpp17/coroutines_ts/ /libs/asio/example/cpp17/coroutines_ts/chat_server.cpp /libs/asio/example/cpp17/coroutines_ts/echo_server.cpp +/libs/asio/example/cpp17/coroutines_ts/echo_server_with_as_single_default.cpp +/libs/asio/example/cpp17/coroutines_ts/echo_server_with_as_tuple_default.cpp /libs/asio/example/cpp17/coroutines_ts/echo_server_with_default.cpp /libs/asio/example/cpp17/coroutines_ts/range_based_for.cpp /libs/asio/example/cpp17/coroutines_ts/refactored_echo_server.cpp +/libs/asio/example/cpp20/ +/libs/asio/example/cpp20/channels/ +/libs/asio/example/cpp20/channels/throttling_proxy.cpp +/libs/asio/example/cpp20/coroutines/ +/libs/asio/example/cpp20/coroutines/chat_server.cpp +/libs/asio/example/cpp20/coroutines/echo_server.cpp +/libs/asio/example/cpp20/coroutines/echo_server_with_as_single_default.cpp +/libs/asio/example/cpp20/coroutines/echo_server_with_as_tuple_default.cpp +/libs/asio/example/cpp20/coroutines/echo_server_with_default.cpp +/libs/asio/example/cpp20/coroutines/echo_server_with_deferred.cpp +/libs/asio/example/cpp20/coroutines/echo_server_with_deferred_default.cpp +/libs/asio/example/cpp20/coroutines/Jamfile.v2 +/libs/asio/example/cpp20/coroutines/refactored_echo_server.cpp +/libs/asio/example/cpp20/coroutines/timeout.cpp +/libs/asio/example/cpp20/operations/ +/libs/asio/example/cpp20/operations/callback_wrapper.cpp +/libs/asio/example/cpp20/operations/c_callback_wrapper.cpp +/libs/asio/example/cpp20/operations/composed_1.cpp +/libs/asio/example/cpp20/operations/composed_2.cpp +/libs/asio/example/cpp20/operations/composed_3.cpp +/libs/asio/example/cpp20/operations/composed_4.cpp +/libs/asio/example/cpp20/operations/composed_5.cpp +/libs/asio/example/cpp20/operations/composed_6.cpp +/libs/asio/example/cpp20/operations/composed_7.cpp +/libs/asio/example/cpp20/operations/composed_8.cpp +/libs/asio/example/cpp20/operations/Jamfile.v2 +/libs/asio/example/cpp20/type_erasure/ +/libs/asio/example/cpp20/type_erasure/Jamfile.v2 +/libs/asio/example/cpp20/type_erasure/line_reader.hpp +/libs/asio/example/cpp20/type_erasure/main.cpp +/libs/asio/example/cpp20/type_erasure/sleep.cpp +/libs/asio/example/cpp20/type_erasure/sleep.hpp +/libs/asio/example/cpp20/type_erasure/stdin_line_reader.cpp +/libs/asio/example/cpp20/type_erasure/stdin_line_reader.hpp /libs/asio/.github/ /libs/asio/.github/ISSUE_TEMPLATE/ /libs/asio/.github/ISSUE_TEMPLATE/config.yml @@ -5718,6 +7218,7 @@ /libs/asio/meta/ /libs/asio/meta/libraries.json /libs/asio/test/ +/libs/asio/test/append.cpp /libs/asio/test/archetypes/ /libs/asio/test/archetypes/async_ops.hpp /libs/asio/test/archetypes/async_result.hpp @@ -5725,33 +7226,52 @@ /libs/asio/test/archetypes/io_control_command.hpp /libs/asio/test/archetypes/settable_socket_option.hpp /libs/asio/test/associated_allocator.cpp +/libs/asio/test/associated_cancellation_slot.cpp /libs/asio/test/associated_executor.cpp +/libs/asio/test/associated_immediate_executor.cpp +/libs/asio/test/associator.cpp +/libs/asio/test/as_tuple.cpp /libs/asio/test/async_result.cpp /libs/asio/test/awaitable.cpp /libs/asio/test/basic_datagram_socket.cpp /libs/asio/test/basic_deadline_timer.cpp +/libs/asio/test/basic_file.cpp +/libs/asio/test/basic_random_access_file.cpp /libs/asio/test/basic_raw_socket.cpp +/libs/asio/test/basic_readable_pipe.cpp /libs/asio/test/basic_seq_packet_socket.cpp /libs/asio/test/basic_serial_port.cpp /libs/asio/test/basic_signal_set.cpp /libs/asio/test/basic_socket_acceptor.cpp /libs/asio/test/basic_socket.cpp /libs/asio/test/basic_streambuf.cpp +/libs/asio/test/basic_stream_file.cpp /libs/asio/test/basic_stream_socket.cpp /libs/asio/test/basic_waitable_timer.cpp +/libs/asio/test/basic_writable_pipe.cpp +/libs/asio/test/bind_allocator.cpp +/libs/asio/test/bind_cancellation_slot.cpp /libs/asio/test/bind_executor.cpp +/libs/asio/test/bind_immediate_executor.cpp /libs/asio/test/buffer.cpp /libs/asio/test/buffered_read_stream.cpp /libs/asio/test/buffered_stream.cpp /libs/asio/test/buffered_write_stream.cpp +/libs/asio/test/buffer_registration.cpp /libs/asio/test/buffers_iterator.cpp +/libs/asio/test/cancellation_signal.cpp +/libs/asio/test/cancellation_state.cpp +/libs/asio/test/cancellation_type.cpp /libs/asio/test/completion_condition.cpp /libs/asio/test/compose.cpp /libs/asio/test/connect.cpp +/libs/asio/test/connect_pipe.cpp +/libs/asio/test/consign.cpp /libs/asio/test/coroutine.cpp /libs/asio/test/co_spawn.cpp /libs/asio/test/deadline_timer.cpp /libs/asio/test/defer.cpp +/libs/asio/test/deferred.cpp /libs/asio/test/detached.cpp /libs/asio/test/dispatch.cpp /libs/asio/test/error.cpp @@ -5784,6 +7304,28 @@ /libs/asio/test/execution/submit.cpp /libs/asio/test/executor.cpp /libs/asio/test/executor_work_guard.cpp +/libs/asio/test/experimental/ +/libs/asio/test/experimental/awaitable_operators.cpp +/libs/asio/test/experimental/basic_channel.cpp +/libs/asio/test/experimental/basic_concurrent_channel.cpp +/libs/asio/test/experimental/channel.cpp +/libs/asio/test/experimental/channel_traits.cpp +/libs/asio/test/experimental/co_composed.cpp +/libs/asio/test/experimental/concurrent_channel.cpp +/libs/asio/test/experimental/coro/ +/libs/asio/test/experimental/coro/allocator.cpp +/libs/asio/test/experimental/coro/cancel.cpp +/libs/asio/test/experimental/coro/co_spawn.cpp +/libs/asio/test/experimental/coro/exception.cpp +/libs/asio/test/experimental/coro/executor.cpp +/libs/asio/test/experimental/coro/Jamfile.v2 +/libs/asio/test/experimental/coro/partial.cpp +/libs/asio/test/experimental/coro/simple_test.cpp +/libs/asio/test/experimental/coro/stack_test.cpp +/libs/asio/test/experimental/coro/use_coro.cpp +/libs/asio/test/experimental/Jamfile.v2 +/libs/asio/test/experimental/promise.cpp +/libs/asio/test/file_base.cpp /libs/asio/test/generic/ /libs/asio/test/generic/basic_endpoint.cpp /libs/asio/test/generic/datagram_protocol.cpp @@ -5831,6 +7373,7 @@ /libs/asio/test/local/basic_endpoint.cpp /libs/asio/test/local/connect_pair.cpp /libs/asio/test/local/datagram_protocol.cpp +/libs/asio/test/local/seq_packet_protocol.cpp /libs/asio/test/local/stream_protocol.cpp /libs/asio/test/packaged_task.cpp /libs/asio/test/placeholders.cpp @@ -5841,6 +7384,7 @@ /libs/asio/test/posix/descriptor.cpp /libs/asio/test/posix/stream_descriptor.cpp /libs/asio/test/post.cpp +/libs/asio/test/prepend.cpp /libs/asio/test/properties/ /libs/asio/test/properties/cpp03/ /libs/asio/test/properties/cpp03/can_prefer_free_prefer.cpp @@ -6019,12 +7563,17 @@ /libs/asio/test/properties/cpp14/require_free.cpp /libs/asio/test/properties/cpp14/require_member.cpp /libs/asio/test/properties/cpp14/require_static.cpp +/libs/asio/test/random_access_file.cpp +/libs/asio/test/readable_pipe.cpp /libs/asio/test/read_at.cpp /libs/asio/test/read.cpp /libs/asio/test/read_until.cpp +/libs/asio/test/recycling_allocator.cpp /libs/asio/test/redirect_error.cpp +/libs/asio/test/registered_buffer.cpp /libs/asio/test/serial_port_base.cpp /libs/asio/test/serial_port.cpp +/libs/asio/test/signal_set_base.cpp /libs/asio/test/signal_set.cpp /libs/asio/test/socket_base.cpp /libs/asio/test/ssl/ @@ -6040,6 +7589,7 @@ /libs/asio/test/steady_timer.cpp /libs/asio/test/strand.cpp /libs/asio/test/streambuf.cpp +/libs/asio/test/stream_file.cpp /libs/asio/test/system_context.cpp /libs/asio/test/system_executor.cpp /libs/asio/test/system_timer.cpp @@ -6070,6 +7620,7 @@ /libs/asio/test/windows/overlapped_ptr.cpp /libs/asio/test/windows/random_access_handle.cpp /libs/asio/test/windows/stream_handle.cpp +/libs/asio/test/writable_pipe.cpp /libs/asio/test/write_at.cpp /libs/asio/test/write.cpp /libs/asio/tools/ @@ -6094,9 +7645,20 @@ /libs/system/doc/system/introduction.adoc /libs/system/doc/system/rationale.adoc /libs/system/doc/system/reference.adoc +/libs/system/doc/system/usage.adoc +/libs/system/.drone/ +/libs/system/.drone/drone.bat +/libs/system/.drone/drone.sh +/libs/system/.drone.jsonnet +/libs/system/extra/ +/libs/system/extra/boost_system.natvis +/libs/system/.github/ +/libs/system/.github/workflows/ +/libs/system/.github/workflows/ci.yml /libs/system/index.html /libs/system/meta/ /libs/system/meta/libraries.json +/libs/system/README.md /libs/system/src/ /libs/system/src/error_code.cpp /libs/system/test/ @@ -6104,21 +7666,46 @@ /libs/system/test/before_main_test.cpp /libs/system/test/cmake_install_test/ /libs/system/test/cmake_install_test/CMakeLists.txt +/libs/system/test/cmake_install_test/main.cpp /libs/system/test/CMakeLists.txt /libs/system/test/cmake_subdir_test/ /libs/system/test/cmake_subdir_test/CMakeLists.txt /libs/system/test/config_test.cpp +/libs/system/test/constexpr_test2.cpp /libs/system/test/constexpr_test.cpp +/libs/system/test/cygwin_error_test.cpp /libs/system/test/dynamic_link_test.cpp +/libs/system/test/ec_hash_value_test.cpp +/libs/system/test/ec_location_test2.cpp +/libs/system/test/ec_location_test3.cpp +/libs/system/test/ec_location_test4.cpp +/libs/system/test/ec_location_test.cpp +/libs/system/test/ec_what_test.cpp +/libs/system/test/ec_wstream_test.cpp +/libs/system/test/errc_test2.cpp +/libs/system/test/errc_test3.cpp +/libs/system/test/errc_test4.cpp +/libs/system/test/errc_test.cpp +/libs/system/test/error_category_test2.cpp /libs/system/test/error_category_test.cpp +/libs/system/test/error_code_test2.cpp +/libs/system/test/error_code_test3.cpp /libs/system/test/error_code_test.cpp /libs/system/test/error_code_user_test.cpp +/libs/system/test/error_condition_test2.cpp +/libs/system/test/error_condition_test3.cpp +/libs/system/test/error_condition_test.cpp /libs/system/test/failed_constexpr_test.cpp /libs/system/test/failed_test.cpp +/libs/system/test/generic_category_test2.cpp +/libs/system/test/generic_category_test3.cpp /libs/system/test/generic_category_test.cpp /libs/system/test/header_only_test.cpp /libs/system/test/initialization_test.cpp +/libs/system/test/is_error_code_enum_test.cpp +/libs/system/test/is_error_condition_enum_test.cpp /libs/system/test/Jamfile.v2 +/libs/system/test/linux_error_test.cpp /libs/system/test/msvc/ /libs/system/test/msvc/common.props /libs/system/test/msvc/config_test/ @@ -6135,19 +7722,64 @@ /libs/system/test/msvc/system-dll/system-dll.vcxproj /libs/system/test/msvc/system.sln /libs/system/test/quick.cpp +/libs/system/test/result_convert_construct.cpp +/libs/system/test/result_copy_assign.cpp +/libs/system/test/result_copy_construct.cpp +/libs/system/test/result_default_construct.cpp +/libs/system/test/result_emplace.cpp +/libs/system/test/result_eq.cpp +/libs/system/test/result_errc_construct.cpp +/libs/system/test/result_error_access.cpp +/libs/system/test/result_error_construct2.cpp +/libs/system/test/result_error_construct3.cpp +/libs/system/test/result_error_construct4.cpp +/libs/system/test/result_error_construct.cpp +/libs/system/test/result_move_assign.cpp +/libs/system/test/result_move_construct.cpp +/libs/system/test/result_range_for.cpp +/libs/system/test/result_swap.cpp +/libs/system/test/result_typedefs.cpp +/libs/system/test/result_value_access.cpp +/libs/system/test/result_value_construct2.cpp +/libs/system/test/result_value_construct3.cpp +/libs/system/test/result_value_construct4.cpp +/libs/system/test/result_value_construct5.cpp +/libs/system/test/result_value_construct.cpp /libs/system/test/single_instance_1.cpp /libs/system/test/single_instance_2.cpp /libs/system/test/single_instance_test.cpp +/libs/system/test/snprintf_test.cpp +/libs/system/test/std_interop_test10.cpp +/libs/system/test/std_interop_test11.cpp +/libs/system/test/std_interop_test12.cpp +/libs/system/test/std_interop_test13.cpp +/libs/system/test/std_interop_test14.cpp +/libs/system/test/std_interop_test15.cpp +/libs/system/test/std_interop_test16.cpp +/libs/system/test/std_interop_test2.cpp +/libs/system/test/std_interop_test3.cpp +/libs/system/test/std_interop_test4.cpp +/libs/system/test/std_interop_test5.cpp +/libs/system/test/std_interop_test6.cpp +/libs/system/test/std_interop_test7.cpp +/libs/system/test/std_interop_test8.cpp +/libs/system/test/std_interop_test9.cpp /libs/system/test/std_interop_test.cpp /libs/system/test/std_mismatch_test.cpp /libs/system/test/std_single_instance_1.cpp /libs/system/test/std_single_instance_2.cpp /libs/system/test/std_single_instance_test.cpp +/libs/system/test/system_category_test2.cpp +/libs/system/test/system_category_test3.cpp /libs/system/test/system_category_test.cpp +/libs/system/test/system_error_test2.cpp +/libs/system/test/system_error_test3.cpp /libs/system/test/system_error_test.cpp /libs/system/test/throws_assign_fail.cpp /libs/system/test/throw_test.cpp /libs/system/test/warnings_test.cpp +/libs/system/test/win32_generic_test.cpp /libs/system/test/win32_hresult_test.cpp +/libs/system/test/windows_error_test.cpp /libs/system/.travis.yml /README.txt diff --git a/tidal-link/link/modules/asio-standalone/asio/boostify.pl b/tidal-link/link/modules/asio-standalone/asio/boostify.pl old mode 100644 new mode 100755 index 460aab952..485206c31 --- a/tidal-link/link/modules/asio-standalone/asio/boostify.pl +++ b/tidal-link/link/modules/asio-standalone/asio/boostify.pl @@ -100,11 +100,17 @@ sub copy_source_file my $is_xsl = 0; $is_xsl = 1 if ($from =~ /.xsl$/); + my $is_quickref = 0; + $is_quickref = 1 if ($from =~ /quickref.xml$/); + my $is_test = 0; $is_test = 1 if ($from =~ /tests\/unit/); my $is_coroutine_related = 0; - $is_coroutine_related = 1 if ($from =~ /await/); + $is_coroutine_related = 1 if ($from =~ /await/ || $from =~ /partial_promise/ || $from =~ /co_composed/); + + my $is_hash_related = 0; + $is_hash_related = 1 if ($from =~ /ip\/address/ || $from =~ /ip\/basic_endpoint/); # Open the files. open(my $input, "<$from") or die("Can't open $from for reading"); @@ -136,8 +142,8 @@ sub copy_source_file $line =~ s/ASIO_/BOOST_ASIO_/g; } - # Extra replacements for quickbook and XSL source only. - if ($is_qbk || $is_xsl) + # Extra replacements for quickbook, XSL and quickref.xml source only. + if ($is_qbk || $is_xsl || $is_quickref) { $line =~ s/asio\.examples/boost_asio.examples/g; $line =~ s/asio\.history/boost_asio.history/g; @@ -156,6 +162,7 @@ sub copy_source_file $line =~ s/\^asio/^boost\/asio/g; $line =~ s/namespaceasio/namespaceboost_1_1asio/g; $line =~ s/ \(\[\@examples\/diffs.*$//; + $line =~ s/boost\/tools\/boostbook/tools\/boostbook/g; } # Conditional replacements. @@ -274,7 +281,7 @@ sub copy_source_file print_line($output, $1 . "boost::thread" . $2, $from, $lineno); } } - elsif ($line =~ /namespace std \{ *$/ && !$is_coroutine_related) + elsif ($line =~ /namespace std \{ *$/ && !$is_coroutine_related && !$is_hash_related) { print_line($output, "namespace boost {", $from, $lineno); print_line($output, "namespace system {", $from, $lineno); @@ -285,7 +292,12 @@ sub copy_source_file $line =~ s/asio::/boost::asio::/g if !$is_xsl; print_line($output, $line, $from, $lineno); } - elsif ($line =~ /^} \/\/ namespace std/ && !$is_coroutine_related) + elsif ($line =~ /ec\.assign\(0, ec\.category\(\)\)/) + { + $line =~ s/ec\.assign\(0, ec\.category\(\)\)/ec = boost::system::error_code()/g; + print_line($output, $line, $from, $lineno); + } + elsif ($line =~ /^} \/\/ namespace std/ && !$is_coroutine_related && !$is_hash_related) { print_line($output, "} // namespace system", $from, $lineno); print_line($output, "} // namespace boost", $from, $lineno); @@ -319,6 +331,16 @@ sub copy_source_file $line =~ s/asio_handler_invoke_helpers/boost_asio_handler_invoke_helpers/g; print_line($output, $line, $from, $lineno); } + elsif ($line =~ /asio_(prefer|query|require|require_concept)_fn/) + { + $line =~ s/asio_(prefer|query|require|require_concept)_fn/boost_asio_$1_fn/g; + print_line($output, $line, $from, $lineno); + } + elsif ($line =~ /asio_execution_/ && !($line =~ /_is_unspecialised/)) + { + $line =~ s/asio_execution_/boost_asio_execution_/g; + print_line($output, $line, $from, $lineno); + } elsif ($line =~ /[\\@]ref boost_bind/) { $line =~ s/[\\@]ref boost_bind/boost::bind()/g; @@ -350,6 +372,25 @@ sub copy_source_file print_line($output, "//", $from, $lineno); print_line($output, $line, $from, $lineno); } + elsif ($is_quickref) + { + if ($line =~ /asio\.reference\.error_code">/) + { + # Line is removed. + } + elsif ($line =~ /asio\.reference\.system_error">/) + { + # Line is removed. + } + elsif ($line =~ /asio\.reference\.thread">/) + { + # Line is removed. + } + else + { + print_line($output, $line, $from, $lineno); + } + } else { print_line($output, $line, $from, $lineno); @@ -373,6 +414,8 @@ sub copy_include_files "include/asio/execution/detail", "include/asio/execution/impl", "include/asio/experimental", + "include/asio/experimental/detail", + "include/asio/experimental/detail/impl", "include/asio/experimental/impl", "include/asio/generic", "include/asio/generic/detail", @@ -399,7 +442,7 @@ sub copy_include_files foreach my $dir (@dirs) { our $boost_dir; - my @files = ( glob("$dir/*.hpp"), glob("$dir/*.ipp"), glob("$dir/*cpp") ); + my @files = ( glob("$dir/*.hpp"), glob("$dir/*.ipp") ); foreach my $file (@files) { if ($file ne "include/asio/thread.hpp" @@ -437,6 +480,8 @@ sub copy_unit_tests "src/tests/unit", "src/tests/unit/archetypes", "src/tests/unit/execution", + "src/tests/unit/experimental", + "src/tests/unit/experimental/coro", "src/tests/unit/generic", "src/tests/unit/ip", "src/tests/unit/local", @@ -549,9 +594,11 @@ sub copy_examples "src/examples/cpp11/allocation", "src/examples/cpp11/buffers", "src/examples/cpp11/chat", + "src/examples/cpp11/deferred", "src/examples/cpp11/echo", "src/examples/cpp11/executors", "src/examples/cpp11/fork", + "src/examples/cpp11/files", "src/examples/cpp11/futures", "src/examples/cpp11/handler_tracking", "src/examples/cpp11/http/server", @@ -561,14 +608,23 @@ sub copy_examples "src/examples/cpp11/multicast", "src/examples/cpp11/nonblocking", "src/examples/cpp11/operations", + "src/examples/cpp11/parallel_group", "src/examples/cpp11/socks4", "src/examples/cpp11/spawn", "src/examples/cpp11/ssl", "src/examples/cpp11/timeouts", "src/examples/cpp11/timers", + "src/examples/cpp11/type_erasure", + "src/examples/cpp14/deferred", "src/examples/cpp14/executors", + "src/examples/cpp14/iostreams", "src/examples/cpp14/operations", - "src/examples/cpp17/coroutines_ts"); + "src/examples/cpp14/parallel_group", + "src/examples/cpp17/coroutines_ts", + "src/examples/cpp20/channels", + "src/examples/cpp20/coroutines", + "src/examples/cpp20/operations", + "src/examples/cpp20/type_erasure"); our $boost_dir; foreach my $dir (@dirs) @@ -597,10 +653,13 @@ sub copy_doc "src/doc/asio.qbk", "src/doc/examples.qbk", "src/doc/net_ts.qbk", + "src/doc/overview.qbk", + "src/doc/quickref.xml", "src/doc/reference.xsl", "src/doc/std_executors.qbk", "src/doc/tutorial.xsl", glob("src/doc/overview/*.qbk"), + glob("src/doc/overview/model/*.qbk"), glob("src/doc/requirements/*.qbk")); foreach my $file (@files) { diff --git a/tidal-link/link/modules/asio-standalone/asio/configure.ac b/tidal-link/link/modules/asio-standalone/asio/configure.ac index fd1954cbc..8eabb6740 100644 --- a/tidal-link/link/modules/asio-standalone/asio/configure.ac +++ b/tidal-link/link/modules/asio-standalone/asio/configure.ac @@ -1,13 +1,14 @@ -AC_INIT(asio, [1.17.0]) +AC_INIT(asio, [1.28.0]) AC_CONFIG_SRCDIR(include/asio.hpp) AM_MAINTAINER_MODE -AM_INIT_AUTOMAKE([tar-ustar]) +AM_INIT_AUTOMAKE([tar-pax]) AC_CANONICAL_HOST AM_PROG_CC_C_O AC_PROG_CXX AC_LANG(C++) AC_PROG_RANLIB +PKG_INSTALLDIR AC_DEFINE(_REENTRANT, [1], [Define this]) @@ -169,13 +170,36 @@ AC_COMPILE_IFELSE( [AC_MSG_RESULT([no]) HAVE_CXX17=no;]) +AC_MSG_CHECKING([whether C++20 is enabled]) +AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[#if __cplusplus < 202002L]] + [[#error C++20 not available]] + [[#endif]])], + [AC_MSG_RESULT([yes]) + HAVE_CXX20=yes;], + [AC_MSG_RESULT([no]) + HAVE_CXX20=no;]) + AC_MSG_CHECKING([whether coroutines are enabled]) AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[#if defined(__clang__)]] - [[# if (__cplusplus >= 201703) && (__cpp_coroutines >= 201703)]] - [[# if __has_include()]] - [[# define ASIO_HAS_CO_AWAIT 1]] + [[# if (__clang_major__ >= 14)]] + [[# if (__cplusplus >= 202002) && (__cpp_impl_coroutine >= 201902)]] + [[# if __has_include()]] + [[# define ASIO_HAS_CO_AWAIT 1]] + [[# endif]] + [[# elif (__cplusplus >= 201703) && (__cpp_coroutines >= 201703)]] + [[# if __has_include()]] + [[# define ASIO_HAS_CO_AWAIT 1]] + [[# endif]] + [[# endif]] + [[# else]] + [[# if (__cplusplus >= 201703) && (__cpp_coroutines >= 201703)]] + [[# if __has_include()]] + [[# define ASIO_HAS_CO_AWAIT 1]] + [[# endif]] [[# endif]] [[# endif]] [[#elif defined(__GNUC__)]] @@ -216,8 +240,12 @@ AM_CONDITIONAL(HAVE_CXX14,test x$HAVE_CXX14 = xyes) AM_CONDITIONAL(HAVE_CXX17,test x$HAVE_CXX17 = xyes) +AM_CONDITIONAL(HAVE_CXX20,test x$HAVE_CXX20 = xyes) + AM_CONDITIONAL(HAVE_COROUTINES,test x$HAVE_COROUTINES = xyes) +AC_CONFIG_FILES([asio.pc]) + AC_OUTPUT([ Makefile include/Makefile @@ -227,4 +255,5 @@ AC_OUTPUT([ src/examples/cpp03/Makefile src/examples/cpp11/Makefile src/examples/cpp14/Makefile - src/examples/cpp17/Makefile]) + src/examples/cpp17/Makefile + src/examples/cpp20/Makefile]) diff --git a/tidal-link/link/modules/asio-standalone/asio/include/Makefile.am b/tidal-link/link/modules/asio-standalone/asio/include/Makefile.am index 265e37ed5..d7a9b9c60 100644 --- a/tidal-link/link/modules/asio-standalone/asio/include/Makefile.am +++ b/tidal-link/link/modules/asio-standalone/asio/include/Makefile.am @@ -1,14 +1,24 @@ # find . -name "*.*pp" | sed -e 's/^\.\///' | sed -e 's/^.*$/ & \\/' | sort nobase_include_HEADERS = \ + asio/any_completion_executor.hpp \ + asio/any_completion_handler.hpp \ asio/any_io_executor.hpp \ + asio/append.hpp \ + asio/as_tuple.hpp \ asio/associated_allocator.hpp \ + asio/associated_cancellation_slot.hpp \ asio/associated_executor.hpp \ + asio/associated_immediate_executor.hpp \ + asio/associator.hpp \ asio/async_result.hpp \ asio/awaitable.hpp \ asio/basic_datagram_socket.hpp \ asio/basic_deadline_timer.hpp \ + asio/basic_file.hpp \ asio/basic_io_object.hpp \ + asio/basic_random_access_file.hpp \ asio/basic_raw_socket.hpp \ + asio/basic_readable_pipe.hpp \ asio/basic_seq_packet_socket.hpp \ asio/basic_serial_port.hpp \ asio/basic_signal_set.hpp \ @@ -18,9 +28,14 @@ nobase_include_HEADERS = \ asio/basic_socket_streambuf.hpp \ asio/basic_streambuf_fwd.hpp \ asio/basic_streambuf.hpp \ + asio/basic_stream_file.hpp \ asio/basic_stream_socket.hpp \ asio/basic_waitable_timer.hpp \ + asio/basic_writable_pipe.hpp \ + asio/bind_allocator.hpp \ + asio/bind_cancellation_slot.hpp \ asio/bind_executor.hpp \ + asio/bind_immediate_executor.hpp \ asio/buffered_read_stream_fwd.hpp \ asio/buffered_read_stream.hpp \ asio/buffered_stream_fwd.hpp \ @@ -28,19 +43,27 @@ nobase_include_HEADERS = \ asio/buffered_write_stream_fwd.hpp \ asio/buffered_write_stream.hpp \ asio/buffer.hpp \ + asio/buffer_registration.hpp \ asio/buffers_iterator.hpp \ + asio/cancellation_signal.hpp \ + asio/cancellation_state.hpp \ + asio/cancellation_type.hpp \ asio/co_spawn.hpp \ asio/completion_condition.hpp \ asio/compose.hpp \ asio/connect.hpp \ + asio/connect_pipe.hpp \ + asio/consign.hpp \ asio/coroutine.hpp \ asio/deadline_timer.hpp \ asio/defer.hpp \ + asio/deferred.hpp \ asio/detached.hpp \ asio/detail/array_fwd.hpp \ asio/detail/array.hpp \ asio/detail/assert.hpp \ asio/detail/atomic_count.hpp \ + asio/detail/base_from_cancellation_state.hpp \ asio/detail/base_from_completion_cond.hpp \ asio/detail/bind_handler.hpp \ asio/detail/blocking_executor_op.hpp \ @@ -52,6 +75,7 @@ nobase_include_HEADERS = \ asio/detail/chrono.hpp \ asio/detail/chrono_time_traits.hpp \ asio/detail/completion_handler.hpp \ + asio/detail/composed_work.hpp \ asio/detail/concurrency_hint.hpp \ asio/detail/conditionally_enabled_event.hpp \ asio/detail/conditionally_enabled_mutex.hpp \ @@ -69,6 +93,7 @@ nobase_include_HEADERS = \ asio/detail/epoll_reactor.hpp \ asio/detail/eventfd_select_interrupter.hpp \ asio/detail/event.hpp \ + asio/detail/exception.hpp \ asio/detail/executor_function.hpp \ asio/detail/executor_op.hpp \ asio/detail/fd_set_adapter.hpp \ @@ -95,16 +120,21 @@ nobase_include_HEADERS = \ asio/detail/impl/epoll_reactor.ipp \ asio/detail/impl/eventfd_select_interrupter.ipp \ asio/detail/impl/handler_tracking.ipp \ + asio/detail/impl/io_uring_descriptor_service.ipp \ + asio/detail/impl/io_uring_file_service.ipp \ + asio/detail/impl/io_uring_service.hpp \ + asio/detail/impl/io_uring_service.ipp \ + asio/detail/impl/io_uring_socket_service_base.ipp \ asio/detail/impl/kqueue_reactor.hpp \ asio/detail/impl/kqueue_reactor.ipp \ asio/detail/impl/null_event.ipp \ asio/detail/impl/pipe_select_interrupter.ipp \ asio/detail/impl/posix_event.ipp \ asio/detail/impl/posix_mutex.ipp \ + asio/detail/impl/posix_serial_port_service.ipp \ asio/detail/impl/posix_thread.ipp \ asio/detail/impl/posix_tss_ptr.ipp \ asio/detail/impl/reactive_descriptor_service.ipp \ - asio/detail/impl/reactive_serial_port_service.ipp \ asio/detail/impl/reactive_socket_service_base.ipp \ asio/detail/impl/resolver_service_base.ipp \ asio/detail/impl/scheduler.ipp \ @@ -119,10 +149,12 @@ nobase_include_HEADERS = \ asio/detail/impl/strand_executor_service.ipp \ asio/detail/impl/strand_service.hpp \ asio/detail/impl/strand_service.ipp \ + asio/detail/impl/thread_context.ipp \ asio/detail/impl/throw_error.ipp \ asio/detail/impl/timer_queue_ptime.ipp \ asio/detail/impl/timer_queue_set.ipp \ asio/detail/impl/win_event.ipp \ + asio/detail/impl/win_iocp_file_service.ipp \ asio/detail/impl/win_iocp_handle_service.ipp \ asio/detail/impl/win_iocp_io_context.hpp \ asio/detail/impl/win_iocp_io_context.ipp \ @@ -137,8 +169,30 @@ nobase_include_HEADERS = \ asio/detail/impl/win_static_mutex.ipp \ asio/detail/impl/win_thread.ipp \ asio/detail/impl/win_tss_ptr.ipp \ + asio/detail/initiate_defer.hpp \ + asio/detail/initiate_dispatch.hpp \ + asio/detail/initiate_post.hpp \ asio/detail/io_control.hpp \ asio/detail/io_object_impl.hpp \ + asio/detail/io_uring_descriptor_read_at_op.hpp \ + asio/detail/io_uring_descriptor_read_op.hpp \ + asio/detail/io_uring_descriptor_service.hpp \ + asio/detail/io_uring_descriptor_write_at_op.hpp \ + asio/detail/io_uring_descriptor_write_op.hpp \ + asio/detail/io_uring_file_service.hpp \ + asio/detail/io_uring_null_buffers_op.hpp \ + asio/detail/io_uring_operation.hpp \ + asio/detail/io_uring_service.hpp \ + asio/detail/io_uring_socket_accept_op.hpp \ + asio/detail/io_uring_socket_connect_op.hpp \ + asio/detail/io_uring_socket_recvfrom_op.hpp \ + asio/detail/io_uring_socket_recvmsg_op.hpp \ + asio/detail/io_uring_socket_recv_op.hpp \ + asio/detail/io_uring_socket_send_op.hpp \ + asio/detail/io_uring_socket_sendto_op.hpp \ + asio/detail/io_uring_socket_service_base.hpp \ + asio/detail/io_uring_socket_service.hpp \ + asio/detail/io_uring_wait_op.hpp \ asio/detail/is_buffer_sequence.hpp \ asio/detail/is_executor.hpp \ asio/detail/keyword_tss_ptr.hpp \ @@ -170,6 +224,7 @@ nobase_include_HEADERS = \ asio/detail/posix_fd_set_adapter.hpp \ asio/detail/posix_global.hpp \ asio/detail/posix_mutex.hpp \ + asio/detail/posix_serial_port_service.hpp \ asio/detail/posix_signal_blocker.hpp \ asio/detail/posix_static_mutex.hpp \ asio/detail/posix_thread.hpp \ @@ -177,7 +232,6 @@ nobase_include_HEADERS = \ asio/detail/push_options.hpp \ asio/detail/reactive_descriptor_service.hpp \ asio/detail/reactive_null_buffers_op.hpp \ - asio/detail/reactive_serial_port_service.hpp \ asio/detail/reactive_socket_accept_op.hpp \ asio/detail/reactive_socket_connect_op.hpp \ asio/detail/reactive_socket_recvfrom_op.hpp \ @@ -188,7 +242,6 @@ nobase_include_HEADERS = \ asio/detail/reactive_socket_service_base.hpp \ asio/detail/reactive_socket_service.hpp \ asio/detail/reactive_wait_op.hpp \ - asio/detail/reactor_fwd.hpp \ asio/detail/reactor.hpp \ asio/detail/reactor_op.hpp \ asio/detail/reactor_op_queue.hpp \ @@ -201,6 +254,7 @@ nobase_include_HEADERS = \ asio/detail/resolver_service.hpp \ asio/detail/scheduler.hpp \ asio/detail/scheduler_operation.hpp \ + asio/detail/scheduler_task.hpp \ asio/detail/scheduler_thread_info.hpp \ asio/detail/scoped_lock.hpp \ asio/detail/scoped_ptr.hpp \ @@ -243,6 +297,7 @@ nobase_include_HEADERS = \ asio/detail/timer_scheduler.hpp \ asio/detail/tss_ptr.hpp \ asio/detail/type_traits.hpp \ + asio/detail/utility.hpp \ asio/detail/variadic_templates.hpp \ asio/detail/wait_handler.hpp \ asio/detail/wait_op.hpp \ @@ -252,6 +307,7 @@ nobase_include_HEADERS = \ asio/detail/win_fd_set_adapter.hpp \ asio/detail/win_fenced_block.hpp \ asio/detail/win_global.hpp \ + asio/detail/win_iocp_file_service.hpp \ asio/detail/win_iocp_handle_read_op.hpp \ asio/detail/win_iocp_handle_service.hpp \ asio/detail/win_iocp_handle_write_op.hpp \ @@ -309,8 +365,8 @@ nobase_include_HEADERS = \ asio/execution/detail/as_operation.hpp \ asio/execution/detail/as_receiver.hpp \ asio/execution/detail/bulk_sender.hpp \ - asio/execution/detail/void_receiver.hpp \ asio/execution/detail/submit_receiver.hpp \ + asio/execution/detail/void_receiver.hpp \ asio/execution/execute.hpp \ asio/execution/executor.hpp \ asio/execution/impl/bad_executor.ipp \ @@ -334,6 +390,49 @@ nobase_include_HEADERS = \ asio/execution/submit.hpp \ asio/executor.hpp \ asio/executor_work_guard.hpp \ + asio/experimental/append.hpp \ + asio/experimental/as_single.hpp \ + asio/experimental/as_tuple.hpp \ + asio/experimental/awaitable_operators.hpp \ + asio/experimental/basic_channel.hpp \ + asio/experimental/basic_concurrent_channel.hpp \ + asio/experimental/cancellation_condition.hpp \ + asio/experimental/channel.hpp \ + asio/experimental/channel_error.hpp \ + asio/experimental/channel_traits.hpp \ + asio/experimental/co_composed.hpp \ + asio/experimental/co_spawn.hpp \ + asio/experimental/concurrent_channel.hpp \ + asio/experimental/coro.hpp \ + asio/experimental/coro_traits.hpp \ + asio/experimental/deferred.hpp \ + asio/experimental/detail/channel_handler.hpp \ + asio/experimental/detail/channel_message.hpp \ + asio/experimental/detail/channel_operation.hpp \ + asio/experimental/detail/channel_payload.hpp \ + asio/experimental/detail/channel_receive_op.hpp \ + asio/experimental/detail/channel_send_functions.hpp \ + asio/experimental/detail/channel_send_op.hpp \ + asio/experimental/detail/channel_service.hpp \ + asio/experimental/detail/coro_completion_handler.hpp \ + asio/experimental/detail/coro_promise_allocator.hpp \ + asio/experimental/detail/has_signature.hpp \ + asio/experimental/detail/impl/channel_service.hpp \ + asio/experimental/detail/partial_promise.hpp \ + asio/experimental/impl/as_single.hpp \ + asio/experimental/impl/channel_error.ipp \ + asio/experimental/impl/co_composed.hpp \ + asio/experimental/impl/coro.hpp \ + asio/experimental/impl/parallel_group.hpp \ + asio/experimental/impl/promise.hpp \ + asio/experimental/impl/use_coro.hpp \ + asio/experimental/impl/use_promise.hpp \ + asio/experimental/parallel_group.hpp \ + asio/experimental/prepend.hpp \ + asio/experimental/promise.hpp \ + asio/experimental/use_coro.hpp \ + asio/experimental/use_promise.hpp \ + asio/file_base.hpp \ asio/generic/basic_endpoint.hpp \ asio/generic/datagram_protocol.hpp \ asio/generic/detail/endpoint.hpp \ @@ -346,15 +445,21 @@ nobase_include_HEADERS = \ asio/handler_invoke_hook.hpp \ asio/high_resolution_timer.hpp \ asio.hpp \ + asio/impl/any_completion_executor.ipp \ + asio/impl/any_io_executor.ipp \ + asio/impl/append.hpp \ + asio/impl/as_tuple.hpp \ asio/impl/awaitable.hpp \ asio/impl/buffered_read_stream.hpp \ asio/impl/buffered_write_stream.hpp \ + asio/impl/cancellation_signal.ipp \ asio/impl/co_spawn.hpp \ - asio/impl/compose.hpp \ asio/impl/connect.hpp \ - asio/impl/defer.hpp \ + asio/impl/connect_pipe.hpp \ + asio/impl/connect_pipe.ipp \ + asio/impl/consign.hpp \ + asio/impl/deferred.hpp \ asio/impl/detached.hpp \ - asio/impl/dispatch.hpp \ asio/impl/error_code.ipp \ asio/impl/error.ipp \ asio/impl/execution_context.hpp \ @@ -365,7 +470,7 @@ nobase_include_HEADERS = \ asio/impl/io_context.hpp \ asio/impl/io_context.ipp \ asio/impl/multiple_exceptions.ipp \ - asio/impl/post.hpp \ + asio/impl/prepend.hpp \ asio/impl/read_at.hpp \ asio/impl/read.hpp \ asio/impl/read_until.hpp \ @@ -373,7 +478,6 @@ nobase_include_HEADERS = \ asio/impl/serial_port_base.hpp \ asio/impl/serial_port_base.ipp \ asio/impl/spawn.hpp \ - asio/impl/src.cpp \ asio/impl/src.hpp \ asio/impl/system_context.hpp \ asio/impl/system_context.ipp \ @@ -429,6 +533,7 @@ nobase_include_HEADERS = \ asio/ip/unicast.hpp \ asio/ip/v6_only.hpp \ asio/is_applicable_property.hpp \ + asio/is_contiguous_iterator.hpp \ asio/is_executor.hpp \ asio/is_read_buffered.hpp \ asio/is_write_buffered.hpp \ @@ -437,6 +542,7 @@ nobase_include_HEADERS = \ asio/local/datagram_protocol.hpp \ asio/local/detail/endpoint.hpp \ asio/local/detail/impl/endpoint.ipp \ + asio/local/seq_packet_protocol.hpp \ asio/local/stream_protocol.hpp \ asio/multiple_exceptions.hpp \ asio/packaged_task.hpp \ @@ -448,15 +554,21 @@ nobase_include_HEADERS = \ asio/posix/stream_descriptor.hpp \ asio/post.hpp \ asio/prefer.hpp \ + asio/prepend.hpp \ asio/query.hpp \ + asio/random_access_file.hpp \ asio/read_at.hpp \ asio/read.hpp \ asio/read_until.hpp \ + asio/readable_pipe.hpp \ + asio/recycling_allocator.hpp \ asio/redirect_error.hpp \ + asio/registered_buffer.hpp \ asio/require.hpp \ asio/require_concept.hpp \ asio/serial_port_base.hpp \ asio/serial_port.hpp \ + asio/signal_set_base.hpp \ asio/signal_set.hpp \ asio/socket_base.hpp \ asio/spawn.hpp \ @@ -494,6 +606,7 @@ nobase_include_HEADERS = \ asio/steady_timer.hpp \ asio/strand.hpp \ asio/streambuf.hpp \ + asio/stream_file.hpp \ asio/system_context.hpp \ asio/system_error.hpp \ asio/system_executor.hpp \ @@ -556,6 +669,7 @@ nobase_include_HEADERS = \ asio/windows/overlapped_ptr.hpp \ asio/windows/random_access_handle.hpp \ asio/windows/stream_handle.hpp \ + asio/writable_pipe.hpp \ asio/write_at.hpp \ asio/write.hpp \ asio/yield.hpp diff --git a/tidal-link/link/modules/asio-standalone/asio/include/asio.hpp b/tidal-link/link/modules/asio-standalone/asio/include/asio.hpp index 345aec71e..a973ab178 100644 --- a/tidal-link/link/modules/asio-standalone/asio/include/asio.hpp +++ b/tidal-link/link/modules/asio-standalone/asio/include/asio.hpp @@ -2,7 +2,7 @@ // asio.hpp // ~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2023 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -15,14 +15,25 @@ # pragma once #endif // defined(_MSC_VER) && (_MSC_VER >= 1200) +#include "asio/any_completion_executor.hpp" +#include "asio/any_completion_handler.hpp" +#include "asio/any_io_executor.hpp" +#include "asio/append.hpp" +#include "asio/as_tuple.hpp" #include "asio/associated_allocator.hpp" +#include "asio/associated_cancellation_slot.hpp" #include "asio/associated_executor.hpp" +#include "asio/associated_immediate_executor.hpp" +#include "asio/associator.hpp" #include "asio/async_result.hpp" #include "asio/awaitable.hpp" #include "asio/basic_datagram_socket.hpp" #include "asio/basic_deadline_timer.hpp" +#include "asio/basic_file.hpp" #include "asio/basic_io_object.hpp" +#include "asio/basic_random_access_file.hpp" #include "asio/basic_raw_socket.hpp" +#include "asio/basic_readable_pipe.hpp" #include "asio/basic_seq_packet_socket.hpp" #include "asio/basic_serial_port.hpp" #include "asio/basic_signal_set.hpp" @@ -30,11 +41,17 @@ #include "asio/basic_socket_acceptor.hpp" #include "asio/basic_socket_iostream.hpp" #include "asio/basic_socket_streambuf.hpp" +#include "asio/basic_stream_file.hpp" #include "asio/basic_stream_socket.hpp" #include "asio/basic_streambuf.hpp" #include "asio/basic_waitable_timer.hpp" +#include "asio/basic_writable_pipe.hpp" +#include "asio/bind_allocator.hpp" +#include "asio/bind_cancellation_slot.hpp" #include "asio/bind_executor.hpp" +#include "asio/bind_immediate_executor.hpp" #include "asio/buffer.hpp" +#include "asio/buffer_registration.hpp" #include "asio/buffered_read_stream_fwd.hpp" #include "asio/buffered_read_stream.hpp" #include "asio/buffered_stream_fwd.hpp" @@ -42,13 +59,19 @@ #include "asio/buffered_write_stream_fwd.hpp" #include "asio/buffered_write_stream.hpp" #include "asio/buffers_iterator.hpp" +#include "asio/cancellation_signal.hpp" +#include "asio/cancellation_state.hpp" +#include "asio/cancellation_type.hpp" #include "asio/co_spawn.hpp" #include "asio/completion_condition.hpp" #include "asio/compose.hpp" #include "asio/connect.hpp" +#include "asio/connect_pipe.hpp" +#include "asio/consign.hpp" #include "asio/coroutine.hpp" #include "asio/deadline_timer.hpp" #include "asio/defer.hpp" +#include "asio/deferred.hpp" #include "asio/detached.hpp" #include "asio/dispatch.hpp" #include "asio/error.hpp" @@ -84,6 +107,7 @@ #include "asio/execution_context.hpp" #include "asio/executor.hpp" #include "asio/executor_work_guard.hpp" +#include "asio/file_base.hpp" #include "asio/generic/basic_endpoint.hpp" #include "asio/generic/datagram_protocol.hpp" #include "asio/generic/raw_protocol.hpp" @@ -122,12 +146,14 @@ #include "asio/ip/unicast.hpp" #include "asio/ip/v6_only.hpp" #include "asio/is_applicable_property.hpp" +#include "asio/is_contiguous_iterator.hpp" #include "asio/is_executor.hpp" #include "asio/is_read_buffered.hpp" #include "asio/is_write_buffered.hpp" #include "asio/local/basic_endpoint.hpp" #include "asio/local/connect_pair.hpp" #include "asio/local/datagram_protocol.hpp" +#include "asio/local/seq_packet_protocol.hpp" #include "asio/local/stream_protocol.hpp" #include "asio/multiple_exceptions.hpp" #include "asio/packaged_task.hpp" @@ -139,20 +165,27 @@ #include "asio/posix/stream_descriptor.hpp" #include "asio/post.hpp" #include "asio/prefer.hpp" +#include "asio/prepend.hpp" #include "asio/query.hpp" +#include "asio/random_access_file.hpp" #include "asio/read.hpp" #include "asio/read_at.hpp" #include "asio/read_until.hpp" +#include "asio/readable_pipe.hpp" +#include "asio/recycling_allocator.hpp" #include "asio/redirect_error.hpp" +#include "asio/registered_buffer.hpp" #include "asio/require.hpp" #include "asio/require_concept.hpp" #include "asio/serial_port.hpp" #include "asio/serial_port_base.hpp" #include "asio/signal_set.hpp" +#include "asio/signal_set_base.hpp" #include "asio/socket_base.hpp" #include "asio/static_thread_pool.hpp" #include "asio/steady_timer.hpp" #include "asio/strand.hpp" +#include "asio/stream_file.hpp" #include "asio/streambuf.hpp" #include "asio/system_context.hpp" #include "asio/system_error.hpp" @@ -176,6 +209,7 @@ #include "asio/windows/overlapped_ptr.hpp" #include "asio/windows/random_access_handle.hpp" #include "asio/windows/stream_handle.hpp" +#include "asio/writable_pipe.hpp" #include "asio/write.hpp" #include "asio/write_at.hpp" diff --git a/tidal-link/link/modules/asio-standalone/asio/include/asio/any_completion_executor.hpp b/tidal-link/link/modules/asio-standalone/asio/include/asio/any_completion_executor.hpp new file mode 100644 index 000000000..420927cc1 --- /dev/null +++ b/tidal-link/link/modules/asio-standalone/asio/include/asio/any_completion_executor.hpp @@ -0,0 +1,342 @@ +// +// any_completion_executor.hpp +// ~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +// Copyright (c) 2003-2023 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// +// Distributed under the Boost Software License, Version 1.0. (See accompanying +// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// + +#ifndef ASIO_ANY_COMPLETION_EXECUTOR_HPP +#define ASIO_ANY_COMPLETION_EXECUTOR_HPP + +#if defined(_MSC_VER) && (_MSC_VER >= 1200) +# pragma once +#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) + +#include "asio/detail/config.hpp" +#if defined(ASIO_USE_TS_EXECUTOR_AS_DEFAULT) +# include "asio/executor.hpp" +#else // defined(ASIO_USE_TS_EXECUTOR_AS_DEFAULT) +# include "asio/execution.hpp" +#endif // defined(ASIO_USE_TS_EXECUTOR_AS_DEFAULT) + +#include "asio/detail/push_options.hpp" + +namespace asio { + +#if defined(ASIO_USE_TS_EXECUTOR_AS_DEFAULT) + +typedef executor any_completion_executor; + +#else // defined(ASIO_USE_TS_EXECUTOR_AS_DEFAULT) + +/// Polymorphic executor type for use with I/O objects. +/** + * The @c any_completion_executor type is a polymorphic executor that supports + * the set of properties required for the execution of completion handlers. It + * is defined as the execution::any_executor class template parameterised as + * follows: + * @code execution::any_executor< + * execution::prefer_only, + * execution::prefer_only + * execution::prefer_only, + * execution::prefer_only + * > @endcode + */ +class any_completion_executor : +#if defined(GENERATING_DOCUMENTATION) + public execution::any_executor<...> +#else // defined(GENERATING_DOCUMENTATION) + public execution::any_executor< + execution::prefer_only, + execution::prefer_only, + execution::prefer_only, + execution::prefer_only + > +#endif // defined(GENERATING_DOCUMENTATION) +{ +public: +#if !defined(GENERATING_DOCUMENTATION) + typedef execution::any_executor< + execution::prefer_only, + execution::prefer_only, + execution::prefer_only, + execution::prefer_only + > base_type; + + typedef void supportable_properties_type( + execution::prefer_only, + execution::prefer_only, + execution::prefer_only, + execution::prefer_only + ); +#endif // !defined(GENERATING_DOCUMENTATION) + + /// Default constructor. + ASIO_DECL any_completion_executor() ASIO_NOEXCEPT; + + /// Construct in an empty state. Equivalent effects to default constructor. + ASIO_DECL any_completion_executor(nullptr_t) ASIO_NOEXCEPT; + + /// Copy constructor. + ASIO_DECL any_completion_executor( + const any_completion_executor& e) ASIO_NOEXCEPT; + +#if defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) + /// Move constructor. + ASIO_DECL any_completion_executor( + any_completion_executor&& e) ASIO_NOEXCEPT; +#endif // defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) + + /// Construct to point to the same target as another any_executor. +#if defined(GENERATING_DOCUMENTATION) + template + any_completion_executor( + execution::any_executor e); +#else // defined(GENERATING_DOCUMENTATION) + template + any_completion_executor(OtherAnyExecutor e, + typename constraint< + conditional< + !is_same::value + && is_base_of::value, + typename execution::detail::supportable_properties< + 0, supportable_properties_type>::template + is_valid_target, + false_type + >::type::value + >::type = 0) + : base_type(ASIO_MOVE_CAST(OtherAnyExecutor)(e)) + { + } +#endif // defined(GENERATING_DOCUMENTATION) + + /// Construct to point to the same target as another any_executor. +#if defined(GENERATING_DOCUMENTATION) + template + any_completion_executor(std::nothrow_t, + execution::any_executor e); +#else // defined(GENERATING_DOCUMENTATION) + template + any_completion_executor(std::nothrow_t, OtherAnyExecutor e, + typename constraint< + conditional< + !is_same::value + && is_base_of::value, + typename execution::detail::supportable_properties< + 0, supportable_properties_type>::template + is_valid_target, + false_type + >::type::value + >::type = 0) ASIO_NOEXCEPT + : base_type(std::nothrow, ASIO_MOVE_CAST(OtherAnyExecutor)(e)) + { + } +#endif // defined(GENERATING_DOCUMENTATION) + + /// Construct to point to the same target as another any_executor. + ASIO_DECL any_completion_executor(std::nothrow_t, + const any_completion_executor& e) ASIO_NOEXCEPT; + +#if defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) + /// Construct to point to the same target as another any_executor. + ASIO_DECL any_completion_executor(std::nothrow_t, + any_completion_executor&& e) ASIO_NOEXCEPT; +#endif // defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) + + /// Construct a polymorphic wrapper for the specified executor. +#if defined(GENERATING_DOCUMENTATION) + template + any_completion_executor(Executor e); +#else // defined(GENERATING_DOCUMENTATION) + template + any_completion_executor(Executor e, + typename constraint< + conditional< + !is_same::value + && !is_base_of::value, + execution::detail::is_valid_target_executor< + Executor, supportable_properties_type>, + false_type + >::type::value + >::type = 0) + : base_type(ASIO_MOVE_CAST(Executor)(e)) + { + } +#endif // defined(GENERATING_DOCUMENTATION) + + /// Construct a polymorphic wrapper for the specified executor. +#if defined(GENERATING_DOCUMENTATION) + template + any_completion_executor(std::nothrow_t, Executor e); +#else // defined(GENERATING_DOCUMENTATION) + template + any_completion_executor(std::nothrow_t, Executor e, + typename constraint< + conditional< + !is_same::value + && !is_base_of::value, + execution::detail::is_valid_target_executor< + Executor, supportable_properties_type>, + false_type + >::type::value + >::type = 0) ASIO_NOEXCEPT + : base_type(std::nothrow, ASIO_MOVE_CAST(Executor)(e)) + { + } +#endif // defined(GENERATING_DOCUMENTATION) + + /// Assignment operator. + ASIO_DECL any_completion_executor& operator=( + const any_completion_executor& e) ASIO_NOEXCEPT; + +#if defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) + /// Move assignment operator. + ASIO_DECL any_completion_executor& operator=( + any_completion_executor&& e) ASIO_NOEXCEPT; +#endif // defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) + + /// Assignment operator that sets the polymorphic wrapper to the empty state. + ASIO_DECL any_completion_executor& operator=(nullptr_t); + + /// Destructor. + ASIO_DECL ~any_completion_executor(); + + /// Swap targets with another polymorphic wrapper. + ASIO_DECL void swap(any_completion_executor& other) ASIO_NOEXCEPT; + + /// Obtain a polymorphic wrapper with the specified property. + /** + * Do not call this function directly. It is intended for use with the + * asio::require and asio::prefer customisation points. + * + * For example: + * @code any_completion_executor ex = ...; + * auto ex2 = asio::require(ex, execution::relationship.fork); @endcode + */ + template + any_completion_executor require(const Property& p, + typename constraint< + traits::require_member::is_valid + >::type = 0) const + { + return static_cast(*this).require(p); + } + + /// Obtain a polymorphic wrapper with the specified property. + /** + * Do not call this function directly. It is intended for use with the + * asio::prefer customisation point. + * + * For example: + * @code any_completion_executor ex = ...; + * auto ex2 = asio::prefer(ex, execution::relationship.fork); @endcode + */ + template + any_completion_executor prefer(const Property& p, + typename constraint< + traits::prefer_member::is_valid + >::type = 0) const + { + return static_cast(*this).prefer(p); + } +}; + +#if !defined(GENERATING_DOCUMENTATION) + +template <> +ASIO_DECL any_completion_executor any_completion_executor::prefer( + const execution::outstanding_work_t::tracked_t&, int) const; + +template <> +ASIO_DECL any_completion_executor any_completion_executor::prefer( + const execution::outstanding_work_t::untracked_t&, int) const; + +template <> +ASIO_DECL any_completion_executor any_completion_executor::prefer( + const execution::relationship_t::fork_t&, int) const; + +template <> +ASIO_DECL any_completion_executor any_completion_executor::prefer( + const execution::relationship_t::continuation_t&, int) const; + +namespace traits { + +#if !defined(ASIO_HAS_DEDUCED_EQUALITY_COMPARABLE_TRAIT) + +template <> +struct equality_comparable +{ + static const bool is_valid = true; + static const bool is_noexcept = true; +}; + +#endif // !defined(ASIO_HAS_DEDUCED_EQUALITY_COMPARABLE_TRAIT) + +#if !defined(ASIO_HAS_DEDUCED_EXECUTE_MEMBER_TRAIT) + +template +struct execute_member +{ + static const bool is_valid = true; + static const bool is_noexcept = false; + typedef void result_type; +}; + +#endif // !defined(ASIO_HAS_DEDUCED_EXECUTE_MEMBER_TRAIT) + +#if !defined(ASIO_HAS_DEDUCED_QUERY_MEMBER_TRAIT) + +template +struct query_member : + query_member +{ +}; + +#endif // !defined(ASIO_HAS_DEDUCED_QUERY_MEMBER_TRAIT) + +#if !defined(ASIO_HAS_DEDUCED_REQUIRE_MEMBER_TRAIT) + +template +struct require_member : + require_member +{ + typedef any_completion_executor result_type; +}; + +#endif // !defined(ASIO_HAS_DEDUCED_REQUIRE_MEMBER_TRAIT) + +#if !defined(ASIO_HAS_DEDUCED_PREFER_MEMBER_TRAIT) + +template +struct prefer_member : + prefer_member +{ + typedef any_completion_executor result_type; +}; + +#endif // !defined(ASIO_HAS_DEDUCED_PREFER_MEMBER_TRAIT) + +} // namespace traits + +#endif // !defined(GENERATING_DOCUMENTATION) + +#endif // defined(ASIO_USE_TS_EXECUTOR_AS_DEFAULT) + +} // namespace asio + +#include "asio/detail/pop_options.hpp" + +#if defined(ASIO_HEADER_ONLY) \ + && !defined(ASIO_USE_TS_EXECUTOR_AS_DEFAULT) +# include "asio/impl/any_completion_executor.ipp" +#endif // defined(ASIO_HEADER_ONLY) + // && !defined(ASIO_USE_TS_EXECUTOR_AS_DEFAULT) + +#endif // ASIO_ANY_COMPLETION_EXECUTOR_HPP diff --git a/tidal-link/link/modules/asio-standalone/asio/include/asio/any_completion_handler.hpp b/tidal-link/link/modules/asio-standalone/asio/include/asio/any_completion_handler.hpp new file mode 100644 index 000000000..cd114537f --- /dev/null +++ b/tidal-link/link/modules/asio-standalone/asio/include/asio/any_completion_handler.hpp @@ -0,0 +1,762 @@ +// +// any_completion_handler.hpp +// ~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +// Copyright (c) 2003-2023 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// +// Distributed under the Boost Software License, Version 1.0. (See accompanying +// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// + +#ifndef ASIO_ANY_COMPLETION_HANDLER_HPP +#define ASIO_ANY_COMPLETION_HANDLER_HPP + +#include "asio/detail/config.hpp" + +#if (defined(ASIO_HAS_STD_TUPLE) \ + && defined(ASIO_HAS_MOVE) \ + && defined(ASIO_HAS_VARIADIC_TEMPLATES)) \ + || defined(GENERATING_DOCUMENTATION) + +#include +#include +#include +#include +#include "asio/any_completion_executor.hpp" +#include "asio/associated_allocator.hpp" +#include "asio/associated_cancellation_slot.hpp" +#include "asio/associated_executor.hpp" +#include "asio/cancellation_state.hpp" +#include "asio/recycling_allocator.hpp" + +#include "asio/detail/push_options.hpp" + +namespace asio { +namespace detail { + +class any_completion_handler_impl_base +{ +public: + template + explicit any_completion_handler_impl_base(S&& slot) + : cancel_state_(ASIO_MOVE_CAST(S)(slot), enable_total_cancellation()) + { + } + + cancellation_slot get_cancellation_slot() const ASIO_NOEXCEPT + { + return cancel_state_.slot(); + } + +private: + cancellation_state cancel_state_; +}; + +template +class any_completion_handler_impl : + public any_completion_handler_impl_base +{ +public: + template + any_completion_handler_impl(S&& slot, H&& h) + : any_completion_handler_impl_base(ASIO_MOVE_CAST(S)(slot)), + handler_(ASIO_MOVE_CAST(H)(h)) + { + } + + struct uninit_deleter + { + typename std::allocator_traits< + associated_allocator_t>>::template + rebind_alloc alloc; + + void operator()(any_completion_handler_impl* ptr) + { + std::allocator_traits::deallocate(alloc, ptr, 1); + } + }; + + struct deleter + { + typename std::allocator_traits< + associated_allocator_t>>::template + rebind_alloc alloc; + + void operator()(any_completion_handler_impl* ptr) + { + std::allocator_traits::destroy(alloc, ptr); + std::allocator_traits::deallocate(alloc, ptr, 1); + } + }; + + template + static any_completion_handler_impl* create(S&& slot, H&& h) + { + uninit_deleter d{ + (get_associated_allocator)(h, + asio::recycling_allocator())}; + + std::unique_ptr uninit_ptr( + std::allocator_traits::allocate(d.alloc, 1), d); + + any_completion_handler_impl* ptr = + new (uninit_ptr.get()) any_completion_handler_impl( + ASIO_MOVE_CAST(S)(slot), ASIO_MOVE_CAST(H)(h)); + + uninit_ptr.release(); + return ptr; + } + + void destroy() + { + deleter d{ + (get_associated_allocator)(handler_, + asio::recycling_allocator())}; + + d(this); + } + + any_completion_executor executor( + const any_completion_executor& candidate) const ASIO_NOEXCEPT + { + return any_completion_executor(std::nothrow, + (get_associated_executor)(handler_, candidate)); + } + + void* allocate(std::size_t size, std::size_t align) const + { + typename std::allocator_traits< + associated_allocator_t>>::template + rebind_alloc alloc( + (get_associated_allocator)(handler_, + asio::recycling_allocator())); + + std::size_t space = size + align - 1; + unsigned char* base = + std::allocator_traits::allocate( + alloc, space + sizeof(std::ptrdiff_t)); + + void* p = base; + if (detail::align(align, size, p, space)) + { + std::ptrdiff_t off = static_cast(p) - base; + std::memcpy(static_cast(p) + size, &off, sizeof(off)); + return p; + } + + std::bad_alloc ex; + asio::detail::throw_exception(ex); + return nullptr; + } + + void deallocate(void* p, std::size_t size, std::size_t align) const + { + if (p) + { + typename std::allocator_traits< + associated_allocator_t>>::template + rebind_alloc alloc( + (get_associated_allocator)(handler_, + asio::recycling_allocator())); + + std::ptrdiff_t off; + std::memcpy(&off, static_cast(p) + size, sizeof(off)); + unsigned char* base = static_cast(p) - off; + + std::allocator_traits::deallocate( + alloc, base, size + align -1 + sizeof(std::ptrdiff_t)); + } + } + + template + void call(Args&&... args) + { + deleter d{ + (get_associated_allocator)(handler_, + asio::recycling_allocator())}; + + std::unique_ptr ptr(this, d); + Handler handler(ASIO_MOVE_CAST(Handler)(handler_)); + ptr.reset(); + + ASIO_MOVE_CAST(Handler)(handler)( + ASIO_MOVE_CAST(Args)(args)...); + } + +private: + Handler handler_; +}; + +template +class any_completion_handler_call_fn; + +template +class any_completion_handler_call_fn +{ +public: + using type = void(*)(any_completion_handler_impl_base*, Args...); + + constexpr any_completion_handler_call_fn(type fn) + : call_fn_(fn) + { + } + + void call(any_completion_handler_impl_base* impl, Args... args) const + { + call_fn_(impl, ASIO_MOVE_CAST(Args)(args)...); + } + + template + static void impl(any_completion_handler_impl_base* impl, Args... args) + { + static_cast*>(impl)->call( + ASIO_MOVE_CAST(Args)(args)...); + } + +private: + type call_fn_; +}; + +template +class any_completion_handler_call_fns; + +template +class any_completion_handler_call_fns : + public any_completion_handler_call_fn +{ +public: + using any_completion_handler_call_fn< + Signature>::any_completion_handler_call_fn; + using any_completion_handler_call_fn::call; +}; + +template +class any_completion_handler_call_fns : + public any_completion_handler_call_fn, + public any_completion_handler_call_fns +{ +public: + template + constexpr any_completion_handler_call_fns(CallFn fn, CallFns... fns) + : any_completion_handler_call_fn(fn), + any_completion_handler_call_fns(fns...) + { + } + + using any_completion_handler_call_fn::call; + using any_completion_handler_call_fns::call; +}; + +class any_completion_handler_destroy_fn +{ +public: + using type = void(*)(any_completion_handler_impl_base*); + + constexpr any_completion_handler_destroy_fn(type fn) + : destroy_fn_(fn) + { + } + + void destroy(any_completion_handler_impl_base* impl) const + { + destroy_fn_(impl); + } + + template + static void impl(any_completion_handler_impl_base* impl) + { + static_cast*>(impl)->destroy(); + } + +private: + type destroy_fn_; +}; + +class any_completion_handler_executor_fn +{ +public: + using type = any_completion_executor(*)( + any_completion_handler_impl_base*, const any_completion_executor&); + + constexpr any_completion_handler_executor_fn(type fn) + : executor_fn_(fn) + { + } + + any_completion_executor executor(any_completion_handler_impl_base* impl, + const any_completion_executor& candidate) const + { + return executor_fn_(impl, candidate); + } + + template + static any_completion_executor impl(any_completion_handler_impl_base* impl, + const any_completion_executor& candidate) + { + return static_cast*>(impl)->executor( + candidate); + } + +private: + type executor_fn_; +}; + +class any_completion_handler_allocate_fn +{ +public: + using type = void*(*)(any_completion_handler_impl_base*, + std::size_t, std::size_t); + + constexpr any_completion_handler_allocate_fn(type fn) + : allocate_fn_(fn) + { + } + + void* allocate(any_completion_handler_impl_base* impl, + std::size_t size, std::size_t align) const + { + return allocate_fn_(impl, size, align); + } + + template + static void* impl(any_completion_handler_impl_base* impl, + std::size_t size, std::size_t align) + { + return static_cast*>(impl)->allocate( + size, align); + } + +private: + type allocate_fn_; +}; + +class any_completion_handler_deallocate_fn +{ +public: + using type = void(*)(any_completion_handler_impl_base*, + void*, std::size_t, std::size_t); + + constexpr any_completion_handler_deallocate_fn(type fn) + : deallocate_fn_(fn) + { + } + + void deallocate(any_completion_handler_impl_base* impl, + void* p, std::size_t size, std::size_t align) const + { + deallocate_fn_(impl, p, size, align); + } + + template + static void impl(any_completion_handler_impl_base* impl, + void* p, std::size_t size, std::size_t align) + { + static_cast*>(impl)->deallocate( + p, size, align); + } + +private: + type deallocate_fn_; +}; + +template +class any_completion_handler_fn_table + : private any_completion_handler_destroy_fn, + private any_completion_handler_executor_fn, + private any_completion_handler_allocate_fn, + private any_completion_handler_deallocate_fn, + private any_completion_handler_call_fns +{ +public: + template + constexpr any_completion_handler_fn_table( + any_completion_handler_destroy_fn::type destroy_fn, + any_completion_handler_executor_fn::type executor_fn, + any_completion_handler_allocate_fn::type allocate_fn, + any_completion_handler_deallocate_fn::type deallocate_fn, + CallFns... call_fns) + : any_completion_handler_destroy_fn(destroy_fn), + any_completion_handler_executor_fn(executor_fn), + any_completion_handler_allocate_fn(allocate_fn), + any_completion_handler_deallocate_fn(deallocate_fn), + any_completion_handler_call_fns(call_fns...) + { + } + + using any_completion_handler_destroy_fn::destroy; + using any_completion_handler_executor_fn::executor; + using any_completion_handler_allocate_fn::allocate; + using any_completion_handler_deallocate_fn::deallocate; + using any_completion_handler_call_fns::call; +}; + +template +struct any_completion_handler_fn_table_instance +{ + static constexpr any_completion_handler_fn_table + value = any_completion_handler_fn_table( + &any_completion_handler_destroy_fn::impl, + &any_completion_handler_executor_fn::impl, + &any_completion_handler_allocate_fn::impl, + &any_completion_handler_deallocate_fn::impl, + &any_completion_handler_call_fn::template impl...); +}; + +template +constexpr any_completion_handler_fn_table +any_completion_handler_fn_table_instance::value; + +} // namespace detail + +template +class any_completion_handler; + +/// An allocator type that forwards memory allocation operations through an +/// instance of @c any_completion_handler. +template +class any_completion_handler_allocator +{ +private: + template + friend class any_completion_handler; + + template + friend class any_completion_handler_allocator; + + const detail::any_completion_handler_fn_table* fn_table_; + detail::any_completion_handler_impl_base* impl_; + + constexpr any_completion_handler_allocator(int, + const any_completion_handler& h) ASIO_NOEXCEPT + : fn_table_(h.fn_table_), + impl_(h.impl_) + { + } + +public: + /// The type of objects that may be allocated by the allocator. + typedef T value_type; + + /// Rebinds an allocator to another value type. + template + struct rebind + { + /// Specifies the type of the rebound allocator. + typedef any_completion_handler_allocator other; + }; + + /// Construct from another @c any_completion_handler_allocator. + template + constexpr any_completion_handler_allocator( + const any_completion_handler_allocator& a) + ASIO_NOEXCEPT + : fn_table_(a.fn_table_), + impl_(a.impl_) + { + } + + /// Equality operator. + constexpr bool operator==( + const any_completion_handler_allocator& other) const ASIO_NOEXCEPT + { + return fn_table_ == other.fn_table_ && impl_ == other.impl_; + } + + /// Inequality operator. + constexpr bool operator!=( + const any_completion_handler_allocator& other) const ASIO_NOEXCEPT + { + return fn_table_ != other.fn_table_ || impl_ != other.impl_; + } + + /// Allocate space for @c n objects of the allocator's value type. + T* allocate(std::size_t n) const + { + return static_cast( + fn_table_->allocate( + impl_, sizeof(T) * n, alignof(T))); + } + + /// Deallocate space for @c n objects of the allocator's value type. + void deallocate(T* p, std::size_t n) const + { + fn_table_->deallocate(impl_, p, sizeof(T) * n, alignof(T)); + } +}; + +/// A protoco-allocator type that may be rebound to obtain an allocator that +/// forwards memory allocation operations through an instance of +/// @c any_completion_handler. +template +class any_completion_handler_allocator +{ +private: + template + friend class any_completion_handler; + + template + friend class any_completion_handler_allocator; + + const detail::any_completion_handler_fn_table* fn_table_; + detail::any_completion_handler_impl_base* impl_; + + constexpr any_completion_handler_allocator(int, + const any_completion_handler& h) ASIO_NOEXCEPT + : fn_table_(h.fn_table_), + impl_(h.impl_) + { + } + +public: + /// @c void as no objects can be allocated through a proto-allocator. + typedef void value_type; + + /// Rebinds an allocator to another value type. + template + struct rebind + { + /// Specifies the type of the rebound allocator. + typedef any_completion_handler_allocator other; + }; + + /// Construct from another @c any_completion_handler_allocator. + template + constexpr any_completion_handler_allocator( + const any_completion_handler_allocator& a) + ASIO_NOEXCEPT + : fn_table_(a.fn_table_), + impl_(a.impl_) + { + } + + /// Equality operator. + constexpr bool operator==( + const any_completion_handler_allocator& other) const ASIO_NOEXCEPT + { + return fn_table_ == other.fn_table_ && impl_ == other.impl_; + } + + /// Inequality operator. + constexpr bool operator!=( + const any_completion_handler_allocator& other) const ASIO_NOEXCEPT + { + return fn_table_ != other.fn_table_ || impl_ != other.impl_; + } +}; + +/// Polymorphic wrapper for completion handlers. +/** + * The @c any_completion_handler class template is a polymorphic wrapper for + * completion handlers that propagates the associated executor, associated + * allocator, and associated cancellation slot through a type-erasing interface. + * + * When using @c any_completion_handler, specify one or more completion + * signatures as template parameters. These will dictate the arguments that may + * be passed to the handler through the polymorphic interface. + * + * Typical uses for @c any_completion_handler include: + * + * @li Separate compilation of asynchronous operation implementations. + * + * @li Enabling interoperability between asynchronous operations and virtual + * functions. + */ +template +class any_completion_handler +{ +#if !defined(GENERATING_DOCUMENTATION) +private: + template + friend class any_completion_handler_allocator; + + template + friend struct associated_executor; + + const detail::any_completion_handler_fn_table* fn_table_; + detail::any_completion_handler_impl_base* impl_; +#endif // !defined(GENERATING_DOCUMENTATION) + +public: + /// The associated allocator type. + using allocator_type = any_completion_handler_allocator; + + /// The associated cancellation slot type. + using cancellation_slot_type = cancellation_slot; + + /// Construct an @c any_completion_handler in an empty state, without a target + /// object. + constexpr any_completion_handler() + : fn_table_(nullptr), + impl_(nullptr) + { + } + + /// Construct an @c any_completion_handler in an empty state, without a target + /// object. + constexpr any_completion_handler(nullptr_t) + : fn_table_(nullptr), + impl_(nullptr) + { + } + + /// Construct an @c any_completion_handler to contain the specified target. + template ::type> + any_completion_handler(H&& h, + typename constraint< + !is_same::type, any_completion_handler>::value + >::type = 0) + : fn_table_( + &detail::any_completion_handler_fn_table_instance< + Handler, Signatures...>::value), + impl_(detail::any_completion_handler_impl::create( + (get_associated_cancellation_slot)(h), ASIO_MOVE_CAST(H)(h))) + { + } + + /// Move-construct an @c any_completion_handler from another. + /** + * After the operation, the moved-from object @c other has no target. + */ + any_completion_handler(any_completion_handler&& other) ASIO_NOEXCEPT + : fn_table_(other.fn_table_), + impl_(other.impl_) + { + other.fn_table_ = nullptr; + other.impl_ = nullptr; + } + + /// Move-assign an @c any_completion_handler from another. + /** + * After the operation, the moved-from object @c other has no target. + */ + any_completion_handler& operator=( + any_completion_handler&& other) ASIO_NOEXCEPT + { + any_completion_handler( + ASIO_MOVE_CAST(any_completion_handler)(other)).swap(*this); + return *this; + } + + /// Assignment operator that sets the polymorphic wrapper to the empty state. + any_completion_handler& operator=(nullptr_t) ASIO_NOEXCEPT + { + any_completion_handler().swap(*this); + return *this; + } + + /// Destructor. + ~any_completion_handler() + { + if (impl_) + fn_table_->destroy(impl_); + } + + /// Test if the polymorphic wrapper is empty. + constexpr explicit operator bool() const ASIO_NOEXCEPT + { + return impl_ != nullptr; + } + + /// Test if the polymorphic wrapper is non-empty. + constexpr bool operator!() const ASIO_NOEXCEPT + { + return impl_ == nullptr; + } + + /// Swap the content of an @c any_completion_handler with another. + void swap(any_completion_handler& other) ASIO_NOEXCEPT + { + std::swap(fn_table_, other.fn_table_); + std::swap(impl_, other.impl_); + } + + /// Get the associated allocator. + allocator_type get_allocator() const ASIO_NOEXCEPT + { + return allocator_type(0, *this); + } + + /// Get the associated cancellation slot. + cancellation_slot_type get_cancellation_slot() const ASIO_NOEXCEPT + { + return impl_->get_cancellation_slot(); + } + + /// Function call operator. + /** + * Invokes target completion handler with the supplied arguments. + * + * This function may only be called once, as the target handler is moved from. + * The polymorphic wrapper is left in an empty state. + * + * Throws @c std::bad_function_call if the polymorphic wrapper is empty. + */ + template + auto operator()(Args&&... args) + -> decltype(fn_table_->call(impl_, ASIO_MOVE_CAST(Args)(args)...)) + { + if (detail::any_completion_handler_impl_base* impl = impl_) + { + impl_ = nullptr; + return fn_table_->call(impl, ASIO_MOVE_CAST(Args)(args)...); + } + std::bad_function_call ex; + asio::detail::throw_exception(ex); + } + + /// Equality operator. + friend constexpr bool operator==( + const any_completion_handler& a, nullptr_t) ASIO_NOEXCEPT + { + return a.impl_ == nullptr; + } + + /// Equality operator. + friend constexpr bool operator==( + nullptr_t, const any_completion_handler& b) ASIO_NOEXCEPT + { + return nullptr == b.impl_; + } + + /// Inequality operator. + friend constexpr bool operator!=( + const any_completion_handler& a, nullptr_t) ASIO_NOEXCEPT + { + return a.impl_ != nullptr; + } + + /// Inequality operator. + friend constexpr bool operator!=( + nullptr_t, const any_completion_handler& b) ASIO_NOEXCEPT + { + return nullptr != b.impl_; + } +}; + +template +struct associated_executor, Candidate> +{ + using type = any_completion_executor; + + static type get(const any_completion_handler& handler, + const Candidate& candidate = Candidate()) ASIO_NOEXCEPT + { + return handler.fn_table_->executor(handler.impl_, + any_completion_executor(std::nothrow, candidate)); + } +}; + +} // namespace asio + +#include "asio/detail/pop_options.hpp" + +#endif // (defined(ASIO_HAS_STD_TUPLE) + // && defined(ASIO_HAS_MOVE) + // && defined(ASIO_HAS_VARIADIC_TEMPLATES)) + // || defined(GENERATING_DOCUMENTATION) + +#endif // ASIO_ANY_COMPLETION_HANDLER_HPP diff --git a/tidal-link/link/modules/asio-standalone/asio/include/asio/any_io_executor.hpp b/tidal-link/link/modules/asio-standalone/asio/include/asio/any_io_executor.hpp index 3a4d13b6c..7a77c90d1 100644 --- a/tidal-link/link/modules/asio-standalone/asio/include/asio/any_io_executor.hpp +++ b/tidal-link/link/modules/asio-standalone/asio/include/asio/any_io_executor.hpp @@ -2,7 +2,7 @@ // any_io_executor.hpp // ~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2023 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -48,19 +48,301 @@ typedef executor any_io_executor; * execution::prefer_only * > @endcode */ +class any_io_executor : #if defined(GENERATING_DOCUMENTATION) -typedef execution::any_executor<...> any_io_executor; + public execution::any_executor<...> #else // defined(GENERATING_DOCUMENTATION) -typedef execution::any_executor< - execution::context_as_t, - execution::blocking_t::never_t, - execution::prefer_only, - execution::prefer_only, - execution::prefer_only, - execution::prefer_only, - execution::prefer_only - > any_io_executor; + public execution::any_executor< + execution::context_as_t, + execution::blocking_t::never_t, + execution::prefer_only, + execution::prefer_only, + execution::prefer_only, + execution::prefer_only, + execution::prefer_only + > #endif // defined(GENERATING_DOCUMENTATION) +{ +public: +#if !defined(GENERATING_DOCUMENTATION) + typedef execution::any_executor< + execution::context_as_t, + execution::blocking_t::never_t, + execution::prefer_only, + execution::prefer_only, + execution::prefer_only, + execution::prefer_only, + execution::prefer_only + > base_type; + + typedef void supportable_properties_type( + execution::context_as_t, + execution::blocking_t::never_t, + execution::prefer_only, + execution::prefer_only, + execution::prefer_only, + execution::prefer_only, + execution::prefer_only + ); +#endif // !defined(GENERATING_DOCUMENTATION) + + /// Default constructor. + ASIO_DECL any_io_executor() ASIO_NOEXCEPT; + + /// Construct in an empty state. Equivalent effects to default constructor. + ASIO_DECL any_io_executor(nullptr_t) ASIO_NOEXCEPT; + + /// Copy constructor. + ASIO_DECL any_io_executor(const any_io_executor& e) ASIO_NOEXCEPT; + +#if defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) + /// Move constructor. + ASIO_DECL any_io_executor(any_io_executor&& e) ASIO_NOEXCEPT; +#endif // defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) + + /// Construct to point to the same target as another any_executor. +#if defined(GENERATING_DOCUMENTATION) + template + any_io_executor(execution::any_executor e); +#else // defined(GENERATING_DOCUMENTATION) + template + any_io_executor(OtherAnyExecutor e, + typename constraint< + conditional< + !is_same::value + && is_base_of::value, + typename execution::detail::supportable_properties< + 0, supportable_properties_type>::template + is_valid_target, + false_type + >::type::value + >::type = 0) + : base_type(ASIO_MOVE_CAST(OtherAnyExecutor)(e)) + { + } +#endif // defined(GENERATING_DOCUMENTATION) + + /// Construct to point to the same target as another any_executor. +#if defined(GENERATING_DOCUMENTATION) + template + any_io_executor(std::nothrow_t, + execution::any_executor e); +#else // defined(GENERATING_DOCUMENTATION) + template + any_io_executor(std::nothrow_t, OtherAnyExecutor e, + typename constraint< + conditional< + !is_same::value + && is_base_of::value, + typename execution::detail::supportable_properties< + 0, supportable_properties_type>::template + is_valid_target, + false_type + >::type::value + >::type = 0) ASIO_NOEXCEPT + : base_type(std::nothrow, ASIO_MOVE_CAST(OtherAnyExecutor)(e)) + { + } +#endif // defined(GENERATING_DOCUMENTATION) + + /// Construct to point to the same target as another any_executor. + ASIO_DECL any_io_executor(std::nothrow_t, + const any_io_executor& e) ASIO_NOEXCEPT; + +#if defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) + /// Construct to point to the same target as another any_executor. + ASIO_DECL any_io_executor(std::nothrow_t, + any_io_executor&& e) ASIO_NOEXCEPT; +#endif // defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) + + /// Construct a polymorphic wrapper for the specified executor. +#if defined(GENERATING_DOCUMENTATION) + template + any_io_executor(Executor e); +#else // defined(GENERATING_DOCUMENTATION) + template + any_io_executor(Executor e, + typename constraint< + conditional< + !is_same::value + && !is_base_of::value, + execution::detail::is_valid_target_executor< + Executor, supportable_properties_type>, + false_type + >::type::value + >::type = 0) + : base_type(ASIO_MOVE_CAST(Executor)(e)) + { + } +#endif // defined(GENERATING_DOCUMENTATION) + + /// Construct a polymorphic wrapper for the specified executor. +#if defined(GENERATING_DOCUMENTATION) + template + any_io_executor(std::nothrow_t, Executor e); +#else // defined(GENERATING_DOCUMENTATION) + template + any_io_executor(std::nothrow_t, Executor e, + typename constraint< + conditional< + !is_same::value + && !is_base_of::value, + execution::detail::is_valid_target_executor< + Executor, supportable_properties_type>, + false_type + >::type::value + >::type = 0) ASIO_NOEXCEPT + : base_type(std::nothrow, ASIO_MOVE_CAST(Executor)(e)) + { + } +#endif // defined(GENERATING_DOCUMENTATION) + + /// Assignment operator. + ASIO_DECL any_io_executor& operator=( + const any_io_executor& e) ASIO_NOEXCEPT; + +#if defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) + /// Move assignment operator. + ASIO_DECL any_io_executor& operator=( + any_io_executor&& e) ASIO_NOEXCEPT; +#endif // defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) + + /// Assignment operator that sets the polymorphic wrapper to the empty state. + ASIO_DECL any_io_executor& operator=(nullptr_t); + + /// Destructor. + ASIO_DECL ~any_io_executor(); + + /// Swap targets with another polymorphic wrapper. + ASIO_DECL void swap(any_io_executor& other) ASIO_NOEXCEPT; + + /// Obtain a polymorphic wrapper with the specified property. + /** + * Do not call this function directly. It is intended for use with the + * asio::require and asio::prefer customisation points. + * + * For example: + * @code any_io_executor ex = ...; + * auto ex2 = asio::require(ex, execution::blocking.possibly); @endcode + */ + template + any_io_executor require(const Property& p, + typename constraint< + traits::require_member::is_valid + >::type = 0) const + { + return static_cast(*this).require(p); + } + + /// Obtain a polymorphic wrapper with the specified property. + /** + * Do not call this function directly. It is intended for use with the + * asio::prefer customisation point. + * + * For example: + * @code any_io_executor ex = ...; + * auto ex2 = asio::prefer(ex, execution::blocking.possibly); @endcode + */ + template + any_io_executor prefer(const Property& p, + typename constraint< + traits::prefer_member::is_valid + >::type = 0) const + { + return static_cast(*this).prefer(p); + } +}; + +#if !defined(GENERATING_DOCUMENTATION) + +template <> +ASIO_DECL any_io_executor any_io_executor::require( + const execution::blocking_t::never_t&, int) const; + +template <> +ASIO_DECL any_io_executor any_io_executor::prefer( + const execution::blocking_t::possibly_t&, int) const; + +template <> +ASIO_DECL any_io_executor any_io_executor::prefer( + const execution::outstanding_work_t::tracked_t&, int) const; + +template <> +ASIO_DECL any_io_executor any_io_executor::prefer( + const execution::outstanding_work_t::untracked_t&, int) const; + +template <> +ASIO_DECL any_io_executor any_io_executor::prefer( + const execution::relationship_t::fork_t&, int) const; + +template <> +ASIO_DECL any_io_executor any_io_executor::prefer( + const execution::relationship_t::continuation_t&, int) const; + +namespace traits { + +#if !defined(ASIO_HAS_DEDUCED_EQUALITY_COMPARABLE_TRAIT) + +template <> +struct equality_comparable +{ + static const bool is_valid = true; + static const bool is_noexcept = true; +}; + +#endif // !defined(ASIO_HAS_DEDUCED_EQUALITY_COMPARABLE_TRAIT) + +#if !defined(ASIO_HAS_DEDUCED_EXECUTE_MEMBER_TRAIT) + +template +struct execute_member +{ + static const bool is_valid = true; + static const bool is_noexcept = false; + typedef void result_type; +}; + +#endif // !defined(ASIO_HAS_DEDUCED_EXECUTE_MEMBER_TRAIT) + +#if !defined(ASIO_HAS_DEDUCED_QUERY_MEMBER_TRAIT) + +template +struct query_member : + query_member +{ +}; + +#endif // !defined(ASIO_HAS_DEDUCED_QUERY_MEMBER_TRAIT) + +#if !defined(ASIO_HAS_DEDUCED_REQUIRE_MEMBER_TRAIT) + +template +struct require_member : + require_member +{ + typedef any_io_executor result_type; +}; + +#endif // !defined(ASIO_HAS_DEDUCED_REQUIRE_MEMBER_TRAIT) + +#if !defined(ASIO_HAS_DEDUCED_PREFER_MEMBER_TRAIT) + +template +struct prefer_member : + prefer_member +{ + typedef any_io_executor result_type; +}; + +#endif // !defined(ASIO_HAS_DEDUCED_PREFER_MEMBER_TRAIT) + +} // namespace traits + +#endif // !defined(GENERATING_DOCUMENTATION) #endif // defined(ASIO_USE_TS_EXECUTOR_AS_DEFAULT) @@ -68,4 +350,10 @@ typedef execution::any_executor< #include "asio/detail/pop_options.hpp" +#if defined(ASIO_HEADER_ONLY) \ + && !defined(ASIO_USE_TS_EXECUTOR_AS_DEFAULT) +# include "asio/impl/any_io_executor.ipp" +#endif // defined(ASIO_HEADER_ONLY) + // && !defined(ASIO_USE_TS_EXECUTOR_AS_DEFAULT) + #endif // ASIO_ANY_IO_EXECUTOR_HPP diff --git a/tidal-link/link/modules/asio-standalone/asio/include/asio/append.hpp b/tidal-link/link/modules/asio-standalone/asio/include/asio/append.hpp new file mode 100644 index 000000000..9ac4a9504 --- /dev/null +++ b/tidal-link/link/modules/asio-standalone/asio/include/asio/append.hpp @@ -0,0 +1,78 @@ +// +// append.hpp +// ~~~~~~~~~~ +// +// Copyright (c) 2003-2023 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// +// Distributed under the Boost Software License, Version 1.0. (See accompanying +// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// + +#ifndef ASIO_APPEND_HPP +#define ASIO_APPEND_HPP + +#if defined(_MSC_VER) && (_MSC_VER >= 1200) +# pragma once +#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) + +#include "asio/detail/config.hpp" + +#if (defined(ASIO_HAS_STD_TUPLE) \ + && defined(ASIO_HAS_VARIADIC_TEMPLATES)) \ + || defined(GENERATING_DOCUMENTATION) + +#include +#include "asio/detail/type_traits.hpp" + +#include "asio/detail/push_options.hpp" + +namespace asio { + +/// Completion token type used to specify that the completion handler +/// arguments should be passed additional values after the results of the +/// operation. +template +class append_t +{ +public: + /// Constructor. + template + ASIO_CONSTEXPR explicit append_t( + ASIO_MOVE_ARG(T) completion_token, + ASIO_MOVE_ARG(V)... values) + : token_(ASIO_MOVE_CAST(T)(completion_token)), + values_(ASIO_MOVE_CAST(V)(values)...) + { + } + +//private: + CompletionToken token_; + std::tuple values_; +}; + +/// Completion token type used to specify that the completion handler +/// arguments should be passed additional values after the results of the +/// operation. +template +ASIO_NODISCARD inline ASIO_CONSTEXPR append_t< + typename decay::type, typename decay::type...> +append(ASIO_MOVE_ARG(CompletionToken) completion_token, + ASIO_MOVE_ARG(Values)... values) +{ + return append_t< + typename decay::type, typename decay::type...>( + ASIO_MOVE_CAST(CompletionToken)(completion_token), + ASIO_MOVE_CAST(Values)(values)...); +} + +} // namespace asio + +#include "asio/detail/pop_options.hpp" + +#include "asio/impl/append.hpp" + +#endif // (defined(ASIO_HAS_STD_TUPLE) + // && defined(ASIO_HAS_VARIADIC_TEMPLATES)) + // || defined(GENERATING_DOCUMENTATION) + +#endif // ASIO_APPEND_HPP diff --git a/tidal-link/link/modules/asio-standalone/asio/include/asio/as_tuple.hpp b/tidal-link/link/modules/asio-standalone/asio/include/asio/as_tuple.hpp new file mode 100644 index 000000000..96ac47c82 --- /dev/null +++ b/tidal-link/link/modules/asio-standalone/asio/include/asio/as_tuple.hpp @@ -0,0 +1,139 @@ +// +// as_tuple.hpp +// ~~~~~~~~~~~~ +// +// Copyright (c) 2003-2023 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// +// Distributed under the Boost Software License, Version 1.0. (See accompanying +// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// + +#ifndef ASIO_AS_TUPLE_HPP +#define ASIO_AS_TUPLE_HPP + +#if defined(_MSC_VER) && (_MSC_VER >= 1200) +# pragma once +#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) + +#include "asio/detail/config.hpp" + +#if (defined(ASIO_HAS_STD_TUPLE) \ + && defined(ASIO_HAS_VARIADIC_TEMPLATES)) \ + || defined(GENERATING_DOCUMENTATION) + +#include "asio/detail/type_traits.hpp" + +#include "asio/detail/push_options.hpp" + +namespace asio { + +/// A @ref completion_token adapter used to specify that the completion handler +/// arguments should be combined into a single tuple argument. +/** + * The as_tuple_t class is used to indicate that any arguments to the + * completion handler should be combined and passed as a single tuple argument. + * The arguments are first moved into a @c std::tuple and that tuple is then + * passed to the completion handler. + */ +template +class as_tuple_t +{ +public: + /// Tag type used to prevent the "default" constructor from being used for + /// conversions. + struct default_constructor_tag {}; + + /// Default constructor. + /** + * This constructor is only valid if the underlying completion token is + * default constructible and move constructible. The underlying completion + * token is itself defaulted as an argument to allow it to capture a source + * location. + */ + ASIO_CONSTEXPR as_tuple_t( + default_constructor_tag = default_constructor_tag(), + CompletionToken token = CompletionToken()) + : token_(ASIO_MOVE_CAST(CompletionToken)(token)) + { + } + + /// Constructor. + template + ASIO_CONSTEXPR explicit as_tuple_t( + ASIO_MOVE_ARG(T) completion_token) + : token_(ASIO_MOVE_CAST(T)(completion_token)) + { + } + + /// Adapts an executor to add the @c as_tuple_t completion token as the + /// default. + template + struct executor_with_default : InnerExecutor + { + /// Specify @c as_tuple_t as the default completion token type. + typedef as_tuple_t default_completion_token_type; + + /// Construct the adapted executor from the inner executor type. + template + executor_with_default(const InnerExecutor1& ex, + typename constraint< + conditional< + !is_same::value, + is_convertible, + false_type + >::type::value + >::type = 0) ASIO_NOEXCEPT + : InnerExecutor(ex) + { + } + }; + + /// Type alias to adapt an I/O object to use @c as_tuple_t as its + /// default completion token type. +#if defined(ASIO_HAS_ALIAS_TEMPLATES) \ + || defined(GENERATING_DOCUMENTATION) + template + using as_default_on_t = typename T::template rebind_executor< + executor_with_default >::other; +#endif // defined(ASIO_HAS_ALIAS_TEMPLATES) + // || defined(GENERATING_DOCUMENTATION) + + /// Function helper to adapt an I/O object to use @c as_tuple_t as its + /// default completion token type. + template + static typename decay::type::template rebind_executor< + executor_with_default::type::executor_type> + >::other + as_default_on(ASIO_MOVE_ARG(T) object) + { + return typename decay::type::template rebind_executor< + executor_with_default::type::executor_type> + >::other(ASIO_MOVE_CAST(T)(object)); + } + +//private: + CompletionToken token_; +}; + +/// Adapt a @ref completion_token to specify that the completion handler +/// arguments should be combined into a single tuple argument. +template +ASIO_NODISCARD inline +ASIO_CONSTEXPR as_tuple_t::type> +as_tuple(ASIO_MOVE_ARG(CompletionToken) completion_token) +{ + return as_tuple_t::type>( + ASIO_MOVE_CAST(CompletionToken)(completion_token)); +} + +} // namespace asio + +#include "asio/detail/pop_options.hpp" + +#include "asio/impl/as_tuple.hpp" + +#endif // (defined(ASIO_HAS_STD_TUPLE) + // && defined(ASIO_HAS_VARIADIC_TEMPLATES)) + // || defined(GENERATING_DOCUMENTATION) + +#endif // ASIO_AS_TUPLE_HPP diff --git a/tidal-link/link/modules/asio-standalone/asio/include/asio/associated_allocator.hpp b/tidal-link/link/modules/asio-standalone/asio/include/asio/associated_allocator.hpp index 14d76b623..8e864673c 100644 --- a/tidal-link/link/modules/asio-standalone/asio/include/asio/associated_allocator.hpp +++ b/tidal-link/link/modules/asio-standalone/asio/include/asio/associated_allocator.hpp @@ -2,7 +2,7 @@ // associated_allocator.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2023 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -17,36 +17,81 @@ #include "asio/detail/config.hpp" #include +#include "asio/associator.hpp" +#include "asio/detail/functional.hpp" #include "asio/detail/type_traits.hpp" #include "asio/detail/push_options.hpp" namespace asio { + +template +struct associated_allocator; + namespace detail { -template +template +struct has_allocator_type : false_type +{ +}; + +template +struct has_allocator_type::type> + : true_type +{ +}; + +template struct associated_allocator_impl { - typedef E type; + typedef void asio_associated_allocator_is_unspecialised; + + typedef A type; + + static type get(const T&) ASIO_NOEXCEPT + { + return type(); + } - static type get(const T&, const E& e) ASIO_NOEXCEPT + static const type& get(const T&, const A& a) ASIO_NOEXCEPT { - return e; + return a; } }; -template -struct associated_allocator_impl +struct associated_allocator_impl::type> { typedef typename T::allocator_type type; - static type get(const T& t, const E&) ASIO_NOEXCEPT + static ASIO_AUTO_RETURN_TYPE_PREFIX(type) get( + const T& t) ASIO_NOEXCEPT + ASIO_AUTO_RETURN_TYPE_SUFFIX((t.get_allocator())) + { + return t.get_allocator(); + } + + static ASIO_AUTO_RETURN_TYPE_PREFIX(type) get( + const T& t, const A&) ASIO_NOEXCEPT + ASIO_AUTO_RETURN_TYPE_SUFFIX((t.get_allocator())) { return t.get_allocator(); } }; +template +struct associated_allocator_impl::value + >::type, + typename void_type< + typename associator::type + >::type> : associator +{ +}; + } // namespace detail /// Traits type used to obtain the allocator associated with an object. @@ -63,29 +108,32 @@ struct associated_allocator_impl > struct associated_allocator +#if !defined(GENERATING_DOCUMENTATION) + : detail::associated_allocator_impl +#endif // !defined(GENERATING_DOCUMENTATION) { +#if defined(GENERATING_DOCUMENTATION) /// If @c T has a nested type @c allocator_type, T::allocator_type. /// Otherwise @c Allocator. -#if defined(GENERATING_DOCUMENTATION) typedef see_below type; -#else // defined(GENERATING_DOCUMENTATION) - typedef typename detail::associated_allocator_impl::type type; -#endif // defined(GENERATING_DOCUMENTATION) + + /// If @c T has a nested type @c allocator_type, returns + /// t.get_allocator(). Otherwise returns @c type(). + static decltype(auto) get(const T& t) ASIO_NOEXCEPT; /// If @c T has a nested type @c allocator_type, returns /// t.get_allocator(). Otherwise returns @c a. - static type get(const T& t, - const Allocator& a = Allocator()) ASIO_NOEXCEPT - { - return detail::associated_allocator_impl::get(t, a); - } + static decltype(auto) get(const T& t, const Allocator& a) ASIO_NOEXCEPT; +#endif // defined(GENERATING_DOCUMENTATION) }; /// Helper function to obtain an object's associated allocator. @@ -93,7 +141,7 @@ struct associated_allocator * @returns associated_allocator::get(t) */ template -inline typename associated_allocator::type +ASIO_NODISCARD inline typename associated_allocator::type get_associated_allocator(const T& t) ASIO_NOEXCEPT { return associated_allocator::get(t); @@ -104,8 +152,11 @@ get_associated_allocator(const T& t) ASIO_NOEXCEPT * @returns associated_allocator::get(t, a) */ template -inline typename associated_allocator::type +ASIO_NODISCARD inline ASIO_AUTO_RETURN_TYPE_PREFIX2( + typename associated_allocator::type) get_associated_allocator(const T& t, const Allocator& a) ASIO_NOEXCEPT + ASIO_AUTO_RETURN_TYPE_SUFFIX(( + associated_allocator::get(t, a))) { return associated_allocator::get(t, a); } @@ -118,6 +169,63 @@ using associated_allocator_t #endif // defined(ASIO_HAS_ALIAS_TEMPLATES) +namespace detail { + +template +struct associated_allocator_forwarding_base +{ +}; + +template +struct associated_allocator_forwarding_base::asio_associated_allocator_is_unspecialised, + void + >::value + >::type> +{ + typedef void asio_associated_allocator_is_unspecialised; +}; + +} // namespace detail + +#if defined(ASIO_HAS_STD_REFERENCE_WRAPPER) \ + || defined(GENERATING_DOCUMENTATION) + +/// Specialisation of associated_allocator for @c std::reference_wrapper. +template +struct associated_allocator, Allocator> +#if !defined(GENERATING_DOCUMENTATION) + : detail::associated_allocator_forwarding_base +#endif // !defined(GENERATING_DOCUMENTATION) +{ + /// Forwards @c type to the associator specialisation for the unwrapped type + /// @c T. + typedef typename associated_allocator::type type; + + /// Forwards the request to get the allocator to the associator specialisation + /// for the unwrapped type @c T. + static type get(reference_wrapper t) ASIO_NOEXCEPT + { + return associated_allocator::get(t.get()); + } + + /// Forwards the request to get the allocator to the associator specialisation + /// for the unwrapped type @c T. + static ASIO_AUTO_RETURN_TYPE_PREFIX(type) get( + reference_wrapper t, const Allocator& a) ASIO_NOEXCEPT + ASIO_AUTO_RETURN_TYPE_SUFFIX(( + associated_allocator::get(t.get(), a))) + { + return associated_allocator::get(t.get(), a); + } +}; + +#endif // defined(ASIO_HAS_STD_REFERENCE_WRAPPER) + // || defined(GENERATING_DOCUMENTATION) + } // namespace asio #include "asio/detail/pop_options.hpp" diff --git a/tidal-link/link/modules/asio-standalone/asio/include/asio/associated_cancellation_slot.hpp b/tidal-link/link/modules/asio-standalone/asio/include/asio/associated_cancellation_slot.hpp new file mode 100644 index 000000000..65d82b646 --- /dev/null +++ b/tidal-link/link/modules/asio-standalone/asio/include/asio/associated_cancellation_slot.hpp @@ -0,0 +1,238 @@ +// +// associated_cancellation_slot.hpp +// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +// Copyright (c) 2003-2023 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// +// Distributed under the Boost Software License, Version 1.0. (See accompanying +// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// + +#ifndef ASIO_ASSOCIATED_CANCELLATION_SLOT_HPP +#define ASIO_ASSOCIATED_CANCELLATION_SLOT_HPP + +#if defined(_MSC_VER) && (_MSC_VER >= 1200) +# pragma once +#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) + +#include "asio/detail/config.hpp" +#include "asio/associator.hpp" +#include "asio/cancellation_signal.hpp" +#include "asio/detail/functional.hpp" +#include "asio/detail/type_traits.hpp" + +#include "asio/detail/push_options.hpp" + +namespace asio { + +template +struct associated_cancellation_slot; + +namespace detail { + +template +struct has_cancellation_slot_type : false_type +{ +}; + +template +struct has_cancellation_slot_type::type> + : true_type +{ +}; + +template +struct associated_cancellation_slot_impl +{ + typedef void asio_associated_cancellation_slot_is_unspecialised; + + typedef S type; + + static type get(const T&) ASIO_NOEXCEPT + { + return type(); + } + + static const type& get(const T&, const S& s) ASIO_NOEXCEPT + { + return s; + } +}; + +template +struct associated_cancellation_slot_impl::type> +{ + typedef typename T::cancellation_slot_type type; + + static ASIO_AUTO_RETURN_TYPE_PREFIX(type) get( + const T& t) ASIO_NOEXCEPT + ASIO_AUTO_RETURN_TYPE_SUFFIX((t.get_cancellation_slot())) + { + return t.get_cancellation_slot(); + } + + static ASIO_AUTO_RETURN_TYPE_PREFIX(type) get( + const T& t, const S&) ASIO_NOEXCEPT + ASIO_AUTO_RETURN_TYPE_SUFFIX((t.get_cancellation_slot())) + { + return t.get_cancellation_slot(); + } +}; + +template +struct associated_cancellation_slot_impl::value + >::type, + typename void_type< + typename associator::type + >::type> : associator +{ +}; + +} // namespace detail + +/// Traits type used to obtain the cancellation_slot associated with an object. +/** + * A program may specialise this traits type if the @c T template parameter in + * the specialisation is a user-defined type. The template parameter @c + * CancellationSlot shall be a type meeting the CancellationSlot requirements. + * + * Specialisations shall meet the following requirements, where @c t is a const + * reference to an object of type @c T, and @c s is an object of type @c + * CancellationSlot. + * + * @li Provide a nested typedef @c type that identifies a type meeting the + * CancellationSlot requirements. + * + * @li Provide a noexcept static member function named @c get, callable as @c + * get(t) and with return type @c type or a (possibly const) reference to @c + * type. + * + * @li Provide a noexcept static member function named @c get, callable as @c + * get(t,s) and with return type @c type or a (possibly const) reference to @c + * type. + */ +template +struct associated_cancellation_slot +#if !defined(GENERATING_DOCUMENTATION) + : detail::associated_cancellation_slot_impl +#endif // !defined(GENERATING_DOCUMENTATION) +{ +#if defined(GENERATING_DOCUMENTATION) + /// If @c T has a nested type @c cancellation_slot_type, + /// T::cancellation_slot_type. Otherwise + /// @c CancellationSlot. + typedef see_below type; + + /// If @c T has a nested type @c cancellation_slot_type, returns + /// t.get_cancellation_slot(). Otherwise returns @c type(). + static decltype(auto) get(const T& t) ASIO_NOEXCEPT; + + /// If @c T has a nested type @c cancellation_slot_type, returns + /// t.get_cancellation_slot(). Otherwise returns @c s. + static decltype(auto) get(const T& t, + const CancellationSlot& s) ASIO_NOEXCEPT; +#endif // defined(GENERATING_DOCUMENTATION) +}; + +/// Helper function to obtain an object's associated cancellation_slot. +/** + * @returns associated_cancellation_slot::get(t) + */ +template +ASIO_NODISCARD inline typename associated_cancellation_slot::type +get_associated_cancellation_slot(const T& t) ASIO_NOEXCEPT +{ + return associated_cancellation_slot::get(t); +} + +/// Helper function to obtain an object's associated cancellation_slot. +/** + * @returns associated_cancellation_slot::get(t, st) + */ +template +ASIO_NODISCARD inline ASIO_AUTO_RETURN_TYPE_PREFIX2( + typename associated_cancellation_slot::type) +get_associated_cancellation_slot(const T& t, + const CancellationSlot& st) ASIO_NOEXCEPT + ASIO_AUTO_RETURN_TYPE_SUFFIX(( + associated_cancellation_slot::get(t, st))) +{ + return associated_cancellation_slot::get(t, st); +} + +#if defined(ASIO_HAS_ALIAS_TEMPLATES) + +template +using associated_cancellation_slot_t = + typename associated_cancellation_slot::type; + +#endif // defined(ASIO_HAS_ALIAS_TEMPLATES) + +namespace detail { + +template +struct associated_cancellation_slot_forwarding_base +{ +}; + +template +struct associated_cancellation_slot_forwarding_base::asio_associated_cancellation_slot_is_unspecialised, + void + >::value + >::type> +{ + typedef void asio_associated_cancellation_slot_is_unspecialised; +}; + +} // namespace detail + +#if defined(ASIO_HAS_STD_REFERENCE_WRAPPER) \ + || defined(GENERATING_DOCUMENTATION) + +/// Specialisation of associated_cancellation_slot for @c +/// std::reference_wrapper. +template +struct associated_cancellation_slot, CancellationSlot> +#if !defined(GENERATING_DOCUMENTATION) + : detail::associated_cancellation_slot_forwarding_base +#endif // !defined(GENERATING_DOCUMENTATION) +{ + /// Forwards @c type to the associator specialisation for the unwrapped type + /// @c T. + typedef typename associated_cancellation_slot::type type; + + /// Forwards the request to get the cancellation slot to the associator + /// specialisation for the unwrapped type @c T. + static type get(reference_wrapper t) ASIO_NOEXCEPT + { + return associated_cancellation_slot::get(t.get()); + } + + /// Forwards the request to get the cancellation slot to the associator + /// specialisation for the unwrapped type @c T. + static ASIO_AUTO_RETURN_TYPE_PREFIX(type) get(reference_wrapper t, + const CancellationSlot& s) ASIO_NOEXCEPT + ASIO_AUTO_RETURN_TYPE_SUFFIX(( + associated_cancellation_slot::get(t.get(), s))) + { + return associated_cancellation_slot::get(t.get(), s); + } +}; + +#endif // defined(ASIO_HAS_STD_REFERENCE_WRAPPER) + // || defined(GENERATING_DOCUMENTATION) + +} // namespace asio + +#include "asio/detail/pop_options.hpp" + +#endif // ASIO_ASSOCIATED_CANCELLATION_SLOT_HPP diff --git a/tidal-link/link/modules/asio-standalone/asio/include/asio/associated_executor.hpp b/tidal-link/link/modules/asio-standalone/asio/include/asio/associated_executor.hpp index e1792466f..92279891d 100644 --- a/tidal-link/link/modules/asio-standalone/asio/include/asio/associated_executor.hpp +++ b/tidal-link/link/modules/asio-standalone/asio/include/asio/associated_executor.hpp @@ -2,7 +2,7 @@ // associated_executor.hpp // ~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2023 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -16,6 +16,8 @@ #endif // defined(_MSC_VER) && (_MSC_VER >= 1200) #include "asio/detail/config.hpp" +#include "asio/associator.hpp" +#include "asio/detail/functional.hpp" #include "asio/detail/type_traits.hpp" #include "asio/execution/executor.hpp" #include "asio/is_executor.hpp" @@ -24,16 +26,37 @@ #include "asio/detail/push_options.hpp" namespace asio { + +template +struct associated_executor; + namespace detail { -template +template +struct has_executor_type : false_type +{ +}; + +template +struct has_executor_type::type> + : true_type +{ +}; + +template struct associated_executor_impl { typedef void asio_associated_executor_is_unspecialised; typedef E type; - static type get(const T&, const E& e = E()) ASIO_NOEXCEPT + static type get(const T&) ASIO_NOEXCEPT + { + return type(); + } + + static const type& get(const T&, const E& e) ASIO_NOEXCEPT { return e; } @@ -45,12 +68,32 @@ struct associated_executor_impl +struct associated_executor_impl::value + >::type, + typename void_type< + typename associator::type + >::type> : associator +{ +}; + } // namespace detail /// Traits type used to obtain the executor associated with an object. @@ -67,10 +110,12 @@ struct associated_executor_impl struct associated_executor @@ -83,10 +128,13 @@ struct associated_executor /// Otherwise @c Executor. typedef see_below type; + /// If @c T has a nested type @c executor_type, returns + /// t.get_executor(). Otherwise returns @c type(). + static decltype(auto) get(const T& t) ASIO_NOEXCEPT; + /// If @c T has a nested type @c executor_type, returns /// t.get_executor(). Otherwise returns @c ex. - static type get(const T& t, - const Executor& ex = Executor()) ASIO_NOEXCEPT; + static decltype(auto) get(const T& t, const Executor& ex) ASIO_NOEXCEPT; #endif // defined(GENERATING_DOCUMENTATION) }; @@ -95,7 +143,7 @@ struct associated_executor * @returns associated_executor::get(t) */ template -inline typename associated_executor::type +ASIO_NODISCARD inline typename associated_executor::type get_associated_executor(const T& t) ASIO_NOEXCEPT { return associated_executor::get(t); @@ -106,11 +154,14 @@ get_associated_executor(const T& t) ASIO_NOEXCEPT * @returns associated_executor::get(t, ex) */ template -inline typename associated_executor::type +ASIO_NODISCARD inline ASIO_AUTO_RETURN_TYPE_PREFIX2( + typename associated_executor::type) get_associated_executor(const T& t, const Executor& ex, - typename enable_if< + typename constraint< is_executor::value || execution::is_executor::value - >::type* = 0) ASIO_NOEXCEPT + >::type = 0) ASIO_NOEXCEPT + ASIO_AUTO_RETURN_TYPE_SUFFIX(( + associated_executor::get(t, ex))) { return associated_executor::get(t, ex); } @@ -121,11 +172,11 @@ get_associated_executor(const T& t, const Executor& ex, * ExecutionContext::executor_type>::get(t, ctx.get_executor()) */ template -inline typename associated_executor::type +ASIO_NODISCARD inline typename associated_executor::type get_associated_executor(const T& t, ExecutionContext& ctx, - typename enable_if::value>::type* = 0) ASIO_NOEXCEPT + typename constraint::value>::type = 0) ASIO_NOEXCEPT { return associated_executor::get(t, ctx.get_executor()); @@ -159,6 +210,42 @@ struct associated_executor_forwarding_base +struct associated_executor, Executor> +#if !defined(GENERATING_DOCUMENTATION) + : detail::associated_executor_forwarding_base +#endif // !defined(GENERATING_DOCUMENTATION) +{ + /// Forwards @c type to the associator specialisation for the unwrapped type + /// @c T. + typedef typename associated_executor::type type; + + /// Forwards the request to get the executor to the associator specialisation + /// for the unwrapped type @c T. + static type get(reference_wrapper t) ASIO_NOEXCEPT + { + return associated_executor::get(t.get()); + } + + /// Forwards the request to get the executor to the associator specialisation + /// for the unwrapped type @c T. + static ASIO_AUTO_RETURN_TYPE_PREFIX(type) get( + reference_wrapper t, const Executor& ex) ASIO_NOEXCEPT + ASIO_AUTO_RETURN_TYPE_SUFFIX(( + associated_executor::get(t.get(), ex))) + { + return associated_executor::get(t.get(), ex); + } +}; + +#endif // defined(ASIO_HAS_STD_REFERENCE_WRAPPER) + // || defined(GENERATING_DOCUMENTATION) + } // namespace asio #include "asio/detail/pop_options.hpp" diff --git a/tidal-link/link/modules/asio-standalone/asio/include/asio/associated_immediate_executor.hpp b/tidal-link/link/modules/asio-standalone/asio/include/asio/associated_immediate_executor.hpp new file mode 100644 index 000000000..54bced17a --- /dev/null +++ b/tidal-link/link/modules/asio-standalone/asio/include/asio/associated_immediate_executor.hpp @@ -0,0 +1,297 @@ +// +// associated_immediate_executor.hpp +// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +// Copyright (c) 2003-2023 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// +// Distributed under the Boost Software License, Version 1.0. (See accompanying +// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// + +#ifndef ASIO_ASSOCIATED_IMMEDIATE_EXECUTOR_HPP +#define ASIO_ASSOCIATED_IMMEDIATE_EXECUTOR_HPP + +#if defined(_MSC_VER) && (_MSC_VER >= 1200) +# pragma once +#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) + +#include "asio/detail/config.hpp" +#include "asio/associator.hpp" +#include "asio/detail/functional.hpp" +#include "asio/detail/type_traits.hpp" +#include "asio/execution/blocking.hpp" +#include "asio/execution/executor.hpp" +#include "asio/execution_context.hpp" +#include "asio/is_executor.hpp" +#include "asio/require.hpp" + +#include "asio/detail/push_options.hpp" + +namespace asio { + +template +struct associated_immediate_executor; + +namespace detail { + +template +struct has_immediate_executor_type : false_type +{ +}; + +template +struct has_immediate_executor_type::type> + : true_type +{ +}; + +template +struct default_immediate_executor +{ + typedef typename require_result::type type; + + static type get(const E& e) ASIO_NOEXCEPT + { + return asio::require(e, execution::blocking.never); + } +}; + +template +struct default_immediate_executor::value + >::type, + typename enable_if< + is_executor::value + >::type> +{ + class type : public E + { + public: + template + explicit type(const Executor1& e, + typename constraint< + conditional< + !is_same::value, + is_convertible, + false_type + >::type::value + >::type = 0) ASIO_NOEXCEPT + : E(e) + { + } + + type(const type& other) ASIO_NOEXCEPT + : E(static_cast(other)) + { + } + +#if defined(ASIO_HAS_MOVE) + type(type&& other) ASIO_NOEXCEPT + : E(ASIO_MOVE_CAST(E)(other)) + { + } +#endif // defined(ASIO_HAS_MOVE) + + template + void dispatch(ASIO_MOVE_ARG(Function) f, const Allocator& a) const + { + this->post(ASIO_MOVE_CAST(Function)(f), a); + } + + friend bool operator==(const type& a, const type& b) ASIO_NOEXCEPT + { + return static_cast(a) == static_cast(b); + } + + friend bool operator!=(const type& a, const type& b) ASIO_NOEXCEPT + { + return static_cast(a) != static_cast(b); + } + }; + + static type get(const E& e) ASIO_NOEXCEPT + { + return type(e); + } +}; + +template +struct associated_immediate_executor_impl +{ + typedef void asio_associated_immediate_executor_is_unspecialised; + + typedef typename default_immediate_executor::type type; + + static ASIO_AUTO_RETURN_TYPE_PREFIX(type) get( + const T&, const E& e) ASIO_NOEXCEPT + ASIO_AUTO_RETURN_TYPE_SUFFIX((default_immediate_executor::get(e))) + { + return default_immediate_executor::get(e); + } +}; + +template +struct associated_immediate_executor_impl::type> +{ + typedef typename T::immediate_executor_type type; + + static ASIO_AUTO_RETURN_TYPE_PREFIX(type) get( + const T& t, const E&) ASIO_NOEXCEPT + ASIO_AUTO_RETURN_TYPE_SUFFIX((t.get_immediate_executor())) + { + return t.get_immediate_executor(); + } +}; + +template +struct associated_immediate_executor_impl::value + >::type, + typename void_type< + typename associator::type + >::type> : associator +{ +}; + +} // namespace detail + +/// Traits type used to obtain the immediate executor associated with an object. +/** + * A program may specialise this traits type if the @c T template parameter in + * the specialisation is a user-defined type. The template parameter @c + * Executor shall be a type meeting the Executor requirements. + * + * Specialisations shall meet the following requirements, where @c t is a const + * reference to an object of type @c T, and @c e is an object of type @c + * Executor. + * + * @li Provide a nested typedef @c type that identifies a type meeting the + * Executor requirements. + * + * @li Provide a noexcept static member function named @c get, callable as @c + * get(t) and with return type @c type or a (possibly const) reference to @c + * type. + * + * @li Provide a noexcept static member function named @c get, callable as @c + * get(t,e) and with return type @c type or a (possibly const) reference to @c + * type. + */ +template +struct associated_immediate_executor +#if !defined(GENERATING_DOCUMENTATION) + : detail::associated_immediate_executor_impl +#endif // !defined(GENERATING_DOCUMENTATION) +{ +#if defined(GENERATING_DOCUMENTATION) + /// If @c T has a nested type @c immediate_executor_type, + // T::immediate_executor_type. Otherwise @c Executor. + typedef see_below type; + + /// If @c T has a nested type @c immediate_executor_type, returns + /// t.get_immediate_executor(). Otherwise returns + /// asio::require(ex, asio::execution::blocking.never). + static decltype(auto) get(const T& t, const Executor& ex) ASIO_NOEXCEPT; +#endif // defined(GENERATING_DOCUMENTATION) +}; + +/// Helper function to obtain an object's associated executor. +/** + * @returns associated_immediate_executor::get(t, ex) + */ +template +ASIO_NODISCARD inline ASIO_AUTO_RETURN_TYPE_PREFIX2( + typename associated_immediate_executor::type) +get_associated_immediate_executor(const T& t, const Executor& ex, + typename constraint< + is_executor::value || execution::is_executor::value + >::type = 0) ASIO_NOEXCEPT + ASIO_AUTO_RETURN_TYPE_SUFFIX(( + associated_immediate_executor::get(t, ex))) +{ + return associated_immediate_executor::get(t, ex); +} + +/// Helper function to obtain an object's associated executor. +/** + * @returns associated_immediate_executor::get(t, ctx.get_executor()) + */ +template +ASIO_NODISCARD inline typename associated_immediate_executor::type +get_associated_immediate_executor(const T& t, ExecutionContext& ctx, + typename constraint::value>::type = 0) ASIO_NOEXCEPT +{ + return associated_immediate_executor::get(t, ctx.get_executor()); +} + +#if defined(ASIO_HAS_ALIAS_TEMPLATES) + +template +using associated_immediate_executor_t = + typename associated_immediate_executor::type; + +#endif // defined(ASIO_HAS_ALIAS_TEMPLATES) + +namespace detail { + +template +struct associated_immediate_executor_forwarding_base +{ +}; + +template +struct associated_immediate_executor_forwarding_base::asio_associated_immediate_executor_is_unspecialised, + void + >::value + >::type> +{ + typedef void asio_associated_immediate_executor_is_unspecialised; +}; + +} // namespace detail + +#if defined(ASIO_HAS_STD_REFERENCE_WRAPPER) \ + || defined(GENERATING_DOCUMENTATION) + +/// Specialisation of associated_immediate_executor for +/// @c std::reference_wrapper. +template +struct associated_immediate_executor, Executor> +#if !defined(GENERATING_DOCUMENTATION) + : detail::associated_immediate_executor_forwarding_base +#endif // !defined(GENERATING_DOCUMENTATION) +{ + /// Forwards @c type to the associator specialisation for the unwrapped type + /// @c T. + typedef typename associated_immediate_executor::type type; + + /// Forwards the request to get the executor to the associator specialisation + /// for the unwrapped type @c T. + static ASIO_AUTO_RETURN_TYPE_PREFIX(type) get( + reference_wrapper t, const Executor& ex) ASIO_NOEXCEPT + ASIO_AUTO_RETURN_TYPE_SUFFIX(( + associated_immediate_executor::get(t.get(), ex))) + { + return associated_immediate_executor::get(t.get(), ex); + } +}; + +#endif // defined(ASIO_HAS_STD_REFERENCE_WRAPPER) + // || defined(GENERATING_DOCUMENTATION) + +} // namespace asio + +#include "asio/detail/pop_options.hpp" + +#endif // ASIO_ASSOCIATED_IMMEDIATE_EXECUTOR_HPP diff --git a/tidal-link/link/modules/asio-standalone/asio/include/asio/associator.hpp b/tidal-link/link/modules/asio-standalone/asio/include/asio/associator.hpp new file mode 100644 index 000000000..e954c4428 --- /dev/null +++ b/tidal-link/link/modules/asio-standalone/asio/include/asio/associator.hpp @@ -0,0 +1,35 @@ +// +// associator.hpp +// ~~~~~~~~~~~~~~ +// +// Copyright (c) 2003-2023 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// +// Distributed under the Boost Software License, Version 1.0. (See accompanying +// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// + +#ifndef ASIO_ASSOCIATOR_HPP +#define ASIO_ASSOCIATOR_HPP + +#if defined(_MSC_VER) && (_MSC_VER >= 1200) +# pragma once +#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) + +#include "asio/detail/config.hpp" + +#include "asio/detail/push_options.hpp" + +namespace asio { + +/// Used to generically specialise associators for a type. +template