Dokumentacja klasy Communication

#include <communication.h>

Diagram współpracy dla Communication:

Collaboration graph
[legenda]
Lista wszystkich składowych.

Sygnały

void connected ()
void unableConnect ()
void newUser (QHostAddress user_ip, QString user_nick)
void leaveUser (QHostAddress user_ip)
void recvPMsg (QHostAddress user_ip, QString msg)
void recvBMsg (QHostAddress user_ip, QString msg)
void fileRequest (QHostAddress user_ip, QString file_name, quint32 size)
void acceptSendFile (QHostAddress user_ip, QString file_name)
void refuseSendFile (QHostAddress user_ip, QString file_name)
void transferEnd (QHostAddress user_ip, bool ok)
void fileProgress (int perc)
void pong (QHostAddress user_ip, qint32 time)
void invalidNick ()

Metody publiczne

 Communication ()
 ~Communication ()
void welcome (const QString &nick, QHostAddress broadcast, quint16 port=2310)
void bye ()
void sendPMsg (const QHostAddress &user_ip, const QString &msg)
void sendBMsg (const QString &msg)
void sendFile (QHostAddress user_ip, QString file_name)
void checkPing (QHostAddress user_ip)
void acceptFileRequest (QHostAddress user_ip, const QString &path)
void refuseFileRequest (QHostAddress user_ip)
void cancelTranfer ()

Metody chronione

void connectOk (const QHostAddress &ip)
void connectFail ()
void checkConnection (const QString &place)
void sendPacket (QHostAddress ip, LanPacket packet, bool control=false)
void servicePacket (LanPacket &packet, QHostAddress ip)
void removeUser (QHostAddress user_ip)
void removeQueue (QHostAddress user_ip, LanPacket::PacketType pack_type, QString md5)

Atrybuty chronione

QString user_nick
QHostAddress broadcast
QList< QHostAddress > ip_list
QUdpSocket read_socket
bool is_connect
bool connecting
QHash< QHostAddress, QTime > ping_list
QHash< QHostAddress, SendFileTimesend_file_list
QHash< QHostAddress, RecvFileSizeincoming_file
QList< QueueItempacket_queue
QTimer * packet_timer
QTimer * ping_timer
QTimer * connect_timer
quint32 rand_num
QHostAddress my_ip
quint16 main_port
bool is_transfer
FileTransferfile_transfer

Sloty prywatne

void readData ()
void packetTimer ()
void sysPingTimer ()
void connectTimeOut ()
void fileTransferEnd (bool ok)
void fileTransferProgres (int perc)

Komponenty

struct  QueueItem
struct  RecvFileSize
struct  SendFileTime

Opis szczegółowy

Klasa odpowiedzialna za komunikacje. Wysyła/odbiera komunikaty od innych użytkowników, pośredniczy też w komunikacji plików.

Definicja w linii 146 pliku communication.h.


Dokumentacja konstruktora i destruktora

Communication::Communication  ) 
 

Konstruktor klasy.

Definicja w linii 322 pliku communication.cpp.

Odwołuje się do connect_timer, connecting, file_transfer, incoming_file, ip_list, is_connect, is_transfer, packet_queue, packet_timer, packetTimer(), ping_list, ping_timer, rand_num, read_socket, readData() i sysPingTimer().

Communication::~Communication  ) 
 

Destruktor klasy.

Definicja w linii 347 pliku communication.cpp.

Odwołuje się do bye(), file_transfer, is_connect, packet_timer i ping_timer.

Oto graf wywołań dla tej funkcji:


Dokumentacja funkcji składowych

void Communication::acceptFileRequest QHostAddress  user_ip,
const QString &  path
 

Zgoda na odebranie pliku. Wysyła do użytkownika zgodę na przyjęcie pliku. Metoda może być wywołana tylko w odpowiedzi na sygnał fileRequest

Zobacz również:
fileRequest
Parametry:
user_ip adres adresata, od którego nastąpiło żądnie odebrania pliku
path ścieżka do zapisania pliku
Wyjątki:
Exeptions nie połączony, nie było żadania wysłania od usera

Definicja w linii 468 pliku communication.cpp.

