کتابخانه‌ی استاندارد · شبکه

جی آر پی سی grpc

سرور و کارخواه gRPC روی HTTP/2: فراخوان ساده و جریانی، فراداده و کدهای وضعیت.

واردسازی جی آر پی سی

gRPC روشی برای فراخوان دور است که روی HTTP/2 کار می‌کند و در سرویس‌های ریزخدمت رایج است. در سمت سرور هر متد را با مسیرش، مثل /demo.Greeter/SayHello، ثبت می‌کنید؛ روال متد پیام کارخواه را با دریافت می‌خواند، با ارسال جواب می‌دهد و با تنظیم وضعیت یا شکست تمامش می‌کند.

در سمت کارخواه، فراخوان یگانه یک درخواست ساده است و برای جریان‌ها شروع فراخوان، ارسال پیام، دریافت پیام و پایان فراخوان را به کار می‌برید. پیام‌ها بایت‌اند؛ آن‌ها را معمولاً با پروتوباف می‌سازید.

گونه‌ها

وضعیت Status

ساختار وضعیت
وضعیت پایانی یک فراخوان.
نامانگلیسیگونهتوضیح
codecodeصحیح = 0کد.
messagemessageرشته = ""پیام.
grpc-Calls.salam
واردسازی جی آر پی سی
واردسازی فشرده سازی
واردسازی همگام سازی

ناپایا سرور := جی آر پی سی.سرور جدید(۰)
ناپایا آماده := همگام سازی.گروه انتظار جدید()

روال سلام(ف: صحیح۶۴):
    ناپایا سالم := نادرست
    نام := جی آر پی سی.دریافت متن(ف، سالم)
    _ := جی آر پی سی.ارسال متن(ف، "سلام " + نام)
    جی آر پی سی.تنظیم وضعیت(ف، جی آر پی سی.وضعیت بدون خطا، "")
پایان

روال شمارش(ف: صحیح۶۴):
    ناپایا سالم := نادرست
    _ := جی آر پی سی.دریافت(ف، سالم)
    تکرار ۳ در ش:
        _ := جی آر پی سی.ارسال(ف، فشرده سازی.بافر از رشته("" + (۳ - ش)))
    پایان
    جی آر پی سی.تنظیم وضعیت(ف، جی آر پی سی.وضعیت بدون خطا، "")
پایان

روال ردیابی(ف: صحیح۶۴):
    ناپایا سالم := نادرست
    _ := جی آر پی سی.دریافت متن(ف، سالم)
    _ := جی آر پی سی.ارسال متن(ف، جی آر پی سی.دریافت فراداده(جی آر پی سی.فراداده فراخوان(ف)، "x-trace") + " " + جی آر پی سی.مسیر فراخوان(ف))
    جی آر پی سی.تنظیم وضعیت(ف، جی آر پی سی.وضعیت بدون خطا، "")
پایان

روال ممنوع(ف: صحیح۶۴):
    جی آر پی سی.شکست(ف، جی آر پی سی.وضعیت دسترسی رد شد، "توکن منقضی شده")
پایان

روال اجرای سرور():
    _ := جی آر پی سی.گوش دادن(سرور)
    همگام سازی.اتمام(آماده)
    _ := جی آر پی سی.خدمت به تعداد(سرور، ۱)
پایان

