দ্বিমুখী স্রোত

public abstract class BidirectionalStream


HTTP/2 বা QUIC সংযোগের মাধ্যমে দ্বিমুখীভাবে ডেটা প্রেরণ ও গ্রহণের জন্য ক্লাস। Builder দ্বারা নির্মিত।

দ্রষ্টব্য: BidirectionalStream এর মেথডগুলোর ক্রম নির্ধারণের ক্ষেত্রে সীমাবদ্ধতা রয়েছে; সীমাবদ্ধতার বিবরণের জন্য অনুগ্রহ করে প্রতিটি মেথড দেখুন।

সারসংক্ষেপ

নেস্টেড প্রকার

public abstract class BidirectionalStream.Builder

BidirectionalStream জন্য বিল্ডার।

public abstract class BidirectionalStream.Callback

BidirectionalStream থেকে কলব্যাক গ্রহণ করতে ব্যবহৃত কলব্যাক ক্লাস।

সরকারি নির্মাণকারী

জনসাধারণের পদ্ধতি

abstract void
cancel ()

স্ট্রিমটি বাতিল করে।

abstract void
flush ()

অপেক্ষমান লেখাগুলো ফ্লাশ করে।

abstract boolean
isDone ()

স্ট্রিমটি সফলভাবে শুরু হলে এবং এখন সম্পন্ন হলে (সফল, বাতিল বা ব্যর্থ হলে) true রিটার্ন করে।

abstract void
read ( ByteBuffer buffer)

স্ট্রিম থেকে ডেটা পড়ে প্রদত্ত বাফারে সংরক্ষণ করে।

abstract void
start ()

স্ট্রিমটি চালু করে, সমস্ত কলব্যাক BidirectionalStream.Builder এর কনস্ট্রাক্টরে পাস করা callback আর্গুমেন্টে যায়।

abstract void
write ( ByteBuffer buffer, boolean endOfStream)

স্ট্রিমে লেখার জন্য ডেটা যোগ করে।

সরকারি নির্মাণকারী

দ্বিমুখী স্রোত

public BidirectionalStream()

জনসাধারণের পদ্ধতি

বাতিল করুন

public abstract void cancel()

স্ট্রিমটি বাতিল করে। এটি start পর যেকোনো সময়ে কল করা যেতে পারে। বাতিলকরণ সম্পূর্ণ হলে onCanceled() কল করা হবে এবং এরপর আর কোনো কলব্যাক মেথড কল করা হবে না। যদি স্ট্রিমটি সম্পূর্ণ হয়ে যায় বা শুরু না হয়, তাহলে cancel() কল করার কোনো প্রভাব থাকবে না এবং onCanceled() কল করা হবে না। যদি BidirectionalStream তৈরির সময় পাস করা Executor একটিমাত্র থ্রেডে টাস্ক চালায়, এবং cancel() সেই থ্রেডেই কল করা হয়, cancel() কল করার পর onCanceled() ছাড়া অন্য কোনো লিসেনার মেথড কল করা হবে না। অন্যথায়, cancel() সম্পূর্ণ হওয়ার পর সর্বাধিক একটি কলব্যাক মেথড কল করা যেতে পারে।

ফ্লাশ

public abstract void flush()

অপেক্ষাধীন রাইটগুলো ফ্লাশ করে। এই মেথডটি onStreamReady() এর আগে কল করা উচিত নয়। পূর্বে বিলম্বিত write() গুলোর জন্য, বাফার পাঠানোর সময় একটি সংশ্লিষ্ট onWriteCompleted() কল করা হবে।

সম্পন্ন হয়েছে

public abstract boolean isDone()

স্ট্রিমটি সফলভাবে শুরু হলে এবং এখন সম্পন্ন হলে (সফল, বাতিল বা ব্যর্থ হলে) true রিটার্ন করে।

ফেরত
boolean

যদি স্ট্রিমটি সফলভাবে শুরু হয়ে থাকে এবং এখন শেষ হয়ে গিয়ে থাকে (সম্পূর্ণ, বাতিল বা ব্যর্থ), তাহলে true রিটার্ন করে; অন্যথায় স্ট্রিমটি এখনও শুরু হয়নি বা চলছে তা বোঝাতে false রিটার্ন করে।

পড়ুন

public abstract void read(ByteBuffer buffer)

স্ট্রিম থেকে ডেটা পড়ে প্রদত্ত বাফারে রাখে। Callback এর onStreamReady() / onResponseHeadersReceived() এবং onReadCompleted() মেথডগুলোর প্রতিটি আহ্বানের প্রতিক্রিয়ায় এটিকে সর্বোচ্চ একবারই কল করা যায়। প্রতিটি কলের ফলে, যদি ডেটা পড়া হয় তবে Callback এর onReadCompleted() মেথডটি, অথবা কোনো ত্রুটি হলে এর onFailed() মেথডটি আহ্বান করা হবে। buffer.position() থেকে buffer ডেটা পড়ার একটি প্রচেষ্টা শুরু করা হয়। সর্বোচ্চ buffer.remaining() বাইট পর্যন্ত পড়া হয়। কী পরিমাণ ডেটা পড়া হয়েছে তা নির্দেশ করার জন্য onReadCompleted() আহ্বানের পর buffer.position() আপডেট করা হয়।

প্যারামিটার
ByteBuffer buffer

যে ByteBuffer ডেটা রিড করা হবে। এটি অবশ্যই একটি ডিরেক্ট বাইটবাফার হতে হবে। onReadCompleted() , onCanceled() , বা onFailed() কল না করা পর্যন্ত এমবেডার বাফারের পজিশন, লিমিট, বা এর পজিশন ও লিমিটের মধ্যবর্তী ডেটা রিড বা মডিফাই করতে পারবে না।

শুরু

public abstract void start()

স্ট্রিমটি চালু করে, সমস্ত কলব্যাক BidirectionalStream.Builder এর কনস্ট্রাক্টরে পাস করা callback আর্গুমেন্টে যায়। এটি শুধুমাত্র একবারই কল করা উচিত।

লিখুন

public abstract void write(ByteBuffer buffer, boolean endOfStream)

স্ট্রিমে লেখার জন্য ডেটা যোগ করে। flush() কল করার পরেই কেবল ডেটা পাঠানো হবে। প্রতিটি কলের ফলে, ডেটা পাঠানো হলে Callback এর ` onWriteCompleted() ` মেথড, অথবা কোনো ত্রুটি হলে onFailed() ` মেথড কল হবে।

buffer.position() থেকে buffer ডেটা লেখার একটি প্রচেষ্টা শুরু করা হয়েছে। buffer.remaining() বাইট লেখা হবে। সম্পূর্ণ ByteBuffer-টি লেখা হয়ে গেলেই কেবল onWriteCompleted() কল করা হবে।

প্যারামিটার
ByteBuffer buffer

যে ByteBuffer থেকে ডেটা লেখা হবে। এটি অবশ্যই একটি সরাসরি বাইটবাফার হতে হবে। onWriteCompleted() , onCanceled() , বা onFailed() কল না করা পর্যন্ত এমবেডার বাফারের পজিশন, লিমিট, বা এর পজিশন ও লিমিটের মধ্যবর্তী ডেটা পড়তে বা পরিবর্তন করতে পারবে না। endOfStream মান true হলে এটি খালি থাকতে পারে।

boolean endOfStream

যদি true , তাহলে buffer হবে সর্বশেষ লেখা বাফার, এবং লেখা হয়ে গেলে ক্লায়েন্ট সাইড থেকে স্ট্রিমটি বন্ধ করে দেওয়া হয়, যার ফলে একটি হাফ-ক্লোজড স্ট্রিম তৈরি হয়, অথবা রিমোট সাইড যদি আগেই বন্ধ করে দিয়ে থাকে তবে একটি ফুললি ক্লোজড স্ট্রিম তৈরি হয়।