Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
Caco Project
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
bfsc19
Caco Project
Commits
ff6de159
Commit
ff6de159
authored
2 years ago
by
Nico Ramos
Browse files
Options
Downloads
Patches
Plain Diff
ahhhhhh
parent
777d39ca
No related branches found
No related tags found
No related merge requests found
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
headers/macros.h
+1
-1
1 addition, 1 deletion
headers/macros.h
headers/server.h
+46
-17
46 additions, 17 deletions
headers/server.h
with
47 additions
and
18 deletions
headers/macros.h
+
1
−
1
View file @
ff6de159
...
...
@@ -5,7 +5,7 @@
#define UI unsigned int
//tamanho da janela
#define TAM_JANELA
1
#define TAM_JANELA
2
// Macro que cria uma sequencia com o 1 deslocado "des" posicoes a direita
#define MASKR(des) (1 << des)
...
...
This diff is collapsed.
Click to expand it.
headers/server.h
+
46
−
17
View file @
ff6de159
...
...
@@ -33,6 +33,7 @@ class server {
private:
// --------- Dados ---------- //
int
soquete
;
int
tipoReceivingFrames
;
conexao
*
socket
;
...
...
@@ -54,6 +55,7 @@ private:
int
receive_file_data
(
string
fileName
);
bool
verify_crc8
(
frame
*
f
);
bool
verify_seq
(
int
seq
,
int
lastSeq
);
queue
<
frame
*>
receive_frames_window
(
int
lastSeq
);
public:
// ------- Construtores ------ //
...
...
@@ -376,11 +378,11 @@ int server::receive_valid_frame(frame **f) {
return
1
;
}
queue
<
frame
s
*>
server
::
receive_frames_window
(
int
lastSeq
)
queue
<
frame
*>
server
::
receive_frames_window
(
int
lastSeq
)
{
queue
<
frame
s
*>
frames_queue
;
queue
<
frame
*>
frames_queue
;
frame
*
f
;
retries
=
0
;
int
retries
=
0
;
do
{
f
=
receive_frame_socket
();
...
...
@@ -390,26 +392,28 @@ queue<frames *> server::receive_frames_window(int lastSeq)
int
tipo
=
f
->
get_tipo
();
// Adiciona o frame de fim de transmissao
if
(
tipo
==
FIMT
)
{
frames_queue
.
push
(
f
);
return
frames_queue
;
}
// Primeiro frame a ser recebido, seta o tipo
if
(
lastSeq
==
-
1
)
{
// Ignora os frames perdidos na linha
if
(
(
tipo
!=
MIDIA
||
tipo
!=
TEXTO
)
&&
f
->
get_seq
()
!=
0
)
{
continue
;}
if
(
(
tipo
!=
MIDIA
&&
tipo
!=
TEXTO
)
||
f
->
get_seq
()
!=
0
)
{
continue
;}
tipoReceivingFrames
=
f
->
get_tipo
();
frames_queue
.
push
(
f
);
lastSeq
=
0
;
retries
=
0
;
continue
;
}
// Adiciona o frame de fim de transmissao
if
(
f
->
get_tipo
()
==
FIMT
)
{
frames_queue
.
push
(
f
);
return
frames_queue
;
continue
;
}
// Ignora se o frame nao for do tipo midia e esteja recebendo midia
if
(
f
->
get_
tipo
()
==
MIDIA
&&
tipoReceivingFrames
==
MIDIA
)
if
(
tipo
==
MIDIA
&&
tipoReceivingFrames
==
MIDIA
)
{
// Ignora se for um frame do tipo midia que nao e o segundo da sequencia
if
(
lastSeq
!=
0
||
(
TAM_JANELA
>
1
&&
f
->
get_seq
()
!=
1
))
{
continue
;
}
...
...
@@ -423,20 +427,22 @@ queue<frames *> server::receive_frames_window(int lastSeq)
}
// Recebe os frames de dados de um arquivo
if
(
tipoReceivingFrames
==
DADOS
&&
f
->
get_
tipo
()
==
DADOS
)
if
(
tipoReceivingFrames
==
DADOS
&&
tipo
==
DADOS
)
{
if
(
!
verify_seq
(
f
->
get_seq
(),
lastSeq
)
)
{
continue
;
}
frames_queue
.
push
(
f
);
retries
=
0
;
lastSeq
=
f
->
get_seq
();
continue
;
}
// Recebe os frames de uma mensagem
if
(
tipoReceivingFrames
==
TEXTO
&&
f
->
get_
tipo
()
==
TEXTO
)
if
(
tipoReceivingFrames
==
TEXTO
&&
tipo
==
TEXTO
)
{
if
(
!
verify_seq
(
f
->
get_seq
(),
lastSeq
)
)
{
continue
;
}
frames_queue
.
push
(
f
);
retries
=
0
;
lastSeq
=
f
->
get_seq
();
continue
;
}
...
...
@@ -449,10 +455,31 @@ void server::start_receveing_message() {
int
continueTransmission
=
1
;
cout
<<
"Recebendo frames
\n
"
;
frame
*
f
;
lastSeq
=
-
1
;
int
lastSeq
=
-
1
;
do
{
queue
<
frames
*>
frames
=
receive_frames_window
(
lastSeq
);
queue
<
frame
*>
frames
=
receive_frames_window
(
lastSeq
);
cout
<<
"Quantidade de frames: "
<<
frames
.
size
()
<<
"
\n
"
;
while
(
!
frames
.
empty
()
)
{
cout
<<
"Frame recebido:
\n
"
;
frame
*
f
=
frames
.
front
();
frames
.
pop
();
f
->
imprime
(
HEX
);
cout
<<
"
\n
"
;
int
tipo
=
f
->
get_tipo
();
switch
(
tipo
)
{
case
FIMT
:
continueTransmission
=
0
;
case
TEXTO
:
lastSeq
=
f
->
get_seq
();
}
}
cout
<<
"Recebeu todos os frames de uma janela
\n
"
;
// if (!receive_valid_frame(&f)) { return; }
// if (!f) { return; }
...
...
@@ -474,6 +501,8 @@ void server::start_receveing_message() {
// }
//
}
while
(
continueTransmission
);
cout
<<
"Encerrou a transmissao
\n
"
;
}
// ------------------------------- PUBLIC --------------------------------- //
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment