status_t BnMediaLogService::onTransact(
    uint32_t code, const Parcel& data, Parcel* reply, uint32_t flags)
{
    switch (code) {

    case REGISTER_WRITER: {
        CHECK_INTERFACE(IMediaLogService, data, reply);
        sp<IMemory> shared = interface_cast<IMemory>(data.readStrongBinder());
        size_t size = (size_t) data.readInt32();
        const char *name = data.readCString();
        registerWriter(shared, size, name);
        return NO_ERROR;
    }

    case UNREGISTER_WRITER: {
        CHECK_INTERFACE(IMediaLogService, data, reply);
        sp<IMemory> shared = interface_cast<IMemory>(data.readStrongBinder());
        unregisterWriter(shared);
        return NO_ERROR;
    }

    default:
        return BBinder::onTransact(code, data, reply, flags);
    }
}
Beispiel #2
0
void Logger::registerWriter(Logger::Type type, const std::string& param )
{
  switch( type )
  {
  case consolelog:
  {
    auto wr = ptr_make<ConsoleLogWriter>();
    registerWriter( "__console", wr.as<LogWriter>() );
  }
  break;

  case filelog:
  {
    vfs::Directory workdir( param );
    vfs::Path fullname = workdir/"stdout.txt";
    auto wr = ptr_make<FileLogWriter>( fullname.toString() );
    registerWriter( "__log", wr.as<LogWriter>() );
  }
  break;

  case count: break;
  }
}