Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

2LATE e CLOSD #40

Merged
merged 5 commits into from
May 9, 2020
Merged

2LATE e CLOSD #40

merged 5 commits into from
May 9, 2020

Conversation

Ca-moes
Copy link
Owner

@Ca-moes Ca-moes commented May 6, 2020

No description provided.

@Ca-moes Ca-moes added the Qn Programa servidor label May 6, 2020
@Ca-moes Ca-moes added this to the Etapa 2 milestone May 6, 2020
@Ca-moes Ca-moes linked an issue May 6, 2020 that may be closed by this pull request
@Ca-moes
Copy link
Owner Author

Ca-moes commented May 6, 2020

1588773577 ; 94 ; 11189 ; 140266165733120 ; 279 ; 7 ; TIMUP
1588773577 ; 100 ; 11190 ; 139732045031168 ; 431 ; -1 ; IWANT
1588773577 ; 100 ; 11189 ; 140266165733120 ; 431 ; -1 ; RECVD
1588773577 ; 100 ; 11189 ; 140266165733120 ; 431 ; 7 ; ENTER
1588773577 ; 100 ; 11190 ; 139732045031168 ; 431 ; 7 ; IAMIN
1588773577 ; 93 ; 11189 ; 140265998227200 ; 360 ; 3 ; TIMUP
1588773577 ; 87 ; 11189 ; 140266023405312 ; 736 ; 1 ; TIMUP
1588773577 ; 90 ; 11189 ; 140265989834496 ; 639 ; 5 ; TIMUP
1588773577 ; 97 ; 11189 ; 140266040190720 ; 408 ; 2 ; TIMUP
1588773577 ; 88 ; 11189 ; 140266129966848 ; 888 ; 4 ; TIMUP
1588773577 ; 106 ; 11190 ; 139732017657600 ; 679 ; -1 ; CLOSD
1588773577 ; 106 ; 11190 ; 139732045031168 ; 875 ; -1 ; CLOSD
1588773577 ; 106 ; 11190 ; 139732034443008 ; 106 ; -1 ; CLOSD
1588773577 ; 106 ; 11190 ; 139732009264896 ; 320 ; -1 ; CLOSD
1588773577 ; 106 ; 11190 ; 139732026050304 ; 992 ; -1 ; CLOSD
1588773577 ; 106 ; 11190 ; 139731929134848 ; 946 ; -1 ; CLOSD
1588773577 ; 100 ; 11189 ; 140266165733120 ; 431 ; 7 ; TIMUP
1588773577 ; 99 ; 11189 ; 140266006619904 ; 619 ; 8 ; TIMUP
1588773577 ; 96 ; 11189 ; 140266155144960 ; 796 ; 0 ; TIMUP
1588773577 ; 98 ; 11189 ; 140266138359552 ; 938 ; 6 ; TIMUP
END OF SERVER/CLIENT

No client em vez de dar erro ao abrir o fifo publico manda mensagem de CLOSD e o server apanha do fifo publico os pedidos que faltam. Caso não haja pedidos em falta não vai mandar 2LATE

@Ca-moes Ca-moes marked this pull request as ready for review May 6, 2020 14:04
@Ca-moes Ca-moes self-assigned this May 6, 2020
@Ca-moes
Copy link
Owner Author

Ca-moes commented May 7, 2020

1588842950 ; 92 ; 4923 ; 140129816651520 ; 330 ; 6 ; TIMUP
1588842950 ; 99 ; 4924 ; 139998717929216 ; 726 ; -1 ; IWANT
1588842950 ; 99 ; 4923 ; 140129816651520 ; 726 ; -1 ; RECVD
1588842950 ; 99 ; 4923 ; 140129816651520 ; 726 ; 6 ; ENTER
1588842950 ; 99 ; 4924 ; 139998717929216 ; 726 ; 6 ; IAMIN
1588842950 ; 93 ; 4923 ; 140129658193664 ; 320 ; 8 ; TIMUP
1588842950 ; 80 ; 4923 ; 140129808258816 ; 989 ; 4 ; TIMUP
1588842950 ; 100 ; 4924 ; 139998717929216 ; 367 ; -1 ; IWANT
1588842950 ; 100 ; 4923 ; 140129808258816 ; 367 ; -1 ; RECVD
1588842950 ; 100 ; 4923 ; 140129808258816 ; 367 ; 4 ; ENTER
1588842950 ; 100 ; 4924 ; 139998717929216 ; 367 ; 4 ; IAMIN
1588842950 ; 101 ; 4924 ; 139998717929216 ; 205 ; -1 ; CLOSD
1588842950 ; 91 ; 4923 ; 140129683371776 ; 514 ; 5 ; TIMUP
1588842950 ; 95 ; 4923 ; 140129772492544 ; 432 ; 2 ; TIMUP
1588842950 ; 86 ; 4923 ; 140129666586368 ; 930 ; 11 ; TIMUP
1588842950 ; 89 ; 4923 ; 140129674979072 ; 847 ; 0 ; TIMUP
1588842950 ; 100 ; 4923 ; 140129808258816 ; 367 ; 4 ; TIMUP
1588842950 ; 90 ; 4923 ; 140129780885248 ; 978 ; 3 ; TIMUP
1588842950 ; 97 ; 4923 ; 140129649800960 ; 683 ; 1 ; TIMUP
1588842950 ; 99 ; 4923 ; 140129816651520 ; 726 ; 6 ; TIMUP
1588842951 ; 98 ; 4923 ; 140129764099840 ; 964 ; 9 ; TIMUP
END OF SERVER/CLIENT

