| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- /*
- * PolyClient.cpp
- * Poly
- *
- * Created by Ivan Safrin on 3/6/09.
- * Copyright 2009 __MyCompanyName__. All rights reserved.
- *
- */
- #include "PolyClient.h"
- using namespace Polycode;
- Client::Client(unsigned int port, int rate) : Peer(port) {
- rateTimer = new Timer(true, 1000/rate);
- rateTimer->addEventListener(this, Timer::EVENT_TRIGGER);
- connected = false;
- DummyData *dummy = new DummyData;
- dummy->dummy = 30;
- clientID = -1;
- setPersistentData((void*)dummy, sizeof(DummyData));
- }
- Client::~Client() {
- }
- void Client::handleEvent(Event *event) {
- if(connected) {
- if(event->getDispatcher() == rateTimer) {
- sendData(serverAddress, (char*)data, dataSize, PACKET_TYPE_CLIENT_DATA);
- }
- }
- Peer::handleEvent(event);
- }
- unsigned int Client::getClientID() {
- return clientID;
- }
- void Client::sendReliableDataToServer(char *data, unsigned int size, unsigned short type) {
- sendReliableData(serverAddress, data, size, type);
- }
- void Client::handlePacket(Packet *packet, PeerConnection *connection) {
- if(connection->address == serverAddress) {
- switch(packet->header.type) {
- case PACKET_TYPE_SETCLIENT_ID: {
- clientID = (unsigned short)*packet->data;
- ClientEvent *newEvent = new ClientEvent();
- dispatchEvent(newEvent, ClientEvent::EVENT_CLIENT_READY);
- sendReliableData(serverAddress, (char*)&clientID, sizeof(unsigned short), PACKET_TYPE_CLIENT_READY);
- } break;
- default: {
- ClientEvent *newEvent = new ClientEvent();
- newEvent->dataSize = packet->header.size;
- newEvent->dataType = packet->header.type;
- memcpy(newEvent->data, packet->data, newEvent->dataSize);
- dispatchEvent(newEvent, ClientEvent::EVENT_SERVER_DATA);
- }
- break;
- }
- }
- }
- void Client::setPersistentData(void *data, unsigned int size) {
- this->data = data;
- dataSize = size;
- }
- void Client::connect(string ipAddress, unsigned int port) {
- serverAddress.setAddress(ipAddress, port);
- connected = true;
- }
- void Client::updatePeer() {
-
- }
|