Odwołuje się do checkConnection(), FILE_PORT, file_transfer, LanPacket::FileOk, LanPacket::FileRefuse, fileTransferEnd(), fileTransferProgres(), MD5Hash::hashData(), incoming_file, is_transfer, FileTransfer::receiveFile(), sendPacket() i transferEnd().

Odwołania w GUIMainWindow::incomingFile().

Oto graf wywołań dla tej funkcji:

void Communication::acceptSendFile QHostAddress  user_ip,
QString  file_name
[signal]
 

Sygnał zgody na przyjęcie pliku. Sygnał jest generowany w momencie gdy zdalny użytkownik zgodzi się na przyjęcie od nas pliku. Jest to odpowiedź na metodę sendFile

Zobacz również:
sendFile
Parametry:
user_ip adres ip nadawcy
file_name nazwa pliku

void Communication::bye  ) 
 

Zamyka połączenie. Wysyła pakiet "bye" do wszystkich użytkowników w sieci

Wyjątki:
Exeptions rozłączony

Definicja w linii 397 pliku communication.cpp.

Odwołuje się do broadcast, LanPacket::Bye, connect_timer, connecting, connectTimeOut(), file_transfer, FileTransfer::getIp(), incoming_file, ip_list, is_connect, is_transfer, my_ip, packet_queue, packet_timer, ping_timer, read_socket, send_file_list, sendPacket(), transferEnd() i user_nick.

Odwołania w GUIMainWindow::closeEvent(), connectFail(), GUIMainWindow::disconnectChat() i ~Communication().

Oto graf wywołań dla tej funkcji:

void Communication::cancelTranfer  ) 
 

Anuluje przesyłanie pliku. Przerywa transfer pliku

Wyjątki:
Exeptions nie połączony, plik nie jest przesyłany

Definicja w linii 506 pliku communication.cpp.

Odwołuje się do FileTransfer::cancelTransfer(), file_transfer i is_transfer.

Odwołania w GUIMainWindow::cancelFileTransfer().

Oto graf wywołań dla tej funkcji:

void Communication::checkConnection const QString &  place  )  [protected]
 

Sprawdza czy jesteśmy połączeni. Metoda sprawdza czy jesteśmy połączeni, jeśli nie rzuca wyjątkiem

Parametry:
place miejsce z którego sprawdzamy połączenie
Wyjątki:
Exeptions nie jesteśmy połączeni

Definicja w linii 548 pliku communication.cpp.

Odwołuje się do is_connect.

Odwołania w acceptFileRequest(), checkPing(), refuseFileRequest(), sendBMsg(), sendFile() i sendPMsg().

void Communication::checkPing QHostAddress  user_ip  ) 
 

Sprawdza pinga. Wysyła pakiet "ping" i czeka na odpowiedź pong, po czym zwraca czas między "ping" a "pong", po otrzymaniu "pong", generowany jest sygnał pong

Zobacz również:
pong
Parametry:
user_ip adres ip adresata
Wyjątki:
Exeptions nie połączony

Definicja w linii 457 pliku communication.cpp.

Odwołuje się do checkConnection(), LanPacket::Ping, ping_list i sendPacket().

Odwołania w GUIMainWindow::checkPing().

Oto graf wywołań dla tej funkcji:

void Communication::connected  )  [signal]
 

Sygnał połączenia. Sygnał jest generowany w momencie gdy użytkownik odbierze "swój" pakiet welcome. Między wywołaniem metody welcome a tym sygnałem, nie można wywoływać żadnych metod oprócz bye.

Zobacz również:
welcome

Odwołania w connectOk().

void Communication::connectFail  )  [protected]
 

Metoda obługi błędnego połączenia. Metoda jest wywoływana w momencie gdy po określonym czasie nie otrzymamy "naszego pakietu" welcome, niszczy timer oraz emituje sygnał błędnego połączenia

Zobacz również:
connectFail

Definicja w linii 540 pliku communication.cpp.

Odwołuje się do bye() i unableConnect().

Odwołania w connectTimeOut().

Oto graf wywołań dla tej funkcji:

void Communication::connectOk const QHostAddress &  ip  )  [protected]
 

Metoda obługi poprawnego połączenia. Metoda jest wywoływana w momencie otrzymania "naszego pakietu" welcome, ustawia flagi połączenia, niszczy timer połączenia oraz emituje sygnał poprawnego połączenia.

Parametry:
ip nasz adres ip
Zobacz również:
connected

Definicja w linii 523 pliku communication.cpp.

Odwołuje się do connect_timer, connected(), connecting, connectTimeOut(), is_connect, my_ip, PACKET_TIME, packet_timer, PING_TIME i ping_timer.

Odwołania w servicePacket().

void Communication::connectTimeOut  )  [private, slot]
 

Slot do połączenia. Wywoływany gdy przekroczony zostanie czas połączenia, emituje sygnał błędnego połączenia

Zobacz również:
connectFail

Definicja w linii 860 pliku communication.cpp.

Odwołuje się do connectFail() i is_connect.

Odwołania w bye() i connectOk().

void Communication::fileProgress int  perc  )  [signal]
 

Sygnał transferu pliku. Sygnał jest generowany w momencie zmiany postępu przesyłanego pliku.

Parametry:
perc ilosc procent przeslanego pliku

Odwołania w fileTransferProgres().

void Communication::fileRequest QHostAddress  user_ip,
QString  file_name,
quint32  size
[signal]
 

Sygnał żądania odebrania pliku. Sygnał jest generowany w momencie gdy użytkownik chce nam wysłać plik. W odpowiedzi na ten sygnał należy wywołać metodę acceptFileRequest w celu potwierdzenia odebrania pliku, lub fileRequest w celu odmowy przyjęcia pliku.

Zobacz również:
acceptFileRequest

fileRequest

Parametry:
user_ip adres ip nadawcy
file_name nazwa pliku
size rozmiar pliku

void Communication::fileTransferEnd bool  ok  )  [private, slot]
 

Slot do końca transferu pliku. Wywoływany gdy klasa FileTransfer skończy wysyłanie/odbieranie plików

Parametry:
ok true - transfer zakończony powodzeniem, false - niepowodzenie

Definicja w linii 866 pliku communication.cpp.

Odwołuje się do file_transfer, FileTransfer::getIp() i transferEnd().

Odwołania w acceptFileRequest().

void Communication::fileTransferProgres int  perc  )  [private, slot]
 

Slot do przesyłu pliku. Wywoływany gdy klasa FileTransfer wyśle/odbierze kawałek pliku

Parametry:
perc ilość procent przesłanego pliku

Definicja w linii 874 pliku communication.cpp.

Odwołuje się do fileProgress().

Odwołania w acceptFileRequest().

void Communication::invalidNick  )  [signal]
 

Sygnał błędnego nicka. Sygnał jest generowany w momencie gdy w sieci znajduje się już użytkownik o tym samym nicku co nasz. Przed wygenerowaniem sygnału, program jest rozłączany.

void Communication::leaveUser QHostAddress  user_ip  )  [signal]
 

Sygnał odejścia użytkownika. Sygnał jest generowany w momencie odebrania pakietu "bye", lub gdy użytkownik nie odpowiada na pakiety "ping"

Parametry:
user_ip adres ip użytkownika

void Communication::newUser QHostAddress  user_ip,
QString  user_nick
[signal]
 

Sygnał przyjścia nowego użytkownika. Sygnał jest generowany w momencie gdy zostanie odebrany pakiet "welcome" od jakiegoś użytkownika

Parametry:
user_ip adres ip użytkownika
user_nick nick użytkownika

Odwołania w servicePacket().

void Communication::packetTimer  )  [private, slot]
 

Slot do oblugi timera kolejki pakietów. Wywoływany co określony czas sprawdza które pakiety należy wysłać ponownie, lub którego użytkownika należy wyrzucić z listy bo nie odpowiedział na kilka powtórek pakietu

Definicja w linii 801 pliku communication.cpp.

Odwołuje się do MAX_PING_TIME, ping_list i pong().

Odwołania w Communication().

void Communication::pong QHostAddress  user_ip,
qint32  time
[signal]
 

Sygnał odpowiedzi na ping. Sygnał jest generowany w momencie otrzymania pakietu pong ktory został wysłany w odpowiedzi użytkownika na pakiet ping.

