terminals/extensions.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Thu, 16 Feb 2012 18:11:55 +0000
changeset 108 86d4f33280aa
parent 103 726bf2ca0b99
child 109 9587e2df7029
permissions -rw-r--r--
STC Workarounds
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
108
86d4f33280aa STC Workarounds
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
     1
"{ Package: 'stx:goodies/xtreams/terminals' }"!
78
mkobetic
parents: 43
diff changeset
     2
mkobetic
parents: 43
diff changeset
     3
!Block methodsFor:'converting'!
39
80fdc4602b14 sockets and files
mkobetic
parents: 16
diff changeset
     4
78
mkobetic
parents: 43
diff changeset
     5
reading
mkobetic
parents: 43
diff changeset
     6
        self numArgs = 0 ifTrue: [^Xtreams::BlockClosureReadStream on: self].
mkobetic
parents: 43
diff changeset
     7
        self numArgs = 1 ifTrue: [^Xtreams::BlockClosureGenerateStream on: self].
mkobetic
parents: 43
diff changeset
     8
        self error: 'More arguments than we can poke a stick at!!'
mkobetic
parents: 43
diff changeset
     9
! !
108
86d4f33280aa STC Workarounds
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
    10
78
mkobetic
parents: 43
diff changeset
    11
!Block methodsFor:'converting'!
mkobetic
parents: 43
diff changeset
    12
mkobetic
parents: 43
diff changeset
    13
writing
mkobetic
parents: 43
diff changeset
    14
        self numArgs = 1 ifTrue: [^Xtreams::BlockClosureWriteStream on: self].
mkobetic
parents: 43
diff changeset
    15
        self error: 'Must be a single argument block.'
mkobetic
parents: 43
diff changeset
    16
! !
108
86d4f33280aa STC Workarounds
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
    17
78
mkobetic
parents: 43
diff changeset
    18
!Collection methodsFor:'converting'!
39
80fdc4602b14 sockets and files
mkobetic
parents: 16
diff changeset
    19
80fdc4602b14 sockets and files
mkobetic
parents: 16
diff changeset
    20
writing
78
mkobetic
parents: 43
diff changeset
    21
        ^Xtreams::CollectionWriteStream on: self
mkobetic
parents: 43
diff changeset
    22
! !
108
86d4f33280aa STC Workarounds
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
    23
78
mkobetic
parents: 43
diff changeset
    24
!Filename methodsFor:'converting'!
mkobetic
parents: 43
diff changeset
    25
mkobetic
parents: 43
diff changeset
    26