روال ریشه:
    مسیر سلام := جی آر پی سی.مسیر متد("demo.Greeter"، "SayHello")
    سرچاپ مسیر سلام
    جی آر پی سی.ثبت متد(مسیر سلام، سلام)
    جی آر پی سی.ثبت متد جریانی("/demo.Greeter/Countdown"، شمارش، نادرست، درست)
    جی آر پی سی.ثبت متد("/demo.Greeter/Trace"، ردیابی)
    جی آر پی سی.ثبت متد("/demo.Greeter/Admin"، ممنوع)
    سرچاپ جی آر پی سی.تعداد متدها()، جی آر پی سی.متد دارد(مسیر سلام)
    همگام سازی.افزودن(آماده، ۱)
    ن := spawn(اجرای سرور)
    همگام سازی.انتظار(آماده)

    ناپایا ک := جی آر پی سی.اتصال("127.0.0.1"، جی آر پی سی.درگاه(سرور))
    جی آر پی سی.تنظیم مهلت(ک، ۵۰۰۰)
    سرچاپ جی آر پی سی.کانال معتبر(ک)
    ناپایا نتیجه := جی آر پی سی.وضعیت {}
    سرچاپ جی آر پی سی.فراخوان یگانه متنی(ک، مسیر سلام، "مریم"، نتیجه)، جی آر پی سی.وضعیت موفق(نتیجه)

    ف := جی آر پی سی.شروع فراخوان(ک، "/demo.Greeter/Countdown"، جی آر پی سی.فراداده جدید())
    _ := جی آر پی سی.ارسال پیام(ک، ف، فشرده سازی.بافر از رشته("go")، درست)
    ناپایا ادامه := درست
    تا ادامه:
        ناپایا سالم := نادرست
        پ := جی آر پی سی.دریافت پیام(ک، ف، سالم)
        اگر وارونه سالم:
            ادامه = نادرست
        وگرنه:
            سرچاپ "پیام:"، فشرده سازی.بافر به رشته(پ)
        پایان
    پایان
    سرچاپ جی آر پی سی.تعداد فراداده(جی آر پی سی.سرآیندهای فراخوان(ک، ف))
    سرچاپ جی آر پی سی.متن وضعیت(جی آر پی سی.پایان فراخوان(ک، ف))

    ناپایا ف‌د := جی آر پی سی.فراداده جدید()
    _ := جی آر پی سی.افزودن فراداده(ف‌د، "x-trace"، "t-42")
    ناپایا نتیجه۲ := جی آر پی سی.وضعیت {}
    پاسخ := جی آر پی سی.فراخوان یگانه(ک، "/demo.Greeter/Trace"، فشرده سازی.بافر از رشته("x")، ف‌د، نتیجه۲)
    سرچاپ فشرده سازی.بافر به رشته(پاسخ)

    ف۲ := جی آر پی سی.شروع فراخوان(ک، "/demo.Greeter/Trace"، ف‌د)
    _ := جی آر پی سی.ارسال پیام(ک، ف۲، فشرده سازی.بافر از رشته("y")، نادرست)
    _ := جی آر پی سی.بستن ارسال(ک، ف۲)
    ناپایا سالم۲ := نادرست
    _ := جی آر پی سی.دریافت پیام(ک، ف۲، سالم۲)
    _ := جی آر پی سی.پایان فراخوان(ک، ف۲)
    سرچاپ سالم۲، جی آر پی سی.دنباله‌های فراخوان(ک، ف۲).items.طول() >= ۰

    ناپایا نتیجه۳ := جی آر پی سی.وضعیت {}
    _ := جی آر پی سی.فراخوان یگانه متنی(ک، "/demo.Greeter/Admin"، ""، نتیجه۳)
    سرچاپ نتیجه۳.code، نتیجه۳.message، جی آر پی سی.نام وضعیت(نتیجه۳.code)
    ناپایا نتیجه۴ := جی آر پی سی.وضعیت {}
    _ := جی آر پی سی.فراخوان یگانه متنی(ک، "/demo.Greeter/Nope"، ""، نتیجه۴)
    سرچاپ جی آر پی سی.متن وضعیت(نتیجه۴)
    جی آر پی سی.بستن کانال(ک)
    join(ن)
    جی آر پی سی.توقف سرور(سرور)
    جی آر پی سی.بازنشانی متدها()
    سرچاپ جی آر پی سی.تعداد متدها()
پایان
خروجی/demo.Greeter/SayHello 4 true true سلام مریم true پیام: 3 پیام: 2 پیام: 1 0 OK t-42 /demo.Greeter/Trace true true 7 توکن منقضی شده PERMISSION_DENIED UNIMPLEMENTED: unknown method /demo.Greeter/Nope 0

مدخل فراداده MDEntry

ساختار مدخل فراداده
یک مدخل فراداده.
نامانگلیسیگونهتوضیح
keykeyرشته = ""کلید.
valuevalueرشته = ""مقدار.
binarybinaryمنطقی = نادرستدودویی است.
grpc-Wire.salam
واردسازی جی آر پی سی
واردسازی فشرده سازی
واردسازی شبکه.اچ تی تی پی۲

