Skip to content

Commit 621a701

Browse files
committed
[metoro-io#63] Fix HTTP transport by removing duplication of base transport
1 parent 1fa18e0 commit 621a701

File tree

1 file changed

+4
-47
lines changed

1 file changed

+4
-47
lines changed

transport/http/http.go

+4-47
Original file line numberDiff line numberDiff line change
@@ -5,22 +5,14 @@ import (
55
"encoding/json"
66
"fmt"
77
"net/http"
8-
"sync"
9-
10-
"github.com/metoro-io/mcp-golang/transport"
118
)
129

1310
// HTTPTransport implements a stateless HTTP transport for MCP
1411
type HTTPTransport struct {
1512
*baseTransport
16-
server *http.Server
17-
endpoint string
18-
messageHandler func(ctx context.Context, message *transport.BaseJsonRpcMessage)
19-
errorHandler func(error)
20-
closeHandler func()
21-
mu sync.RWMutex
22-
addr string
23-
responseMap map[int64]chan *transport.BaseJsonRpcMessage
13+
server *http.Server
14+
endpoint string
15+
addr string
2416
}
2517

2618
// NewHTTPTransport creates a new HTTP transport that listens on the specified endpoint
@@ -29,7 +21,6 @@ func NewHTTPTransport(endpoint string) *HTTPTransport {
2921
baseTransport: newBaseTransport(),
3022
endpoint: endpoint,
3123
addr: ":8080", // Default port
32-
responseMap: make(map[int64]chan *transport.BaseJsonRpcMessage),
3324
}
3425
}
3526

@@ -52,49 +43,15 @@ func (t *HTTPTransport) Start(ctx context.Context) error {
5243
return t.server.ListenAndServe()
5344
}
5445

55-
// Send implements Transport.Send
56-
func (t *HTTPTransport) Send(ctx context.Context, message *transport.BaseJsonRpcMessage) error {
57-
key := message.JsonRpcResponse.Id
58-
responseChannel := t.responseMap[int64(key)]
59-
if responseChannel == nil {
60-
return fmt.Errorf("no response channel found for key: %d", key)
61-
}
62-
responseChannel <- message
63-
return nil
64-
}
65-
6646
// Close implements Transport.Close
6747
func (t *HTTPTransport) Close() error {
6848
if t.server != nil {
6949
if err := t.server.Close(); err != nil {
7050
return err
7151
}
7252
}
73-
if t.closeHandler != nil {
74-
t.closeHandler()
75-
}
76-
return nil
77-
}
78-
79-
// SetCloseHandler implements Transport.SetCloseHandler
80-
func (t *HTTPTransport) SetCloseHandler(handler func()) {
81-
t.mu.Lock()
82-
defer t.mu.Unlock()
83-
t.closeHandler = handler
84-
}
85-
86-
// SetErrorHandler implements Transport.SetErrorHandler
87-
func (t *HTTPTransport) SetErrorHandler(handler func(error)) {
88-
t.mu.Lock()
89-
defer t.mu.Unlock()
90-
t.errorHandler = handler
91-
}
9253

93-
// SetMessageHandler implements Transport.SetMessageHandler
94-
func (t *HTTPTransport) SetMessageHandler(handler func(ctx context.Context, message *transport.BaseJsonRpcMessage)) {
95-
t.mu.Lock()
96-
defer t.mu.Unlock()
97-
t.messageHandler = handler
54+
return t.baseTransport.Close()
9855
}
9956

10057
func (t *HTTPTransport) handleRequest(w http.ResponseWriter, r *http.Request) {

0 commit comments

Comments
 (0)