// InStream::ReceiveHandler implementation virtual void onReceive(const void* data, int size) { std::string key = remoteHost.keyStr(); if (os.isValid()) { // -> already initialized std::string s((char*) data, size); printf("Received %d bytes from %s: %s\n", size, key.c_str(), s.c_str()); server.broadcastMessage(data, size); } else { // -> connect outstream if (size == sizeof(ServiceId)) { ServiceId service = *((ServiceId*) data); printf("Received client callback service id %d from %s\n", service, key.c_str()); os = remoteHost.connect(service); ready = true; sendMessage("HELLO", 6); } else { // invalid init message printf("Received invalid callback service id from %s\n", key.c_str()); is.reset(); server.removeConnection(this); delete this; return; } } is.read(this); }
void sendMessage(const void* data, int size) { if (os.isValid() && ready) { // printf("sendMessage()\n"); ready = false; os.write(data, size, this); } else printf("sendMessage(): %s not ready!\n", remoteHost.keyStr().c_str()); }
void printHosts() { printf("Hosts:\n"); for (Host::Iterator it = ep.hosts(); it.hasNext(); ) { Host h = it.next(); printf(" %s", h.keyStr().c_str()); Address addr = h.address(); if (addr.isValid()) printf(" - %s", addr.toString().c_str()); printf("\n"); } }
std::string getName() const { return remoteHost.keyStr(); }