روال ریشه:
    یک := جی آر پی سی.قاب‌بندی پیام متنی("سلام")
    سرچاپ یک.len، فشرده سازی.دریافت بایت(یک، ۰)، فشرده سازی.دریافت بایت(یک، ۴)
    ناپایا همه := فشرده سازی.بافر بایت جدید()
    فشرده سازی.افزودن بافر(همه، یک)
    فشرده سازی.افزودن بافر(همه، جی آر پی سی.قاب‌بندی پیام(فشرده سازی.بافر از رشته("دو")، نادرست))
    فشرده سازی.افزودن بافر(همه، جی آر پی سی.قاب‌بندی فشرده(فشرده سازی.بافر از رشته("سه سه سه سه سه")، درست))
    سرچاپ جی آر پی سی.تعداد پیام‌ها(همه)، جی آر پی سی.پیام کامل دارد(همه، ۰)
    ناپایا جا := ۰
    ناپایا سالم := نادرست
    تا جی آر پی سی.پیام کامل دارد(همه، جا):
        پ := جی آر پی سی.پیام بعدی(همه، جا، سالم)
        سرچاپ سالم، فشرده سازی.بافر به رشته(پ)
    پایان

    ناپایا ف := جی آر پی سی.فراداده جدید()
    _ := جی آر پی سی.افزودن فراداده(ف، "authorization"، "Bearer abc")
    _ := جی آر پی سی.افزودن فراداده(ف، "x-tag"، "a")
    _ := جی آر پی سی.افزودن فراداده(ف، "x-tag"، "b")
    _ := جی آر پی سی.افزودن فراداده دودویی(ف، "trace-bin"، "\x01\x02")
    سرچاپ جی آر پی سی.تعداد فراداده(ف)، جی آر پی سی.فراداده دارد(ف، "x-tag")، جی آر پی سی.دریافت فراداده(ف، "authorization")
    سرچاپ جی آر پی سی.دریافت همه فراداده(ف، "x-tag").طول()
    سرچاپ جی آر پی سی.کلید فراداده(ف، ۳)، جی آر پی سی.مقدار فراداده(ف، ۳).طول()
    ناپایا سر := اچ تی تی پی۲.فهرست سرآیندها {}
    جی آر پی سی.فراداده به سرآیند(ف، سر)
    سرچاپ اچ تی تی پی۲.تعداد سرآیندها(سر)، اچ تی تی پی۲.دریافت سرآیند(سر، "trace-bin")
    سرچاپ جی آر پی سی.تعداد فراداده(جی آر پی سی.فراداده از سرآیند(سر))

    خ := جی آر پی سی.وضعیت جدید(جی آر پی سی.وضعیت یافت نشد، "کاربر ۴۲ نیست")
    سرچاپ جی آر پی سی.وضعیت موفق(خ)، جی آر پی سی.متن وضعیت(خ)
    پیام := جی آر پی سی.کدگذاری پیام وضعیت("۱۰۰٪ کامل")
    سرچاپ پیام، جی آر پی سی.کدگشایی پیام وضعیت(پیام)
    سرچاپ جی آر پی سی.قالب‌بندی کد وضعیت(۱۴)، جی آر پی سی.تجزیه کد وضعیت("14")، جی آر پی سی.تجزیه کد وضعیت("x")
    سرچاپ جی آر پی سی.نام وضعیت(جی آر پی سی.وضعیت گذشت مهلت)، جی آر پی سی.نام وضعیت(جی آر پی سی.وضعیت احراز نشده)
    سرچاپ جی آر پی سی.وضعیت لغو شده، جی آر پی سی.وضعیت ناشناخته، جی آر پی سی.وضعیت آرگومان نامعتبر، جی آر پی سی.وضعیت از پیش موجود
    سرچاپ جی آر پی سی.وضعیت منابع تمام شد، جی آر پی سی.وضعیت پیش‌شرط ناموفق، جی آر پی سی.وضعیت قطع شده، جی آر پی سی.وضعیت خارج از محدوده
    سرچاپ جی آر پی سی.وضعیت پیاده‌سازی نشده، جی آر پی سی.وضعیت خطای داخلی، جی آر پی سی.وضعیت ناموجود، جی آر پی سی.وضعیت از دست رفتن داده
    سرچاپ جی آر پی سی.نوع محتوا، جی آر پی سی.نوع محتوای پروتو، جی آر پی سی.نوع محتوای جیسون
    سرچاپ جی آر پی سی.بدون فشرده‌سازی، جی آر پی سی.فشرده‌سازی جی زیپ، جی آر پی سی.بیشینه قاب‌ها، جی آر پی سی.بیشینه اندازه پیام
پایان
خروجی13 0 8 3 true true سلام true دو true سه سه سه سه سه 4 true Bearer abc 2 trace-bin 2 4 AQI= 4 false NOT_FOUND: کاربر ۴۲ نیست %DB%B1%DB%B0%DB%B0%D9%AA %DA%A9%D8%A7%D9%85%D9%84 ۱۰۰٪ کامل 14 14 2 DEADLINE_EXCEEDED UNAUTHENTICATED 1 2 3 6 8 9 10 11 12 13 14 15 application/grpc application/grpc+proto application/grpc+json 0 1 100000 4194304

فراداده Metadata

ساختار فراداده
فراداده‌ی یک فراخوان، مثل سرآیندهای HTTP.
نامانگلیسیگونهتوضیح
itemsitemsوکتور<مدخل فراداده>مدخل‌ها.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: grpc-Calls.salam

زمینه فراخوان CallCtx

ساختار زمینه فراخوان
وضعیت یک فراخوان در سرور.
نامانگلیسیگونهتوضیح
stream_idstream_idصحیح = 0شناسه‌ی جریان.
methodmethodرشته = ""مسیر متد.
headersheadershttp2.HeaderListسرآیندها.
recvrecvcompress.ByteBufداده‌ی دریافتی.
recv_posrecv_posصحیح = 0جای خواندن.
client_doneclient_doneمنطقی = نادرستکارخواه ارسال را بسته.
sent_headerssent_headersمنطقی = نادرستسرآیندهای پاسخ فرستاده شده.
statusstatusوضعیتوضعیت.
busybusyمنطقی = نادرستدر استفاده.
failedfailedمنطقی = نادرستشکست خورد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: grpc-Calls.salam

جدول فراخوان‌ها CallTable

ساختار جدول فراخوان‌ها
جدول فراخوان‌ها.
نامانگلیسیگونهتوضیح
itemsitemsوکتور<زمینه فراخوان>فراخوان‌ها.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: grpc-Calls.salam

توصیف متد MethodDesc

ساختار توصیف متد
توصیف یک متد ثبت‌شده.
نامانگلیسیگونهتوضیح
pathpathرشته = ""مسیر.
fnfnصحیح۶۴ = 0روال.
client_streamclient_streamمنطقی = نادرستکارخواه جریانی می‌فرستد.
server_streamserver_streamمنطقی = نادرستسرور جریانی می‌فرستد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: grpc-Calls.salam

جدول متدها MethodTable

ساختار جدول متدها
جدول متدها.
نامانگلیسیگونهتوضیح
itemsitemsوکتور<توصیف متد>متدها.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: grpc-Calls.salam

مکان‌نما Cursor

ساختار مکان‌نما
جای خواندن یک جریان.
نامانگلیسیگونهتوضیح
stream_idstream_idصحیح = 0شناسه‌ی جریان.
posposصحیح = 0جای خواندن.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: grpc-Calls.salam

جدول مکان‌نماها CursorTable

ساختار جدول مکان‌نماها
جدول مکان‌نماها.
نامانگلیسیگونهتوضیح
itemsitemsوکتور<مکان‌نما>مکان‌نماها.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: grpc-Calls.salam

کانال Channel

ساختار کانال
کانال به یک سرور gRPC روی HTTP/2.
نامانگلیسیگونهتوضیح
connconnhttp2.Connاتصال HTTP/2.
authorityauthorityرشته = ""میزبان و درگاه.
schemeschemeرشته = "http"طرح: http یا https.
user_agentuser_agentرشته = "salam-grpc/1.0"شناسه‌ی کارخواه.
timeout_mstimeout_msصحیح = 0مهلت هر فراخوان.
use_gzipuse_gzipمنطقی = نادرستپیام‌ها فشرده فرستاده شوند.
cursorscursorsجدول مکان‌نماهاجای خواندن هر جریان.
okokمنطقی = نادرستسالم است.
last_errorlast_errorرشته = ""آخرین خطا.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: grpc-Calls.salam

سرور جی آر پی سی Server

ساختار سرور جی آر پی سی
سرور gRPC روی HTTP/2 بی‌رمز.
نامانگلیسیگونهتوضیح
portportصحیح = 0درگاه.
listen_fdlisten_fdصحیح۶۴ = -1سوکت گوش دادن.
runningrunningمنطقی = نادرستدر حال اجرا.
servedservedصحیح = 0شمار اتصال‌های پاسخ‌داده.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: grpc-Calls.salam

پایاها و متغیرها

وضعیت بدون خطا GRPC_OK

پایا وضعیت بدون خطا: صحیح۳۲ = 0
کد وضعیت: موفق.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: grpc-Calls.salam

وضعیت لغو شده GRPC_CANCELLED

پایا وضعیت لغو شده: صحیح۳۲ = 1
کد وضعیت: لغو شد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: grpc-Wire.salam

وضعیت ناشناخته GRPC_UNKNOWN

پایا وضعیت ناشناخته: صحیح۳۲ = 2
کد وضعیت: خطای ناشناخته.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: grpc-Wire.salam

وضعیت آرگومان نامعتبر GRPC_INVALID_ARGUMENT

پایا وضعیت آرگومان نامعتبر: صحیح۳۲ = 3
کد وضعیت: آرگومان نامعتبر.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: grpc-Wire.salam

وضعیت گذشت مهلت GRPC_DEADLINE_EXCEEDED

پایا وضعیت گذشت مهلت: صحیح۳۲ = 4
کد وضعیت: مهلت تمام شد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: grpc-Wire.salam