appending
mkobetic
parents: 43
diff changeset
    27
        ^(OperatingSystem open: self osNameForAccess attributes: #(O_APPEND O_CREAT) mode: nil) writing
mkobetic
parents: 43
diff changeset
    28
                position: self fileSize;
mkobetic
parents: 43
diff changeset
    29
                isPositionable: false;
mkobetic
parents: 43
diff changeset
    30
                yourself
39
80fdc4602b14 sockets and files
mkobetic
parents: 16
diff changeset
    31
! !
108
86d4f33280aa STC Workarounds
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
    32
78
mkobetic
parents: 43
diff changeset
    33
!Filename methodsFor:'converting'!
39
80fdc4602b14 sockets and files
mkobetic
parents: 16
diff changeset
    34
78
mkobetic
parents: 43
diff changeset
    35
reading
mkobetic
parents: 43
diff changeset
    36
        self isDirectory ifFalse: [^(OperatingSystem open: self osNameForAccess attributes: #(O_RDONLY) mode: nil) reading].
mkobetic
parents: 43
diff changeset
    37
mkobetic
parents: 43
diff changeset
    38
        "Return the directory contents as a stream of filenames"
mkobetic
parents: 43
diff changeset
    39
        ^([self directoryContents]
mkobetic
parents: 43
diff changeset
    40
                on:     Error
mkobetic
parents: 43
diff changeset
    41
                do:     [:ex | ex return: #()])
mkobetic
parents: 43
diff changeset
    42
                        reading collecting: [:each | self construct: each asFilename]
mkobetic
parents: 43
diff changeset
    43
! !
108
86d4f33280aa STC Workarounds
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
    44
78
mkobetic
parents: 43
diff changeset
    45
!Filename methodsFor:'converting'!
mkobetic
parents: 43
diff changeset
    46
mkobetic
parents: 43
diff changeset
    47
writing
mkobetic
parents: 43
diff changeset
    48
    ^(OperatingSystem open: self osNameForAccess attributes: #(O_WRONLY | O_CREAT) mode: nil) writing
mkobetic
parents: 43
diff changeset
    49
! !
108
86d4f33280aa STC Workarounds
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
    50
78
mkobetic
parents: 43
diff changeset
    51
!PipeStream methodsFor:'testing'!
mkobetic
parents: 43
diff changeset
    52
mkobetic
parents: 43
diff changeset
    53
isActive
mkobetic
parents: 43
diff changeset
    54
mkobetic
parents: 43
diff changeset
    55
    ^self isOpen
mkobetic
parents: 43
diff changeset
    56
! !
108
86d4f33280aa STC Workarounds
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
    57
43
mkobetic
parents: 39
diff changeset
    58
!PipeStream methodsFor:'converting'!
mkobetic
parents: 39
diff changeset
    59
mkobetic
parents: 39
diff changeset
    60
reading
mkobetic
parents: 39
diff changeset
    61
mkobetic
parents: 39
diff changeset
    62
    ^Xtreams::ExternalReadStream on: self
mkobetic
parents: 39
diff changeset
    63
! !
108
86d4f33280aa STC Workarounds
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
    64
43
mkobetic
parents: 39
diff changeset
    65
!PipeStream methodsFor:'converting'!
9
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    66
43
mkobetic
parents: 39
diff changeset
    67
writing
mkobetic
parents: 39
diff changeset
    68
mkobetic
parents: 39
diff changeset
    69
    ^Xtreams::ExternalWriteStream on: self
mkobetic
parents: 39
diff changeset
    70
! !
108
86d4f33280aa STC Workarounds
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
    71
78
mkobetic
parents: 43
diff changeset
    72
!Random methodsFor:'converting'!
43
mkobetic
parents: 39
diff changeset
    73
78
mkobetic
parents: 43
diff changeset
    74
reading
mkobetic
parents: 43
diff changeset
    75
	^[self next] reading
mkobetic
parents: 43
diff changeset
    76
		contentsSpecies: self contentsSpecies;
mkobetic
parents: 43
diff changeset
    77
		yourself
39
80fdc4602b14 sockets and files
mkobetic
parents: 16
diff changeset
    78
! !
108
86d4f33280aa STC Workarounds
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
    79
78
mkobetic
parents: 43
diff changeset
    80
!SequenceableCollection methodsFor:'converting'!
9
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    81
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    82
reading
78
mkobetic
parents: 43
diff changeset
    83
        ^Xtreams::SequenceableCollectionReadStream on: self
9
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    84
! !
108
86d4f33280aa STC Workarounds
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
    85
78
mkobetic
parents: 43
diff changeset
    86
!SequenceableCollection methodsFor:'converting'!
9
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    87
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    88
writing
78
mkobetic
parents: 43
diff changeset
    89
        ^Xtreams::SequenceableCollectionWriteStream on: self
9
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    90
! !
108
86d4f33280aa STC Workarounds
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
    91
78
mkobetic
parents: 43
diff changeset
    92
!SharedQueue methodsFor:'converting'!
9
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    93
78
mkobetic
parents: 43
diff changeset
    94
reading
mkobetic
parents: 43
diff changeset
    95
        ^Xtreams::SharedQueueReadStream on: self
mkobetic
parents: 43
diff changeset
    96
! !
108
86d4f33280aa STC Workarounds
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
    97
78
mkobetic
parents: 43
diff changeset
    98
!SharedQueue methodsFor:'converting'!
mkobetic
parents: 43
diff changeset
    99
mkobetic
parents: 43
diff changeset
   100
writing
mkobetic
parents: 43
diff changeset
   101
        ^Xtreams::SharedQueueWriteStream on: self
mkobetic
parents: 43
diff changeset
   102
! !
108
86d4f33280aa STC Workarounds
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   103
9
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   104
!Socket methodsFor:'converting'!
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   105
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   106
accepting
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   107
	"Return a read stream that produces new sockets from incoming connections."
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   108
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   109
	"^	ReadStream"
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   110
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   111
	"Listen for connections and close those connections immediately.
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   112
	| socket |
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   113
	socket := SocketAccessor newTCP.
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   114
	socket listenFor: 1.
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   115
	[socket acceping do: [:client | client close]]
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   116
		ensure: [socket close]
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   117
	"
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   118
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   119
	^[self accept] reading
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   120
		closeBlock: [self close];
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   121
		yourself
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   122
! !
108
86d4f33280aa STC Workarounds
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   123
9
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   124
!Socket methodsFor:'converting'!
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   125
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   126
reading
39
80fdc4602b14 sockets and files
mkobetic
parents: 16
diff changeset
   127
        ^Xtreams::ExternalReadStream on: self
9
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   128
! !
108
86d4f33280aa STC Workarounds
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   129
9
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   130
!Socket methodsFor:'converting'!
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   131
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   132
writing
39
80fdc4602b14 sockets and files
mkobetic
parents: 16
diff changeset
   133
        ^Xtreams::ExternalWriteStream on: self
80fdc4602b14 sockets and files
mkobetic
parents: 16
diff changeset
   134
! !
108
86d4f33280aa STC Workarounds
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   135
78
mkobetic
parents: 43
diff changeset
   136
!TextCollector methodsFor:'converting'!
39
80fdc4602b14 sockets and files
mkobetic
parents: 16
diff changeset
   137
80fdc4602b14 sockets and files
mkobetic
parents: 16
diff changeset
   138
writing
78
mkobetic
parents: 43
diff changeset
   139
	^[:object | self nextPut: object] writing
39
80fdc4602b14 sockets and files
mkobetic
parents: 16
diff changeset
   140
! !
108
86d4f33280aa STC Workarounds
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   141
78
mkobetic
parents: 43
diff changeset
   142
!UndefinedObject methodsFor:'converting'!
39
80fdc4602b14 sockets and files
mkobetic
parents: 16
diff changeset
   143
78
mkobetic
parents: 43
diff changeset
   144
writing
mkobetic
parents: 43
diff changeset
   145
        ^Xtreams::NullWriteStream new
9
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   146
! !
108
86d4f33280aa STC Workarounds
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   147
43
mkobetic
parents: 39
diff changeset
   148
!Xtreams::Buffer methodsFor:'converting'!
mkobetic
parents: 39
diff changeset
   149
mkobetic
parents: 39
diff changeset
   150
reading
108
86d4f33280aa STC Workarounds
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   151
    ^Xtreams::BufferReadStream on: self
86d4f33280aa STC Workarounds
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   152
86d4f33280aa STC Workarounds
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   153
    "Modified (format): / 16-02-2012 / 12:09:07 / Jan Vrany <jan.vrany@fit.cvut.cz>"
43
mkobetic
parents: 39
diff changeset
   154
! !
108
86d4f33280aa STC Workarounds
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   155
43
mkobetic
parents: 39
diff changeset
   156
!Xtreams::Buffer methodsFor:'converting'!
mkobetic
parents: 39
diff changeset
   157
mkobetic
parents: 39
diff changeset
   158
writing
108
86d4f33280aa STC Workarounds
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   159
    ^Xtreams::BufferWriteStream on: self
86d4f33280aa STC Workarounds
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   160
86d4f33280aa STC Workarounds
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   161
    "Modified: / 16-02-2012 / 12:09:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
43
mkobetic
parents: 39
diff changeset
   162
! !
108
86d4f33280aa STC Workarounds
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   163
86d4f33280aa STC Workarounds
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   164
!stx_goodies_xtreams_terminals class methodsFor:'documentation'!
86d4f33280aa STC Workarounds
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   165
86d4f33280aa STC Workarounds
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   166
extensionsVersion_SVN
86d4f33280aa STC Workarounds
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   167
    ^ '$Id$'
86d4f33280aa STC Workarounds
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   168
! !