Commit graph

208 commits

Author SHA1 Message Date
Olivier Nicole
679e3d7ded Make serverRequestCall interruptible (#30)
Instead of making a blocking foreign call without a timeout, we set a
timeout of one second. This way, the thread returns in Haskell code (and
thus is interruptible) at least every second. This is useful in order to
be able to kill `Server`s, see
https://github.com/awakesecurity/gRPC-haskell/issues/22.
2017-08-21 10:35:05 -05:00
Olivier Nicole
e0c567ec55 Make withServer provide the actual port (#29)
* Make withServer provide the actual port

Again, useful to make a server listen on any available port by giving it
port zero (for testing).

* Re-introduce check on server port

* Add port field to Server

* Style: Remove unneeded newline

* Revert changes in tests
2017-08-21 10:34:30 -05:00
intractable
ab8ec43d17 Updateproto3-suite, proto3-wire, and related deps (#31)
* Update turtle, optparse-{applicative,generic}; remove stack dep from nix-shell env

* Track proto3-suite changes to readDotProtoWithContext

* Update proto3-suite gitrev, use `compileDotProtoFileOrDie` in `GeneratedTests`

* Bump `proto3-suite` rev

* Bump `proto3-suite` and `proto3-wire` gitrevs, update `stack.yaml`
2017-08-19 09:16:10 -05:00
intractable
087ce6f49c Update self-signed SSL cert used by test suite (#28) 2017-08-06 03:06:53 -05:00
intractable
918e3a8d5a Derive Read instance for StatusCode (#27) 2017-08-05 23:46:12 -05:00
teh
d64c58efcf Typo fix (#26) 2017-08-05 10:06:53 -07:00
Connor Clark
a2d99ca178 latest lts resolver (#24) 2017-07-19 09:01:55 -07:00
intractable
fe55845d3f Update to latest proto3-suite, remove compile-proto-file exe (#23)
* Squash merge from branch `joel-fix-build-issues-and-broken-tests`

* Update `proto3-wire` and `proto3-suite` refs in `stack.yaml`

* Update `proto3-wire` and `proto3-suite` refs via `cabal2nix` for `nix` builds

* Remove `compile-proto-file` from the repo, as it is now available via `proto3-suite`

* Update `proto3-suite` ref in `stack.yaml`

* Update `proto3-suite` ref via `cabal2nix` for `nix` builds

* Update `proto3-suite` and `proto3-wire` gitrevs

* Regenerate Echo and Arithmetic example modules from their respective .protos

* Fix typo
2017-07-17 20:42:35 -05:00
Gabriel Gonzalez
7d2e797ad5 Merge pull request #20 from awakenetworks/gabriel/no_clang
Update `release.nix` instructions.  Fixes #19
2017-06-14 07:06:40 -07:00
Gabriel Gonzalez
8207f6ecf6 Remove --with-gcc=clang from README.md, too 2017-06-14 07:06:14 -07:00
Gabriel Gonzalez
92c0653809 Update release.nix instructions. Fixes #19
We no longer require the `--with-gcc=clang` flag and it can cause
failed builds such as the one described in #19.  I tested that the
`cabal` workflow works on OS X and NixOS without this flag
2017-06-13 21:36:14 -07:00
intractable
d95052ebe6 Update nix-shell env and update tasty-quickcheck dep (#18)
* Add tasty-quickcheck to library deps

* Add shell hook to no-tests target and export it at toplevel

* cabal2nix . > default.nix

* PR feedback from @parnell (better shell hooks)
2017-05-30 11:45:22 -05:00
Parnell Springmeyer
865b175845 Merge pull request #16 from awakenetworks/parnell/fix-hydra-failure
serverPort => clientServerPort
2017-04-30 18:36:25 -05:00
Parnell Springmeyer
82000dadd4
serverPort => clientServerPort 2017-04-30 18:01:45 -05:00
Connor Clark
169dbb7fff First draft of a tutorial (#15)
* add basic tutorial, re-export client stuff in HighLevel.Generated

* add a relative link in README.md

* forgot to document the language extensions

* cabal file fixup

* more context to compile-proto-file

* haskell syntax highlighting in markdown

* link to gRPC official tutorials for basic concepts

* add a note on how to build the examples

* prominent notice of required gRPC version

* fix typo

* do some error handling, show how to run the example executables

* use mapM
2017-04-30 15:38:29 -07:00
Connor Clark
b550607f60 gRPC 1.2.0 compatibility (#12)
* update for reorganized headers in gRPC v1.1: https://github.com/grpc/grpc/pull/7559

* update nix files

* rename all gpr_slice to grpc_slice since we can't be backwards compatible anyway

* use gRPC 1.1.4

* now compatible with gRPC 1.2.0

* use nixpkgs 17.03 to get protobuf3_2, newer proto3-* deps, fix some warnings

* another warning
2017-04-14 19:28:01 -07:00
intractable
4ab231c1d9 Update proto3-suite ref to 8db2ceb8c48a3f8dc2cbdc492d1e8cbaf8b62a15 (#10)
* Update `proto3-suite` gitrev in `stack.yaml` to `8db2ceb8c48a3f8dc2cbdc492d1e8cbaf8b62a15`

* Update `proto3-suite` gitrev in `nix/proto3-suite.nix` to `8db2ceb8c48a3f8dc2cbdc492d1e8cbaf8b62a15`

* Regenerate `Echo.hs` via new `proto3-suite` + `compile-proto-file`

* Remove additional warnings
2017-03-17 07:48:41 -05:00
intractable
5caae587e5 Remove a bunch of compilation warnings. (#9)
* Remove a bunch of compilation warnings

* Fix typo in `cabal configure` invocation
2017-03-16 12:42:51 -05:00
intractable
081be2af78 Pin nixpkgs and drop use of fetchgitPrivate for proto3-suite. (#8)
* Pin nixpkgs to `7ae9da426924537755ce9164fd5b5f81ce16a1c3`; minor documentation tweaks

* Remove use of `fetchgitPrivate` from `proto3-suite` toplevel pkg override attr def
2017-03-15 18:02:26 -05:00
intractable
584ae318a9 Merge pull request #6 from awakenetworks/joel-fix-python-client-test-hang
Fix hang in Python test client
2017-03-10 15:58:11 -06:00
Joel Stanley
cdad0fcd3d
Fix python test client to send done message on exception paths 2017-03-10 15:05:32 -06:00
Gabriel Gonzalez
1009a2aceb Merge pull request #2 from awakenetworks/gabriel/update_homepage
Update homepage field of `.cabal` file
2017-03-06 11:08:29 -08:00
Gabriel Gonzalez
54a735eeab Update homepage field of .cabal file 2017-03-06 11:06:17 -08:00
Gabriel Gonzalez
92367fb97f Merge pull request #1 from awakenetworks/gabriel/update_contact
Update contact information
2017-03-01 07:51:23 -08:00
Gabriel Gonzalez
d94598129f Update contact information 2017-02-28 16:29:04 -08:00
Gabriel Gonzalez
e25a512b14 Prominently attribute the original work this was based on (#94)
This work began as a fork of https://github.com/aloiscochard/grpc-haskell so we
should mention that prominently when we open source this project
2017-02-28 13:42:14 -08:00
Joel Stanley
052901e070 Change protobuf-wire => proto3-suite in stack.yaml (#93) 2017-02-27 18:26:13 -08:00
Gabriel Gonzalez
bff8fb7c7e Switch from protobuf-wire to proto3-suite (#92)
`protobuf-wire` was open sourced as `proto3-suite` (with a corresponding module
rename) so this change updates the dependency and import lists
2017-02-27 08:43:37 -08:00
Gabriel Gonzalez
6888394dfa Add instructions on how to install and run compile-proto-file (#91)
You can use `nix-env` to install any derivation that outputs binaries underneath
a `bin/` directory, so we can reuse `nix-env` for installing binaries built by
this project.
2017-02-14 15:39:58 -08:00
Gabriel Gonzalez
8732a669c0 Fix compile-proto-file on OS X (#90)
Before this change, `compile-proto-file` fails due to a missing `grpc` library.
After this change `compile-proto-file` runs successfully on OS X
2017-02-14 15:39:43 -08:00
Joel Stanley
9a3be32ed7 Update echo client/server to use CG and high-level interfaces (#88)
* echo client/server example: dead code removal, add command line params, improve output messages

* Add nix-build result to .gitignore

* Merge echo-client and echo-server directories to echo-hs/ directory; rename main modules accordingly

* Use our protobuf compiler to generate bindings for the Echo service

* Simplify echo.proto to just one endpoint; use highlevel client/server interfaces and codegen for echo example

* Remove repetition counts and thread spawns from echo client, parameterize payload

* Update default.nix
2016-12-22 14:33:44 -06:00
Joel Stanley
db3d66c4eb Add compile-proto-file helper cli tool (#87)
* Add compile-proto-file helper cli tool (.proto -> ast -> .hs)

* Update default.nix
2016-12-21 11:47:05 -06:00
Joel Stanley
24681a619b Upgrade nix grpc version to 1.0.1 + fix tests (#86)
* Use GRPC v1.01 (grpc-1.0.1-6040b47)

* Minor tweaks to GRPC request result processing (less exact matching on some StatusDetails due to GRPC rev bump)
2016-12-20 15:57:38 -06:00
Joel Stanley
89a5547dc0 Add script for circumventing MacOS SIP and using nix-built grpc; upda… (#85)
* Add script for circumventing MacOS SIP and using nix-built grpc; update README.md

* Guard destructive /usr/local and brew updates with a user prompt
2016-12-20 11:37:46 -06:00
Joel Stanley
8a6a7c3715 MONAPP-3634: Improve stack/nix experience and MacOS development environment sanity (#84)
* Update tests.patch

* release.nix fixes for building and running cabal test suite from inside the nix-shell environment

* Update build instructions

* More README updates

* Fix stack tooling and improve documentation

* Update grpc sha256, cleanup build instructions

* Whups, DYLD_LIBRARY_PATH and substituteInPlace is still needed for hydra / macos builds with no brew-installed grpc!

* PR feedback tweaks
2016-12-19 16:53:44 -06:00
Joel Stanley
b78b15ecdb Fix author/maintainer/copyright in grpc-haskell.cabal (#82)
Update LICENSE, update fields in grpc-haskell.cabal
2016-12-14 12:55:56 -06:00
Joel Stanley
90b010d5cb Add DYLD_LIBRARY_PATH to executable environments during postInstall (#81) 2016-12-12 15:45:58 -06:00
Gabriel Gonzalez
c02546f696 Fix grpc-haskell tests for Nix (#80)
This updates the `release.nix` to now correctly run the test suite.  You can
now build and test `grpc-haskell` by running:

```
$ nix-build -A grpc-haskell release.nix
```

... and `nix-shell` has been updated, too, so that you can do `cabal`
development inside of a `nix-shell` by running:

```
$ nix-shell -A grpc-haskell.env release.nix
```

For people who prefer to use `stack` you can still just build the `grpc`
library by running:

```
$ nix-build -A grpc release.nix
```

... then pass that library as input to `stack`
2016-12-12 10:40:23 -08:00
Connor Clark
a54d48542b fix broken test, fix stack.yaml (#78) 2016-12-08 10:10:32 -08:00
jcarey
3530c331f3 Merge pull request #77 from awakenetworks/protobuf-wire-927c61b
protobuf-wire = 927c61b
2016-12-02 09:49:13 -08:00
John C. Carey
f3687d664c protobuf-wire = 927c61b
proto3-wire   = b515191
2016-12-01 22:40:28 -08:00
Connor Clark
1d8f811906 MONAPP-1369: Server options for generated code. (#76)
* add ServiceOptions for generated servers

* drop opt prefix in ServiceOptions fields

* add default options

* tweak exports, add docs

* re-export stuff from Generated so that users need don't need to import lots of modules

* remove threaded from library -- doesn't do anything

* add defaultServiceOptions export

* more exports

* export GRPCMethodType
2016-11-30 14:22:47 -08:00
travis
7d5df1d204 GADT-based high level interface 2016-11-29 13:34:34 -08:00
Travis Athougies
26dc36dc64 GADT-based high level interface 2016-11-17 16:00:07 -08:00
Phil Freeman
507edf803f Merge pull request #74 from awakenetworks/phil/host-option
Add host option to high-level API
2016-10-27 13:53:04 -07:00
Phil Freeman
950f4cdefa Add host option to high-level API 2016-10-26 14:43:11 -07:00
Connor Clark
a12e5ae8a0 update bounds for GHC 8 (#73) 2016-10-24 14:25:08 -07:00
Connor Clark
d18d3251e8 fix up benchmarks to run with latest changes (#72) 2016-08-26 10:21:59 -07:00
Connor Clark
01fac2d5a6 add option to set logging function (#71)
* add option to set logging function

* Add documentation to ServerOptions
2016-08-17 14:12:22 -07:00
Connor Clark
3366dde7ab Connor/security (#68)
* begin security bindings

* secure channel creation

* SSL credentials support

* add client-side ssl support

* ssl test

* read file before passing to channel credentials, free credentials when done creating

* use localhost key/cert for test

* WIP sketch of callbacks for metadata plugins

* conversion from Haskell auth processor to C

* add test for custom server metadata auth processor

* wip auth failure test

* rebase tweak

* working test of custom auth metadata server processor

* improve security docs, clean up

* add unsafe layer client-side auth metadata plugin functionality

* add client config option for custom auth metadata

* WIP client-side metadata auth plugin. Crashing when calling C callback.

* get initial version of client-side metadata plugins working

* replace String with ByteString in a few places, add function for getting AuthProperty

* AuthContext utilities and more documentation

* end-to-end test of client and server auth plugins

* remove redundant tests

* function for parents in unary calls, add deactivated failing test for auth metadata propagation from parent to child

* some cleanup

* tweaks

* more tweaks

* remove unused file

* docs tweak

* consolidate exports

* update protobuf-wire commit
2016-08-17 09:55:06 -07:00