وضعیت یافت نشد GRPC_NOT_FOUND

پایا وضعیت یافت نشد: صحیح۳۲ = 5
کد وضعیت: یافت نشد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: grpc-Wire.salam

وضعیت از پیش موجود GRPC_ALREADY_EXISTS

پایا وضعیت از پیش موجود: صحیح۳۲ = 6
کد وضعیت: از پیش هست.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: grpc-Wire.salam

وضعیت دسترسی رد شد GRPC_PERMISSION_DENIED

پایا وضعیت دسترسی رد شد: صحیح۳۲ = 7
کد وضعیت: اجازه ندارید.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: grpc-Calls.salam

وضعیت منابع تمام شد GRPC_RESOURCE_EXHAUSTED

پایا وضعیت منابع تمام شد: صحیح۳۲ = 8
کد وضعیت: منابع یا سهمیه تمام شد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: grpc-Wire.salam

وضعیت پیش‌شرط ناموفق GRPC_FAILED_PRECONDITION

پایا وضعیت پیش‌شرط ناموفق: صحیح۳۲ = 9
کد وضعیت: سامانه در وضعیت لازم نیست.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: grpc-Wire.salam

وضعیت قطع شده GRPC_ABORTED

پایا وضعیت قطع شده: صحیح۳۲ = 10
کد وضعیت: به‌خاطر تداخل قطع شد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: grpc-Wire.salam

وضعیت خارج از محدوده GRPC_OUT_OF_RANGE

پایا وضعیت خارج از محدوده: صحیح۳۲ = 11
کد وضعیت: بیرون از بازه.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: grpc-Wire.salam

وضعیت پیاده‌سازی نشده GRPC_UNIMPLEMENTED

پایا وضعیت پیاده‌سازی نشده: صحیح۳۲ = 12
کد وضعیت: متد پیاده نشده.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: grpc-Wire.salam

وضعیت خطای داخلی GRPC_INTERNAL

پایا وضعیت خطای داخلی: صحیح۳۲ = 13
کد وضعیت: خطای داخلی.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: grpc-Wire.salam

وضعیت ناموجود GRPC_UNAVAILABLE

پایا وضعیت ناموجود: صحیح۳۲ = 14
کد وضعیت: سرویس در دسترس نیست؛ می‌شود دوباره تلاش کرد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: grpc-Wire.salam

وضعیت از دست رفتن داده GRPC_DATA_LOSS

پایا وضعیت از دست رفتن داده: صحیح۳۲ = 15
کد وضعیت: داده از دست رفت.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: grpc-Wire.salam

وضعیت احراز نشده GRPC_UNAUTHENTICATED

پایا وضعیت احراز نشده: صحیح۳۲ = 16
کد وضعیت: احراز هویت نشده.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: grpc-Wire.salam

نوع محتوا GRPC_CONTENT_TYPE

پایا نوع محتوا: رشته = "application/grpc"
نوع محتوای gRPC.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: grpc-Wire.salam

نوع محتوای پروتو GRPC_CONTENT_TYPE_PROTO

پایا نوع محتوای پروتو: رشته = "application/grpc+proto"
نوع محتوا با پروتوباف.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: grpc-Wire.salam

نوع محتوای جیسون GRPC_CONTENT_TYPE_JSON

پایا نوع محتوای جیسون: رشته = "application/grpc+json"
نوع محتوا با جیسون.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: grpc-Wire.salam

بدون فشرده‌سازی GRPC_COMP_NONE

پایا بدون فشرده‌سازی: صحیح۳۲ = 0
بدون فشرده‌سازی.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: grpc-Wire.salam

فشرده‌سازی جی زیپ GRPC_COMP_GZIP

پایا فشرده‌سازی جی زیپ: صحیح۳۲ = 1
فشرده‌سازی gzip.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: grpc-Wire.salam

بیشینه قاب‌ها GRPC_MAX_FRAMES

پایا بیشینه قاب‌ها: صحیح۳۲ = 100000
بیشترین قابی که برای یک فراخوان خوانده می‌شود.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: grpc-Wire.salam

بیشینه اندازه پیام GRPC_MAX_MESSAGE

پایا بیشینه اندازه پیام: صحیح۳۲ = 4194304
بیشترین اندازه‌ی یک پیام: ۴ مگابایت.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: grpc-Wire.salam

روال‌ها

فراداده جدید NewMetadata

روال فراداده جدید(): فراداده
فراداده‌ی خالی.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: grpc-Calls.salam

افزودن فراداده MDAdd

روال افزودن فراداده(md &: فراداده، key: رشته، value: رشته): منطقی
مدخل متنی می‌افزاید؛ کلید با حروف کوچک ذخیره می‌شود و کلیدهای رزرو، مثل content-type، رد می‌شوند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: grpc-Calls.salam

افزودن فراداده دودویی MDAddBinary

روال افزودن فراداده دودویی(md &: فراداده، key: رشته، value: رشته): منطقی
مدخل دودویی می‌افزاید؛ کلید باید به -bin تمام شود و مقدار با بیس۶۴ فرستاده می‌شود.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: grpc-Wire.salam

دریافت فراداده MDGet

روال دریافت فراداده(md: فراداده، key: رشته): رشته
نخستین مقدار یک کلید.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: grpc-Calls.salam

فراداده دارد MDHas

روال فراداده دارد(md: فراداده، key: رشته): منطقی
کلید هست.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: grpc-Wire.salam

دریافت همه فراداده MDGetAll

روال دریافت همه فراداده(md: فراداده، key: رشته): وکتور<رشته>
همه‌ی مقدارهای یک کلید.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: grpc-Wire.salam

تعداد فراداده MDCount

روال تعداد فراداده(md: فراداده): صحیح
شمار مدخل‌ها.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: grpc-Calls.salam

کلید فراداده MDKeyAt

روال کلید فراداده(md: فراداده، i: صحیح): رشته
کلید مدخل n.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: grpc-Wire.salam

مقدار فراداده MDValueAt

روال مقدار فراداده(md: فراداده، i: صحیح): رشته
مقدار مدخل n.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: grpc-Wire.salam

فراداده به سرآیند MDToHeaders

روال فراداده به سرآیند(md: فراداده، hl &: http2.HeaderList)
فراداده را به سرآیندهای HTTP/2 می‌افزاید.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: grpc-Wire.salam

فراداده از سرآیند MDFromHeaders

روال فراداده از سرآیند(hl: http2.HeaderList): فراداده
فراداده را از سرآیندهای HTTP/2 درمی‌آورد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: grpc-Wire.salam

وضعیت جدید NewStatus

روال وضعیت جدید(code: صحیح، message: رشته): وضعیت
وضعیت با کد و پیام.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: grpc-Wire.salam

وضعیت موفق StatusOk

روال وضعیت موفق(s: وضعیت): منطقی
وضعیت موفق است.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: grpc-Calls.salam

مسیر متد MethodPath

روال مسیر متد(service: رشته، method: رشته): رشته
مسیر متد از نام سرویس و متد، مثل /demo.Greeter/SayHello.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: grpc-Calls.salam

قاب‌بندی پیام FrameMessage

روال قاب‌بندی پیام(msg: compress.ByteBuf، compressed: منطقی): compress.ByteBuf
پیام را با سرآیند ۵ بایتی gRPC قاب می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: grpc-Wire.salam

قاب‌بندی فشرده FrameMessageGzip

روال قاب‌بندی فشرده(msg: compress.ByteBuf، use_gzip: منطقی): compress.ByteBuf
پیام را قاب می‌کند و اگر بخواهید فشرده.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: grpc-Wire.salam

قاب‌بندی پیام متنی FrameMessageStr

روال قاب‌بندی پیام متنی(msg: رشته): compress.ByteBuf
متن را قاب می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: grpc-Wire.salam

پیام کامل دارد HasMessage

روال پیام کامل دارد(data: compress.ByteBuf، pos: صحیح): منطقی
از این جا یک پیام کامل در داده هست.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: grpc-Wire.salam

پیام بعدی NextMessage

روال پیام بعدی(data: compress.ByteBuf، pos &: صحیح، ok &: منطقی): compress.ByteBuf
پیام بعدی را می‌خواند و جا را جلو می‌برد؛ پیام فشرده باز می‌شود.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: grpc-Wire.salam

تعداد پیام‌ها MessageCount

روال تعداد پیام‌ها(data: compress.ByteBuf): صحیح
شمار پیام‌های کامل.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: grpc-Wire.salam

اتصال Dial

روال اتصال(host: رشته، port: صحیح): کانال
کانال بی‌رمز (h2c)؛ برای سرورهای داخلی.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: grpc-Calls.salam

اتصال امن DialTLS

روال اتصال امن(host: رشته، port: صحیح): کانال
کانال امن با TLS و ALPN h2.
grpc-TLS.salam
واردسازی جی آر پی سی
واردسازی شبکه.تی سی پی شبکه

روال پژواک(ف: صحیح۶۴):
    ناپایا سالم := نادرست
    _ := جی آر پی سی.ارسال متن(ف، جی آر پی سی.دریافت متن(ف، سالم))
پایان

