---
name: "core"
section: "3tcl"
platform: "linux"
package: "tcllib"
version: "2.0+dfsg-4"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/core"
---

# core(3tcl)

Basic reflected/virtual channel support

```

```

## NAME

tcl::chan::core - Basic reflected/virtual channel support

## SYNOPSIS

package require **Tcl 8.5 9**

package require **TclOO**

package require **tcl::chan::core ?1.1?**

**::tcl::chan::core** *objectName*

*objectName* **initialize** *thechannel* *mode*

*objectName* **finalize** *thechannel*

*objectName* **destroy**

```

```

## DESCRIPTION

The **tcl::chan::core** package provides a **TclOO** class implementing common behaviour needed by virtually every reflected or virtual channel (initialization, finalization).

This class expects to be used as either superclass of a concrete channel class, or to be mixed into such a class.

## CLASS API

- **::tcl::chan::core** *objectName*

  This command creates a new channel core object with an associated global Tcl command whose name is *objectName*. This command may be used to invoke various operations on the object, as described in the section for the **Instance API**.

## INSTANCE API

The API of channel core instances provides only two methods, both corresponding to channel handler commands (For reference see *TIP 219* \[http:/tip.tcl.tk/219\]). They expect to be called from whichever object instance the channel core was made a part of.

- *objectName* **initialize** *thechannel* *mode*

  This method implements standard behaviour for the **initialize** method of channel handlers. Using introspection it finds the handler methods supported by the instance and returns a list containing their names, as expected by the support for reflected channels in the Tcl core.

  It further remembers the channel handle in an instance variable for access by sub-classes.

- *objectName* **finalize** *thechannel*

  This method implements standard behaviour for the **finalize** method of channel handlers. It simply destroys itself.

- *objectName* **destroy**

  Destroying the channel core instance closes the channel it was initialized for, see the method **initialize**. When destroyed from within a call of **finalize** this does not happen, under the assumption that the channel is being destroyed by Tcl.

## BUGS, IDEAS, FEEDBACK

This document, and the package it describes, will undoubtedly contain bugs and other problems. Please report such in the category *virtchannel* of the *Tcllib Trackers* \[http://core.tcl.tk/tcllib/reportlist\]. Please also report any ideas for enhancements you may have for either package and/or documentation.

When proposing code changes, please provide *unified diffs*, i.e the output of **diff -u**.

Note further that *attachments* are strongly preferred over inlined patches. Attachments can be made by going to the **Edit** form of the ticket immediately after its creation, and then using the left-most button in the secondary navigation bar.

## KEYWORDS

reflected channel, tip 219, virtual channel

## CATEGORY

Channels

## COPYRIGHT

```
Copyright (c) 2009 Andreas Kupries <andreas_kupries@users.sourceforge.net>
```