Nunca vamos ter 2LATE porque como é dado unlink logo a seguir ao ciclo o programa client vai tentar escrever no fifo publico e não vai conseguir -> CLOSD.
Para dar 2LATE teria o client de criar uma thread e abrir o fifo publico, nesse momento o programa do server faz a verificação do while e sai, o client escreve no public fifo, o server da unlink,e depois é que pode haver uma criação de thread no server para dar 2LATE. Ou seja, o client tem de ter uma thread aberta e estar a escrever no momento entre o fim do while e o inicio do unlink:

// while loop to check running time
    while(elapsedTime() < (double) nsecs){        
        // while loop to check public fifo
        if(read(fd_pub,&clientRequest,BUFSIZE)<=0){ continue;}
        // create thread with contents of public fifo
        if(pthread_create(&tid, NULL, thread_func, &clientRequest)!=0){perror("Server-pthread_Create");}
        if(pthread_detach(tid)!=0){perror("Server-pthread_detach");}
    }
    // closing sequence
    if(unlink(fifopath)==-1){perror("Error destroying public fifo:");}

O que é extremamente improvável

@filiperecharte
Copy link
Collaborator

Parece-me tudo bem, quanto ao 2LATE acho que nesta segunda parte já vai ser mais provavel acontecer porque por exemplo imagina que temos 10 pedidos à espera de uma resposta com o lugar (porque estao todos ocupados), se a WC fechar entretanto já nao vai atribuir mais,ou seja, esses pedidos todos vao ser 2LATE certo?

@Ca-moes
Copy link
Owner Author

Ca-moes commented May 7, 2020

Vai depender de como se vai tratar dos pedidos que não tenham um lugar livre imediato. Se forem rejeitados automaticamente, não vai haver 2LATE's. Caso fiquem numa fila e esperem resposta pode ser que se mandem 2LATE's no final.

@filiperecharte
Copy link
Collaborator

Vai depender de como se vai tratar dos pedidos que não tenham um lugar livre imediato. Se forem rejeitados automaticamente, não vai haver 2LATE's. Caso fiquem numa fila e esperem resposta pode ser que se mandem 2LATE's no final.

No enunciado diz que temos de esperar, portanto não se pode rejeitar logo, acho que faz sentido quando a WC fechar enviar essa informaçao para o cliente, o cliente imprime um CLOSD e depois o servidor imprime um 2LATE

@diogoabnunes
Copy link
Collaborator

Se o tempo for menor do restante para a WC fechar, rejeita-se logo, caso contrário coloca-se numa fila e caso chegue a vez dele já passar da hora manda-se 2LATE (ou quando fechar a WC manda a todos os que estão na fila)

@Ca-moes
Copy link
Owner Author

Ca-moes commented May 7, 2020

@diogoabnunes

Se o tempo for menor do restante para a WC fechar, rejeita-se logo

Estás a falar do tempo de uso? não entendi

caso contrário coloca-se numa fila e caso chegue a vez dele já passar da hora manda-se 2LATE (ou quando fechar a WC manda a todos os que estão na fila)

Assim que estiver na fila quer dizer que servidor manda a flag RECVD, nesta altura ele já está dentro da loja e então terá de ter um lugar, demore o tempo que demorar, acho que não podemos dar 2LATE para estes, apenas os pedidos que chegam depois de o WC fechar. Ou seja,

  • antes de o WC fechar, no 1º ciclo while, terá de aceitar todos os pedidos ao criar threads, mesmo que o WC feche entretanto, os pedidos que têm threads de servidos criadas serão atendidos.
  • depois de fechar, no 2º ciclo while, aqui dará 2LATE a todos os novos pedidos.

se a WC fechar entretanto já nao vai atribuir mais,ou seja, esses pedidos todos vao ser 2LATE certo?

@filipeeteixeira
acho que também se aplica isto relativamente à tua mensagem

se a WC fechar entretanto já nao vai atribuir mais,ou seja, esses pedidos todos vao ser 2LATE certo?

@diogoabnunes
Copy link
Collaborator

Estás a falar do tempo de uso? não entendi

Estava a pensar mal, mas sendo assim pode haver quem entre e utilize a casa de banho mesmo depois de ela ter fechado, correto? (Para quem já estava na fila na hora de fecho)

@Ca-moes
Copy link
Owner Author

Ca-moes commented May 9, 2020

Yes, a casa de banho pode estar fechada (não são criadas threads novas no server) e podem haver threads server a tratar de um pedido

@Ca-moes Ca-moes merged commit 39e9b3d into master May 9, 2020
@Ca-moes Ca-moes deleted the 2LATE_CLOSD_fix branch May 9, 2020 10:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Qn Programa servidor
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Q2 - 2LATE & CLOSD
3 participants