diff options
author | Sam T <pxqr.sta@gmail.com> | 2013-05-12 07:31:58 +0400 |
---|---|---|
committer | Sam T <pxqr.sta@gmail.com> | 2013-05-12 07:31:58 +0400 |
commit | a2bc26abbe6ccea464c04b990f8a4a8fa769ba2a (patch) | |
tree | a378e98388e02393e435a20335c6d1515da311b0 /src | |
parent | fafdbec2cb64f11513bfe3a0a220562de97d9e36 (diff) |
~ Move Method to KRPC.
Diffstat (limited to 'src')
-rw-r--r-- | src/Remote/KRPC.hs | 45 | ||||
-rw-r--r-- | src/Remote/KRPC/Method.hs | 54 |
2 files changed, 42 insertions, 57 deletions
diff --git a/src/Remote/KRPC.hs b/src/Remote/KRPC.hs index 5c1aadd6..ec83b802 100644 --- a/src/Remote/KRPC.hs +++ b/src/Remote/KRPC.hs | |||
@@ -5,14 +5,20 @@ | |||
5 | -- Stability : experimental | 5 | -- Stability : experimental |
6 | -- Portability : portable | 6 | -- Portability : portable |
7 | -- | 7 | -- |
8 | -- This module provides remote procedure call. | 8 | -- This module provides safe remote procedure call. |
9 | -- | 9 | -- |
10 | {-# LANGUAGE OverloadedStrings #-} | 10 | {-# LANGUAGE OverloadedStrings #-} |
11 | {-# LANGUAGE FlexibleContexts, DeriveDataTypeable #-} | 11 | {-# LANGUAGE FlexibleContexts, DeriveDataTypeable #-} |
12 | {-# LANGUAGE ExplicitForAll, KindSignatures #-} | 12 | {-# LANGUAGE ExplicitForAll, KindSignatures #-} |
13 | {-# LANGUAGE ViewPatterns #-} | 13 | {-# LANGUAGE ViewPatterns #-} |
14 | module Remote.KRPC | 14 | module Remote.KRPC |
15 | ( module Remote.KRPC.Method, RemoteAddr | 15 | ( -- * Common |
16 | -- ** Types | ||
17 | RemoteAddr | ||
18 | |||
19 | -- ** Method | ||
20 | , Method(methodName, methodParams, methodVals) | ||
21 | , method, idM | ||
16 | 22 | ||
17 | -- * Client | 23 | -- * Client |
18 | , call, async, await | 24 | , call, async, await |
@@ -33,7 +39,40 @@ import Data.Typeable | |||
33 | import Network | 39 | import Network |
34 | 40 | ||
35 | import Remote.KRPC.Protocol | 41 | import Remote.KRPC.Protocol |
36 | import Remote.KRPC.Method | 42 | |
43 | |||
44 | -- | The | ||
45 | -- | ||
46 | -- * argument: type of method parameter | ||
47 | -- | ||
48 | -- * remote: A monad used by server-side. | ||
49 | -- | ||
50 | -- * result: type of return value of the method. | ||
51 | -- | ||
52 | data Method param result = Method { | ||
53 | -- | Name used in query and | ||
54 | methodName :: MethodName | ||
55 | |||
56 | -- | Description of each parameter in /right to left/ order. | ||
57 | , methodParams :: [ParamName] | ||
58 | |||
59 | -- | Description of each return value in /right to left/ order. | ||
60 | , methodVals :: [ValName] | ||
61 | } | ||
62 | |||
63 | -- TODO ppMethod | ||
64 | |||
65 | -- | Remote identity function. Could be used for echo servers for example. | ||
66 | -- | ||
67 | -- idM = method "id" ["x"] ["y"] return | ||
68 | -- | ||
69 | idM :: Method a a | ||
70 | idM = method "id" ["x"] ["y"] | ||
71 | {-# INLINE idM #-} | ||
72 | |||
73 | method :: MethodName -> [ParamName] -> [ValName] -> Method param result | ||
74 | method = Method | ||
75 | {-# INLINE method #-} | ||
37 | 76 | ||
38 | 77 | ||
39 | data RPCException = RPCException KError | 78 | data RPCException = RPCException KError |
diff --git a/src/Remote/KRPC/Method.hs b/src/Remote/KRPC/Method.hs deleted file mode 100644 index 4d91fe47..00000000 --- a/src/Remote/KRPC/Method.hs +++ /dev/null | |||
@@ -1,54 +0,0 @@ | |||
1 | -- | | ||
2 | -- Copyright : (c) Sam T. 2013 | ||
3 | -- License : MIT | ||
4 | -- Maintainer : pxqr.sta@gmail.com | ||
5 | -- Stability : experimental | ||
6 | -- Portability : portable | ||
7 | -- | ||
8 | {-# LANGUAGE OverloadedStrings #-} | ||
9 | {-# LANGUAGE FlexibleInstances, UndecidableInstances #-} | ||
10 | module Remote.KRPC.Method | ||
11 | ( Method(methodName, methodParams, methodVals) | ||
12 | |||
13 | -- * Construction | ||
14 | , method | ||
15 | |||
16 | -- * Predefined methods | ||
17 | , idM | ||
18 | ) where | ||
19 | |||
20 | import Remote.KRPC.Protocol | ||
21 | |||
22 | |||
23 | -- | The | ||
24 | -- | ||
25 | -- * argument: type of method parameter | ||
26 | -- | ||
27 | -- * remote: A monad used by server-side. | ||
28 | -- | ||
29 | -- * result: type of return value of the method. | ||
30 | -- | ||
31 | data Method param result = Method { | ||
32 | -- | Name used in query and | ||
33 | methodName :: MethodName | ||
34 | |||
35 | -- | Description of each parameter in /right to left/ order. | ||
36 | , methodParams :: [ParamName] | ||
37 | |||
38 | -- | Description of each return value in /right to left/ order. | ||
39 | , methodVals :: [ValName] | ||
40 | } | ||
41 | |||
42 | -- TODO ppMethod | ||
43 | |||
44 | -- | Remote identity function. Could be used for echo servers for example. | ||
45 | -- | ||
46 | -- idM = method "id" ["x"] ["y"] return | ||
47 | -- | ||
48 | idM :: Method a a | ||
49 | idM = method "id" ["x"] ["y"] | ||
50 | {-# INLINE idM #-} | ||
51 | |||
52 | method :: MethodName -> [ParamName] -> [ValName] -> Method param result | ||
53 | method = Method | ||
54 | {-# INLINE method #-} | ||