aboutsummaryrefslogtreecommitdiff
path: root/src/zenhttp/include
Commit message (Collapse)AuthorAgeFilesLines
* made fmt formatter format function const (#162)Stefan Boberg2024-09-201-2/+2
| | | this appears to be required as of fmt v11
* workspace shares (#84)Dan Engelbrecht2024-05-291-0/+1
| | | Feature: New 'workspaces' service which allows a user to share a local folder via zenserver. A workspace can have mulitple workspace shares and they provie an HTTP API that is compatible with the project oplog HTTP API. Workspaces and shares are preserved between runs. Workspaces feature is disabled by default - enable with --workspaces-enabled option when launching zenserver.
* zenremoteprojectstore with httpclient (#35)Dan Engelbrecht2024-04-031-0/+8
| | | | | | - Bugfix: Fix log of Success/Failure for oplog import - Improvement: Use HttpClient when doing oplog export/import with a zenserver as a remote target. Includes retry logic - Improvement: Increase the retry count to 4 (5 attempts in total) when talking to Jupiter for oplog export/import
* add filter to projectstore entries request (#25)Dan Engelbrecht2024-03-261-0/+2
| | | | | | | * Add HttpServerRequest::Decode to decode http request parameters * Add support to filter projectstore `entries` request using the `fieldfilter` where the wanted fields are comma (,) delimited * Add support for responding with compressed payloads for projectstore `entries` requests by adding AcceptType `compressed-binary` to the request header * Add support for responding with compressed payloads for projectstore `files` requests by adding AcceptType `compressed-binary` to the request header * Add support for responding with compressed payloads for projectstore `chunkinfo` requests by adding AcceptType `compressed-binary` to the request header
* Add retry with optional resume logic to HttpClient::Download (#639)Dan Engelbrecht2024-01-241-4/+31
| | | | | | | - Improvement: Refactored Jupiter upstream to use HttpClient - Improvement: Added retry and resume logic to HttpClient - Improvement: Added authentication support to HttpClient - Improvement: Clearer logging in GCV2 compact of FileCas/BlockStore - Improvement: Size details in oplog import logging
* separate RPC processing from HTTP processing (#626)Stefan Boberg2023-12-201-163/+0
| | | | | | * moved all RPC processing from HttpStructuredCacheService into separate CacheRpcHandler class in zenstore * move package marshaling to zenutil. was previously in zenhttp/httpshared but it's useful in other contexts as well where we don't want to depend on zenhttp * introduced UpstreamCacheClient, this provides a subset of functions on UpstreamCache and lives in zenstore
* HTTP plugin request debug logging (#587)Stefan Boberg2023-12-051-5/+5
| | | | | | * added log level control/query to LoggerRef * added debug logging to http plugin implementation * added GetDebugName() to transport plugin interfaces * added debug name to log output
* option for zenserver - `--http-forceloopback` (#516)Dan Engelbrecht2023-11-091-1/+2
| | | | * New option for zenserver - `--http-forceloopback` which forces opening of the server http server using loopback (local) connection (UE-199776) * add fallback to local connection for asio if we get access denied on public port
* factored out some compiler definitions etc into zenbase (#517)Stefan Boberg2023-11-072-2/+2
| | | | | this is a header-only library which mostly contains definitions to support different platforms and compilers. It is part of the zen codebase but is intended to be consumable separately to zenbase etc to support standalone transport plug-ins and similar.
* spdlog implementation hiding (#498)Stefan Boberg2023-11-063-12/+9
| | | | | | | | | this change aims to hide logging internals from client code, in order to make it easier to extend and take more control over the logging process in the future. As a bonus side effect, the generated code is much tighter (net delta around 2.5% on the resulting executable which includes lots of thirdparty code) and should take less time to compile and link. Client usage via macros is pretty much unchanged. The main exposure client code had to spdlog internals before was the use of custom loggers per subsystem, where it would be common to have `spdlog::logger` references to keep a reference to a logger within a class. This is now replaced by `zen::LoggerRef` which currently simply encapsulates an actual `spdlog::logger` instance, but this is intended to be an implementation detail which will change in the future. The way the change works is that we now handle any formatting of log messages in the zencore logging subsystem instead of relying on `spdlog` to manage this. We use the `fmt` library to do the formatting which means the client usage is identical to using `spdlog`. The formatted message is then forwarded onto any sinks etc which are still implememted via `spdlog`.
* added missing includes (#504)Stefan Boberg2023-10-271-0/+1
| | | | | this change adds some includes to files which "inherit" includes from elsewhere this was exposed on another branch when removing some heavy dependencies from central headers
* added HttpClient::GetBaseUriStefan Boberg2023-10-201-1/+2
| | | | mostly useful when reporting errors
* Cache (rpc) activitity recording improvements (#482)Stefan Boberg2023-10-201-1/+1
| | | | | | | this adds a new RPC recording path aimed at more continuous recording and analysis of recorded sessions the new strategy is implemented alongside the original in order to retain the ability to read the older format the main difference between v2 and v1 is that the new strategy splits the recording into segments which are independent from each other. This is done to enable long running sessions with automatic disk cleanup (not implemented yet), appending to an existing recording (not implemented) and/or partial analysis and processing. The recorder will start a new segment when some criteria is fulfilled, including the number of files in the segment directory, disk footprint etc
* support for multiple http servers (#473)Stefan Boberg2023-10-131-21/+4
| | | | | | * added support for having multiple http servers active in one session * added configuration API to pluggable transports * removed pimpl pattern from some pluggable transports implementations
* restructured zenhttp (#472)Stefan Boberg2023-10-131-119/+0
| | | separating the http server implementations into a directory and moved diagsvcs into zenserver since it's somewhat hard-coded for it
* adjust resource usage for dedicated servers (#466)Stefan Boberg2023-10-121-1/+2
| | | | | | | | | when dedicated mode is enabled via `--dedicated` or `server.dedicated` then we tune http.sys server settings to be more suitable for a shared server initially we tune two things * the thread pool used to service I/O requests allows a larger number of threads to be created when needed. The minimum thread count is unchanged but in dedicated server mode we double the maximum number of threads allowed * the http.sys request queue length (`HttpServerQueueLengthProperty`) is increased to 50,000 in dedicated mode. The regular default is 1,000
* pluggable asio transport (#460)Stefan Boberg2023-10-111-97/+0
| | | | | | | | | added pluggable transport based on asio. This is in an experimental state and is not yet a replacement for httpasio even though that is the ultimate goal also moved plugin API header into dedicated part of the tree to clarify that it is meant to be usable in isolation, without any dependency on zencore et al moved transport implementations into dedicated source directory in zenhttp note that this adds code to the build but nothing should change at runtime since the instantiation of the new code is conditional and is inactive by default
* updated plugin API class names (#462)Stefan Boberg2023-10-112-17/+17
| | | | | | | | | * renamed some interfaces to improve pluggable transport API TransportConnectionInterface -> TransportConnection TransportPluginInterface -> TransportPlugin TransportServerConnectionHandler -> TransportServerConnection TransportServerInterface -> TransportServer
* experimental pluggable transport support (#436)Stefan Boberg2023-10-102-0/+146
| | | this change adds a `--http=plugin` mode where we support pluggable transports. Currently this defaults to a barebones blocking winsock implementation but there is also support for dynamic loading of transport plugins, which will be further developed in the near future.
* removed websocket protocol support(#445)Stefan Boberg2023-10-042-261/+1
| | | removed websocket support since it is not used right now and is unlikely to be used in the future
* Add runtime status/control of logging (#419)Dan Engelbrecht2023-09-221-1/+1
| | | | | | | | | | | - Feature: New endpoint `/admin/logs` to query status of logging and log file locations and cache logging - `enablewritelog`=`true`/`false` parameter to control cache write logging - `enableaccesslog`=`true`/`false` parameter to control cache access logging - `loglevel` = `trace`/`debug`/`info`/`warning`/`error` - Feature: New zen command `logs` to query/control zen logging - No arguments gives status of logging and paths to log files - `--cache-write-log` `enable`/`disable` to control cache write logging - `--cache-access-log` `enable`/`disable` to control cache access logging - `--loglevel` `trace`/`debug`/`info`/`warning`/`error` to set debug level
* http and httpsys config options (#401)Dan Engelbrecht2023-09-141-1/+14
| | | | * Added `--http-threads`, `--httpsys-async-work-threads`, `--httpsys-enable-request-logging` and `--httpsys-enable-async-response` command line options to zenserver * remove unused CreateHttpSysServer
* add console logging to zen command (#389)Dan Engelbrecht2023-09-081-0/+8
| | | | properly set trace log level if IsVerbose add log category to http client
* Extend http client (#387)Dan Engelbrecht2023-09-082-19/+122
| | | * extend http client with configuration, headers, parameters and disk streaming upload/download
* oplog mirror support (#367)Stefan Boberg2023-08-211-0/+2
| | | | feature: added oplog-mirror command. this can be invoked to export oplog contents to corresponding files
* Cache process handles for FormatPackageMessage (#360)Dan Engelbrecht2023-08-171-4/+4
|
* various zenhttp fixes from sb/protoStefan Boberg2023-06-305-13/+35
| | | | | | | | | * Made HttpHealthService use locks to serialize access to state * Added ToString(HttpResponseCode HttpCode) * Added support for JS source maps * Moved IHttpStatsProvider/IHttpStatsService * Enabled enumeration of stats providers * Disabled build of HttpTestingService unless ZEN_WITH_TESTS is defined
* some HttpClient changes eliminating some cpr helpersStefan Boberg2023-05-151-3/+27
|
* Better defaults for zen cli (#302)Stefan Boberg2023-05-151-2/+7
| | | | | added ZenCmdBase::ResolveTargetHostSpec - this is a helper which provides better default behaviour for commands which interact with a local zen server instance. more specifically it picks a default based on which processes are actually running on the local machine this change also wires up the Scrub command along with some required HttpClient improvements
* implemented structured cache logging (#296)Stefan Boberg2023-05-121-2/+2
| | | | | | | | may be used as audit trail to help analyse potential cache pollution/corruption * also added common header with timestamp to all known log targets * made `Oid::operator bool` explicit to avoid logging/text format mishaps * made `HttpClient::operator bool` explicit
* Close down http server gracefully when exiting even while requests are still ↵Dan Engelbrecht2023-05-111-0/+1
| | | | | being processed (#290) * Close down http server gracefully when exiting even while requests are still being processed
* 247 complete httpclient implementation (#269)Stefan Boberg2023-05-052-16/+38
| | | | | | | | | * implemented HttpClient connection pooling * implemented missing verbs * added response helpers (CbObject/CbPackage/text) * added RwLock::WithSharedLock and RwLock::WithExclusiveLock * added some noexcept annotations on RwLock * removed CPR dependency in httpclient.h
* move testing and observability code to zenhttp (#266)Stefan Boberg2023-05-025-0/+313
|
* move auth code from zenserver into zenhttp (#265)Stefan Boberg2023-05-023-0/+157
| | | this code should be usable outside of zenserver, so this moves it out into zenhttp where it can be used from lower level components
* moved source directories into `/src` (#264)Stefan Boberg2023-05-026-0/+983
* moved source directories into `/src` * updated bundle.lua for new `src` path * moved some docs, icon * removed old test trees