Witam, piszę aplikację androidową która jest serwerem i jednocześnie biblioteką dla innych aplikacji androidowych., używam localsocket. Z socketem łączy się urządzenie które może wysyłać odpowiednie komendy. Np. pobierz listę użytkowników, pobierz numery kont itp. W bibliotece używam interfejsów które w zależności od tego jaka komenda przyjdzie pobieram dane wołając funkcje z aplikacji która zaimportowała tą że bibliotekę. Również aplikacja zewnętrzna może wywoływać eventy i pobierać coś z urządzenia poprzez moją bibliotekę Struktura jest taka iż w bibliotece mam klasę którą tworzy socekt i łączy się z klientem jest w niej parser który parsuje komendy przychodzące z zewnątrz i wykonuje jakieś zadania.
public void HandleCommand(Command command, String packet) {
m_Text = packet;
switch (command) {
case req_finish_interaction:
inishInteraction(packet);
break;
.......
}
Mam problem jak zrobić operację w której mam coś zwrócić gdy aplikacja wywoła zdarzenie, które wysyła zapytanie do urządzenia i czeka aż urządzenie coś zwróci
public List<DiscountDefinition> EventGetDiscountDefinitions() {
Globals.discountListPacket=null;
BuildSendEvent("event_discount_list", "", "");
while(true)
{
if(Globals.discountListPacket!=null)
break;
}
Aplikacja woła funkcje EventGetDiscountDefinitions która ma jej zwrócić listę obiektów. I teraz główny wątek nasłuchujący komendy przychodzące do serwera jest w innej klasie, utworzyłem obiekt globalny który resetuje
Globals.discountListPacket=null;
I gdy przyjdzie na serwer odpowiednia komenda wypełniam go a funkcja czeka w pętli dopóki obiekt będzie różny od null tak jak jest to widoczne powyżej. Czy jest jakiś sposób by zrobić to ładniej, bez robienia pętli itp. ??