Skip to main content
Pigweed's logo Pigweed
code_xml
  1. Home
  2. Reference
  3. C/C++
  4. Comms
  5. pw_transfer
  6. pw::transfer::Thread< kMaxConcurrentClientTransfers, kMaxConcurrentServerTransfers > Class Template Reference
Loading...
Searching...
No Matches
pw::transfer::Thread< kMaxConcurrentClientTransfers, kMaxConcurrentServerTransfers > Class Template Referencefinal

Overview

template<size_t kMaxConcurrentClientTransfers, size_t kMaxConcurrentServerTransfers>
class pw::transfer::Thread< kMaxConcurrentClientTransfers, kMaxConcurrentServerTransfers >

Dedicated background thread for processing client and server transfer events.

Derives from pw::thread::ThreadCore so it can be passed directly when creating a pw::thread::Thread. A single Thread instance can be shared between a Client and a TransferService.

Template Parameters
kMaxConcurrentClientTransfersMaximum number of concurrent client transfers supported (may be 0 if only running a server).
kMaxConcurrentServerTransfersMaximum number of concurrent server transfers supported (may be 0 if only running a client).
Inheritance diagram for pw::transfer::Thread< kMaxConcurrentClientTransfers, kMaxConcurrentServerTransfers >:
pw::transfer::internal::TransferThread

Public Member Functions

 Thread (ByteSpan chunk_buffer, ByteSpan encode_buffer)
 
- Public Member Functions inherited from pw::transfer::internal::TransferThread
 TransferThread (span< ClientContext > client_transfers, span< ServerContext > server_transfers, ByteSpan chunk_buffer, ByteSpan encode_buffer)
 
void SetServerCompletionCallback (pw::Function< void(uint32_t, pw::Status)> &&cb)
 
void NotifyServerCompletion (uint32_t session_id, Status status)
 
void StartClientTransfer (TransferType type, ProtocolVersion version, uint32_t resource_id, uint32_t handle_id, stream::Stream *stream, const TransferParameters &max_parameters, Function< void(Status)> &&on_completion, chrono::SystemClock::duration timeout, chrono::SystemClock::duration initial_timeout, uint8_t max_retries, uint32_t max_lifetime_retries, uint32_t initial_offset=0)
 
void StartServerTransfer (TransferType type, ProtocolVersion version, uint32_t session_id, uint32_t resource_id, ConstByteSpan raw_chunk, const TransferParameters &max_parameters, chrono::SystemClock::duration timeout, uint8_t max_retries, uint32_t max_lifetime_retries, uint32_t initial_offset=0)
 
void ProcessClientChunk (ConstByteSpan chunk)
 
void ProcessServerChunk (ConstByteSpan chunk)
 
void SendServerStatus (TransferType type, uint32_t session_id, ProtocolVersion version, Status status)
 
void CancelClientTransfer (uint32_t handle_id)
 
void EndClientTransfer (uint32_t session_id, Status status, bool send_status_chunk=false)
 
void EndServerTransfer (uint32_t session_id, Status status, bool send_status_chunk=false)
 
void SetClientReadStream (rpc::RawClientReaderWriter &read_stream, Client *client, Function< void(ConstByteSpan)> &&on_next, internal::SetStreamBehavior behavior)
 
void CloseClientReadStream (Client *client)
 
void SetClientWriteStream (rpc::RawClientReaderWriter &write_stream, Client *client, Function< void(ConstByteSpan)> &&on_next, internal::SetStreamBehavior behavior)
 
void CloseClientWriteStream (Client *client)
 
void SetServerReadStream (rpc::RawServerReaderWriter &read_stream, Function< void(ConstByteSpan)> &&on_next)
 
void SetServerWriteStream (rpc::RawServerReaderWriter &write_stream, Function< void(ConstByteSpan)> &&on_next)
 
bool AddTransferHandler (Handler &handler)
 
bool RemoveTransferHandler (Handler &handler)
 
size_t max_chunk_size () const
 
void Terminate ()
 
void WaitUntilEventIsProcessed ()
 
void SimulateClientTimeout (uint32_t session_id)
 
void SimulateServerTimeout (uint32_t session_id)
 
void EnqueueResourceEvent (uint32_t resource_id, ResourceStatusCallback &&callback)
 

Constructor & Destructor Documentation

◆ Thread()

template<size_t kMaxConcurrentClientTransfers, size_t kMaxConcurrentServerTransfers>
pw::transfer::Thread< kMaxConcurrentClientTransfers, kMaxConcurrentServerTransfers >::Thread ( ByteSpan  chunk_buffer,
ByteSpan  encode_buffer 
)
inline

Constructs a transfer thread using the provided staging and encoding buffers.

Parameters
[in]chunk_bufferBuffer used to stage incoming transfer chunks from the RPC system. Must fit the largest chunk supported by the system.
[in]encode_bufferBuffer used to encode outgoing RPC packets. Typically sized to the transport layer's maximum transmission unit (MTU).

The documentation for this class was generated from the following file: