این تعهد متعلق به هیچ شعبه ای در این مخزن نیست و ممکن است متعلق به یک چنگال در خارج از مخزن باشد.
نام در حال استفاده
یک برچسب در حال حاضر با نام شاخه ارائه شده وجود دارد. بسیاری از دستورات GIT نام برچسب و شاخه را می پذیرند ، بنابراین ایجاد این شاخه ممکن است باعث رفتار غیر منتظره شود. آیا مطمئن هستید که می خواهید این شاخه را ایجاد کنید؟
- محلی
- مکاشه
با استفاده از URL وب از Git یا Checkout با SVN استفاده کنید.
با CLI رسمی ما سریع کار کنید. بیشتر بدانید.
ورود به سیستم لازم
لطفاً برای استفاده از برنامه های کد وارد سیستم شوید.
راه اندازی دسک تاپ GitHub
اگر هیچ اتفاقی نمی افتد ، GitHub Desktop را بارگیری کنید و دوباره امتحان کنید.
راه اندازی دسک تاپ GitHub
اگر هیچ اتفاقی نمی افتد ، GitHub Desktop را بارگیری کنید و دوباره امتحان کنید.
راه اندازی Xcode
اگر هیچ اتفاقی نمی افتد ، Xcode را بارگیری کنید و دوباره امتحان کنید.
راه اندازی کد ویژوال استودیو
فضای کد شما یک بار آماده خواهد شد.
مشکلی برای تهیه فضای کدگذاری شما وجود داشت ، لطفاً دوباره امتحان کنید.
آخرین تعهد
آمار git
فایل ها
بارگیری آخرین اطلاعات متعهد انجام نشد.
readme. md
کتابخانه Alpari BinaryProtocol
Alpari/binary-protocol یک کتابخانه PHP است که API را برای کار با پروتکل های باینری مانند FCGI ، Apachekafka و دیگران فراهم می کند. برنامه ها می توانند از این کتابخانه برای توصیف داده های باینری و کار با API سطح بالا بدون کار دستی با بسته بندی داده های باینری/بسته بندی استفاده کنند.
Alpari/binary-protocol را می توان با آهنگساز نصب کرد. برای بارگیری این کتابخانه لطفا تایپ کنید:
API TypeInterface بازنمایی سطح پایین داده ها را به عنوان مثال Int8 ، Int16 ، String و غیره توصیف می کند.
هر نوع داده باید به عنوان یک کلاس جداگانه در حال اجرای قرارداد TypeInterface با منطق بسته بندی و باز کردن داده ها به/از StreamInterface اضافه شود
همانطور که می بینید دو روش اصلی وجود دارد که خوانده می شوند () و نوشتن () که برای خواندن و نوشتن داده های باینری به جریان استفاده می شود.
اندازه اندازه () برای محاسبه اندازه داده ها در بایت استفاده می شود. برای انواع داده های ساده ، مقدار ثابت را برمی گرداند و برای ساختارهای پیچیده تری مانند آرایه یا اشیاء باید بتواند اندازه چنین زمینه ای را محاسبه کند.
روش getFormat () در رابط اعلام شده است ، اما در حال حاضر از آن استفاده نمی شود. بعداً می توان از آن برای آرایه ها یا سازه های با اندازه ثابت استفاده کرد تا تجزیه و تحلیل ، به عنوان مثال ، آرایه ای از INT16 باشد.
schemedefinitioninterface به استفاده از ساختارهای پیچیده باینری در برنامه شما کمک می کند. هر نوع پیچیده از پروتکل باینری باید به عنوان یک DTO جداگانه (شیء PHP ساده با خصوصیات) نمایش داده شود که SchemedEfinitionInterface را اجرا می کند و روش GetDefinition () است.
در اینجا یک مثال از تعریف بسته باینری است که برای مشتری کافکا استفاده می شود:
To add the definition to your existing class, just add "property" =>نگاشت "نوع" به عنوان یک تعریف طرح. لطفاً توجه داشته باشید که هر نوع ویژگی به عنوان یک آرایه در متد getDefinition() اعلان می شود. این قالب برای تعریف آرگومان های اضافی برای انواع پیچیده استفاده می شود.
نوع ArrayOf برای اعلام دنباله آیتم های باینری تکرار شده (اعداد صحیح، رشته ها یا اشیاء) استفاده می شود. چندین گزینه دارد که می تواند به عنوان یک آرایه انجمنی از مقادیر اعمال شود.
گزینه های موجود برای ArrayOf عبارتند از:
- آیتم (الزامی) تعریف نوع آیتم واحد که در آرایه استفاده می شود، به عنوان مثال [Int32::class]
- اندازه (اختیاری) تعریف نوع اندازه، می توانید از [VarInt::class]، [Int64::class] یا هر چیز دیگری استفاده کنید.
- کلید (اختیاری) نام ویژگی از یک شی که به عنوان کلید انجمنی در آرایه استفاده می شود
- پرچم Boolean nullable (اختیاری) برای فعال کردن مقادیر null کدگذاری شده با اندازه = -1
کلاس BinaryString نمایش کلی هر رشته یا بافر خام با داده های باینری است. معمولاً به صورت فیلد طول بافر و دنباله ای از بایت ها به عنوان داده کدگذاری می شود.
گزینه های موجود برای BinaryString عبارتند از:
- envelope (اختیاری) نوع داده تودرتو را که در بسته باینری ذخیره می شود، اعلام می کند.
- اندازه (اختیاری) تعریف نوع اندازه، می توانید از [VarInt::class]، [Int64::class] یا هر چیز دیگری استفاده کنید.
- پرچم Boolean nullable (اختیاری) برای فعال کردن مقادیر null کدگذاری شده با اندازه = -1
از ویژگی envelope برای برخی از پروتکل ها استفاده می شود که پروتکل سطح پایین فقط مقداری بافر را تعریف می کند و پروتکل سطح بالا بسته خاصی را از این بافر موقت استخراج می کند. به عنوان مثال بسته TCP از طریق IP است.
بهطور پیشفرض BinaryString از Int16 در رمزگذاری بزرگ endian برای اندازه استفاده میکند، اگر به دادههای بیشتری نیاز دارید، فقط گزینه اندازه را بر اساس آن پیکربندی کنید.
کلاس SchemeType ساختار پیچیده ای را نشان می دهد که می تواند به نمونه شی PHP نگاشت شود. دارای گزینه های زیر است:
- کلاس (الزامی) رشته با نام FQN کلاس مربوطه که این ساختار را دارد
- scheme (optional) Definition of each item type as key =>تعریف. کلید به عنوان نام ویژگی برای این شی استفاده می شود.
توجه: اگر کلاس SomeClass شما SchemeDefinitionInterface را پیاده سازی می کند، می توانید به سادگی به آن در طرح به عنوان [SomeClass::class] اشاره کنید.
استفاده از کلاس باینری پروتکل
این کتابخانه کلاس BinaryProtocol را به عنوان یک API کدگذار/رمزگشای باینری سطح بالا معرفی می کند. برای خواندن دادهها، لطفاً یک جریان داده مناسب از طریق اجرای قرارداد StreamInterface تهیه کنید یا فقط از کلاس داخلی StringStream برای نوشتن محتوا در بافر موقت استفاده کنید. سپس فقط از پروتکل بخواهید چیزی در آن بخواند یا بنویسد:
در برخی موارد، پروتکلهای باینری حاوی فیلدهایی هستند که به دادههای موجود بستگی دارند، برای مثال: طول بسته، CRC، فیلدهای با ارزیابی تنبل یا کدگذاری شده. چنین فیلدهایی باید قبل از نوشتن آنها در یک جریان، با تنبلی محاسبه شوند. برای استفاده از ارزیابی تنبل، فقط مقدار چنین فیلدی را به عنوان نمونه بستن اعلام کنید.
در اینجا مثالی از محاسبه طول فیلد برای کلاس رکورد کافکا آورده شده است: