Кодът ми е болен; това, което изглежда като доста ясна операция за запис и четене на обект, изглежда никога не задейства своите вторични операции. Нишка от вътрешен клас на отдалечения партньор изпраща ConcurrentHashMap
през OOS.
Когато това пристигне - и това се случва, добре - получаващият код продължава, в определен от булев цикъл, да слуша OIS за актуализации на този CCHM. Тези актуализации идват от братя и сестри на този, който е изпратил оригиналния CCHM (има един обслужващ брат или сестра на получаващ партньор). Използваните от тези братя и сестри ObjectOutputStreams
са взети от видими HashMap
от братята и сестрите. Братята и сестрите не се интересуват дали изпращат до нов член на групата или до съществуващ. Разликата по отношение на това дали даден партньор е нов или съществуващ, е известна само от страната на приемащия партньор, където се получава и използва оригиналният CCHM, а след това кодът продължава да чака актуализации на същата OIS. Новите партньори, които се присъединяват, имат своите подробности, добавени към Hashtable
на дистанционното управление, така че CCHM, който трябва да бъде изпратен, е с един елемент по-голям всеки път, когато се изпраща до всички партньори (новия плюс n съществуващия).
Но съществуващите партньори не получават актуализирания CCHM. Вместо да запълвам кода си с System.out.println()
извиквания или да го спирам грубо, какви капани вероятно съм пренебрегнал, за да се забъркам в тази бъркотия?