* 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
* (wip) Change ClientRWHandler to use an IO action for metadata acqui
* Demonstrate placement of WaitForInitialMetadata() in hellos_client
* Make hellos cpp server always send metadata first, for now
* Show getMD placement in haskell hellos-client
* Add prelim bidi metadata exchange behavior tweaks to line up with C++ API conventions
* update channel arg names, add compression level arg support, add compression level arg test
* switch to temp test demonstrating bug in grpc 0.15.0
* memset op array to 0
* switch examples back
* Switch to newer `grpc` and enable tests in `release.nix`
* Split out `simple-server` test into separate shell script
* Fix bash invocation
* Add intermediate `./default-tests.nix` build
* Add `tests.patch` to version control
* Split `python` command into separate script
* Provide `python` via `nix`
* make metadatamap a newtype of multimap
* update tests for new MetadataMap
* remove multimap dependency, reproduce needed functionality instead
* add repeated key to payload test
* bump LTS version for sorted-list, use SortedList for MetadataMap
* remove unneeded conversion
* MetadataMap documentation
* minor fixes
* remove parent ptr from unregistered calls -- unneeded
* begin unregistered high level server loop
* undo changes to highlevel server, add mkConfig for unregistered server
* move call CQ create/destroy into call create/destroy
* async normal call function
* preliminary unregistered server loop for non-streaming methods
* working unregistered highlevel example
* loop counters for benchmarking
* changes for benchmarking, add ruby example server for benchmarking
* async version of withCall, refactor unregistered server loop to handle all method types
* unregistered client streaming
* add remaining streaming modes
* unregistered server streaming test
* unregistered streaming tests
* add error logging
* fix bug in add example
* remove old TODOs
* fix bug: don't assume slices are null-terminated
* add TODO re: unregistered client streaming functions
* Tweak runOps param order, inline common op sequences, clean up serverHandleNormalCall
* More ops sequence inlining for clarity, experimenting with Managed
* Checkpoint: preliminary support for all streaming modes; much cleanup/refactoring and api design still needed
* Use mempty for default StatusDetails; tweak bad status matching mechanism
* Preliminary user-facing, server-streaming, low-level api and test
* renaming wibbles
* Preliminary user-facing, client-streaming, low-level api and test
* Move sendMsgs comb to Network.GRPC.LowLevel.Op; misc cleanup/DCR
* Modify bidi streaming to omit request payload
* Add transformers dep
* Preliminary user-facing low-level bidirectional streaming api and test
* Fix missing peek import
* Remove TimeoutSeconds params on streaming mode functions
* Fix serverHandleNormalCall rebase wart
* Fix rebase warts; minor hlint fixes and wibbles
* Post-rebase tweaks to optional payload use in serverRequestCall (i.e., now respects payloadHandling again)
* Cleanup/refactor serverRequestCall
* Fix comment
* Change ServerRWHandler type so that handler does not have to invoke a finalizer
* Change ServerReaderHandler type so that handler does not have to invoke a finalizer
* Simplify serverWriter interface and ServerWriterHandler structure
* Simplify serverRW (get rid of exec param), improve bidi streaming tests
* Use ExceptT in serverRW impl
* Change ServerRWHandler type to pass recv/send operations.
* Renaming
* Define ClientRWHandler, pass recv/send ops
* wibbles
* Use ExceptT in clientRW impl
* Add DataKinded phantom typing to RegisteredMethod; misc cleanup
* Simplify sendMsgs interface; add SingleSend type and related helpers
* Rename SingleSend to SendSingle, use ExceptT to clean up {client,server}Writer and sendMsgs
* More ExceptT cleanup in clientWriter
* Factor out reusable bits of clientWriter
* Shrink ServerReaderHandler
* Delete stale comments
* begin high-level server interface
* update to datakind representation
* clean up
* move method type info to type level, parametrize ServerCall by payload
* convert for writer handler
* start switching over to Message-based handlers
* begin work on highlevel example
* comment out old code
* parametrize StreamSend
* parametrize StreamRecv
* conversion for ServerReaderHandler
* finish handler conversions
* Add high level version and payload checking to echo-client
* Decouple server CQs from call-bound CQs (registered methods); use more consistent naming conventions
* Decouple server/call-bound CQs for unregistered methods; refactor U.serverRequestCall; misc cleanup
* Make convertRecv total; formatting wibbles
* Tweak runOps param order, inline common op sequences, clean up serverHandleNormalCall
* More ops sequence inlining for clarity, experimenting with Managed
* Checkpoint: preliminary support for all streaming modes; much cleanup/refactoring and api design still needed
* Use mempty for default StatusDetails; tweak bad status matching mechanism
* Preliminary user-facing, server-streaming, low-level api and test
* renaming wibbles
* Preliminary user-facing, client-streaming, low-level api and test
* Move sendMsgs comb to Network.GRPC.LowLevel.Op; misc cleanup/DCR
* Modify bidi streaming to omit request payload
* Add transformers dep
* Preliminary user-facing low-level bidirectional streaming api and test
* Fix missing peek import
* Remove TimeoutSeconds params on streaming mode functions
* Fix serverHandleNormalCall rebase wart
* Fix rebase warts; minor hlint fixes and wibbles
* Post-rebase tweaks to optional payload use in serverRequestCall (i.e., now respects payloadHandling again)
* Cleanup/refactor serverRequestCall
* Fix comment
* Change ServerRWHandler type so that handler does not have to invoke a finalizer
* Change ServerReaderHandler type so that handler does not have to invoke a finalizer
* Simplify serverWriter interface and ServerWriterHandler structure
* Simplify serverRW (get rid of exec param), improve bidi streaming tests
* Use ExceptT in serverRW impl
* Change ServerRWHandler type to pass recv/send operations.
* Renaming
* Define ClientRWHandler, pass recv/send ops
* wibbles
* Use ExceptT in clientRW impl
* Add DataKinded phantom typing to RegisteredMethod; misc cleanup
* Simplify sendMsgs interface; add SingleSend type and related helpers
* Rename SingleSend to SendSingle, use ExceptT to clean up {client,server}Writer and sendMsgs
* More ExceptT cleanup in clientWriter
* Factor out reusable bits of clientWriter
* Shrink ServerReaderHandler
* Delete stale comments
* Use common machinery for all streaming modes; make handler types more consistent
* wibbles
* get_peer: fix todo
* add documentation for server registered call function
* test roundtrip conversion of larger bytestrings (32 mb)
* Add channel args interface: currently supports user agents and compression.
* fix build failure after stack clean
* fix testWrongEndpoint
* test that unregistered requests are ignored by request_registered_call
* handler returns status code, drop Grpc prefix from status codes
* begin module with LowLevel tests of Op stuff, cancel functions, refactor Ops a little.
* refactor op tests, add server-side cancellation test
* add cancel function for unregistered calls, move some unregistered stuff
* remove unnecessary threadDelay
* update test description
* fix init metadata api for registered server calls
* pass call into handler for cancelling, add cancel test
* add tests for server misbehavior
* fix leaks in pluck and next
* fix deadline leak
* fix slice leak
* always free metadata
* add full TODO in case we get rid of unregistered code
* shorter deadline to make test faster
* update for grpc 0.14.0
* fix another valgrind complaint
* Remove explicit host:port parameter from clientRequest
* Save ClientConfig in Client ADT; derive host:port string as needed
* Add Port newtype and endpoint string constructor fn
* Introduce Endpoint newtype for host:port strings; derive them as needed; misc cleanup
* Clean up echo client
* initial echo client/server examples
* registered and unregistered versions of the example client
* ignore pyc files
* cpp echo code, flag to build examples
* threaded server example
* grpc_server_request_call
* basic slice functionality
* rename function to emphasize side effects
* add docs
* ByteBuffer function bindings
* replace unsafeCoerce with more specific function, add docs, tests.
* add newtypes for Tag and Reserved void pointers
* manually fix request_registered_call binding
* use nocode keyword to fix Ptr () problems
* decouple copying Slice from freeing slice
* Add time ops
* remove nocode decls
* Start Op module, fix c2hs preprocessing order
* metadata manipulation operations
* metadata free function, test
* helper functions for constructing ops of each type
* bindings for op creation functions
* finish up Op creation functions, implement Op destruction, add docs.
* tweak documentation
* rework Op creation functions to work with an array of ops, for ease of use with grpc_call_start_batch
* forgot to change return types
* wrap hook lines, fix types to op creation functions
* implement part of the payload test
* hideous, but working, end to end test
* bindings for connectivity state checks, split test into two threads
* various cleanup
* rename Core to Unsafe for emphasis, clean up tests more
* begin safe low-level facilities
* begin completion queue and server stuff
* Finish server start/stop, cq start/stop, add tests
* facilities for safely executing op batches
* reorganize LowLevel modules, begin explicit export list
* client functionality, stub payload test, various refactors
* tweak cabal file, add test
* add more documentation
* doc tweaks
* begin refactor to improve CompletionQueue safety
* export only thread-safe CQ functions, add registered call creation and other CQ utilities
* begin refactor to use GRPCIO monad, fix missing push semaphore, fix mem leak in server calls
* switch to explicit Either where needed
* add crashing tests, continue fleshing out serverHandleNormalCall
* fix haddock error, finish first draft of request handling function
* reduce GHC warnings
* non-registered client request helpers
* initial request/response test working
* don't pass tags around; generate where needed
* server call bracket functions
* correct order of semaphore acquisition and shutdown check
* simple debug flag logging, simplify Call type
* fix various registered method issues (but still not working)
* cleanup
* delete old code
* remove old todo
* use MetadataMap synonym pervasively
* more comments
* update TODOs
* tweak safety caveat
* docs tweaks
* improve haddocks
* add casts to eliminate clang warnings, remove unused function
* update options to eliminate cabal warnings
* remove outdated todo
* remove unneeded exports from CompletionQueue
* rename to GRPCIOCallError, re-add create/shutdown exports (needed for Server module)
* newtypes for hosts and method names
* more newtypes
* more debug logging
* Fix flag name collision
* instrument uses of free
* more debug
* switch to STM for completion queue stuff
* reduce warnings
* more debugging, create/destroy call tests
* refactor, fix failure cleanup for server call creation. More tests passing.
* formatting tweaks