روال ریشه:
    ناپایا ک := جی آر پی سی.اتصال امن("api.example.com"، ۴۴۳)
    اگر وارونه جی آر پی سی.کانال معتبر(ک):
        سرچاپ جی آر پی سی.خطای کانال(ک)
        برگشت
    پایان
    جی آر پی سی.فعال‌سازی فشرده‌سازی(ک، درست)
    ناپایا نتیجه := جی آر پی سی.وضعیت {}
    سرچاپ جی آر پی سی.فراخوان یگانه متنی(ک، "/demo.Echo/Say"، "سلام"، نتیجه)
    جی آر پی سی.بستن کانال(ک)

    جی آر پی سی.ثبت متد("/demo.Echo/Say"، پژواک)
    ناپایا س := جی آر پی سی.سرور جدید(۵۰۰۵۱)
    اگر جی آر پی سی.گوش دادن(س):
        جی آر پی سی.خدمت(س)
    پایان
    ا := تی سی پی شبکه.شماره گیری("127.0.0.1"، ۵۰۰۵۲)
    _ := جی آر پی سی.خدمت به اتصال(ا.fd)
پایان

کانال معتبر ChannelOk

روال کانال معتبر(ch: کانال): منطقی
کانال سالم است.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: grpc-Calls.salam

خطای کانال ChannelError

روال خطای کانال(ch: کانال): رشته
آخرین خطای کانال.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: grpc-TLS.salam

تنظیم مهلت SetTimeout

روال تنظیم مهلت(ch &: کانال، ms: صحیح)
مهلت فراخوان‌ها بر حسب میلی‌ثانیه؛ با سرآیند grpc-timeout به سرور هم گفته می‌شود.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: grpc-Calls.salam

فعال‌سازی فشرده‌سازی SetGzip

روال فعال‌سازی فشرده‌سازی(ch &: کانال، enable: منطقی)
فشرده‌سازی gzip پیام‌ها را روشن یا خاموش می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: grpc-TLS.salam

بستن کانال CloseChannel

روال بستن کانال(ch &: کانال)
کانال را می‌بندد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: grpc-Calls.salam

شروع فراخوان StartCall

روال شروع فراخوان(ch &: کانال، path: رشته، md: فراداده): صحیح
فراخوانی را روی مسیر متد آغاز می‌کند و شناسه‌ی جریان را برمی‌گرداند؛ برای فراخوان‌های جریانی.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: grpc-Calls.salam

ارسال پیام SendMessage

روال ارسال پیام(ch &: کانال، sid: صحیح، msg: compress.ByteBuf، last: منطقی): منطقی
یک پیام می‌فرستد؛ با درست در آخرین پیام، ارسال بسته می‌شود.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: grpc-Calls.salam

بستن ارسال CloseSend

روال بستن ارسال(ch &: کانال، sid: صحیح): منطقی
به سرور می‌گوید پیام دیگری نمی‌آید.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: grpc-Calls.salam

دریافت پیام RecvMessage

روال دریافت پیام(ch &: کانال، sid: صحیح، ok &: منطقی): compress.ByteBuf
پیام بعدی را می‌خواند؛ اگر پیامی نمانده، سالم نادرست می‌شود.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: grpc-Calls.salam

پایان فراخوان FinishCall

روال پایان فراخوان(ch &: کانال، sid: صحیح): وضعیت
فراخوان را تمام می‌کند و وضعیت نهایی سرور را برمی‌گرداند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: grpc-Calls.salam

سرآیندهای فراخوان CallHeaders

روال سرآیندهای فراخوان(ch: کانال، sid: صحیح): فراداده
فراداده‌ای که سرور در سرآیندها فرستاد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: grpc-Calls.salam

دنباله‌های فراخوان CallTrailers

روال دنباله‌های فراخوان(ch: کانال، sid: صحیح): فراداده
فراداده‌ای که سرور در پایان فرستاد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: grpc-Calls.salam

فراخوان یگانه UnaryCall

روال فراخوان یگانه(ch &: کانال، path: رشته، req: compress.ByteBuf، md: فراداده، st &: وضعیت): compress.ByteBuf
فراخوان ساده: یک پیام می‌فرستد و یک پاسخ می‌گیرد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: grpc-Calls.salam

فراخوان یگانه متنی UnaryCallStr

روال فراخوان یگانه متنی(ch &: کانال، path: رشته، req: رشته، st &: وضعیت): رشته
مثل روال بالا، با پیام متنی.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: grpc-Calls.salam

سرور جدید NewServer

روال سرور جدید(port: صحیح): سرور جی آر پی سی
سرور تازه؛ درگاه صفر یعنی یک درگاه آزاد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: grpc-Calls.salam

ثبت متد RegisterMethod

روال ثبت متد(path: رشته، fn: صحیح۶۴)
روالی را برای یک متد ساده ثبت می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: grpc-Calls.salam

ثبت متد جریانی RegisterStreamMethod

روال ثبت متد جریانی(path: رشته، fn: صحیح۶۴، client_stream: منطقی، server_stream: منطقی)
روالی را برای متد جریانی ثبت می‌کند و می‌گوید کدام سو جریانی است.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: grpc-Calls.salam

تعداد متدها MethodCount

روال تعداد متدها(): صحیح
شمار متدها.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: grpc-Calls.salam

متد دارد HasMethod

روال متد دارد(path: رشته): منطقی
متد ثبت شده.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: grpc-Calls.salam

بازنشانی متدها ResetMethods

روال بازنشانی متدها()
همه‌ی متدها را حذف می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: grpc-Calls.salam

مسیر فراخوان CallPath

روال مسیر فراخوان(slot: صحیح۶۴): رشته
مسیر متد فراخوان جاری.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: grpc-Calls.salam

فراداده فراخوان CallMetadata

روال فراداده فراخوان(slot: صحیح۶۴): فراداده
فراداده‌ای که کارخواه فرستاد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: grpc-Calls.salam

دریافت Recv

روال دریافت(slot: صحیح۶۴، ok &: منطقی): compress.ByteBuf
پیام بعدی کارخواه را می‌خواند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: grpc-Calls.salam

دریافت متن RecvStr

روال دریافت متن(slot: صحیح۶۴، ok &: منطقی): رشته
پیام بعدی به شکل متن.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: grpc-Calls.salam

ارسال Send

روال ارسال(slot: صحیح۶۴، msg: compress.ByteBuf): منطقی
پیامی به کارخواه می‌فرستد؛ در متد جریانی چند بار.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: grpc-Calls.salam

ارسال متن SendStr

روال ارسال متن(slot: صحیح۶۴، msg: رشته): منطقی
پیام متنی می‌فرستد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: grpc-Calls.salam

تنظیم وضعیت SetStatus

روال تنظیم وضعیت(slot: صحیح۶۴، code: صحیح، message: رشته)
وضعیت پایانی فراخوان را تعیین می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: grpc-Calls.salam

شکست Fail

روال شکست(slot: صحیح۶۴، code: صحیح، message: رشته)
فراخوان را با کد و پیام خطا تمام می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: grpc-Calls.salam

گوش دادن Listen

روال گوش دادن(s &: سرور جی آر پی سی): منطقی
گوش دادن را آغاز می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: grpc-Calls.salam

درگاه Port

روال درگاه(s: سرور جی آر پی سی): صحیح
درگاهی که واقعاً گرفته شد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: grpc-Calls.salam

خدمت به اتصال ServeConn

روال خدمت به اتصال(fd: صحیح۶۴): صحیح
به یک اتصال تا بسته شدنش پاسخ می‌دهد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: grpc-TLS.salam

خدمت به تعداد ServeCount

روال خدمت به تعداد(s &: سرور جی آر پی سی، n: صحیح): صحیح
به n اتصال پاسخ می‌دهد و برمی‌گردد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: grpc-Calls.salam

خدمت Serve

روال خدمت(s &: سرور جی آر پی سی)
تا توقف به اتصال‌ها پاسخ می‌دهد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: grpc-Calls.salam

توقف سرور StopServer

روال توقف سرور(s &: سرور جی آر پی سی)
سرور را متوقف می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: grpc-Calls.salam

نام وضعیت StatusName

روال نام وضعیت(code: صحیح): رشته
نام کد وضعیت، مثل NOT_FOUND.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: grpc-Calls.salam

کدگذاری پیام وضعیت EncodeStatusMessage

روال کدگذاری پیام وضعیت(msg: رشته): رشته
پیام وضعیت را برای سرآیند grpc-message کدگذاری درصدی می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: grpc-Wire.salam

کدگشایی پیام وضعیت DecodeStatusMessage

روال کدگشایی پیام وضعیت(msg: رشته): رشته
پیام وضعیت را کدگشایی می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: grpc-Wire.salam

قالب‌بندی کد وضعیت FormatStatusCode

روال قالب‌بندی کد وضعیت(code: صحیح): رشته
کد وضعیت به شکل متن.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: grpc-Wire.salam

تجزیه کد وضعیت ParseStatusCode

روال تجزیه کد وضعیت(text: رشته): صحیح
کد وضعیت از متن؛ اگر نامعتبر باشد، UNKNOWN.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: grpc-Wire.salam

متن وضعیت StatusString

روال متن وضعیت(s: وضعیت): رشته
وضعیت به شکل NAME: message.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: grpc-Calls.salam