gemini-browser

A text-based gemini browser
git clone git://git.laack.co/gemini-browser.git
Log | Files | Refs | README

errors.go (2579B)


      1 // Copyright 2015 The TCell Authors
      2 //
      3 // Licensed under the Apache License, Version 2.0 (the "License");
      4 // you may not use file except in compliance with the License.
      5 // You may obtain a copy of the license at
      6 //
      7 //    http://www.apache.org/licenses/LICENSE-2.0
      8 //
      9 // Unless required by applicable law or agreed to in writing, software
     10 // distributed under the License is distributed on an "AS IS" BASIS,
     11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     12 // See the License for the specific language governing permissions and
     13 // limitations under the License.
     14 
     15 package tcell
     16 
     17 import (
     18 	"errors"
     19 	"time"
     20 
     21 	"github.com/gdamore/tcell/v2/terminfo"
     22 )
     23 
     24 var (
     25 	// ErrTermNotFound indicates that a suitable terminal entry could
     26 	// not be found.  This can result from either not having TERM set,
     27 	// or from the TERM failing to support certain minimal functionality,
     28 	// in particular absolute cursor addressability (the cup capability)
     29 	// is required.  For example, legacy "adm3" lacks this capability,
     30 	// whereas the slightly newer "adm3a" supports it.  This failure
     31 	// occurs most often with "dumb".
     32 	ErrTermNotFound = terminfo.ErrTermNotFound
     33 
     34 	// ErrNoScreen indicates that no suitable screen could be found.
     35 	// This may result from attempting to run on a platform where there
     36 	// is no support for either termios or console I/O (such as nacl),
     37 	// or from running in an environment where there is no access to
     38 	// a suitable console/terminal device.  (For example, running on
     39 	// without a controlling TTY or with no /dev/tty on POSIX platforms.)
     40 	ErrNoScreen = errors.New("no suitable screen available")
     41 
     42 	// ErrNoCharset indicates that the locale environment the
     43 	// program is not supported by the program, because no suitable
     44 	// encoding was found for it.  This problem never occurs if
     45 	// the environment is UTF-8 or UTF-16.
     46 	ErrNoCharset = errors.New("character set not supported")
     47 
     48 	// ErrEventQFull indicates that the event queue is full, and
     49 	// cannot accept more events.
     50 	ErrEventQFull = errors.New("event queue full")
     51 )
     52 
     53 // An EventError is an event representing some sort of error, and carries
     54 // an error payload.
     55 type EventError struct {
     56 	t   time.Time
     57 	err error
     58 }
     59 
     60 // When returns the time when the event was created.
     61 func (ev *EventError) When() time.Time {
     62 	return ev.t
     63 }
     64 
     65 // Error implements the error.
     66 func (ev *EventError) Error() string {
     67 	return ev.err.Error()
     68 }
     69 
     70 // NewEventError creates an ErrorEvent with the given error payload.
     71 func NewEventError(err error) *EventError {
     72 	return &EventError{t: time.Now(), err: err}
     73 }