Parametry:
user_ip adres ip nadawcy
time czas między wysłaniem ping a otrzymaniem pong, lub -1 gdy użytkownik nie odpowie

Odwołania w packetTimer().

void Communication::readData  )  [private, slot]
 

Slot do oblugi odczytowania przychodzących danych. Odczytuje pakiet, weryfikuje do, oraz wywołuje metodę obługi pakietu

Zobacz również:
servicePacket

Definicja w linii 767 pliku communication.cpp.

Odwołuje się do connecting, is_connect, my_ip, read_socket i servicePacket().

Odwołania w Communication().

void Communication::recvBMsg QHostAddress  user_ip,
QString  msg
[signal]
 

Sygnał odebrania wiadomości publicznej. Sygnał jest generowany w momencie odebrania wiadomości publicznej od użytkownika.

Parametry:
user_ip adres ip nadawcy
msg wiadomość

void Communication::recvPMsg QHostAddress  user_ip,
QString  msg
[signal]
 

Sygnał odebrania wiadomości prywatnej. Sygnał jest generowany w momencie odebrania wiadomości prywatnej od użytkownika.

Parametry:
user_ip adres ip nadawcy
msg wiadomość

void Communication::refuseFileRequest QHostAddress  user_ip  ) 
 

Odrzucenie pliku. Wysyła do użytkownika odmowę przyjęcia pliku. Metoda może być wywołana tylko w odpowiedzi na sygnał fileRequest

Zobacz również:
fileRequest
Parametry:
user_ip adres adresata, od którego nastąpiło żądnie odebrania pliku
Wyjątki:
Exeptions nie połączony, nie było żadania wysłania od usera

Definicja w linii 495 pliku communication.cpp.

Odwołuje się do checkConnection(), LanPacket::FileRefuse, MD5Hash::hashData(), incoming_file i sendPacket().

Odwołania w GUIMainWindow::incomingFile().

Oto graf wywołań dla tej funkcji:

void Communication::refuseSendFile QHostAddress  user_ip,
QString  file_name
[signal]
 

Sygnał odmowy przyjęcia pliku. Sygnał jest generowany w momencie gdy zdalny użytkownik nie zgodzi się na przyjęcie od nas pliku. Jest to odpowiedź na metodę sendFile

Zobacz również:
sendFile
Parametry:
user_ip adres ip nadawcy
file_name nazwa pliku

Odwołania w removeUser().

void Communication::removeQueue QHostAddress  user_ip,
LanPacket::PacketType  pack_type,
QString  md5
[protected]
 

Usuwa pakiet z kolejki. Usuwa pakiet z kolejki weryfikacji, metoda jest wywoływana w momecie otrzymania potwierdzenia otrzymania danego pakietu

Parametry:
user_ip adres ip użytkownika
pack_type typ pakietu
md5 suma md5, lub pusty QString

Definicja w linii 748 pliku communication.cpp.

Odwołuje się do packet_queue.

void Communication::removeUser QHostAddress  user_ip  )  [protected]
 

Usuwa użytkownika. Usuwa użytkownika z wszelkich list oraz gdy to potrzebne generuje sygnały np. że user odmówił odebrania pliku, lub nie odpowiedział na pinga

Parametry:
user_ip adres ip użytkownika do usunięcia

Definicja w linii 725 pliku communication.cpp.

Odwołuje się do ip_list, refuseSendFile() i send_file_list.

void Communication::sendBMsg const QString &  msg  ) 
 

Wysyła wiadomość broadcast. Wiadomość jest wysyłana do wszystkich (broadcast)

Parametry:
msg wiadomość
Wyjątki:
Exeptions nie połączony

Definicja w linii 435 pliku communication.cpp.

Odwołuje się do LanPacket::Bmsg, broadcast, checkConnection() i sendPacket().

Odwołania w GUIMainWindow::sendMsg().

Oto graf wywołań dla tej funkcji:

void Communication::sendFile QHostAddress  user_ip,
QString  file_name
 

Wysyła plik. Wysyła rządanie przyjęcia pliku do usera, gdy user się zgodzi generowany jest sygnał acceptSendFile, lub jeśli się nie zgodzi refuseSendFile

Zobacz również:
acceptSendFile

refuseSendFile

