diff --git a/CryptoExchange.Net/CryptoExchange.Net.csproj b/CryptoExchange.Net/CryptoExchange.Net.csproj
index dab827b..83a39b6 100644
--- a/CryptoExchange.Net/CryptoExchange.Net.csproj
+++ b/CryptoExchange.Net/CryptoExchange.Net.csproj
@@ -6,12 +6,12 @@
CryptoExchange.NetJKorfA base package for implementing cryptocurrency exchange API's
- 3.0.11
+ 3.0.12falsehttps://github.com/JKorf/CryptoExchange.Netentrue
- 3.0.11 - Added support for checksum in SymbolOrderBook
+ 3.0.12 - Named parameters on SymbolOrderBook eventsenable8.0MIT
diff --git a/CryptoExchange.Net/CryptoExchange.Net.xml b/CryptoExchange.Net/CryptoExchange.Net.xml
index fa58cf8..ed94e55 100644
--- a/CryptoExchange.Net/CryptoExchange.Net.xml
+++ b/CryptoExchange.Net/CryptoExchange.Net.xml
@@ -1,3074 +1,2962 @@
-
-
-
- CryptoExchange.Net
-
-
-
-
- Used for conversion in ArrayConverter
-
-
-
-
- Marks property as optional
-
-
-
-
- Api credentials info
-
-
-
-
- The api key to authenticate requests
-
-
-
-
- The api secret to authenticate requests
-
-
-
-
- The private key to authenticate requests
-
-
-
-
- Create Api credentials providing a private key for authentication
-
- The private key used for signing
-
-
-
- Create Api credentials providing a api key and secret for authentication
-
- The api key used for identification
- The api secret used for signing
-
-
-
- Create Api credentials providing a api key and secret for authentication
-
- The api key used for identification
- The api secret used for signing
-
-
-
- Copy the credentials
-
-
-
-
-
- Create Api credentials providing a stream containing json data. The json data should include two values: apiKey and apiSecret
-
- The stream containing the json data
- A key to identify the credentials for the API. For example, when set to `binanceKey` the json data should contain a value for the property `binanceKey`. Defaults to 'apiKey'.
- A key to identify the credentials for the API. For example, when set to `binanceSecret` the json data should contain a value for the property `binanceSecret`. Defaults to 'apiSecret'.
-
-
-
- Try get the value of a key from a JToken
-
-
-
-
-
-
-
- Dispose
-
-
-
-
- Base class for authentication providers
-
-
-
-
- The provided credentials
-
-
-
-
- ctor
-
-
-
-
-
- Add authentication to the parameter list
-
-
-
-
-
-
-
-
-
-
-
- Add authentication to the header dictionary
-
-
-
-
-
-
-
-
-
-
-
- Sign a string
-
-
-
-
-
-
- Sign a byte array
-
-
-
-
-
-
- Convert byte array to hex
-
-
-
-
-
-
- Private key info
-
-
-
-
- The private key
-
-
-
-
- The private key's pass phrase
-
-
-
-
- Indicates if the private key is encrypted or not
-
-
-
-
- Create a private key providing an encrypted key information
-
- The private key used for signing
- The private key's passphrase
-
-
-
- Create a private key providing an encrypted key information
-
- The private key used for signing
- The private key's passphrase
-
-
-
- Create a private key providing an unencrypted key information
-
- The private key used for signing
-
-
-
- Create a private key providing an encrypted key information
-
- The private key used for signing
-
-
-
- Copy the private key
-
-
-
-
-
- Dispose
-
-
-
-
- The base for all clients
-
-
-
-
- The address of the client
-
-
-
-
- The log object
-
-
-
-
- The api proxy
-
-
-
-
- The auth provider
-
-
-
-
- The last used id
-
-
-
-
- Lock for id generating
-
-
-
-
- Last is used
-
-
-
-
- ctor
-
-
-
-
-
-
- Set the authentication provider
-
-
-
-
-
- Tries to parse the json data and returns a token
-
- The data to parse
-
-
-
-
- Deserialize a string into an object
-
- The type to deserialize into
- The data to deserialize
- Whether or not the parsing should be checked for missing properties (will output data to the logging if log verbosity is Debug)
- A specific serializer to use
-
-
-
-
- Deserialize a JToken into an object
-
- The type to deserialize into
- The data to deserialize
- Whether or not the parsing should be checked for missing properties (will output data to the logging if log verbosity is Debug)
- A specific serializer to use
-
-
-
-
- Deserialize a stream into an object
-
- The type to deserialize into
- The stream to deserialize
- A specific serializer to use
-
-
-
-
- Generate a unique id
-
-
-
-
-
- Fill parameters in a path. Parameters are specified by '{}' and should be specified in occuring sequence
-
- The total path string
- The values to fill
-
-
-
-
- Dispose
-
-
-
-
- Converter for arrays to properties
-
-
-
-
-
-
-
-
-
-
-
-
-
- Mark property as an index in the array
-
-
-
-
- The index in the array
-
-
-
-
- ctor
-
-
-
-
-
- Base class for enum converters
-
- Type of enum to convert
-
-
-
- The enum->string mapping
-
-
-
-
- ctor
-
-
-
-
-
-
-
-
-
-
-
- Convert a string value
-
-
-
-
-
-
-
-
-
- converter for milliseconds to datetime
-
-
-
-
-
-
-
-
-
-
-
-
-
- Converter for nanoseconds to datetime
-
-
-
-
-
-
-
-
-
-
-
-
-
- Converter for seconds to datetime
-
-
-
-
-
-
-
-
-
-
-
-
-
- Converter for utc datetime
-
-
-
-
-
-
-
-
-
-
-
-
-
- Helper methods
-
-
-
-
- Add a parameter
-
-
-
-
-
-
-
- Add a parameter
-
-
-
-
-
-
-
- Add an optional parameter. Not added if value is null
-
-
-
-
-
-
-
- Add an optional parameter. Not added if value is null
-
-
-
-
-
-
-
- Create a query string of the specified parameters
-
- The parameters to use
- Whether or not the values should be url encoded
- How to serialize array parameters
-
-
-
-
- Get the string the secure string is representing
-
- The source secure string
-
-
-
-
- Create a secure string from a string
-
-
-
-
-
-
- Wait one async
-
-
-
-
-
-
-
-
- Wait one async
-
-
-
-
-
-
-
- String to JToken
-
-
-
-
-
-
-
- Validates an int is one of the allowed values
-
- Value of the int
- Name of the parameter
- Allowed values
-
-
-
- Validates an int is between two values
-
- The value of the int
- Name of the parameter
- Min value
- Max value
-
-
-
- Validates a string is not null or empty
-
- The value of the string
- Name of the parameter
-
-
-
- Validates an object is not null
-
- The value of the object
- Name of the parameter
-
-
-
- Validates a list is not null or empty
-
- The value of the object
- Name of the parameter
-
-
-
- Rate limiter interface
-
-
-
-
- Limit the request if needed
-
-
-
-
-
-
-
-
- Request interface
-
-
-
-
- Accept header
-
-
-
-
- Content
-
-
-
-
- Method
-
-
-
-
- Uri
-
-
-
-
- internal request id for tracing
-
-
-
-
- Set byte content
-
-
-
-
-
- Set string content
-
-
-
-
-
-
- Add a header to the request
-
-
-
-
-
-
- Get the response
-
-
-
-
-
-
- Request factory interface
-
-
-
-
- Create a request for an uri
-
-
-
-
-
-
-
- Configure the requests created by this factory
-
- Request timeout to use
- Proxy settings to use
-
-
-
- Response object interface
-
-
-
-
- The response status code
-
-
-
-
- Whether the status code indicates a success status
-
-
-
-
- The response headers
-
-
-
-
- Get the response stream
-
-
-
-
-
- Close the response
-
-
-
-
- Base class for rest API implementations
-
-
-
-
- The factory for creating requests. Used for unit testing
-
-
-
-
- What should happen when hitting a rate limit
-
-
-
-
- List of active rate limiters
-
-
-
-
- The total amount of requests made
-
-
-
-
- The base address of the API
-
-
-
-
- Adds a rate limiter to the client. There are 2 choices, the and the .
-
- The limiter to add
-
-
-
- Removes all rate limiters from this client
-
-
-
-
- Ping to see if the server is reachable
-
- The roundtrip time of the ping request
-
-
-
- Ping to see if the server is reachable
-
- The roundtrip time of the ping request
-
-
-
- Base class for socket API implementations
-
-
-
-
- The factory for creating sockets. Used for unit testing
-
-
-
-
- The time in between reconnect attempts
-
-
-
-
- Whether the client should try to auto reconnect when losing connection
-
-
-
-
- The base address of the API
-
-
-
-
-
-
-
-
-
-
- The max amount of concurrent socket connections
-
-
-
-
-
-
-
- Unsubscribe from a stream
-
- The subscription to unsubscribe
-
-
-
-
- Unsubscribe all subscriptions
-
-
-
-
-
- Interface for order book
-
-
-
-
- The status of the order book. Order book is up to date when the status is `Synced`
-
-
-
-
- Last update identifier
-
-
-
-
- The symbol of the order book
-
-
-
-
- Event when the state changes
-
-
-
-
- Event when order book was updated. Be careful! It can generate a lot of events at high-liquidity markets
-
-
-
-
- Event when the BestBid or BestAsk changes ie a Pricing Tick
-
-
-
-
- Timestamp of the last update
-
-
-
-
- The number of asks in the book
-
-
-
-
- The number of bids in the book
-
-
-
-
- The list of asks
-
-
-
-
- The list of bids
-
-
-
-
- The best bid currently in the order book
-
-
-
-
- The best ask currently in the order book
-
-
-
-
- BestBid/BesAsk returned as a pair
-
-
-
-
- Start connecting and synchronizing the order book
-
-
-
-
-
- Start connecting and synchronizing the order book
-
-
-
-
-
- Stop syncing the order book
-
-
-
-
-
- Stop syncing the order book
-
-
-
-
-
- Interface for order book entries
-
-
-
-
- The quantity of the entry
-
-
-
-
- The price of the entry
-
-
-
-
- Interface for order book entries
-
-
-
-
- Sequence of the update
-
-
-
-
- Interface for websocket interaction
-
-
-
-
- Websocket closed
-
-
-
-
- Websocket message received
-
-
-
-
- Websocket error
-
-
-
-
- Websocket opened
-
-
-
-
- Id
-
-
-
-
- Origin
-
-
-
-
- Reconnecting
-
-
-
-
- Handler for byte data
-
-
-
-
- Handler for string data
-
-
-
-
- Socket url
-
-
-
-
- State
-
-
-
-
- Is closed
-
-
-
-
- Is open
-
-
-
-
- Supported ssl protocols
-
-
-
-
- Timeout
-
-
-
-
- Connect the socket
-
-
-
-
-
- Send data
-
-
-
-
-
- Reset socket
-
-
-
-
- Close the connecting
-
-
-
-
-
- Set proxy
-
-
-
-
-
-
- Websocket factory interface
-
-
-
-
- Create a websocket for an url
-
-
-
-
-
-
-
- Create a websocket for an url
-
-
-
-
-
-
-
-
-
- Default log writer, writes to debug
-
-
-
-
-
-
-
-
-
-
- Log implementation
-
-
-
-
- The verbosity of the logging
-
-
-
-
- ctor
-
-
-
-
- Set the writers
-
-
-
-
-
- Write a log entry
-
-
-
-
-
-
- The log verbosity
-
-
-
-
- Debug logging
-
-
-
-
- Info logging
-
-
-
-
- Warning logging
-
-
-
-
- Error logging
-
-
-
-
- None, used for disabling logging
-
-
-
-
- File writer
-
-
-
-
-
-
-
- ctor
-
-
-
-
-
-
-
-
- Dispose
-
-
-
-
-
- Proxy info
-
-
-
-
- The host address of the proxy
-
-
-
-
- The port of the proxy
-
-
-
-
- The login of the proxy
-
-
-
-
- The password of the proxy
-
-
-
-
- Create new settings for a proxy
-
- The proxy hostname/ip
- The proxy port
-
-
-
- Create new settings for a proxy
-
- The proxy hostname/ip
- The proxy port
- The proxy login
- The proxy password
-
-
-
- Create new settings for a proxy
-
- The proxy hostname/ip
- The proxy port
- The proxy login
- The proxy password
-
-
-
- Comparer for byte order
-
-
-
-
- Compare function
-
-
-
-
-
-
-
- The result of an operation
-
-
-
-
-
- The data returned by the call
-
-
-
-
- An error if the call didn't succeed
-
-
-
-
- Whether the call was successful
-
-
-
-
- ctor
-
-
-
-
-
-
- Overwrite bool check so we can use if(callResult) instead of if(callResult.Success)
-
-
-
-
-
- The result of a request
-
-
-
-
-
- The status code of the response. Note that a OK status does not always indicate success, check the Success parameter for this.
-
-
-
-
- The response headers
-
-
-
-
- ctor
-
-
-
-
-
-
-
-
- Create an error result
-
-
-
-
-
-
- Create an error result
-
-
-
-
-
-
-
-
- Constants
-
-
-
-
- Json content type header
-
-
-
-
- Form content type header
-
-
-
-
- What to do when a request would exceed the rate limit
-
-
-
-
- Fail the request
-
-
-
-
- Wait till the request can be send
-
-
-
-
- Where the post parameters should be added
-
-
-
-
- Post parameters in body
-
-
-
-
- Post parameters in url
-
-
-
-
- The format of the request body
-
-
-
-
- Form data
-
-
-
-
- Json
-
-
-
-
- Status of the order book
-
-
-
-
- Not connected
-
-
-
-
- Connecting
-
-
-
-
- Reconnecting
-
-
-
-
- Syncing data
-
-
-
-
- Data synced, order book is up to date
-
-
-
-
- Order book entry type
-
-
-
-
- Ask
-
-
-
-
- Bid
-
-
-
-
- Define how array parameters should be send
-
-
-
-
- Send multiple key=value for each entry
-
-
-
-
- Create an []=value array
-
-
-
-
- Base class for errors
-
-
-
-
- The error code
-
-
-
-
- The message for the error that occured
-
-
-
-
- Optional data for the error
-
-
-
-
- ctor
-
-
-
-
-
-
-
- String representation
-
-
-
-
-
- Cant reach server error
-
-
-
-
- ctor
-
-
-
-
- No api credentials provided while trying to access private endpoint
-
-
-
-
- ctor
-
-
-
-
- Error returned by the server
-
-
-
-
- ctor
-
-
-
-
-
-
- ctor
-
-
-
-
-
-
-
- Web error returned by the server
-
-
-
-
- ctor
-
-
-
-
-
- Error while deserializing data
-
-
-
-
- ctor
-
- Deserializing data
-
-
-
- Unknown error
-
-
-
-
- ctor
-
- Error data
-
-
-
- An invalid parameter has been provided
-
-
-
-
- ctor
-
-
-
-
-
- Rate limit exceeded
-
-
-
-
- ctor
-
-
-
-
-
- Cancellation requested
-
-
-
-
- ctor
-
-
-
-
- Base options
-
-
-
-
- The log verbosity
-
-
-
-
- The log writers
-
-
-
-
-
-
-
- Base for order book options
-
-
-
-
- The name of the order book implementation
-
-
-
-
- Whether each update should have a consecutive id number. Used to identify and reconnect when numbers are skipped.
-
-
-
-
- Whether or not a level should be removed from the book when it's pushed out of scope of the limit. For example with a book of limit 10,
- when a new bid is added which makes the total amount of bids 11, should the last bid entry be removed
-
-
-
-
-
- The name of the order book implementation
- Whether each update should have a consecutive id number. Used to identify and reconnect when numbers are skipped.
- Whether or not a level should be removed from the book when it's pushed out of scope of the limit. For example with a book of limit 10,
- when a new bid is added which makes the total amount of bids 11, should the last bid entry be removed
- Amount of levels for this order book
-
-
-
-
-
-
- Base client options
-
-
-
-
- The base address of the client
-
-
-
-
- The api credentials
-
-
-
-
- Proxy to use
-
-
-
-
- ctor
-
-
-
-
-
-
-
-
- Base for rest client options
-
-
-
-
- List of rate limiters to use
-
-
-
-
- What to do when a call would exceed the rate limit
-
-
-
-
- The time the server has to respond to a request before timing out
-
-
-
-
- ctor
-
-
-
-
-
- Create a copy of the options
-
-
-
-
-
-
-
-
-
- Base for socket client options
-
-
-
-
- Whether or not the socket should automatically reconnect when losing connection
-
-
-
-
- Time to wait between reconnect attempts
-
-
-
-
- The time to wait for a socket response
-
-
-
-
- The time after which the connection is assumed to be dropped
-
-
-
-
- The amount of subscriptions that should be made on a single socket connection. Not all exchanges support multiple subscriptions on a single socket.
- Setting this to a higher number increases subscription speed, but having more subscriptions on a single connection will also increase the amount of traffic on that single connection.
-
-
-
-
- ctor
-
-
-
-
-
- Create a copy of the options
-
-
-
-
-
-
-
-
-
- Buffer entry with a first and last update id
-
-
-
-
- First update id
-
-
-
-
- Last update id
-
-
-
-
- List of asks
-
-
-
-
- List of bids
-
-
-
-
- Base for order book implementations
-
-
-
-
- The process buffer, used while syncing
-
-
-
-
- The ask list
-
-
-
-
- The bid list
-
-
-
-
- Order book implementation id
-
-
-
-
- The log
-
-
-
-
- If order book is set
-
-
-
-
- The amount of levels for this book
-
-
-
-
- The status of the order book. Order book is up to date when the status is `Synced`
-
-
-
-
- Last update identifier
-
-
-
-
- The symbol of the order book
-
-
-
-
- Event when the state changes
-
-
-
-
- Event when the BestBid or BestAsk changes ie a Pricing Tick
-
-
-
-
- Event when order book was updated, containing the changed bids and asks. Be careful! It can generate a lot of events at high-liquidity markets
-
-
-
-
- Timestamp of the last update
-
-
-
-
- The number of asks in the book
-
-
-
-
- The number of bids in the book
-
-
-
-
- The list of asks
-
-
-
-
- The list of bids
-
-
-
-
- The best bid currently in the order book
-
-
-
-
- The best ask currently in the order book
-
-
-
-
- BestBid/BesAsk returned as a pair
-
-
-
-
- ctor
-
-
-
-
-
-
- Start connecting and synchronizing the order book
-
-
-
-
-
- Start connecting and synchronizing the order book
-
-
-
-
-
- Stop syncing the order book
-
-
-
-
-
- Stop syncing the order book
-
-
-
-
-
- Start the order book
-
-
-
-
-
- Reset the order book
-
-
-
-
- Resync the order book
-
-
-
-
-
- Validate a checksum with the current order book
-
-
-
-
-
-
- Set the initial data for the order book
-
- The last update sequence number
- List of asks
- List of bids
-
-
-
- Update the order book using a single id for an update
-
-
-
-
-
-
-
- Add a checksum to the process queue
-
-
-
-
-
- Update the order book using a first/last update id
-
-
-
-
-
-
-
-
- Update the order book using sequenced entries
-
- List of bids
- List of asks
-
-
-
- Check and empty the process buffer; see what entries to update the book with
-
-
-
-
- Update order book with an entry
-
- Sequence number of the update
- Type of entry
- The entry
-
-
-
- Wait until the order book has been set
-
- Max wait time
-
-
-
-
- Dispose the order book
-
-
-
-
- String representation of the top 3 entries
-
-
-
-
-
- String representation of the top x entries
-
-
-
-
-
- Limits the amount of requests per time period to a certain limit, counts the request per API key.
-
-
-
-
- Create a new RateLimiterAPIKey. This rate limiter limits the amount of requests per time period to a certain limit, counts the request per API key.
-
- The amount to limit to
- The time period over which the limit counts
-
-
-
-
-
-
- Limits the amount of requests per time period to a certain limit, counts the request per endpoint.
-
-
-
-
- Create a new RateLimiterPerEndpoint. This rate limiter limits the amount of requests per time period to a certain limit, counts the request per endpoint.
-
- The amount to limit to
- The time period over which the limit counts
-
-
-
-
-
-
- Limits the amount of requests per time period to a certain limit, counts the total amount of requests.
-
-
-
-
- Create a new RateLimiterTotal. This rate limiter limits the amount of requests per time period to a certain limit, counts the total amount of requests.
-
- The amount to limit to
- The time period over which the limit counts
-
-
-
-
-
-
- Rate limiting object
-
-
-
-
- Lock
-
-
-
-
- ctor
-
-
-
-
- Get time to wait for a specific time
-
-
-
-
-
-
-
-
- Add an executed request time
-
-
-
-
-
- Request object
-
-
-
-
- Create request object for web request
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- WebRequest factory
-
-
-
-
-
-
-
-
-
-
- HttpWebResponse response object
-
-
-
-
-
-
-
-
-
-
-
-
-
- Create response for a http response message
-
- The actual response
-
-
-
-
-
-
-
-
-
- Base rest client
-
-
-
-
- The factory for creating requests. Used for unit testing
-
-
-
-
- Where to place post parameters
-
-
-
-
- Request body content type
-
-
-
-
- Whether or not we need to manually parse an error instead of relying on the http status code
-
-
-
-
- How to serialize array parameters
-
-
-
-
- What request body should be when no data is send
-
-
-
-
- Timeout for requests
-
-
-
-
- Rate limiting behaviour
-
-
-
-
- List of rate limiters
-
-
-
-
- Total requests made
-
-
-
-
- ctor
-
-
-
-
-
-
- Adds a rate limiter to the client. There are 2 choices, the and the .
-
- The limiter to add
-
-
-
- Removes all rate limiters from this client
-
-
-
-
- Ping to see if the server is reachable
-
- The roundtrip time of the ping request
-
-
-
- Ping to see if the server is reachable
-
- The roundtrip time of the ping request
-
-
-
- Execute a request
-
- The expected result type
- The uri to send the request to
- The method of the request
- Cancellation token
- The parameters of the request
- Whether or not the request should be authenticated
- Whether or not the resulting object should be checked for missing properties in the mapping (only outputs if log verbosity is Debug)
- Where the post parameters should be placed
- How array paramters should be serialized
-
-
-
-
- Executes the request and returns the string result
-
- The request object to execute
- Cancellation token
-
-
-
-
- Can be used to parse an error even though response status indicates success. Some apis always return 200 OK, even though there is an error.
- This can be used together with ManualParseError to check if it is an error before deserializing to an object
-
- Received data
- Null if not an error, Error otherwise
-
-
-
- Creates a request object
-
- The uri to send the request to
- The method of the request
- The parameters of the request
- Whether or not the request should be authenticated
- Where the post parameters should be placed
- How array paramters should be serialized
-
-
-
-
- Writes the parameters of the request to the request object, either in the query string or the request body
-
-
-
-
-
-
-
- Parse an error response from the server. Only used when server returns a status other than Success(200)
-
- The string the request returned
-
-
-
-
- Base for socket client implementations
-
-
-
-
- The factory for creating sockets. Used for unit testing
-
-
-
-
- List of socket connections currently connecting/connected
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- The max amount of concurrent socket connections
-
-
-
-
-
-
-
- Handler for byte data
-
-
-
-
- Handler for string data
-
-
-
-
- Generic handlers
-
-
-
-
- Periodic task
-
-
-
-
- Periodic task event
-
-
-
-
- Is disposing
-
-
-
-
- If true; data which is a response to a query will also be distributed to subscriptions
- If false; data which is a response to a query won't get forwarded to subscriptions as well
-
-
-
-
- Create a socket client
-
- Client options
- Authentication provider
-
-
-
- Set a function to interpret the data, used when the data is received as bytes instead of a string
-
- Handler for byte data
- Handler for string data
-
-
-
- Subscribe
-
- The expected return data
- The request to send
- The identifier to use
- If the subscription should be authenticated
- The handler of update data
-
-
-
-
- Subscribe using a specif URL
-
- The type of the expected data
- The URL to connect to
- The request to send
- The identifier to use
- If the subscription should be authenticated
- The handler of update data
-
-
-
-
- Sends the subscribe request and waits for a response to that request
-
- The connection to send the request on
- The request to send
- The subscription the request is for
-
-
-
-
- Query for data
-
- Expected result type
- The request to send
- Whether the socket should be authenticated
-
-
-
-
- Query for data
-
- The expected result type
- The url for the request
- The request to send
- Whether the socket should be authenticated
-
-
-
-
- Sends the query request and waits for the result
-
- The expected result type
- The connection to send and wait on
- The request to send
-
-
-
-
- Checks if a socket needs to be connected and does so if needed
-
- The connection to check
- Whether the socket should authenticated
-
-
-
-
- Needs to check if a received message was an answer to a query request (preferable by id) and set the callResult out to whatever the response is
-
- The type of response
- The socket connection
- The request that a response is awaited for
- The message
- The interpretation (null if message wasn't a response to the request)
- True if the message was a response to the query
-
-
-
- Needs to check if a received message was an answer to a subscription request (preferable by id) and set the callResult out to whatever the response is
-
- The socket connection
-
- The request that a response is awaited for
- The message
- The interpretation (null if message wasn't a response to the request)
- True if the message was a response to the subscription request
-
-
-
- Needs to check if a received message matches a handler. Typically if an update message matches the request
-
- The received data
- The subscription request
-
-
-
-
- Needs to check if a received message matches a handler. Typically if an received message matches a ping request or a other information pushed from the the server
-
- The received data
- The string identifier of the handler
-
-
-
-
- Needs to authenticate the socket so authenticated queries/subscriptions can be made on this socket connection
-
-
-
-
-
-
- Needs to unsubscribe a subscription, typically by sending an unsubscribe request. If multiple subscriptions per socket is not allowed this can just return since the socket will be closed anyway
-
- The connection on which to unsubscribe
- The subscription to unsubscribe
-
-
-
-
- Optional handler to interpolate data before sending it to the handlers
-
-
-
-
-
-
- Add a handler for a subscription
-
- The type of data the subscription expects
- The request of the subscription
- The identifier of the subscription (can be null if request param is used)
- Whether or not this is a user subscription (counts towards the max amount of handlers on a socket)
- The socket connection the handler is on
- The handler of the data received
-
-
-
-
- Adds a generic message handler. Used for example to reply to ping requests
-
- The name of the request handler. Needs to be unique
- The action to execute when receiving a message for this handler (checked by )
-
-
-
- Gets a connection for a new subscription or query. Can be an existing if there are open position or a new one.
-
- The address the socket is for
- Whether the socket should be authenticated
-
-
-
-
- Connect a socket
-
- The socket to connect
-
-
-
-
- Create a socket for an address
-
- The address the socket should connect to
-
-
-
-
- Periodically sends an object to a socket
-
- How often
- Method returning the object to send
-
-
-
- Unsubscribe from a stream
-
- The subscription to unsubscribe
-
-
-
-
- Unsubscribe all subscriptions
-
-
-
-
-
- Dispose the client
-
-
-
-
- Socket implementation
-
-
-
-
- Socket
-
-
-
-
- Log
-
-
-
-
- Error handlers
-
-
-
-
- Open handlers
-
-
-
-
- Close handlers
-
-
-
-
- Message handlers
-
-
-
-
- Id
-
-
-
-
- If is reconnecting
-
-
-
-
- Origin
-
-
-
-
- Url
-
-
-
-
- Is closed
-
-
-
-
- Is open
-
-
-
-
- Protocols
-
-
-
-
- Interpreter for bytes
-
-
-
-
- Interpreter for strings
-
-
-
-
- Last action time
-
-
-
-
- Timeout
-
-
-
-
- Socket state
-
-
-
-
- ctor
-
-
-
-
-
-
- ctor
-
-
-
-
-
-
-
-
- On close
-
-
-
-
- On message
-
-
-
-
- On error
-
-
-
-
- On open
-
-
-
-
- Handle
-
-
-
-
-
- Handle
-
-
-
-
-
-
-
- Checks if timed out
-
-
-
-
-
- Close socket
-
-
-
-
-
- Reset socket
-
-
-
-
- Send data
-
-
-
-
-
- Connect socket
-
-
-
-
-
- Set a proxy
-
-
-
-
-
-
- Dispose
-
-
-
-
- Socket connecting
-
-
-
-
- Connection lost event
-
-
-
-
- Connecting restored event
-
-
-
-
- The connection is paused event
-
-
-
-
- The connection is unpaused event
-
-
-
-
- Connecting closed event
-
-
-
-
- The amount of handlers
-
-
-
-
- If connection is authenticated
-
-
-
-
- If connection is made
-
-
-
-
- The socket
-
-
-
-
- If should reconnect upon closing
-
-
-
-
- Time of disconnecting
-
-
-
-
- If activity is paused
-
-
-
-
- New socket connection
-
- The socket client
- The socket
-
-
-
- Add handler
-
-
-
-
-
- Send data
-
- The data type
- The object to send
- The timeout for response
- The response handler
-
-
-
-
- Send data to the websocket
-
- The type of the object to send
- The object to send
- How null values should be serialized
-
-
-
- Send string data to the websocket
-
- The data to send
-
-
-
- Handler for a socket closing. Reconnects the socket if needed, or removes it from the active socket list if not
-
-
-
-
- Close the connection
-
-
-
-
-
- Close the subscription
-
- Subscription to close
-
-
-
-
- Socket subscription
-
-
-
-
- Exception event
-
-
-
-
- Message handlers for this subscription. Should return true if the message is handled and should not be distributed to the other handlers
-
-
-
-
- Request object
-
-
-
-
- Subscription identifier
-
-
-
-
- Is user subscription or generic
-
-
-
-
- If the subscription has been confirmed
-
-
-
-
- Create SocketSubscription for a request
-
-
-
-
-
-
-
-
- Create SocketSubscription for an identifier
-
-
-
-
-
-
-
-
- Invoke the exception event
-
-
-
-
-
- Subscription
-
-
-
-
- Event when the connection is lost. The socket will automatically reconnect when possible.
-
-
-
-
- Event when the connection is restored. Timespan parameter indicates the time the socket has been offline for before reconnecting
-
-
-
-
- Event when the connection to the server is paused. No operations can be performed while paused
-
-
-
-
- Event when the connection to the server is unpaused
-
-
-
-
- Event when an exception happened
-
-
-
-
- The id of the socket
-
-
-
-
- ctor
-
-
-
-
-
-
- Close the subscription
-
-
-
-
-
- Close the socket to cause a reconnect
-
-
-
-
-
- Factory implementation
-
-
-
-
-
-
-
-
-
-
- ember name="T:System.Diagnostics.CodeAnalysis.DoesNotReturnIfAttribute">
-
- Specifies that the method will not return if the associated
- parameter is passed the specified value.
-
-
-
-
- Gets the condition parameter value.
- Code after the method is considered unreachable by diagnostics if the argument
- to the associated parameter matches this value.
-
-
-
-
- Initializes a new instance of the
- class with the specified parameter value.
-
-
- The condition parameter value.
- Code after the method is considered unreachable by diagnostics if the argument
- to the associated parameter matches this value.
-
-
-
-
- Specifies that an output may be even if the
- corresponding type disallows it.
-
-
-
-
- Initializes a new instance of the class.
-
-
-
-
- Specifies that when a method returns ,
- the parameter may be even if the corresponding type disallows it.
-
-
-
-
- Gets the return value condition.
- If the method returns this value, the associated parameter may be .
-
-
-
-
- Initializes the attribute with the specified return value condition.
-
-
- The return value condition.
- If the method returns this value, the associated parameter may be .
-
-
-
-
- Specifies that an output is not even if the
- corresponding type allows it.
-
-
-
-
- Initializes a new instance of the class.
-
-
-
-
- Specifies that the output will be non- if the
- named parameter is non-.
-
-
-
-
- Gets the associated parameter name.
- The output will be non- if the argument to the
- parameter specified is non-.
-
-
-
-
- Initializes the attribute with the associated parameter name.
-
-
- The associated parameter name.
- The output will be non- if the argument to the
- parameter specified is non-.
-
-
-
-
- Specifies that when a method returns ,
- the parameter will not be even if the corresponding type allows it.
-
-
-
-
- Gets the return value condition.
- If the method returns this value, the associated parameter will not be .
-
-
-
-
- Initializes the attribute with the specified return value condition.
-
-
- The return value condition.
- If the method returns this value, the associated parameter will not be .
-
-
-
-
+
+
+
+ CryptoExchange.Net
+
+
+
+
+ Used for conversion in ArrayConverter
+
+
+
+
+ Marks property as optional
+
+
+
+
+ Api credentials info
+
+
+
+
+ The api key to authenticate requests
+
+
+
+
+ The api secret to authenticate requests
+
+
+
+
+ The private key to authenticate requests
+
+
+
+
+ Create Api credentials providing a private key for authentication
+
+ The private key used for signing
+
+
+
+ Create Api credentials providing a api key and secret for authentication
+
+ The api key used for identification
+ The api secret used for signing
+
+
+
+ Create Api credentials providing a api key and secret for authentication
+
+ The api key used for identification
+ The api secret used for signing
+
+
+
+ Copy the credentials
+
+
+
+
+
+ Create Api credentials providing a stream containing json data. The json data should include two values: apiKey and apiSecret
+
+ The stream containing the json data
+ A key to identify the credentials for the API. For example, when set to `binanceKey` the json data should contain a value for the property `binanceKey`. Defaults to 'apiKey'.
+ A key to identify the credentials for the API. For example, when set to `binanceSecret` the json data should contain a value for the property `binanceSecret`. Defaults to 'apiSecret'.
+
+
+
+ Try get the value of a key from a JToken
+
+
+
+
+
+
+
+ Dispose
+
+
+
+
+ Base class for authentication providers
+
+
+
+
+ The provided credentials
+
+
+
+
+ ctor
+
+
+
+
+
+ Add authentication to the parameter list
+
+
+
+
+
+
+
+
+
+
+
+ Add authentication to the header dictionary
+
+
+
+
+
+
+
+
+
+
+
+ Sign a string
+
+
+
+
+
+
+ Sign a byte array
+
+
+
+
+
+
+ Convert byte array to hex
+
+
+
+
+
+
+ Private key info
+
+
+
+
+ The private key
+
+
+
+
+ The private key's pass phrase
+
+
+
+
+ Indicates if the private key is encrypted or not
+
+
+
+
+ Create a private key providing an encrypted key information
+
+ The private key used for signing
+ The private key's passphrase
+
+
+
+ Create a private key providing an encrypted key information
+
+ The private key used for signing
+ The private key's passphrase
+
+
+
+ Create a private key providing an unencrypted key information
+
+ The private key used for signing
+
+
+
+ Create a private key providing an encrypted key information
+
+ The private key used for signing
+
+
+
+ Copy the private key
+
+
+
+
+
+ Dispose
+
+
+
+
+ The base for all clients
+
+
+
+
+ The address of the client
+
+
+
+
+ The log object
+
+
+
+
+ The api proxy
+
+
+
+
+ The auth provider
+
+
+
+
+ The last used id
+
+
+
+
+ Lock for id generating
+
+
+
+
+ Last is used
+
+
+
+
+ ctor
+
+
+
+
+
+
+ Set the authentication provider
+
+
+
+
+
+ Tries to parse the json data and returns a token
+
+ The data to parse
+
+
+
+
+ Deserialize a string into an object
+
+ The type to deserialize into
+ The data to deserialize
+ Whether or not the parsing should be checked for missing properties (will output data to the logging if log verbosity is Debug)
+ A specific serializer to use
+
+
+
+
+ Deserialize a JToken into an object
+
+ The type to deserialize into
+ The data to deserialize
+ Whether or not the parsing should be checked for missing properties (will output data to the logging if log verbosity is Debug)
+ A specific serializer to use
+
+
+
+
+ Deserialize a stream into an object
+
+ The type to deserialize into
+ The stream to deserialize
+ A specific serializer to use
+
+
+
+
+ Generate a unique id
+
+
+
+
+
+ Fill parameters in a path. Parameters are specified by '{}' and should be specified in occuring sequence
+
+ The total path string
+ The values to fill
+
+
+
+
+ Dispose
+
+
+
+
+ Converter for arrays to properties
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mark property as an index in the array
+
+
+
+
+ The index in the array
+
+
+
+
+ ctor
+
+
+
+
+
+ Base class for enum converters
+
+ Type of enum to convert
+
+
+
+ The enum->string mapping
+
+
+
+
+ ctor
+
+
+
+
+
+
+
+
+
+
+
+ Convert a string value
+
+
+
+
+
+
+
+
+
+ converter for milliseconds to datetime
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Converter for nanoseconds to datetime
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Converter for seconds to datetime
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Converter for utc datetime
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Helper methods
+
+
+
+
+ Add a parameter
+
+
+
+
+
+
+
+ Add a parameter
+
+
+
+
+
+
+
+ Add an optional parameter. Not added if value is null
+
+
+
+
+
+
+
+ Add an optional parameter. Not added if value is null
+
+
+
+
+
+
+
+ Create a query string of the specified parameters
+
+ The parameters to use
+ Whether or not the values should be url encoded
+ How to serialize array parameters
+
+
+
+
+ Get the string the secure string is representing
+
+ The source secure string
+
+
+
+
+ Create a secure string from a string
+
+
+
+
+
+
+ Wait one async
+
+
+
+
+
+
+
+
+ Wait one async
+
+
+
+
+
+
+
+ String to JToken
+
+
+
+
+
+
+
+ Validates an int is one of the allowed values
+
+ Value of the int
+ Name of the parameter
+ Allowed values
+
+
+
+ Validates an int is between two values
+
+ The value of the int
+ Name of the parameter
+ Min value
+ Max value
+
+
+
+ Validates a string is not null or empty
+
+ The value of the string
+ Name of the parameter
+
+
+
+ Validates an object is not null
+
+ The value of the object
+ Name of the parameter
+
+
+
+ Validates a list is not null or empty
+
+ The value of the object
+ Name of the parameter
+
+
+
+ Rate limiter interface
+
+
+
+
+ Limit the request if needed
+
+
+
+
+
+
+
+
+ Request interface
+
+
+
+
+ Accept header
+
+
+
+
+ Content
+
+
+
+
+ Method
+
+
+
+
+ Uri
+
+
+
+
+ internal request id for tracing
+
+
+
+
+ Set byte content
+
+
+
+
+
+ Set string content
+
+
+
+
+
+
+ Add a header to the request
+
+
+
+
+
+
+ Get the response
+
+
+
+
+
+
+ Request factory interface
+
+
+
+
+ Create a request for an uri
+
+
+
+
+
+
+
+ Configure the requests created by this factory
+
+ Request timeout to use
+ Proxy settings to use
+ Should generate unique id for requests
+
+
+
+ Response object interface
+
+
+
+
+ The response status code
+
+
+
+
+ Whether the status code indicates a success status
+
+
+
+
+ The response headers
+
+
+
+
+ Get the response stream
+
+
+
+
+
+ Close the response
+
+
+
+
+ Base class for rest API implementations
+
+
+
+
+ The factory for creating requests. Used for unit testing
+
+
+
+
+ What should happen when hitting a rate limit
+
+
+
+
+ List of active rate limiters
+
+
+
+
+ The total amount of requests made
+
+
+
+
+ The base address of the API
+
+
+
+
+ Adds a rate limiter to the client. There are 2 choices, the and the .
+
+ The limiter to add
+
+
+
+ Removes all rate limiters from this client
+
+
+
+
+ Ping to see if the server is reachable
+
+ The roundtrip time of the ping request
+
+
+
+ Ping to see if the server is reachable
+
+ The roundtrip time of the ping request
+
+
+
+ Base class for socket API implementations
+
+
+
+
+ The factory for creating sockets. Used for unit testing
+
+
+
+
+ The time in between reconnect attempts
+
+
+
+
+ Whether the client should try to auto reconnect when losing connection
+
+
+
+
+ The base address of the API
+
+
+
+
+
+
+
+
+
+
+ The max amount of concurrent socket connections
+
+
+
+
+
+
+
+ Unsubscribe from a stream
+
+ The subscription to unsubscribe
+
+
+
+
+ Unsubscribe all subscriptions
+
+
+
+
+
+ Interface for order book
+
+
+
+
+ The status of the order book. Order book is up to date when the status is `Synced`
+
+
+
+
+ Last update identifier
+
+
+
+
+ The symbol of the order book
+
+
+
+
+ Event when the state changes
+
+
+
+
+ Event when order book was updated. Be careful! It can generate a lot of events at high-liquidity markets
+
+
+
+
+ Event when the BestBid or BestAsk changes ie a Pricing Tick
+
+
+
+
+ Timestamp of the last update
+
+
+
+
+ The number of asks in the book
+
+
+
+
+ The number of bids in the book
+
+
+
+
+ The list of asks
+
+
+
+
+ The list of bids
+
+
+
+
+ The best bid currently in the order book
+
+
+
+
+ The best ask currently in the order book
+
+
+
+
+ BestBid/BesAsk returned as a pair
+
+
+
+
+ Start connecting and synchronizing the order book
+
+
+
+
+
+ Start connecting and synchronizing the order book
+
+
+
+
+
+ Stop syncing the order book
+
+
+
+
+
+ Stop syncing the order book
+
+
+
+
+
+ Interface for order book entries
+
+
+
+
+ The quantity of the entry
+
+
+
+
+ The price of the entry
+
+
+
+
+ Interface for order book entries
+
+
+
+
+ Sequence of the update
+
+
+
+
+ Interface for websocket interaction
+
+
+
+
+ Websocket closed
+
+
+
+
+ Websocket message received
+
+
+
+
+ Websocket error
+
+
+
+
+ Websocket opened
+
+
+
+
+ Id
+
+
+
+
+ Origin
+
+
+
+
+ Reconnecting
+
+
+
+
+ Handler for byte data
+
+
+
+
+ Handler for string data
+
+
+
+
+ Socket url
+
+
+
+
+ State
+
+
+
+
+ Is closed
+
+
+
+
+ Is open
+
+
+
+
+ Supported ssl protocols
+
+
+
+
+ Timeout
+
+
+
+
+ Connect the socket
+
+
+
+
+
+ Send data
+
+
+
+
+
+ Reset socket
+
+
+
+
+ Close the connecting
+
+
+
+
+
+ Set proxy
+
+
+
+
+
+
+ Websocket factory interface
+
+
+
+
+ Create a websocket for an url
+
+
+
+
+
+
+
+ Create a websocket for an url
+
+
+
+
+
+
+
+
+
+ Default log writer, writes to debug
+
+
+
+
+
+
+
+
+
+
+ Log implementation
+
+
+
+
+ The verbosity of the logging
+
+
+
+
+ ctor
+
+
+
+
+ Set the writers
+
+
+
+
+
+ Write a log entry
+
+
+
+
+
+
+ The log verbosity
+
+
+
+
+ Debug logging
+
+
+
+
+ Info logging
+
+
+
+
+ Warning logging
+
+
+
+
+ Error logging
+
+
+
+
+ None, used for disabling logging
+
+
+
+
+ File writer
+
+
+
+
+
+
+
+ ctor
+
+
+
+
+
+
+
+
+ Dispose
+
+
+
+
+
+ Proxy info
+
+
+
+
+ The host address of the proxy
+
+
+
+
+ The port of the proxy
+
+
+
+
+ The login of the proxy
+
+
+
+
+ The password of the proxy
+
+
+
+
+ Create new settings for a proxy
+
+ The proxy hostname/ip
+ The proxy port
+
+
+
+ Create new settings for a proxy
+
+ The proxy hostname/ip
+ The proxy port
+ The proxy login
+ The proxy password
+
+
+
+ Create new settings for a proxy
+
+ The proxy hostname/ip
+ The proxy port
+ The proxy login
+ The proxy password
+
+
+
+ Comparer for byte order
+
+
+
+
+ Compare function
+
+
+
+
+
+
+
+ The result of an operation
+
+
+
+
+
+ The data returned by the call
+
+
+
+
+ An error if the call didn't succeed
+
+
+
+
+ Whether the call was successful
+
+
+
+
+ ctor
+
+
+
+
+
+
+ Overwrite bool check so we can use if(callResult) instead of if(callResult.Success)
+
+
+
+
+
+ The result of a request
+
+
+
+
+
+ The status code of the response. Note that a OK status does not always indicate success, check the Success parameter for this.
+
+
+
+
+ The response headers
+
+
+
+
+ ctor
+
+
+
+
+
+
+
+
+ Create an error result
+
+
+
+
+
+
+ Create an error result
+
+
+
+
+
+
+
+
+ Constants
+
+
+
+
+ Json content type header
+
+
+
+
+ Form content type header
+
+
+
+
+ What to do when a request would exceed the rate limit
+
+
+
+
+ Fail the request
+
+
+
+
+ Wait till the request can be send
+
+
+
+
+ Where the post parameters should be added
+
+
+
+
+ Post parameters in body
+
+
+
+
+ Post parameters in url
+
+
+
+
+ The format of the request body
+
+
+
+
+ Form data
+
+
+
+
+ Json
+
+
+
+
+ Status of the order book
+
+
+
+
+ Not connected
+
+
+
+
+ Connecting
+
+
+
+
+ Reconnecting
+
+
+
+
+ Syncing data
+
+
+
+
+ Data synced, order book is up to date
+
+
+
+
+ Order book entry type
+
+
+
+
+ Ask
+
+
+
+
+ Bid
+
+
+
+
+ Define how array parameters should be send
+
+
+
+
+ Send multiple key=value for each entry
+
+
+
+
+ Create an []=value array
+
+
+
+
+ Base class for errors
+
+
+
+
+ The error code
+
+
+
+
+ The message for the error that occured
+
+
+
+
+ Optional data for the error
+
+
+
+
+ ctor
+
+
+
+
+
+
+
+ String representation
+
+
+
+
+
+ Cant reach server error
+
+
+
+
+ ctor
+
+
+
+
+ No api credentials provided while trying to access private endpoint
+
+
+
+
+ ctor
+
+
+
+
+ Error returned by the server
+
+
+
+
+ ctor
+
+
+
+
+
+
+ ctor
+
+
+
+
+
+
+
+ Web error returned by the server
+
+
+
+
+ ctor
+
+
+
+
+
+ Error while deserializing data
+
+
+
+
+ ctor
+
+ Deserializing data
+
+
+
+ Unknown error
+
+
+
+
+ ctor
+
+ Error data
+
+
+
+ An invalid parameter has been provided
+
+
+
+
+ ctor
+
+
+
+
+
+ Rate limit exceeded
+
+
+
+
+ ctor
+
+
+
+
+
+ Cancellation requested
+
+
+
+
+ ctor
+
+
+
+
+ Base options
+
+
+
+
+ The log verbosity
+
+
+
+
+ The log writers
+
+
+
+
+
+
+
+ Base for order book options
+
+
+
+
+ The name of the order book implementation
+
+
+
+
+ Whether each update should have a consecutive id number. Used to identify and reconnect when numbers are skipped.
+
+
+
+
+ Whether or not a level should be removed from the book when it's pushed out of scope of the limit. For example with a book of limit 10,
+ when a new bid is added which makes the total amount of bids 11, should the last bid entry be removed
+
+
+
+
+
+ The name of the order book implementation
+ Whether each update should have a consecutive id number. Used to identify and reconnect when numbers are skipped.
+ Whether or not a level should be removed from the book when it's pushed out of scope of the limit. For example with a book of limit 10,
+ when a new bid is added which makes the total amount of bids 11, should the last bid entry be removed
+
+
+
+
+
+
+ Base client options
+
+
+
+
+ The base address of the client
+
+
+
+
+ The api credentials
+
+
+
+
+ Proxy to use
+
+
+
+
+ ctor
+
+
+
+
+
+
+
+
+ Base for rest client options
+
+
+
+
+ List of rate limiters to use
+
+
+
+
+ What to do when a call would exceed the rate limit
+
+
+
+
+ The time the server has to respond to a request before timing out
+
+
+
+
+ ctor
+
+
+
+
+
+ Create a copy of the options
+
+
+
+
+
+
+
+
+
+ Base for socket client options
+
+
+
+
+ Whether or not the socket should automatically reconnect when losing connection
+
+
+
+
+ Time to wait between reconnect attempts
+
+
+
+
+ The time to wait for a socket response
+
+
+
+
+ The time after which the connection is assumed to be dropped
+
+
+
+
+ The amount of subscriptions that should be made on a single socket connection. Not all exchanges support multiple subscriptions on a single socket.
+ Setting this to a higher number increases subscription speed, but having more subscriptions on a single connection will also increase the amount of traffic on that single connection.
+
+
+
+
+ ctor
+
+
+
+
+
+ Create a copy of the options
+
+
+
+
+
+
+
+
+
+ Buffer entry with a first and last update id
+
+
+
+
+ First update id
+
+
+
+
+ Last update id
+
+
+
+
+ List of asks
+
+
+
+
+ List of bids
+
+
+
+
+ Base for order book implementations
+
+
+
+
+ The process buffer, used while syncing
+
+
+
+
+ The ask list
+
+
+
+
+ The bid list
+
+
+
+
+ Order book implementation id
+
+
+
+
+ The log
+
+
+
+
+ If order book is set
+
+
+
+
+ The amount of levels for this book
+
+
+
+
+ The status of the order book. Order book is up to date when the status is `Synced`
+
+
+
+
+ Last update identifier
+
+
+
+
+ The symbol of the order book
+
+
+
+
+ Event when the state changes
+
+
+
+
+ Event when the BestBid or BestAsk changes ie a Pricing Tick
+
+
+
+
+ Event when order book was updated, containing the changed bids and asks. Be careful! It can generate a lot of events at high-liquidity markets
+
+
+
+
+ Timestamp of the last update
+
+
+
+
+ The number of asks in the book
+
+
+
+
+ The number of bids in the book
+
+
+
+
+ The list of asks
+
+
+
+
+ The list of bids
+
+
+
+
+ The best bid currently in the order book
+
+
+
+
+ The best ask currently in the order book
+
+
+
+
+ BestBid/BesAsk returned as a pair
+
+
+
+
+ ctor
+
+
+
+
+
+
+ Start connecting and synchronizing the order book
+
+
+
+
+
+ Start connecting and synchronizing the order book
+
+
+
+
+
+ Stop syncing the order book
+
+
+
+
+
+ Stop syncing the order book
+
+
+
+
+
+ Start the order book
+
+
+
+
+
+ Reset the order book
+
+
+
+
+ Resync the order book
+
+
+
+
+
+ Validate a checksum with the current order book
+
+
+
+
+
+
+ Set the initial data for the order book
+
+ The last update sequence number
+ List of asks
+ List of bids
+
+
+
+ Update the order book using a single id for an update
+
+
+
+
+
+
+
+ Add a checksum to the process queue
+
+
+
+
+
+ Update the order book using a first/last update id
+
+
+
+
+
+
+
+
+ Update the order book using sequenced entries
+
+ List of bids
+ List of asks
+
+
+
+ Check and empty the process buffer; see what entries to update the book with
+
+
+
+
+ Update order book with an entry
+
+ Sequence number of the update
+ Type of entry
+ The entry
+
+
+
+ Wait until the order book has been set
+
+ Max wait time
+
+
+
+
+ Dispose the order book
+
+
+
+
+ String representation of the top 3 entries
+
+
+
+
+
+ String representation of the top x entries
+
+
+
+
+
+ Limits the amount of requests per time period to a certain limit, counts the request per API key.
+
+
+
+
+ Create a new RateLimiterAPIKey. This rate limiter limits the amount of requests per time period to a certain limit, counts the request per API key.
+
+ The amount to limit to
+ The time period over which the limit counts
+
+
+
+
+
+
+ Limits the amount of requests per time period to a certain limit, counts the request per endpoint.
+
+
+
+
+ Create a new RateLimiterPerEndpoint. This rate limiter limits the amount of requests per time period to a certain limit, counts the request per endpoint.
+
+ The amount to limit to
+ The time period over which the limit counts
+
+
+
+
+
+
+ Limits the amount of requests per time period to a certain limit, counts the total amount of requests.
+
+
+
+
+ Create a new RateLimiterTotal. This rate limiter limits the amount of requests per time period to a certain limit, counts the total amount of requests.
+
+ The amount to limit to
+ The time period over which the limit counts
+
+
+
+
+
+
+ Rate limiting object
+
+
+
+
+ Lock
+
+
+
+
+ ctor
+
+
+
+
+ Get time to wait for a specific time
+
+
+
+
+
+
+
+
+ Add an executed request time
+
+
+
+
+
+ Request object
+
+
+
+
+ Create request object for web request
+
+
+
+ if true, should assign unique id for request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ WebRequest factory
+
+
+
+
+
+
+
+
+
+
+ HttpWebResponse response object
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Create response for a http response message
+
+ The actual response
+
+
+
+
+
+
+
+
+
+ Base rest client
+
+
+
+
+ The factory for creating requests. Used for unit testing
+
+
+
+
+ Where to place post parameters
+
+
+
+
+ Request body content type
+
+
+
+
+ Whether or not we need to manually parse an error instead of relying on the http status code
+
+
+
+
+ How to serialize array parameters
+
+
+
+
+ What request body should be when no data is send
+
+
+
+
+ Timeout for requests
+
+
+
+
+ Rate limiting behaviour
+
+
+
+
+ List of rate limiters
+
+
+
+
+ Total requests made
+
+
+
+
+ ctor
+
+
+
+
+
+
+ Adds a rate limiter to the client. There are 2 choices, the and the .
+
+ The limiter to add
+
+
+
+ Removes all rate limiters from this client
+
+
+
+
+ Ping to see if the server is reachable
+
+ The roundtrip time of the ping request
+
+
+
+ Ping to see if the server is reachable
+
+ The roundtrip time of the ping request
+
+
+
+ Execute a request
+
+ The expected result type
+ The uri to send the request to
+ The method of the request
+ Cancellation token
+ The parameters of the request
+ Whether or not the request should be authenticated
+ Whether or not the resulting object should be checked for missing properties in the mapping (only outputs if log verbosity is Debug)
+ Where the post parameters should be placed
+ How array paramters should be serialized
+
+
+
+
+ Executes the request and returns the string result
+
+ The request object to execute
+ Cancellation token
+
+
+
+
+ Can be used to parse an error even though response status indicates success. Some apis always return 200 OK, even though there is an error.
+ This can be used together with ManualParseError to check if it is an error before deserializing to an object
+
+ Received data
+ Null if not an error, Error otherwise
+
+
+
+ Creates a request object
+
+ The uri to send the request to
+ The method of the request
+ The parameters of the request
+ Whether or not the request should be authenticated
+ Where the post parameters should be placed
+ How array paramters should be serialized
+
+
+
+
+ Writes the parameters of the request to the request object, either in the query string or the request body
+
+
+
+
+
+
+
+ Parse an error response from the server. Only used when server returns a status other than Success(200)
+
+ The string the request returned
+
+
+
+
+ Base for socket client implementations
+
+
+
+
+ The factory for creating sockets. Used for unit testing
+
+
+
+
+ List of socket connections currently connecting/connected
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The max amount of concurrent socket connections
+
+
+
+
+
+
+
+ Handler for byte data
+
+
+
+
+ Handler for string data
+
+
+
+
+ Generic handlers
+
+
+
+
+ Periodic task
+
+
+
+
+ Periodic task event
+
+
+
+
+ Is disposing
+
+
+
+
+ If true; data which is a response to a query will also be distributed to subscriptions
+ If false; data which is a response to a query won't get forwarded to subscriptions as well
+
+
+
+
+ Create a socket client
+
+ Client options
+ Authentication provider
+
+
+
+ Set a function to interpret the data, used when the data is received as bytes instead of a string
+
+ Handler for byte data
+ Handler for string data
+
+
+
+ Subscribe
+
+ The expected return data
+ The request to send
+ The identifier to use
+ If the subscription should be authenticated
+ The handler of update data
+
+
+
+
+ Subscribe using a specif URL
+
+ The type of the expected data
+ The URL to connect to
+ The request to send
+ The identifier to use
+ If the subscription should be authenticated
+ The handler of update data
+
+
+
+
+ Sends the subscribe request and waits for a response to that request
+
+ The connection to send the request on
+ The request to send
+ The subscription the request is for
+
+
+
+
+ Query for data
+
+ Expected result type
+ The request to send
+ Whether the socket should be authenticated
+
+
+
+
+ Query for data
+
+ The expected result type
+ The url for the request
+ The request to send
+ Whether the socket should be authenticated
+
+
+
+
+ Sends the query request and waits for the result
+
+ The expected result type
+ The connection to send and wait on
+ The request to send
+
+
+
+
+ Checks if a socket needs to be connected and does so if needed
+
+ The connection to check
+ Whether the socket should authenticated
+
+
+
+
+ Needs to check if a received message was an answer to a query request (preferable by id) and set the callResult out to whatever the response is
+
+ The type of response
+ The socket connection
+ The request that a response is awaited for
+ The message
+ The interpretation (null if message wasn't a response to the request)
+ True if the message was a response to the query
+
+
+
+ Needs to check if a received message was an answer to a subscription request (preferable by id) and set the callResult out to whatever the response is
+
+ The socket connection
+
+ The request that a response is awaited for
+ The message
+ The interpretation (null if message wasn't a response to the request)
+ True if the message was a response to the subscription request
+
+
+
+ Needs to check if a received message matches a handler. Typically if an update message matches the request
+
+ The received data
+ The subscription request
+
+
+
+
+ Needs to check if a received message matches a handler. Typically if an received message matches a ping request or a other information pushed from the the server
+
+ The received data
+ The string identifier of the handler
+
+
+
+
+ Needs to authenticate the socket so authenticated queries/subscriptions can be made on this socket connection
+
+
+
+
+
+
+ Needs to unsubscribe a subscription, typically by sending an unsubscribe request. If multiple subscriptions per socket is not allowed this can just return since the socket will be closed anyway
+
+ The connection on which to unsubscribe
+ The subscription to unsubscribe
+
+
+
+
+ Optional handler to interpolate data before sending it to the handlers
+
+
+
+
+
+
+ Add a handler for a subscription
+
+ The type of data the subscription expects
+ The request of the subscription
+ The identifier of the subscription (can be null if request param is used)
+ Whether or not this is a user subscription (counts towards the max amount of handlers on a socket)
+ The socket connection the handler is on
+ The handler of the data received
+
+
+
+
+ Adds a generic message handler. Used for example to reply to ping requests
+
+ The name of the request handler. Needs to be unique
+ The action to execute when receiving a message for this handler (checked by )
+
+
+
+ Gets a connection for a new subscription or query. Can be an existing if there are open position or a new one.
+
+ The address the socket is for
+ Whether the socket should be authenticated
+
+
+
+
+ Connect a socket
+
+ The socket to connect
+
+
+
+
+ Create a socket for an address
+
+ The address the socket should connect to
+
+
+
+
+ Periodically sends an object to a socket
+
+ How often
+ Method returning the object to send
+
+
+
+ Unsubscribe from a stream
+
+ The subscription to unsubscribe
+
+
+
+
+ Unsubscribe all subscriptions
+
+
+
+
+
+ Dispose the client
+
+
+
+
+ Socket implementation
+
+
+
+
+ Socket
+
+
+
+
+ Log
+
+
+
+
+ Error handlers
+
+
+
+
+ Open handlers
+
+
+
+
+ Close handlers
+
+
+
+
+ Message handlers
+
+
+
+
+ Id
+
+
+
+
+ If is reconnecting
+
+
+
+
+ Origin
+
+
+
+
+ Url
+
+
+
+
+ Is closed
+
+
+
+
+ Is open
+
+
+
+
+ Protocols
+
+
+
+
+ Interpreter for bytes
+
+
+
+
+ Interpreter for strings
+
+
+
+
+ Last action time
+
+
+
+
+ Timeout
+
+
+
+
+ Socket state
+
+
+
+
+ ctor
+
+
+
+
+
+
+ ctor
+
+
+
+
+
+
+
+
+ On close
+
+
+
+
+ On message
+
+
+
+
+ On error
+
+
+
+
+ On open
+
+
+
+
+ Handle
+
+
+
+
+
+ Handle
+
+
+
+
+
+
+
+ Checks if timed out
+
+
+
+
+
+ Close socket
+
+
+
+
+
+ Reset socket
+
+
+
+
+ Send data
+
+
+
+
+
+ Connect socket
+
+
+
+
+
+ Set a proxy
+
+
+
+
+
+
+ Dispose
+
+
+
+
+ Socket connecting
+
+
+
+
+ Connection lost event
+
+
+
+
+ Connecting restored event
+
+
+
+
+ The connection is paused event
+
+
+
+
+ The connection is unpaused event
+
+
+
+
+ Connecting closed event
+
+
+
+
+ The amount of handlers
+
+
+
+
+ If connection is authenticated
+
+
+
+
+ If connection is made
+
+
+
+
+ The socket
+
+
+
+
+ If should reconnect upon closing
+
+
+
+
+ Time of disconnecting
+
+
+
+
+ If activity is paused
+
+
+
+
+ New socket connection
+
+ The socket client
+ The socket
+
+
+
+ Add handler
+
+
+
+
+
+ Send data
+
+ The data type
+ The object to send
+ The timeout for response
+ The response handler
+
+
+
+
+ Send data to the websocket
+
+ The type of the object to send
+ The object to send
+ How null values should be serialized
+
+
+
+ Send string data to the websocket
+
+ The data to send
+
+
+
+ Handler for a socket closing. Reconnects the socket if needed, or removes it from the active socket list if not
+
+
+
+
+ Close the connection
+
+
+
+
+
+ Close the subscription
+
+ Subscription to close
+
+
+
+
+ Socket subscription
+
+
+
+
+ Exception event
+
+
+
+
+ Message handlers for this subscription. Should return true if the message is handled and should not be distributed to the other handlers
+
+
+
+
+ Request object
+
+
+
+
+ Subscription identifier
+
+
+
+
+ Is user subscription or generic
+
+
+
+
+ If the subscription has been confirmed
+
+
+
+
+ Create SocketSubscription for a request
+
+
+
+
+
+
+
+
+ Create SocketSubscription for an identifier
+
+
+
+
+
+
+
+
+ Invoke the exception event
+
+
+
+
+
+ Subscription
+
+
+
+
+ Event when the connection is lost. The socket will automatically reconnect when possible.
+
+
+
+
+ Event when the connection is restored. Timespan parameter indicates the time the socket has been offline for before reconnecting
+
+
+
+
+ Event when the connection to the server is paused. No operations can be performed while paused
+
+
+
+
+ Event when the connection to the server is unpaused
+
+
+
+
+ Event when an exception happened
+
+
+
+
+ The id of the socket
+
+
+
+
+ ctor
+
+
+
+
+
+
+ Close the subscription
+
+
+
+
+
+ Close the socket to cause a reconnect
+
+
+
+
+
+ Factory implementation
+
+
+
+
+
+
+
+
+
+
diff --git a/CryptoExchange.Net/Objects/Options.cs b/CryptoExchange.Net/Objects/Options.cs
index 8249f5d..577de1e 100644
--- a/CryptoExchange.Net/Objects/Options.cs
+++ b/CryptoExchange.Net/Objects/Options.cs
@@ -56,7 +56,6 @@ namespace CryptoExchange.Net.Objects
/// Whether each update should have a consecutive id number. Used to identify and reconnect when numbers are skipped.
/// Whether or not a level should be removed from the book when it's pushed out of scope of the limit. For example with a book of limit 10,
/// when a new bid is added which makes the total amount of bids 11, should the last bid entry be removed
- /// Amount of levels for this order book
public OrderBookOptions(string name, bool sequencesAreConsecutive, bool strictLevels)
{
OrderBookName = name;
diff --git a/CryptoExchange.Net/OrderBook/SymbolOrderBook.cs b/CryptoExchange.Net/OrderBook/SymbolOrderBook.cs
index 63bd74b..cb15451 100644
--- a/CryptoExchange.Net/OrderBook/SymbolOrderBook.cs
+++ b/CryptoExchange.Net/OrderBook/SymbolOrderBook.cs
@@ -38,7 +38,7 @@ namespace CryptoExchange.Net.OrderBook
private readonly bool sequencesAreConsecutive;
private readonly bool strictLevels;
- private Task _processTask;
+ private Task? _processTask;
private AutoResetEvent _queueEvent;
private ConcurrentQueue