1ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall/* 2ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall* Copyright (C) 2011 The Android Open Source Project 3ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall* 4ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall* Licensed under the Apache License, Version 2.0 (the "License"); 5ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall* you may not use this file except in compliance with the License. 6ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall* You may obtain a copy of the License at 7ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall* 8ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall* http://www.apache.org/licenses/LICENSE-2.0 9ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall* 10ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall* Unless required by applicable law or agreed to in writing, software 11ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall* distributed under the License is distributed on an "AS IS" BASIS, 12ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall* See the License for the specific language governing permissions and 14ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall* limitations under the License. 15ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall*/ 16ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall#include <stdio.h> 17ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall#include <stdlib.h> 18ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall#include <unistd.h> 19ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall#include <string.h> 20ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall#include "codec_defs.h" 21ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall#include "RenderingThread.h" 22ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall#include "TcpStream.h" 23ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall#ifndef _WIN32 24ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall#include "UnixStream.h" 25ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall#endif 26ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall 27ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall 28ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hallint main(int argc, char **argv) 29ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall{ 30ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall#ifdef _WIN32 31ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall TcpStream *socket = new TcpStream(); 32ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall 33ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall if (socket->listen(CODEC_SERVER_PORT) < 0) { 34ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall perror("listen"); 35ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall exit(1); 36ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall } 37ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall#else 38ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall UnixStream *socket = new UnixStream(); 39ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall 40ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall if (socket->listen(CODEC_SERVER_PORT) < 0) { 41ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall perror("listen"); 42ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall exit(1); 43ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall } 44ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall#endif 45ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall 46ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall printf("waiting for client connection on port: %d\n", CODEC_SERVER_PORT); 47ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall while (1) { 48ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall // wait for client connection 49ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall SocketStream *glStream = socket->accept(); 50ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall if (glStream == NULL) { 51ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall printf("failed to get client.. aborting\n"); 52ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall exit(3); 53ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall } 54ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall printf("Got client connection, creating a rendering thread;\n"); 55ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall // create a thread to handle this connection 56ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall RenderingThread *rt = new RenderingThread(glStream); 57ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall rt->start(); 58ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall } 59ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall 60ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall return 0; 61ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall} 62ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall 63ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall 64