Skip to content

Commit deced3e

Browse files
committed
foldselect save branch
1 parent 710c2a6 commit deced3e

File tree

9 files changed

+232
-139
lines changed

9 files changed

+232
-139
lines changed

src/main/scala/gopher/channels/Channel.scala

Lines changed: 8 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -19,28 +19,17 @@ trait Channel[A] extends InputOutput[A]
1919
def close(): Unit
2020

2121
// override some operations
22-
23-
override def filter(p:A=>Boolean): Channel[A] =
24-
{
25-
val filteredInput = super.filter(p)
26-
new Channel[A] {
27-
def cbread[B](f:
28-
ContRead[A,B]=>Option[
29-
ContRead.In[A]=>Future[Continuated[B]]
30-
],
31-
ft: FlowTermination[B]): Unit = filteredInput.cbread(f,ft)
32-
33-
def cbwrite[B](f: ContWrite[A,B] => Option[
34-
(A,Future[Continuated[B]])
35-
],
36-
ft: FlowTermination[B]): Unit =
37-
thisChannel.cbwrite(f,ft) // TODO: optimize by filteredOutput.cbwrite() ?
3822

39-
def api = thisChannel.api
23+
class Filtered(p:A=>Boolean) extends super.Filtered(p)
24+
with Channel[A]
25+
{
26+
def cbwrite[B](f: ContWrite[A,B] => Option[(A,Future[Continuated[B]])],ft: FlowTermination[B]):Unit =
27+
thisChannel.cbwrite(f,ft)
4028

41-
def close() = thisChannel.close()
42-
}
29+
def close() = thisChannel.close()
4330
}
31+
32+
override def filter(p:A=>Boolean): Channel[A] = new Filtered(p)
4433

4534
}
4635

src/main/scala/gopher/channels/Continuated.scala

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,20 @@ sealed trait FlowContinuated[A] extends Continuated[A]
1818
def flowTermination: FlowTermination[A]
1919
}
2020

21+
sealed trait ReadyTestResult[+A]
22+
23+
object ReadyTestResult
24+
{
25+
sealed trait NotReady[+A] extends ReadyTestResult[A]
26+
case object WillBeCheckedLater extends NotReady[Nothing]
27+
case class CheckOther[A,B](other:A=>ReadyTestResult[B]) extends NotReady[B]
28+
29+
case class Ready[A](value:A) extends ReadyTestResult[A]
30+
31+
}
32+
33+
34+
2135
case class Done[A](result:A, override val flowTermination: FlowTermination[A]) extends FlowContinuated[A]
2236

2337
/**
@@ -38,6 +52,7 @@ case class ContRead[A,B](
3852
object ContRead
3953
{
4054

55+
4156
sealed trait In[+A]
4257
case class Value[+A](a:A) extends In[A]
4358
case object Skip extends In[Nothing]

src/main/scala/gopher/channels/EffectedChannel.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ class SinglethreadedEffectedChannel[A](ch:Channel[A]) extends SinglethreadedEffe
4141

4242
def api: GopherAPI = v.api
4343

44-
override def filter(p:A=>Boolean):Channel[A] = new SinglethreadedEffectedChannel(v.filter(p))
44+
//override def filter(p:A=>Boolean):Channel[A] = new SinglethreadedEffectedChannel(v.filter(p))
4545

4646
}
4747

0 commit comments

Comments
 (0)