Skip to content

Commit f675460

Browse files
Relocate constants into own modules
1 parent 78c7e92 commit f675460

File tree

9 files changed

+73
-25
lines changed

9 files changed

+73
-25
lines changed
Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,17 @@
1-
module Node.Http2.Constants.NGHTTP2 where
1+
module Node.Http2.ErrorCode where
22

3-
import Node.Http2.Types (ErrorCode)
3+
import Prelude
4+
5+
import Data.Generic.Rep (class Generic)
6+
import Data.Newtype (class Newtype)
7+
8+
newtype ErrorCode = ErrorCode Int
9+
10+
derive instance Eq ErrorCode
11+
derive instance Ord ErrorCode
12+
derive instance Newtype ErrorCode _
13+
derive instance Generic ErrorCode _
14+
derive newtype instance Show ErrorCode
415

516
foreign import noError :: ErrorCode
617
foreign import protocolError :: ErrorCode

src/Node/Http2/FrameType.purs

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
module Node.Http2.FrameType where
2+
3+
import Prelude
4+
5+
import Data.Generic.Rep (class Generic)
6+
import Data.Newtype (class Newtype)
7+
8+
newtype FrameType = FrameType Int
9+
10+
derive instance Eq FrameType
11+
derive instance Ord FrameType
12+
derive instance Newtype FrameType _
13+
derive instance Generic FrameType _
14+
derive newtype instance Show FrameType
15+
16+
frameData :: FrameType
17+
frameData = FrameType 0x0
18+
19+
frameHeaders :: FrameType
20+
frameHeaders = FrameType 0x1
21+
22+
framePriority :: FrameType
23+
framePriority = FrameType 0x2
24+
25+
frameRstStream :: FrameType
26+
frameRstStream = FrameType 0x3
27+
28+
frameSettings :: FrameType
29+
frameSettings = FrameType 0x4
30+
31+
framePushPromise :: FrameType
32+
framePushPromise = FrameType 0x5
33+
34+
framePing :: FrameType
35+
framePing = FrameType 0x6
36+
37+
frameGoAway :: FrameType
38+
frameGoAway = FrameType 0x7
39+
40+
frameWindowUpdate :: FrameType
41+
frameWindowUpdate = FrameType 0x8
42+
43+
frameContinuation :: FrameType
44+
frameContinuation = FrameType 0x9
File renamed without changes.
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
-- | Note: not all padding strategies are listed below.
22
-- | I think some were added/removed in major Node versions.
3-
module Node.Http2.Constants.PaddingStrategy where
3+
module Node.Http2.PaddingStrategy where
44

55
foreign import paddingStrategyNone :: Int
66
foreign import paddingStrategyMax :: Int

src/Node/Http2/Session.purs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,8 +62,10 @@ import Node.Buffer (Buffer)
6262
import Node.Buffer.Immutable (ImmutableBuffer)
6363
import Node.EventEmitter (EventEmitter, EventHandle(..))
6464
import Node.EventEmitter.UtilTypes (EventHandle0, EventHandle1, EventHandle2, EventHandle3, EventHandle4)
65+
import Node.Http2.ErrorCode (ErrorCode)
66+
import Node.Http2.FrameType (FrameType)
6567
import Node.Http2.Flags (BitwiseFlag)
66-
import Node.Http2.Types (ErrorCode, FrameType, Headers, Http2Session, Http2Stream, Settings, StreamId)
68+
import Node.Http2.Types (Headers, Http2Session, Http2Stream, Settings, StreamId)
6769
import Node.Net.Types (Socket, TCP)
6870
import Node.TLS.Types (Client, Server)
6971
import Unsafe.Coerce (unsafeCoerce)

