Psst.. new poll here.
Psst.. new forums here.
Microsoft is blocking us again (TY IP Reputation!) so just use oauth login instead. :)
Paste
Pasted as Java by mimi ( 7 years ago )
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
import java.util.concurrent.locks.Condition;
import java.util.ArrayList;
public class DekryptMonitor{
private static ArrayList<String> dekryptert = new ArrayList<String>();
private static ArrayList<Melding> dekryptListe = new ArrayList<Melding>();
private Lock laas = new ReentrantLock();
private Condition nyMeldinglagt = laas.newCondition();
private Condition tomt = laas.newCondition();
private Melding beskjed;
private int antDekryptMeldLagt;
private int ferdigKryptografer;
private int antKryptografer;
public DekryptMonitor(int antKryptografer){ //Legge inn try-method
this.antKryptografer = antKryptografer;
}
/*Etter at kryptografene er ferdig, blir de dekrypterte meldingen videre
sendt til denne monitoren. Denne monitoren maa legge meldingene inn i en beholder
en etter en (synkroniseres)*/
public void leggDekrypterteMeldinger(Melding melding, String dekryptertTekst){
//System.out.println("\n Dekryptert tekst blir naa tatt imot av dekryptert monitor");
laas.lock();
//System.out.println("Dekryptert tekst blir lagt inne i beholder (dekryptListe)");
//System.out.println("\n Beskjeden er: " + dekryptertTekst + "\n");
/*Legger inn i arraylist<String>*/
dekryptert.add(dekryptertTekst);
/*Legger inn i arrayList<Melding>*/
dekryptListe.add(melding);
antDekryptMeldLagt++;
/*Signalisere til operasjonsleder at en ny melding er naa lagt inn*/
nyMeldinglagt.signal();
laas.unlock();
}
public Melding hentDekryptertMelding(){
ArrayList<String> beholder = new ArrayList<String>();
// System.out.println("\n Operasjonsleder skal naa hente meldingene");
if(ferdigKryptografer == antKryptografer && dekryptListe.size() == 0){
return null;
}
laas.lock();
try{
while(dekryptListe.size() == 0){
// System.out.println("\n Operasjonsleder venter paa meldinger");
if(ferdigKryptografer == antKryptografer && dekryptListe.size() == 0){
return null;
}
nyMeldinglagt.await();
}
// System.out.println("Operassjonsleder henter ut en melding \n");
beskjed = dekryptListe.get(0);
String dekryptOversettelse = dekryptert.get(0);
beskjed.dekryptEndring(dekryptOversettelse);
dekryptListe.remove(0);
dekryptert.remove(0);
}
catch(InterruptedException e){
}
finally{
laas.unlock();
return beskjed;
}
}
/*Andre metoder - hente metoder samt oppdateringsmetoder*/
public ArrayList<Melding> hentDekryptertListe(){
return dekryptListe;
}
public ArrayList<String> hentStringBeholder(){
return dekryptert;
}
public int hentAntLagtDekryptert(){
return antDekryptMeldLagt;
}
public void nyFerdigKryptograf(){
ferdigKryptografer++;
}
public int hentTotalFerdigKryptografer(){
return ferdigKryptografer;
}
public int hentAntKryptografer(){
return antKryptografer;
}
}
Revise this Paste
Parent: 98994
Children: 98997