---
name: "NetSDS::Feature"
section: "3pm"
platform: "linux"
package: "libnetsds-perl"
version: "1.301-4"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/NetSDS::Feature"
---

# NetSDS::Feature(3pm)

abstract application feature

## NAME

NetSDS::Feature - abstract application feature

## SYNOPSIS

```
        package NetSDS::Feature::DBI;
        use DBI;
        use base 'NetSDS::Feature';
        sub init {
                my ($self) = @_;
                my $dsn = $self->conf->{dsn};
                my $user = $self->conf->{user};
                my $passwd = $self->conf->{passwd};
                $self->{dbconn} = DBI->connect($dsn, $user, $passwd);
        }
        # Sample method - DBI::do proxy
        sub do {
                my $self = shift @_;
                return $self->{dbconn}->do(@_);
        }
        1;
```

## DESCRIPTION

Application `"features"` are Perl5 packages with unified API for easy integration of some functionality into NetSDS applications infrastructure.

`"NetSDS::Feature"` module contains superclass for application features providing the following common feature functionality:

```
        * class construction
        * initialization stub
        * logging
```

## CLASS METHODS

- **create($app, $conf)** - feature constructor

  - **init()** - feature initialization

  This method should be rewritten with feature functionality implementation. It's possibly to use application and configuration handlers at this time.

  Example:

  ```
          sub init {
                  my ($self) = @_;
                  $self->{answer} = $self->conf->{answer} || '42';
                  my $pid = $self->app->pid();
                  if ($self->app->daemon()) {
                          $self->log("info", "Seems we are in a daemon mode");
                  }
          }
  ```

## OBJECT METHODS

- **app()** - application object

  This method allows to use application methods and properties.

  ```
          print "Feature included from app: " . $self->app->name;
  ```

- **conf()** - feature configuration

  This method provides access to feature configuration.

- **log($level, $message)** - implements logging

  Example:

  ```
          # Write log message
          $self->log("info", "Application does something interesting.");
  ```

  See NetSDS::Logger documentation for details.

## EXAMPLES

See `"samples/app_features.pl"` script.

## SEE ALSO

- •

  NetSDS::App

## AUTHOR

Michael Bochkaryov \<misha@rattler.kiev.ua\>

## LICENSE

Copyright (C) 2008-2009 Net Style Ltd.

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
