TCP

Modul ini mencakup fungsi-fungsi yang mengontrol komunikasi TCP.

Ringkasan

Enumerasi

anonymous enum enum
Menentukan tanda yang diteruskan ke otTcpConnect().
anonymous enum enum
Menentukan flag yang diteruskan ke otTcpSendByReference.
otTcpDisconnectedReason enum
otTcpIncomingConnectionAction{
  OT_TCP_INCOMING_CONNECTION_ACTION_ACCEPT,
  OT_TCP_INCOMING_CONNECTION_ACTION_DEFER,
  OT_TCP_INCOMING_CONNECTION_ACTION_REFUSE
}
enum
Menentukan tindakan koneksi masuk.

Typedef

otLinkedBuffer typedef
Struktur buffer yang ditautkan untuk digunakan dengan TCP.
otTcpAcceptDone)(otTcpListener *aListener, otTcpEndpoint *aEndpoint, const otSockAddr *aPeer) typedef
void(*
Callback ini menunjukkan bahwa koneksi TCP kini siap untuk komunikasi dua arah.
otTcpAcceptReady)(otTcpListener *aListener, const otSockAddr *aPeer, otTcpEndpoint **aAcceptInto) typedef
Callback ini menunjukkan bahwa koneksi masuk yang cocok dengan pemroses TCP ini telah tiba.
otTcpDisconnected)(otTcpEndpoint *aEndpoint, otTcpDisconnectedReason aReason) typedef
void(*
Callback ini menunjukkan bahwa koneksi terputus dan tidak akan digunakan lagi, atau bahwa koneksi telah memasuki status TIME-WAIT.
otTcpDisconnectedReason typedef
enum otTcpDisconnectedReason
otTcpEndpoint typedef
struct otTcpEndpoint
otTcpEndpointInitializeArgs typedef
Berisi argumen ke fungsi otTcpEndpointInitialize().
otTcpEstablished)(otTcpEndpoint *aEndpoint) typedef
void(*
Callback ini akan memberi tahu aplikasi bahwa handshake 3 arah TCP telah selesai dan koneksi kini telah dibuat.
otTcpForwardProgress)(otTcpEndpoint *aEndpoint, size_t aInSendBuffer, size_t aBacklog) typedef
void(*
Callback ini memberi tahu aplikasi jika progres penerusan telah dibuat dalam mentransfer data dari buffering pengiriman ke penerima.
otTcpIncomingConnectionAction typedef
Menentukan tindakan koneksi masuk.
otTcpListener typedef
struct otTcpListener
otTcpListenerInitializeArgs typedef
Berisi argumen ke fungsi otTcpListenerInitialize().
otTcpReceiveAvailable)(otTcpEndpoint *aEndpoint, size_t aBytesAvailable, bool aEndOfStream, size_t aBytesRemaining) typedef
void(*
Callback ini menunjukkan jumlah byte yang tersedia untuk digunakan dari buffer penerimaan.
otTcpSendDone)(otTcpEndpoint *aEndpoint, otLinkedBuffer *aData) typedef
void(*
Callback ini memberi tahu aplikasi bahwa data dalam aData yang disediakan telah dikonfirmasi oleh peer koneksi dan bahwa aData serta data yang ada di dalamnya dapat diklaim kembali oleh aplikasi.

Fungsi

otTcpAbort(otTcpEndpoint *aEndpoint)
Secara paksa mengakhiri koneksi TCP yang terkait dengan endpoint TCP ini.
otTcpBind(otTcpEndpoint *aEndpoint, const otSockAddr *aSockName)
Mengikat endpoint TCP ke alamat IP dan port.
otTcpCommitReceive(otTcpEndpoint *aEndpoint, size_t aNumBytes, uint32_t aFlags)
Memberi tahu stack TCP bahwa aplikasi telah selesai memproses aNumBytes byte data pada awal buffer penerimaan dan bahwa stack TCP tidak perlu terus mempertahankan byte tersebut dalam buffer penerimaan.
otTcpConnect(otTcpEndpoint *aEndpoint, const otSockAddr *aSockName, uint32_t aFlags)
Merekam host dan port jarak jauh untuk koneksi ini.
otTcpEndpointDeinitialize(otTcpEndpoint *aEndpoint)
Membatalkan inisialisasi endpoint TCP ini.
otTcpEndpointGetContext(otTcpEndpoint *aEndpoint)
void *
Mendapatkan pointer konteks yang terkait dengan aEndpoint saat inisialisasi.
otTcpEndpointGetInstance(otTcpEndpoint *aEndpoint)
Mendapatkan otInstance yang terkait dengan aEndpoint saat inisialisasi.
otTcpEndpointInitialize(otInstance *aInstance, otTcpEndpoint *aEndpoint, const otTcpEndpointInitializeArgs *aArgs)
Menginisialisasi endpoint TCP.
otTcpGetLocalAddress(const otTcpEndpoint *aEndpoint)
const otSockAddr *
Mendapatkan pointer ke host dan port lokal endpoint TCP.
otTcpGetPeerAddress(const otTcpEndpoint *aEndpoint)
const otSockAddr *
Mendapatkan pointer ke host dan port peer endpoint TCP.
otTcpListen(otTcpListener *aListener, const otSockAddr *aSockName)
Menyebabkan koneksi TCP masuk yang cocok dengan port dan alamat IP yang ditetapkan memicu callback pemroses TCP ini.
otTcpListenerDeinitialize(otTcpListener *aListener)
Membatalkan inisialisasi pemroses TCP ini.
otTcpListenerGetContext(otTcpListener *aListener)
void *
Mendapatkan pointer konteks yang terkait dengan aListener saat inisialisasi.
otTcpListenerGetInstance(otTcpListener *aListener)
Mendapatkan otInstance yang terkait dengan aListener saat inisialisasi.
otTcpListenerInitialize(otInstance *aInstance, otTcpListener *aListener, const otTcpListenerInitializeArgs *aArgs)
Menginisialisasi pemroses TCP.
otTcpReceiveByReference(otTcpEndpoint *aEndpoint, const otLinkedBuffer **aBuffer)
Menyediakan aplikasi dengan rantai buffer tertaut yang merujuk data yang saat ini berada dalam buffer penerimaan TCP.
otTcpReceiveContiguify(otTcpEndpoint *aEndpoint)
Mengatur ulang buffer penerimaan agar sepenuhnya berdekatan dalam memori.
otTcpSendByExtension(otTcpEndpoint *aEndpoint, size_t aNumBytes, uint32_t aFlags)
Menambahkan data ke buffer pengiriman dengan memperpanjang panjang otLinkedBuffer akhir dalam buffer pengiriman sebesar jumlah yang ditentukan.
otTcpSendByReference(otTcpEndpoint *aEndpoint, otLinkedBuffer *aBuffer, uint32_t aFlags)
Menambahkan data yang direferensikan oleh buffer tertaut yang ditunjuk oleh aBuffer ke buffer pengiriman.
otTcpSendEndOfStream(otTcpEndpoint *aEndpoint)
Memberi tahu peer koneksi bahwa endpoint TCP ini tidak akan mengirim data lebih banyak.
otTcpStopListening(otTcpListener *aListener)
Menyebabkan pemroses TCP ini berhenti memproses koneksi yang masuk.

Struct

otLinkedBuffer

Struktur buffer yang ditautkan untuk digunakan dengan TCP.

otTcpEndpoint

Mewakili endpoint TCP.

otTcpEndpointInitializeArgs

Berisi argumen ke fungsi otTcpEndpointInitialize().

otTcpListener

Merepresentasikan pemroses TCP.

otTcpListenerInitializeArgs

Berisi argumen ke fungsi otTcpListenerInitialize().

Enumerasi

enum anonim

 anonymous enum

Menentukan tanda yang diteruskan ke otTcpConnect().

enum anonim

 anonymous enum

Menentukan flag yang diteruskan ke otTcpSendByReference.

otTcpDisconnectedReason

 otTcpDisconnectedReason

otTcpIncomingConnectionAction

 otTcpIncomingConnectionAction

Menentukan tindakan koneksi masuk.

Ini digunakan dalam callback otTcpAcceptReady().

Properti
OT_TCP_INCOMING_CONNECTION_ACTION_ACCEPT

Menerima koneksi masuk.

OT_TCP_INCOMING_CONNECTION_ACTION_DEFER

Tunda (mengabaikan) koneksi yang masuk.

OT_TCP_INCOMING_CONNECTION_ACTION_REFUSE

Menolak koneksi masuk.

Typedef

otLinkedBuffer

struct otLinkedBuffer otLinkedBuffer

Struktur buffer yang ditautkan untuk digunakan dengan TCP.

Struktur otLinkedBuffer tunggal mereferensikan array byte dalam memori, melalui mData dan mLength. Kolom mNext digunakan untuk membentuk rantai struktur otLinkedBuffer.

otTcpAcceptDone

void(* otTcpAcceptDone)(otTcpListener *aListener, otTcpEndpoint *aEndpoint, const otSockAddr *aPeer)

Callback ini menunjukkan bahwa koneksi TCP kini siap untuk komunikasi dua arah.

Dalam kasus TCP Fast Open, ini mungkin sebelum handshake koneksi TCP benar-benar selesai. Aplikasi ini dilengkapi dengan pointer konteks untuk pemroses TCP yang menerima koneksi dan endpoint TCP tempatnya diterima. Konteks yang diberikan adalah konteks yang terkait dengan pemroses TCP.

Detail
Parameter
[in] aListener
Pemroses TCP yang cocok dengan koneksi yang masuk.
[in] aEndpoint
Titik akhir TCP tempat koneksi masuk diterima.
[in] aPeer
{i>host<i} dan porta dari mana koneksi masuk berasal.

otTcpAcceptReady

otTcpIncomingConnectionAction(* otTcpAcceptReady)(otTcpListener *aListener, const otSockAddr *aPeer, otTcpEndpoint **aAcceptInto)

Callback ini menunjukkan bahwa koneksi masuk yang cocok dengan pemroses TCP ini telah tiba.

Respons umumnya adalah aplikasi menerima koneksi yang masuk. Hal ini dilakukan dengan mengisi aAcceptInto dengan pointer ke otTcpEndpoint yang akan menerima koneksi masuk. otTcpEndpoint ini harus sudah diinisialisasi menggunakan otTcpEndpointInitialize(). Kemudian, aplikasi akan menampilkan OT_TCP_INCOMING_CONNECTION_ACTION_Accept.

Atau, aplikasi dapat menolak untuk menerima koneksi masuk. Ada dua cara yang dapat digunakan aplikasi untuk melakukannya. Pertama, jika aplikasi menampilkan OT_TCP_INCOMING_CONNECTION_ACTION_DEFER, OpenThread akan mengabaikan permintaan pembentukan koneksi secara diam-diam; peer koneksi kemungkinan akan mengirim ulang permintaan, dan pada saat itu callback akan dipanggil lagi. Hal ini berguna jika resource saat ini tidak tersedia untuk menerima koneksi, tetapi mungkin tersedia saat peer koneksi mentransmisikan ulang upaya pembentukan koneksinya. Kedua, jika aplikasi menampilkan OT_TCP_INCOMING_CONNECTION_ACTION_REFUSE, OpenThread akan mengirimkan pesan "connection ditolak" ke host yang mencoba membuat koneksi. Jika aplikasi menolak koneksi masuk, aplikasi tidak perlu mengisi aAcceptInto.

Detail
Parameter
[in] aListener
Pemroses TCP yang cocok dengan koneksi yang masuk.
[in] aPeer
Host dan port tempat asal koneksi masuk.
[out] aAcceptInto
Titik akhir TCP tempat menerima koneksi masuk.
Hasil
Deskripsi cara menangani koneksi yang masuk.

otTcpDisconnected

void(* otTcpDisconnected)(otTcpEndpoint *aEndpoint, otTcpDisconnectedReason aReason)

Callback ini menunjukkan bahwa koneksi terputus dan tidak akan digunakan lagi, atau bahwa koneksi telah memasuki status TIME-WAIT.

Error ini dapat terjadi jika upaya pembuatan koneksi (dimulai dengan memanggil otTcpConnect()) gagal, atau titik setelahnya (mis., jika waktu koneksi habis atau segmen RST diterima dari peer koneksi). Setelah callback ini diaktifkan, semua resource yang disediakan aplikasi untuk koneksi ini (yaitu otLinkedBuffers dan memori apa pun yang dirujuk, tetapi bukan endpoint TCP itu sendiri atau ruang untuk buffer penerimaan) dapat diperoleh kembali. Dalam kasus koneksi yang memasuki status TIME-WAIT, callback ini dipanggil dua kali, sekali saat masuk ke status TIME-WAIT (dengan OT_TCP_DISCONNECTED_REASON_TIME_WAIT, dan sekali lagi ketika status TIME-WAIT berakhir (dengan OT_TCP_DISCONNECTED_REASON_NORMAL).

Detail
Parameter
[in] aEndpoint
Titik akhir TCP yang koneksinya telah terputus.
[in] aReason
Alasan mengapa koneksi terputus.

otTcpDisconnectedReason

enum otTcpDisconnectedReason otTcpDisconnectedReason

otTcpEndpoint

struct otTcpEndpoint otTcpEndpoint

otTcpEndpointInitializeArgs

struct otTcpEndpointInitializeArgs otTcpEndpointInitializeArgs

Berisi argumen ke fungsi otTcpEndpointInitialize().

otTcpEstablished

void(* otTcpEstablished)(otTcpEndpoint *aEndpoint)

Callback ini akan memberi tahu aplikasi bahwa handshake 3 arah TCP telah selesai dan koneksi kini telah dibuat.

Detail
Parameter
[in] aEndpoint
Titik akhir TCP yang koneksinya sekarang telah dibuat.

otTcpForwardProgress

void(* otTcpForwardProgress)(otTcpEndpoint *aEndpoint, size_t aInSendBuffer, size_t aBacklog)

Callback ini memberi tahu aplikasi jika progres penerusan telah dibuat dalam mentransfer data dari buffering pengiriman ke penerima.

Callback ini tidak diperlukan untuk operasi TCP yang benar. Sebagian besar aplikasi hanya dapat mengandalkan callback otTcpSendDone() untuk mengklaim kembali buffer yang tertaut setelah stack TCP selesai menggunakannya. Tujuan callback ini adalah untuk mendukung aplikasi tingkat lanjut yang mendapatkan manfaat dari informasi terperinci tentang bagaimana koneksi membuat progres maju dalam transfer data ke peer koneksi.

Operasi callback ini terkait erat dengan buffer pengiriman TCP. Buffering pengiriman dapat diartikan sebagai memiliki dua region. Pertama, terdapat region "in-flight" (sedang berjalan) di head (depan) buffer pengiriman. Ini sesuai dengan data yang telah dikirim ke penerima, tetapi belum dikonfirmasi. Kedua, ada region "backlog", yang terdiri dari semua data di buffer pengiriman yang tidak berada di region "in-flight". Region "backlog" berkaitan dengan data yang diantrekan untuk dikirim, tetapi belum dikirim.

Callback dipanggil sebagai respons terhadap dua jenis peristiwa. Pertama, region "yang sedang berlangsung" dari buffer pengiriman mungkin menyusut (misalnya, saat penerima mengakui data yang kita kirim sebelumnya). Kedua, region "backlog" buffer pengiriman mungkin menyusut (misalnya, data baru telah dikirim). Kedua kondisi ini sering terjadi bersamaan, sebagai respons terhadap segmen ACK dari peer koneksi. Itulah sebabnya keduanya digabungkan dalam satu callback.

Stack TCP hanya menggunakan byte aInSendBuffer di bagian akhir buffering pengiriman; jika aInSendBuffer berkurang sebesar jumlah x, artinya x byte tambahan yang sebelumnya berada di kepala buffer pengiriman tidak lagi menjadi bagian dari buffer pengiriman dan kini dapat diklaim kembali (yaitu, ditimpa) oleh aplikasi. Perhatikan bahwa struktur otLinkedBuffer itu sendiri hanya dapat diklaim kembali setelah semua byte yang dirujuknya tidak lagi menjadi bagian dari buffer pengiriman.

Callback ini subsumsi otTcpSendDone(), dalam arti berikut: aplikasi dapat menentukan kapan buffer tertaut dapat diklaim kembali dengan membandingkan aInSendBuffer dengan jumlah byte di setiap buffer tertaut. Namun, kami harap otTcpSendDone(), yang secara langsung menyampaikan otLinkedBuffers mana yang dapat diklaim kembali, menjadi jauh lebih mudah digunakan. Jika kedua callback didaftarkan dan dipicu oleh peristiwa yang sama (mis., segmen ACK yang sama diterima), callback otTcpSendDone() akan dipicu terlebih dahulu, diikuti oleh callback ini.

Selain itu, callback ini menyediakan aBacklog, yang menunjukkan jumlah byte data dalam buffering pengiriman yang belum beroperasi. Untuk aplikasi yang hanya ingin menambahkan data ke buffering pengiriman jika ada kepastian bahwa data akan segera dikirim, data hanya dikirim saat aBacklog sesuai kecil (0 atau mendekati 0). Misalnya, aplikasi dapat menggunakan aBacklog sehingga dapat bereaksi terhadap penumpukan antrean dengan melepas atau menggabungkan data untuk menghindari pembuatan backlog data.

Setelah panggilan ke otTcpSendByReference() atau otTcpSendByExtension() dengan jumlah byte positif, callback otTcpForwardProgress() dijamin akan dipanggil untuk menunjukkan kapan byte yang ditambahkan ke buffer pengiriman dikirim. Panggilan ke otTcpForwardProgress() dapat langsung dilakukan setelah byte ditambahkan ke buffer pengiriman (jika beberapa byte tersebut segera dikirim, sehingga mengurangi backlog), atau nantinya (setelah koneksi mengirimkan sebagian atau semua data, sehingga mengurangi backlog). Yang dimaksud dengan "segera" adalah callback segera dijadwalkan untuk dieksekusi di tasklet; untuk menghindari kompleksitas terkait reentrancy, callback otTcpForwardProgress() tidak pernah dipanggil secara langsung dari fungsi otTcpSendByReference() atau otTcpSendByExtension().

Detail
Parameter
[in] aEndpoint
Endpoint TCP untuk koneksi.
[in] aInSendBuffer
Jumlah byte dalam buffer pengiriman (jumlah region "in-flight" dan "backlog").
[in] aBacklog
Jumlah byte yang diantrekan untuk dikirim tetapi belum dikirim (region "backlog").

otTcpIncomingConnectionAction

enum otTcpIncomingConnectionAction otTcpIncomingConnectionAction

Menentukan tindakan koneksi masuk.

Ini digunakan dalam callback otTcpAcceptReady().

otTcpListener

struct otTcpListener otTcpListener

otTcpListenerInitializeArgs

struct otTcpListenerInitializeArgs otTcpListenerInitializeArgs

Berisi argumen ke fungsi otTcpListenerInitialize().

otTcpReceiveAvailable

void(* otTcpReceiveAvailable)(otTcpEndpoint *aEndpoint, size_t aBytesAvailable, bool aEndOfStream, size_t aBytesRemaining)

Callback ini menunjukkan jumlah byte yang tersedia untuk digunakan dari buffer penerimaan.

Callback ini dipanggil setiap kali byte ditambahkan ke buffer penerimaan dan saat akhir streaming tercapai. Jika akhir streaming telah tercapai (yaitu, jika tidak ada lagi data yang tersedia untuk dibaca karena peer koneksi telah menutup ujung koneksinya untuk menulis), aEndOfStream bernilai benar (true). Terakhir, aBytesRemaining menunjukkan berapa banyak kapasitas yang tersisa di buffering penerimaan untuk menyimpan data tambahan yang masuk.

Detail
Parameter
[in] aEndpoint
Endpoint TCP untuk koneksi.
[in] aBytesAvailable
Jumlah byte dalam buffer penerimaan koneksi.
[in] aEndOfStream
Menunjukkan apakah data tambahan, di luar apa yang sudah ada dalam buffer penerimaan koneksi, dapat diterima.
[in] aBytesRemaining
Jumlah byte tambahan yang bisa diterima sebelum buffer penerimaan penuh.

otTcpSendDone

void(* otTcpSendDone)(otTcpEndpoint *aEndpoint, otLinkedBuffer *aData)

Callback ini memberi tahu aplikasi bahwa data dalam aData yang disediakan telah dikonfirmasi oleh peer koneksi dan bahwa aData serta data yang ada di dalamnya dapat diklaim kembali oleh aplikasi.

aData dijamin identik dengan yang diteruskan ke TCP melalui otTcpSendByReference(), termasuk ekstensi apa pun yang diterapkan melalui otTcpSendByExtension().

Detail
Parameter
[in] aEndpoint
Endpoint TCP untuk koneksi.
[in] aData
Pointer ke otLinkedBuffer yang dapat diklaim kembali.

Fungsi

otTcpAbort

otError otTcpAbort(
  otTcpEndpoint *aEndpoint
)

Secara paksa mengakhiri koneksi TCP yang terkait dengan endpoint TCP ini.

Tindakan ini akan segera membuat endpoint TCP bebas digunakan untuk koneksi lain dan mengosongkan buffer pengiriman dan terima, mentransfer kepemilikan data apa pun yang disediakan oleh aplikasi dalam panggilan otTcpSendByReference() dan otTcpSendByExtension() kembali ke aplikasi. Callback dan memori titik akhir TCP untuk buffer penerimaan tetap dikaitkan dengan titik akhir TCP.

Detail
Parameter
[in] aEndpoint
Pointer ke struktur endpoint TCP yang menyatakan endpoint TCP yang akan dibatalkan.
Nilai Pengembalian
OT_ERROR_NONE
Berhasil membatalkan koneksi endpoint TCP.
OT_ERROR_FAILED
Gagal membatalkan koneksi endpoint TCP.

otTcpBind

otError otTcpBind(
  otTcpEndpoint *aEndpoint,
  const otSockAddr *aSockName
)

Mengikat endpoint TCP ke alamat IP dan port.

Detail
Parameter
[in] aEndpoint
Pointer ke struktur endpoint TCP yang akan diikat.
[in] aSockName
Alamat dan porta untuk mengikat endpoint TCP ini.
Nilai Pengembalian
OT_ERROR_NONE
Berhasil mengikat endpoint TCP.
OT_ERROR_FAILED
Gagal mengikat endpoint TCP.

otTcpCommitReceive

otError otTcpCommitReceive(
  otTcpEndpoint *aEndpoint,
  size_t aNumBytes,
  uint32_t aFlags
)

Memberi tahu stack TCP bahwa aplikasi telah selesai memproses aNumBytes byte data pada awal buffer penerimaan dan bahwa stack TCP tidak perlu terus mempertahankan byte tersebut dalam buffer penerimaan.

Detail
Parameter
[in] aEndpoint
Pointer ke struktur endpoint TCP yang mewakili endpoint TCP tempat menerima data.
[in] aNumBytes
Jumlah byte yang digunakan.
[in] aFlags
Tanda yang menentukan opsi untuk operasi ini (belum ada).
Nilai Pengembalian
OT_ERROR_NONE
Berhasil menyelesaikan operasi penerimaan.
OT_ERROR_FAILED
Gagal menyelesaikan operasi penerimaan.

otTcpConnect

otError otTcpConnect(
  otTcpEndpoint *aEndpoint,
  const otSockAddr *aSockName,
  uint32_t aFlags
)

Merekam host dan port jarak jauh untuk koneksi ini.

TCP Fast Open harus diaktifkan atau dinonaktifkan menggunakan aFlags. Jika dinonaktifkan, handshake pembentukan koneksi TCP akan segera dimulai. Jika diaktifkan, fungsi ini hanya akan merekam host dan port jarak jauh, dan handshake tempat koneksi TCP hanya terjadi pada panggilan pertama ke otTcpSendByReference().

Jika TCP Fast Open dinonaktifkan, pemanggil harus menunggu callback otTcpEstablished yang menunjukkan bahwa handshake tempat koneksi TCP selesai sebelum dapat mulai mengirim data, misalnya, dengan memanggil otTcpSendByReference().

Detail
Parameter
[in] aEndpoint
Pointer ke struktur endpoint TCP yang akan terhubung.
[in] aSockName
Alamat IP dan port host yang akan dihubungkan.
[in] aFlags
Flag yang menentukan opsi untuk operasi ini (lihat enumerasi di atas).
Nilai Pengembalian
OT_ERROR_NONE
Berhasil menyelesaikan operasi.
OT_ERROR_FAILED
Gagal menyelesaikan operasi.

otTcpEndpointDeinitialize

otError otTcpEndpointDeinitialize(
  otTcpEndpoint *aEndpoint
)

Membatalkan inisialisasi endpoint TCP ini.

Artinya OpenThread tidak lagi melacak endpoint TCP ini dan membatalkan alokasi semua resource yang telah dialokasikan secara internal untuk endpoint TCP ini. Aplikasi bisa menggunakan kembali memori yang mendukung endpoint TCP jika dirasa sesuai.

Jika sesuai dengan koneksi TCP langsung, koneksi akan dihentikan secara tiba-tiba (seperti dalam otTcpAbort()). Semua resource yang telah disediakan aplikasi untuk endpoint TCP ini (buffer tertaut untuk buffer pengiriman, memori untuk buffer penerimaan, struktur aEndpoint itu sendiri, dll.) akan segera ditampilkan ke aplikasi.

Detail
Parameter
[in] aEndpoint
Pointer ke struktur endpoint TCP yang akan melakukan deinisialisasi.
Nilai Pengembalian
OT_ERROR_NONE
Berhasil membatalkan inisialisasi endpoint TCP.
OT_ERROR_FAILED
Gagal membatalkan inisialisasi endpoint TCP.

otTcpEndpointGetContext

void * otTcpEndpointGetContext(
  otTcpEndpoint *aEndpoint
)

Mendapatkan pointer konteks yang terkait dengan aEndpoint saat inisialisasi.

Detail
Parameter
[in] aEndpoint
Endpoint TCP yang konteksnya akan diperoleh.
Hasil
Pointer konteks yang terkait dengan aEndpoint.

otTcpEndpointGetInstance

otInstance * otTcpEndpointGetInstance(
  otTcpEndpoint *aEndpoint
)

Mendapatkan otInstance yang terkait dengan aEndpoint saat inisialisasi.

Detail
Parameter
[in] aEndpoint
Endpoint TCP yang instance-nya akan diperoleh.
Hasil
Pointer otInstance yang terkait dengan aEndpoint.

otTcpEndpointInitialize

otError otTcpEndpointInitialize(
  otInstance *aInstance,
  otTcpEndpoint *aEndpoint,
  const otTcpEndpointInitializeArgs *aArgs
)

Menginisialisasi endpoint TCP.

Memanggil fungsi ini akan menyebabkan OpenThread melacak endpoint TCP serta menyimpan dan mengambil data TCP di dalam aEndpoint. Aplikasi tidak boleh mengakses atau mengubah kolom di aEndpoint secara langsung. Jika perlu mengklaim kembali aEndpoint pendukung memori, aplikasi harus memanggil otTcpEndpointDeinitialize().

Detail
Parameter
[in] aInstance
Pointer ke instance OpenThread.
[in] aEndpoint
Pointer ke struktur endpoint TCP.
[in] aArgs
Pointer ke struktur argumen.
Nilai Pengembalian
OT_ERROR_NONE
Berhasil membuka endpoint TCP.
OT_ERROR_FAILED
Gagal membuka endpoint TCP.

otTcpGetLocalAddress

const otSockAddr * otTcpGetLocalAddress(
  const otTcpEndpoint *aEndpoint
)

Mendapatkan pointer ke host dan port lokal endpoint TCP.

Konten host dan port mungkin sudah tidak berlaku jika soket ini tidak dalam kondisi terhubung dan tidak diikat setelah terakhir kali diputus.

Detail
Parameter
[in] aEndpoint
Endpoint TCP yang host dan port lokalnya akan diperoleh.
Hasil
Host dan port lokal aEndpoint.

otTcpGetPeerAddress

const otSockAddr * otTcpGetPeerAddress(
  const otTcpEndpoint *aEndpoint
)

Mendapatkan pointer ke host dan port peer endpoint TCP.

Konten host dan port mungkin sudah tidak berlaku jika soket ini tidak dalam kondisi terhubung.

Detail
Parameter
[in] aEndpoint
Endpoint TCP yang host dan portanya akan diperoleh.
Hasil
Host dan port peer koneksi aEndpoint.

otTcpListen

otError otTcpListen(
  otTcpListener *aListener,
  const otSockAddr *aSockName
)

Menyebabkan koneksi TCP masuk yang cocok dengan port dan alamat IP yang ditetapkan memicu callback pemroses TCP ini.

Detail
Parameter
[in] aListener
Pointer ke struktur pemroses TCP yang akan mulai mendengarkan.
[in] aSockName
Alamat dan port yang digunakan untuk memproses koneksi masuk.
Nilai Pengembalian
OT_ERROR_NONE
Berhasil memulai pemrosesan pada pemroses TCP.
OT_ERROR_FAILED
Gagal memulai mendengarkan pada pemroses TCP.

otTcpListenerDeinitialize

otError otTcpListenerDeinitialize(
  otTcpListener *aListener
)

Membatalkan inisialisasi pemroses TCP ini.

Artinya OpenThread tidak lagi melacak pemroses TCP ini dan membatalkan alokasi semua resource yang telah dialokasikan secara internal untuk pemroses TCP ini. Aplikasi bisa menggunakan kembali memori pendukung TCP setelah dirasa sesuai.

Jika pemroses TCP sedang mendengarkan, maka ia akan berhenti mendengarkan.

Detail
Parameter
[in] aListener
Pointer ke struktur pemroses TCP untuk melakukan deinisialisasi.
Nilai Pengembalian
OT_ERROR_NONE
Berhasil melakukan deinisialisasi pemroses TCP.
OT_ERROR_FAILED
Gagal membatalkan inisialisasi pemroses TCP.

otTcpListenerGetContext

void * otTcpListenerGetContext(
  otTcpListener *aListener
)

Mendapatkan pointer konteks yang terkait dengan aListener saat inisialisasi.

Detail
Parameter
[in] aListener
Pemroses TCP yang konteksnya akan diperoleh.
Hasil
Pointer konteks yang terkait dengan aListener.

otTcpListenerGetInstance

otInstance * otTcpListenerGetInstance(
  otTcpListener *aListener
)

Mendapatkan otInstance yang terkait dengan aListener saat inisialisasi.

Detail
Parameter
[in] aListener
Pemroses TCP yang instance-nya akan diperoleh.
Hasil
Pointer otInstance yang terkait dengan aListener.

otTcpListenerInitialize

otError otTcpListenerInitialize(
  otInstance *aInstance,
  otTcpListener *aListener,
  const otTcpListenerInitializeArgs *aArgs
)

Menginisialisasi pemroses TCP.

Memanggil fungsi ini akan menyebabkan OpenThread melacak pemroses TCP serta menyimpan dan mengambil data TCP di dalam aListener. Aplikasi tidak boleh mengakses atau mengubah kolom di aListener secara langsung. Jika aplikasi perlu mengklaim kembali aListener pendukung memori, aplikasi harus memanggil otTcpListenerDeinitialize().

Detail
Parameter
[in] aInstance
Pointer ke instance OpenThread.
[in] aListener
Pointer ke struktur pemroses TCP.
[in] aArgs
Pointer ke struktur argumen.
Nilai Pengembalian
OT_ERROR_NONE
Berhasil membuka pemroses TCP.
OT_ERROR_FAILED
Gagal membuka pemroses TCP.

otTcpReceiveByReference

otError otTcpReceiveByReference(
  otTcpEndpoint *aEndpoint,
  const otLinkedBuffer **aBuffer
)

Menyediakan aplikasi dengan rantai buffer tertaut yang merujuk data yang saat ini berada dalam buffer penerimaan TCP.

Rantai buffer yang tertaut berlaku hingga callback "accept ready" selanjutnya dipanggil, atau hingga panggilan berikutnya ke otTcpReceiveContiguify() atau otTcpCommitReceive().

Detail
Parameter
[in] aEndpoint
Pointer ke struktur endpoint TCP yang mewakili endpoint TCP tempat menerima data.
[out] aBuffer
Pointer ke rantai buffering tertaut yang merujuk data yang saat ini berada dalam buffer penerimaan.
Nilai Pengembalian
OT_ERROR_NONE
Berhasil menyelesaikan operasi.
OT_ERROR_FAILED
Gagal menyelesaikan operasi.

otTcpReceiveContiguify

otError otTcpReceiveContiguify(
  otTcpEndpoint *aEndpoint
)

Mengatur ulang buffer penerimaan agar sepenuhnya berdekatan dalam memori.

Hal ini bersifat opsional; aplikasi dapat dengan mudah melewati rantai buffering tertaut yang diperoleh dengan memanggil otTcpReceiveByReference. Beberapa aplikasi mungkin ingin memanggil fungsi ini untuk membuat buffer penerimaan berdekatan guna menyederhanakan pemrosesan data, tetapi hal ini akan mengorbankan waktu CPU untuk mengatur ulang data dalam buffer penerimaan.

Detail
Parameter
[in] aEndpoint
Pointer ke endpoint TCP yang buffer penerimaannya akan diatur ulang.
Nilai Pengembalian
OT_ERROR_NONE
Berhasil menyelesaikan operasi.
OT_ERROR_FAILED
Gagal menyelesaikan operasi.

otTcpSendByExtension

otError otTcpSendByExtension(
  otTcpEndpoint *aEndpoint,
  size_t aNumBytes,
  uint32_t aFlags
)

Menambahkan data ke buffer pengiriman dengan memperpanjang panjang otLinkedBuffer akhir dalam buffer pengiriman sebesar jumlah yang ditentukan.

Jika buffer pengiriman kosong, maka operasi akan gagal.

Detail
Parameter
[in] aEndpoint
Pointer ke struktur endpoint TCP yang mewakili endpoint TCP tempat mengirim data.
[in] aNumBytes
Jumlah byte yang digunakan untuk memperpanjang panjang buffer akhir yang ditautkan.
[in] aFlags
Flag yang menentukan opsi untuk operasi ini (lihat enumerasi di atas).
Nilai Pengembalian
OT_ERROR_NONE
Berhasil menambahkan data ke buffering pengiriman.
OT_ERROR_FAILED
Gagal menambahkan data ke buffer pengiriman.

otTcpSendByReference

otError otTcpSendByReference(
  otTcpEndpoint *aEndpoint,
  otLinkedBuffer *aBuffer,
  uint32_t aFlags
)

Menambahkan data yang direferensikan oleh buffer tertaut yang ditunjuk oleh aBuffer ke buffer pengiriman.

Setelah panggilan berhasil ke fungsi ini, buffer dan data yang ditautkan dimiliki oleh stack TCP; keduanya tidak boleh dimodifikasi oleh aplikasi sampai callback "send completed" mengembalikan kepemilikan objek tersebut ke aplikasi. Anda dapat memanggil fungsi ini untuk menambahkan buffering tertaut lainnya ke antrean pengiriman, meskipun callback "send completed" untuk pemanggilan sebelumnya dari fungsi ini belum diaktifkan.

Perhatikan bahwa aBuffer tidak boleh dirantai; kolom mNext-nya harus NULL. Jika data tambahan akan ditambahkan tepat setelah panggilan ini, tanda OT_TCP_SEND_MORE_TO_COME harus digunakan sebagai petunjuk untuk implementasi TCP.

Detail
Parameter
[in] aEndpoint
Pointer ke struktur endpoint TCP yang mewakili endpoint TCP tempat mengirim data.
[in] aBuffer
Pointer ke rantai buffering tertaut yang merujuk data untuk ditambahkan ke buffer pengiriman.
[in] aFlags
Flag yang menentukan opsi untuk operasi ini (lihat enumerasi di atas).
Nilai Pengembalian
OT_ERROR_NONE
Berhasil menambahkan data ke buffering pengiriman.
OT_ERROR_FAILED
Gagal menambahkan data ke buffer pengiriman.

otTcpSendEndOfStream

otError otTcpSendEndOfStream(
  otTcpEndpoint *aEndpoint
)

Memberi tahu peer koneksi bahwa endpoint TCP ini tidak akan mengirim data lebih banyak.

Ini harus digunakan saat aplikasi tidak memiliki data lagi untuk dikirim ke peer koneksi. Untuk koneksi ini, pembacaan mendatang pada peer koneksi akan menghasilkan kondisi "akhir streaming", dan penulisan di masa mendatang pada endpoint koneksi ini akan gagal.

Kondisi "akhir aliran" hanya berlaku setelah data apa pun yang sebelumnya disediakan ke tumpukan TCP untuk dikirim telah diterima oleh peer koneksi.

Detail
Parameter
[in] aEndpoint
Pointer ke struktur endpoint TCP yang mewakili endpoint TCP yang akan dimatikan.
Nilai Pengembalian
OT_ERROR_NONE
Berhasil mengantrekan kondisi "akhir streaming" untuk transmisi.
OT_ERROR_FAILED
Gagal mengantrekan kondisi "akhir streaming" untuk transmisi.

otTcpStopListening

otError otTcpStopListening(
  otTcpListener *aListener
)

Menyebabkan pemroses TCP ini berhenti memproses koneksi yang masuk.

Detail
Parameter
[in] aListener
Pointer ke struktur pemroses TCP yang akan berhenti mendengarkan.
Nilai Pengembalian
OT_ERROR_NONE
Berhasil berhenti memproses pemroses TCP.
OT_ERROR_FAILED
Gagal berhenti memproses pemroses TCP.

Makro

OT_TCP_ENDPOINT_TCB_NUM_PTR

 OT_TCP_ENDPOINT_TCB_NUM_PTR 36

OT_TCP_ENDPOINT_TCB_SIZE_BASE

 OT_TCP_ENDPOINT_TCB_SIZE_BASE 392

OT_TCP_ENDPOINT_TCB_SIZE_BASE dan OT_TCP_ENDPOINT_TCB_NUM_POINTERS dipilih sedemikian rupa sehingga kolom mTcb otTcpEndpoint memiliki ukuran yang sama dengan struct tcpcb di TCPlp.

Hal ini diperlukan karena bidang mTcb, walaupun buram dalam deklarasinya, diperlakukan sebagai struct tcpcb dalam implementasi TCP.

OT_TCP_LISTENER_TCB_NUM_PTR

 OT_TCP_LISTENER_TCB_NUM_PTR 3

OT_TCP_LISTENER_TCB_SIZE_BASE

 OT_TCP_LISTENER_TCB_SIZE_BASE 16

OT_TCP_LISTENER_TCB_SIZE_BASE dan OT_TCP_LISTENER_TCB_NUM_POINTERS dipilih sedemikian rupa sehingga kolom mTcbListener dari otTcpListener memiliki ukuran yang sama dengan struct tcpcb_listen di TCPlp.

Hal ini diperlukan karena kolom mTcbListen, meskipun buram dalam deklarasinya, diperlakukan sebagai struct tcpcb dalam implementasi TCP.

OT_TCP_RECEIVE_BUFFER_SIZE_FEW_HOPS

 OT_TCP_RECEIVE_BUFFER_SIZE_FEW_HOPS 2598

Ukuran buffer yang direkomendasikan untuk koneksi TCP yang melintasi sekitar 3 hop nirkabel atau kurang.

Pada platform dengan memori yang sangat terbatas dan dalam situasi ketika bandwidth tinggi tidak diperlukan, sebaiknya pilih ukuran buffer yang lebih kecil secara manual.

OT_TCP_RECEIVE_BUFFER_SIZE_MANY_HOPS

 OT_TCP_RECEIVE_BUFFER_SIZE_MANY_HOPS 4157

Ukuran buffer yang direkomendasikan untuk koneksi TCP yang melintasi banyak hop nirkabel.

Jika koneksi TCP melintasi sejumlah besar hop (lebih dari 6 atau lebih), maka mungkin disarankan untuk memilih ukuran buffer yang besar secara manual.

Referensi

Topik Referensi OpenThread API berasal dari kode sumber yang tersedia di GitHub. Untuk informasi selengkapnya, atau untuk berkontribusi pada dokumentasi kami, lihat Referensi.