src/Node/Http2/Stream.purs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,9 @@ import Node.EventEmitter (EventHandle(..))
5757
import Node.EventEmitter.UtilTypes (EventHandle0, EventHandle1, EventHandle3, EventHandle2)
5858
import Node.FS (FileDescriptor)
5959
import Node.Http2.Flags (BitwiseFlag)
60-
import Node.Http2.Types (ErrorCode(..), FrameType, Headers, Http2Session, Http2Stream, Settings, StreamId(..))
60+
import Node.Http2.ErrorCode (ErrorCode(..))
61+
import Node.Http2.FrameType (FrameType)
62+
import Node.Http2.Types (Headers, Http2Session, Http2Stream, Settings, StreamId(..))
6163
import Node.Path (FilePath)
6264
import Node.Stream (Duplex)
6365
import Node.TLS.Types (Client, Server)

src/Node/Http2/Types.purs

Lines changed: 5 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -16,22 +16,6 @@ foreign import data Http2Stream :: Endpoint -> Type
1616

1717
foreign import data Headers :: Type
1818

19-
newtype FrameType = FrameType Int
20-
21-
derive instance Eq FrameType
22-
derive instance Ord FrameType
23-
derive instance Newtype FrameType _
24-
derive instance Generic FrameType _
25-
derive newtype instance Show FrameType
26-
27-
newtype ErrorCode = ErrorCode Int
28-
29-
derive instance Eq ErrorCode
30-
derive instance Ord ErrorCode
31-
derive instance Newtype ErrorCode _
32-
derive instance Generic ErrorCode _
33-
derive newtype instance Show ErrorCode
34-
3519
newtype StreamId = StreamId Int
3620

3721
derive instance Eq StreamId
@@ -40,6 +24,11 @@ derive instance Newtype StreamId _
4024
derive instance Generic StreamId _
4125
derive newtype instance Show StreamId
4226

27+
-- | A StreamId of 0, indicating the ID does not refer to a stream
28+
-- | but to the session's connection as a whole.
29+
connectionId :: StreamId
30+
connectionId = StreamId 0
31+
4332
-- | `headerTableSize` <number> Specifies the maximum number of bytes used for header compression. The minimum allowed value is 0. The maximum allowed value is 232-1. Default: 4096.
4433
-- | `enablePush` <boolean> Specifies true if HTTP/2 Push Streams are to be permitted on the Http2Session instances. Default: true.
4534
-- | `initialWindowSize` <number> Specifies the sender's initial window size in bytes for stream-level flow control. The minimum allowed value is 0. The maximum allowed value is 232-1. Default: 65535.

test/Test/Main.purs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import Node.Encoding (Encoding(..))
1515
import Node.EventEmitter (on)
1616
import Node.FS.Sync as FS
1717
import Node.Http2.Client as Client
18-
import Node.Http2.Constants.NGHTTP2 as NGHTTP2
18+
import Node.Http2.ErrorCode as ErrorCode
1919
import Node.Http2.Server as Server
2020
import Node.Http2.Session as Session
2121
import Node.Http2.Stream (toDuplex)
@@ -68,12 +68,12 @@ main = do
6868
{ endStream: false -- if this is true, then Stream.write/end produces error
6969
, waitForTrailers: true
7070
}
71-
-- H2Stream.close stream NGHTTP2.noError
71+
-- H2Stream.close stream ErrorCode.noError
7272
Stream.writeStringCb_ duplex UTF8 "hello from server" \err -> do
7373
log (unsafeCoerce err)
7474
Stream.end' duplex \_ -> do
7575
log $ "server - onStream - closing for id: " <> show streamId
76-
H2Stream.close stream NGHTTP2.noError
76+
H2Stream.close stream ErrorCode.noError
7777

7878
on Server.timeoutHandle server.tls do
7979
log "onTimeout"
@@ -113,7 +113,7 @@ main = do
113113
buffer <- Buffer.concat chunks :: Effect Buffer.Buffer
114114
str <- Buffer.toString UTF8 buffer :: Effect String
115115
log $ "client - onResponse body: " <> show str
116-
H2Stream.close stream NGHTTP2.noError
116+
H2Stream.close stream ErrorCode.noError
117117
Session.destroy session
118118
NServer.close server.net
119119

0 commit comments

Comments
 (0)