| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- package mocks
- import (
- "bytes"
- "github.com/v2ray/v2ray-core/common/alloc"
- v2net "github.com/v2ray/v2ray-core/common/net"
- "github.com/v2ray/v2ray-core/proxy/common/connhandler"
- "github.com/v2ray/v2ray-core/transport/ray"
- )
- type OutboundConnectionHandler struct {
- Data2Send *bytes.Buffer
- Data2Return []byte
- Destination v2net.Destination
- }
- func (handler *OutboundConnectionHandler) Dispatch(packet v2net.Packet, ray ray.OutboundRay) error {
- input := ray.OutboundInput()
- output := ray.OutboundOutput()
- handler.Destination = packet.Destination()
- if packet.Chunk() != nil {
- handler.Data2Send.Write(packet.Chunk().Value)
- }
- go func() {
- for {
- data, open := <-input
- if !open {
- break
- }
- handler.Data2Send.Write(data.Value)
- data.Release()
- }
- response := alloc.NewBuffer()
- response.Clear()
- response.Append(handler.Data2Return)
- output <- response
- close(output)
- }()
- return nil
- }
- func (handler *OutboundConnectionHandler) Create(config interface{}) (connhandler.OutboundConnectionHandler, error) {
- return handler, nil
- }
|