Commit Graph

26 Commits

Author SHA1 Message Date
Christian Schwarz 4e45b4090b pull log output: optimize to be readable by humans 2017-08-06 18:28:05 +02:00
Christian Schwarz cba083cadf Make zfs.DatasetPath json.Marshaler and json.Unmarshaler
Had to resort to using pointers to zfs.DatasetPath everywhere... Should
find a better solution for that.
2017-08-06 16:22:15 +02:00
Christian Schwarz 8eb4a2ba44 Rudimentary progress reporting on send / recv side. 2017-08-06 16:21:54 +02:00
Christian Schwarz 35dcfc234e Implement push support.
Pushing is achieved by inverting the roles on the established
connection, i.e. the client tells the server what data it should pull
from the client (PullMeRequest).

Role inversion is achieved by moving the server loop to the serverLoop
function of ByteStreamRPC, which can be called from both the Listen()
function (server-side) and the PullMeRequest() client-side function.

A donwside of this PullMe approach is that the replication policies
become part of the rpc, because the puller must follow the policy.
2017-05-20 18:17:08 +02:00
Christian Schwarz 3c7f782dac rpc: remove FilesystemRequest.Direction (unused) 2017-05-20 17:43:49 +02:00
Christian Schwarz 40fe7e643d cmd: Move replication logic to separate file. 2017-05-20 17:29:37 +02:00
Christian Schwarz 48a4e8033a rpc: close outgoing SSH connection on exit. 2017-05-14 14:11:19 +02:00
Christian Schwarz 74719ad846 rpc: chunk JSON parts of communication + refactoring
JSONDecoder was buffering more of connection data than just the JSON.
=> Unchunker didn't bother and just started unchunking.

While chaining JSONDecoder.Buffered() and the connection using
ChainedReader works, it's still not a clean architecture.

=> Every JSON message is now wrapped in a chunked stream
   (chunked and unchunked)
   => no special-cases
=> Keep ChainedReader, might be useful later on...
2017-05-13 15:33:46 +02:00
Christian Schwarz feabf1abcd rpc: logging for bytestream listener 2017-05-13 15:25:09 +02:00
Christian Schwarz cd8796aed4 rpc: Initial|IncrementalTransferRequest transfer zfs data structures 2017-05-07 12:20:56 +02:00
Christian Schwarz c71be910f9 rpc: fix incremental transfer request handling 2017-05-07 11:53:47 +02:00
Christian Schwarz 82beea94d5 rpc: missing response header for InitialTransferRequest 2017-05-06 23:43:55 +02:00
Christian Schwarz 9b871fb7c0 rpc: more detailed errors 2017-05-06 10:58:23 +02:00
Christian Schwarz f005ce318d Purge model package, not really used anyways. 2017-05-03 17:26:45 +02:00
Christian Schwarz 514f9aa123 rpc: hex-ints for RequestType definitions 2017-05-03 17:13:08 +02:00
Christian Schwarz b8e7ddd61f rpc fixup msising directions filesystemrequest 2017-05-03 17:12:31 +02:00
Christian Schwarz 43f67d2b7c rpc: add FilesystemVersionsRequest 2017-05-03 17:12:15 +02:00
Christian Schwarz b87829817a rpc: bytestream: listen: filesystems request: reply with header 2017-04-30 23:47:12 +02:00
Christian Schwarz 8bdcdd5ec6 rpc: bytestream: listen: consistent error handling 2017-04-30 23:47:12 +02:00
Christian Schwarz 9fdd1ea909 rpc: fix panic when parsing filesystem response 2017-04-30 23:47:12 +02:00
Christian Schwarz 08370689c8 rpc: implement respondWithError 2017-04-30 23:47:11 +02:00
Christian Schwarz d9ecfc8eb4 Gofmt megacommit. 2017-04-26 20:29:54 +02:00
Christian Schwarz 4494afe47f Finish implementation of RPC. 2017-04-16 21:38:31 +02:00
Christian Schwarz c1aed10e8b Further drafting of rpc module.
Also: fix typo in model definitions.
2017-04-15 18:31:14 +02:00
Christian Schwarz 69f8e7cfc3 Implement chunking.
Move from rpc to separate util package.
2017-04-15 17:07:32 +02:00
Christian Schwarz 123becbd22 Interface wireframe 2017-04-14 19:26:32 +02:00