Parametry:
user_ip ip adresata
file_name nazwa pliku do wysłania
Wyjątki:
Exeptions nie połączony, aktualnie jest przesyłany plik z lub do usera

Definicja w linii 441 pliku communication.cpp.

Odwołuje się do checkConnection(), LanPacket::FileReq, is_transfer, Communication::SendFileTime::name, send_file_list, sendPacket() i Communication::SendFileTime::time.

Odwołania w GUIMainWindow::sendFile().

Oto graf wywołań dla tej funkcji:

void Communication::sendPacket QHostAddress  ip,
LanPacket  packet,
bool  control = false
[protected]
 

Wyślij pakiet. Wysyła pakiet do użytkownika o adresie ip, gdy control=true wrzuca pakiet do kolejki pakietów

Parametry:
ip id adresata (może być broadcast)
packet pakiet do wysłania
control jeśli dorzucić do kolejki pakietów to true

Definicja w linii 554 pliku communication.cpp.

Odwołuje się do LanPacket::isValid().

Odwołania w acceptFileRequest(), bye(), checkPing(), refuseFileRequest(), sendBMsg(), sendFile(), sendPMsg() i sysPingTimer().

Oto graf wywołań dla tej funkcji:

void Communication::sendPMsg const QHostAddress &  user_ip,
const QString &  msg
 

Wysyła prywatną wiadomość. Wiadomość jest wysyłana tylko do jednego użytkownika (nie broadcast).

Parametry:
user_ip adres ip adresata
msg treść wiadomości
Wyjątki:
Exeptions nie połączony

Definicja w linii 429 pliku communication.cpp.

Odwołuje się do checkConnection(), LanPacket::Pmsg i sendPacket().

Oto graf wywołań dla tej funkcji:

void Communication::servicePacket LanPacket packet,
QHostAddress  ip
[protected]
 

Obsłuż pakiet. Obługuje odebrany pakiet, w zależności od typu i zawartości podejmuje odpowiednie akcje

Parametry:
packet odebrany pakiet do obłużenia
ip adres nadawcy pakietu

Definicja w linii 591 pliku communication.cpp.

Odwołuje się do connecting, connectOk(), LanPacket::getFileSize(), LanPacket::getString(), LanPacket::getType(), ip_list, newUser(), rand_num, user_nick i LanPacket::Welcome.

Odwołania w readData().

Oto graf wywołań dla tej funkcji:

void Communication::sysPingTimer  )  [private, slot]
 

Slot do oblugi timera systemowego. Wywoływany co określony czas wysyła ping systemowy by sprawdzić czy wszyscy użytkownicy są dalej dostępni.

Definicja w linii 855 pliku communication.cpp.

Odwołuje się do broadcast, sendPacket() i LanPacket::SysPing.

Odwołania w Communication().

void Communication::transferEnd QHostAddress  user_ip,
bool  ok
[signal]
 

Sygnał zakończenia powodzeniem transferu pliku. Sygnał jest generowany w momencie gdy transfer pliku zakończy się powodzeniem.

Parametry:
user_ip adres ip
ok true - zakonczone powodzeniem

Odwołania w acceptFileRequest(), bye() i fileTransferEnd().

void Communication::unableConnect  )  [signal]
 

Sygnał błędu połączenia. Sygnał jest generowany w momencie gdy użytkownik nie odbierze "swójego" pakietu welcome w określnym czasie. Między wywołaniem metody welcome a tym sygnałem, nie można wywoływać żadnych metod oprócz bye.

Zobacz również:
welcome

Odwołania w connectFail().

void Communication::welcome const QString &  nick,
QHostAddress  broadcast,
quint16  port = 2310
 

Inicjuje połączenie. Wysyła pakiet "welcome" do wszystkich użytkowników w sieci.

Parametry:
nick nick usera
broadcast adres broadcast sieci lokalnej
port numer portu na którym działa lanChat
Wyjątki:
Exeptions gdy się łączy, jest już połączony

Definicja w linii 355 pliku communication.cpp.

Odwołuje się do connecting, incoming_file, ip_list, is_connect, main_port, my_ip, packet_queue, rand_num, read_socket i user_nick.

Odwołania w GUIMainWindow::connectChat().


