194afecf4b6f437b3ee9a076242402e421c6c07a6Mike Lockwood/* 294afecf4b6f437b3ee9a076242402e421c6c07a6Mike Lockwood * Copyright (C) 2009 The Android Open Source Project 394afecf4b6f437b3ee9a076242402e421c6c07a6Mike Lockwood * 494afecf4b6f437b3ee9a076242402e421c6c07a6Mike Lockwood * Licensed under the Apache License, Version 2.0 (the "License"); 594afecf4b6f437b3ee9a076242402e421c6c07a6Mike Lockwood * you may not use this file except in compliance with the License. 694afecf4b6f437b3ee9a076242402e421c6c07a6Mike Lockwood * You may obtain a copy of the License at 794afecf4b6f437b3ee9a076242402e421c6c07a6Mike Lockwood * 894afecf4b6f437b3ee9a076242402e421c6c07a6Mike Lockwood * http://www.apache.org/licenses/LICENSE-2.0 994afecf4b6f437b3ee9a076242402e421c6c07a6Mike Lockwood * 1094afecf4b6f437b3ee9a076242402e421c6c07a6Mike Lockwood * Unless required by applicable law or agreed to in writing, software 1194afecf4b6f437b3ee9a076242402e421c6c07a6Mike Lockwood * distributed under the License is distributed on an "AS IS" BASIS, 1294afecf4b6f437b3ee9a076242402e421c6c07a6Mike Lockwood * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1394afecf4b6f437b3ee9a076242402e421c6c07a6Mike Lockwood * See the License for the specific language governing permissions and 1494afecf4b6f437b3ee9a076242402e421c6c07a6Mike Lockwood * limitations under the License. 1594afecf4b6f437b3ee9a076242402e421c6c07a6Mike Lockwood */ 1694afecf4b6f437b3ee9a076242402e421c6c07a6Mike Lockwood 1794afecf4b6f437b3ee9a076242402e421c6c07a6Mike Lockwood#include <stdio.h> 1894afecf4b6f437b3ee9a076242402e421c6c07a6Mike Lockwood#include <stdlib.h> 1994afecf4b6f437b3ee9a076242402e421c6c07a6Mike Lockwood#include <unistd.h> 2094afecf4b6f437b3ee9a076242402e421c6c07a6Mike Lockwood 2194afecf4b6f437b3ee9a076242402e421c6c07a6Mike Lockwood#include <cutils/properties.h> 2294afecf4b6f437b3ee9a076242402e421c6c07a6Mike Lockwood#include <cutils/sockets.h> 2394afecf4b6f437b3ee9a076242402e421c6c07a6Mike Lockwood 2494afecf4b6f437b3ee9a076242402e421c6c07a6Mike Lockwoodint main(int argc, char *argv[]) { 2594afecf4b6f437b3ee9a076242402e421c6c07a6Mike Lockwood char buffer[65536]; 2694afecf4b6f437b3ee9a076242402e421c6c07a6Mike Lockwood int i, s; 2794afecf4b6f437b3ee9a076242402e421c6c07a6Mike Lockwood 2894afecf4b6f437b3ee9a076242402e421c6c07a6Mike Lockwood /* start the dumpstate service */ 2994afecf4b6f437b3ee9a076242402e421c6c07a6Mike Lockwood property_set("ctl.start", "dumpstate"); 3094afecf4b6f437b3ee9a076242402e421c6c07a6Mike Lockwood 3194afecf4b6f437b3ee9a076242402e421c6c07a6Mike Lockwood /* socket will not be available until service starts */ 329fcca4ee1746774cc7a10f4257f4aa50e01ad46eGuang Zhu for (i = 0; i < 20; i++) { 3394afecf4b6f437b3ee9a076242402e421c6c07a6Mike Lockwood s = socket_local_client("dumpstate", 3494afecf4b6f437b3ee9a076242402e421c6c07a6Mike Lockwood ANDROID_SOCKET_NAMESPACE_RESERVED, 3594afecf4b6f437b3ee9a076242402e421c6c07a6Mike Lockwood SOCK_STREAM); 3694afecf4b6f437b3ee9a076242402e421c6c07a6Mike Lockwood if (s >= 0) 3794afecf4b6f437b3ee9a076242402e421c6c07a6Mike Lockwood break; 3894afecf4b6f437b3ee9a076242402e421c6c07a6Mike Lockwood /* try again in 1 second */ 3994afecf4b6f437b3ee9a076242402e421c6c07a6Mike Lockwood sleep(1); 4094afecf4b6f437b3ee9a076242402e421c6c07a6Mike Lockwood } 4194afecf4b6f437b3ee9a076242402e421c6c07a6Mike Lockwood 4294afecf4b6f437b3ee9a076242402e421c6c07a6Mike Lockwood if (s < 0) { 4394afecf4b6f437b3ee9a076242402e421c6c07a6Mike Lockwood fprintf(stderr, "Failed to connect to dumpstate service\n"); 4494afecf4b6f437b3ee9a076242402e421c6c07a6Mike Lockwood exit(1); 4594afecf4b6f437b3ee9a076242402e421c6c07a6Mike Lockwood } 4694afecf4b6f437b3ee9a076242402e421c6c07a6Mike Lockwood 4794afecf4b6f437b3ee9a076242402e421c6c07a6Mike Lockwood while (1) { 4894afecf4b6f437b3ee9a076242402e421c6c07a6Mike Lockwood int length = read(s, buffer, sizeof(buffer)); 4994afecf4b6f437b3ee9a076242402e421c6c07a6Mike Lockwood if (length <= 0) 5094afecf4b6f437b3ee9a076242402e421c6c07a6Mike Lockwood break; 5194afecf4b6f437b3ee9a076242402e421c6c07a6Mike Lockwood fwrite(buffer, 1, length, stdout); 5294afecf4b6f437b3ee9a076242402e421c6c07a6Mike Lockwood } 5394afecf4b6f437b3ee9a076242402e421c6c07a6Mike Lockwood 5494afecf4b6f437b3ee9a076242402e421c6c07a6Mike Lockwood close(s); 5594afecf4b6f437b3ee9a076242402e421c6c07a6Mike Lockwood return 0; 5694afecf4b6f437b3ee9a076242402e421c6c07a6Mike Lockwood} 57