* Partial blockchain.transaction.yyy RPC implementations.
* Register RPC service object.
* Move session manager start/stop to a better place.
* Attempt to fill in the details of transaction.get_batch,
including merkle path.
* Correct interpretation of DBStateValue Genesis hash.
* Convert Args.Port to int and validate. Run UDP ping server on JSONRPCPort too.
* Add BlockHeader to HeightHash notification.
* Limit session-based JSON RPC service to IPv4.
Client not ready for IPv6.
* Adapt to new HeightHash struct.
* Fine tune JSON RPC handlers and types to match lbry-sdk expectations.
Implement UnmarshalJSON()/MarshalJSON() for several types.
* Add more special handling of DBStateValue.Genesis hash.
* Set IncludeStop=false generally to avoid returning extra rows.
Other misc fixes.
* Fix log spam (Already shutting down...)
* Workaround to allow lbry-sdk to call server.version and server.features.
Incoming/outgoing JSON is patched using yet another codec (jsonPatchingCodec).
Add more logging of raw/patched JSON.
* Elaborate comment on jsonPatchingCodec.
* server.xxx endpoints
Additional server endpoints in jsonrpc and also some refactoring
* server.banner
* more endpoints
* use lbry.go stop pattern
* set genesis hash properly
* updates and refactors
* remove shutdowncalled and itmut
* remove OpenIterators
* remove shutdown and done channels from db and use stop group
* currently broken, incorporated stop groups into the session manager
* set the rest of the default args for tests
* add default json rpc http port and cleanup
* tests for new jsonrpc endpoints
* cleanup and add manage goroutine to stopper pattern
* cleanup
* NewDebug
* asdf
* fix
* integration testing scripts
some scripts for integration testing and a docker file for an action.
Still need to figure out how to properly run a more realistic version
in ci.
* update
* changes
* db shutdown racecondition fix
* changes per pr
* changes per code review
* fix testing
* add shutdowncalled bool to db
* Move and rename BlockchainCodec, BlockchainCodecRequest.
These are not specifically "blockchain", rather they are
specific to how gorilla/rpc works.
* Move claimtrie-related service/handlers to jsonrpc_claimtrie.go.
* Pull out decode logic into named func newBlockHeaderElectrum().
* Rename BlockchainService -> BlockchainBlockService.
* Drop http.Request arg from handlers, and use RegisterTCPService().
* Implement GetStatus() to pull data from HashXStatus table.
* Make the service objects independent, so we don't have inheritance.
* Add core session/subscription logic (session.go).
Implement subsribe/unsubscribe handlers.
* Support both pure JSON and JSON-over-HTTP services.
Forward NotifierChan messages to sessionManager.
* Only assign default port (50001) if neither --json-rpc-port nor
--json-rpc-http-port are specified.
* Handle failures with goto instead of break. Update error logging.
* Add --max-sessions, --session-timeout args. Enforce max sessions.
* Changes to make session.go testable. Conn created with Pipe()
used in testing has no unique Addr.
* Add tests for headers, headers.subscribe, address.subscribe.
* HashXStatus, HashXMempoolStatus not populated by default. Fix GetStatus().
* Use time.Ticker object to drive management activity.
* Make prefixes_test.go more resilient against garbage left
by a prior crash. Also correct error logging.
* Don't do the ones' complement thing with DBStateValue fields
HistFlushCount, CompFlushCount, CompCursor. Python-herald
doesn't do it, and it presents one more irregular case for
(un)marshalling fields.
* Simplify type-specific partial packing, and simplify dispatch for pack key/value.
* Add struct field annotations and refactor to prepare for
use of "restruct" generic packing/unpacking.
* Add dynamic pack/unpack based on "restruct" module.
Dispatch normal pack/unpack through tableRegistry[] map
instead of switch.
* Add 5 new prefixes/tables (TrendingNotifications..HashXMempoolStatus).
* Undo rename. TouchedOrDeleted -> ClaimDiff.
* Fixup callers of eliminated partial pack functions. Have them use key.PartialPack(n).
* Add pluggable SerializationAPI. Use it in prefixes_test.
Populate PrefixRowKV.RawKey,RawValue when appropriate.
* Undo accidental bump of rocksdb version.
* Add .vscode dir to gitignore.
* Fix ClaimToChannelValue annotation. Implement BlockTxsValue workaround
as I can't find the right annotation to get it marshalled/unmarshalled.
* Strengthen partial packing verification. Fix bugs
in UnpackKey/UnpackValue for new types.
* Remove .DS_Store, and ignore in future.
* Fix MempoolTxKey, TouchedHashXValue. Remove some unneeded struct tags.
* Generate test data and complete the tests for the new tables.
Add Fuzz tests for TouchedHashXKey, TouchedHashXValue with
happy path test data (only).
* Move tableRegistry to prefixes.go and rename it prefixRegistry.
Other minor fixes, comments.
* Add test that runs through GetPrefixes() contents, and verifies
they are registered in prefixRegistry.