Dokumentacja atrybutów składowych

QHostAddress Communication::broadcast [protected]
 

adres broadcast

Definicja w linii 383 pliku communication.h.

Odwołania w bye(), sendBMsg() i sysPingTimer().

QTimer* Communication::connect_timer [protected]
 

timer połączenia

Definicja w linii 394 pliku communication.h.

Odwołania w bye(), Communication() i connectOk().

bool Communication::connecting [protected]
 

znacznik, że jesteśmy w trakcie łączenia

Definicja w linii 387 pliku communication.h.

Odwołania w bye(), Communication(), connectOk(), readData(), servicePacket() i welcome().

FileTransfer* Communication::file_transfer [protected]
 

klasa do przesyłu plików

Definicja w linii 400 pliku communication.h.

Odwołania w acceptFileRequest(), bye(), cancelTranfer(), Communication(), fileTransferEnd() i ~Communication().

QHash<QHostAddress, RecvFileSize> Communication::incoming_file [protected]
 

lista odbranych żądań o przyjęcie pliku

Definicja w linii 390 pliku communication.h.

Odwołania w acceptFileRequest(), bye(), Communication(), refuseFileRequest() i welcome().

QList<QHostAddress> Communication::ip_list [protected]
 

lista adresów ip użytkowników w sieci

Definicja w linii 384 pliku communication.h.

Odwołania w bye(), Communication(), removeUser(), servicePacket() i welcome().

bool Communication::is_connect [protected]
 

znacznik czy jesteśmy połączeni

Definicja w linii 386 pliku communication.h.

Odwołania w bye(), checkConnection(), Communication(), connectOk(), connectTimeOut(), readData(), welcome() i ~Communication().

bool Communication::is_transfer [protected]
 

znacznik, że przesyłany jest aktualnie plik

Definicja w linii 399 pliku communication.h.

Odwołania w acceptFileRequest(), bye(), cancelTranfer(), Communication() i sendFile().

quint16 Communication::main_port [protected]
 

Definicja w linii 397 pliku communication.h.

Odwołania w welcome().

QHostAddress Communication::my_ip [protected]
 

nasz adres ip

Definicja w linii 396 pliku communication.h.

Odwołania w bye(), connectOk(), readData() i welcome().

QList<QueueItem> Communication::packet_queue [protected]
 

kolejka pakietów do weryfikacji/ponownego wysłania

Definicja w linii 391 pliku communication.h.

Odwołania w bye(), Communication(), removeQueue() i welcome().

QTimer* Communication::packet_timer [protected]
 

timer do weryfikacji/ponownego wysyłania pakietów

Definicja w linii 392 pliku communication.h.

Odwołania w bye(), Communication(), connectOk() i ~Communication().

QHash<QHostAddress, QTime> Communication::ping_list [protected]
 

lista wysłanych pingów które oczekują pongów

Definicja w linii 388 pliku communication.h.

Odwołania w checkPing(), Communication() i packetTimer().

QTimer* Communication::ping_timer [protected]
 

timer do wysyłania pingów systemowych

Definicja w linii 393 pliku communication.h.

Odwołania w bye(), Communication(), connectOk() i ~Communication().

quint32 Communication::rand_num [protected]
 

liczba losowa niezbędna do weryfikacji naszego pakietu welcome

Definicja w linii 395 pliku communication.h.

Odwołania w Communication(), servicePacket() i welcome().

QUdpSocket Communication::read_socket [protected]
 

socket służący do odbioru pakietów

Definicja w linii 385 pliku communication.h.

Odwołania w bye(), Communication(), readData() i welcome().

QHash<QHostAddress, SendFileTime> Communication::send_file_list [protected]
 

lista wysłanych żądań o przyjęcie pliku

Definicja w linii 389 pliku communication.h.

Odwołania w bye(), removeUser() i sendFile().

QString Communication::user_nick [protected]
 

nick użytkownika

Definicja w linii 382 pliku communication.h.

Odwołania w bye(), servicePacket() i welcome().


Dokumentacja dla tej klasy została wygenerowana z plików:
Wygenerowano Sun Jun 11 12:55:35 2006 dla lanChat programem  doxygen 1.4.6