This commit is contained in:
V2Ray committed 2015-09-10 00:50:21 +02:00
1 parent f09d65b2e5
commit 1c618e93b1
4 files changed
+67 -17

No files matched your search

+21 -4
View File
@@ -6,8 +6,9 @@ import (
// VPoint is an single server in V2Ray system.
type VPoint struct {
config VConfig
connHandler ConnectionHandler
config VConfig
ichFactory InboundConnectionHandlerFactory
ochFactory OutboundConnectionHandlerFactory
}
// NewVPoint returns a new VPoint server based on given configuration.
@@ -18,16 +19,32 @@ func NewVPoint(config *VConfig) (*VPoint, error) {
return vpoint, nil
}
type ConnectionHandler interface {
type InboundConnectionHandlerFactory interface {
Create(vPoint *VPoint) (InboundConnectionHandler, error)
}
type InboundConnectionHandler interface {
Listen(port uint16) error
}
type OutboundConnectionHandlerFactory interface {
Create(vPoint *VPoint) (OutboundConnectionHandler, error)
}
type OutboundConnectionHandler interface {
Start(vray *OutboundVRay) error
}
// Start starts the VPoint server, and return any error during the process.
// In the case of any errors, the state of the server is unpredicatable.
func (vp *VPoint) Start() error {
if vp.config.Port <= 0 {
return fmt.Errorf("Invalid port %d", vp.config.Port)
}
vp.connHandler.Listen(vp.config.Port)
inboundConnectionHandler, err := vp.ichFactory.Create(vp)
if err != nil {
return err
}
err = inboundConnectionHandler.Listen(vp.config.Port)
return nil
}