// StartRPC starts the HTTP RPC API server. func (api *PrivateAdminAPI) StartRPC(host *string, port *rpc.HexNumber, cors *string, apis *string) (bool, error) { api.node.lock.Lock() defer api.node.lock.Unlock() if api.node.httpHandler != nil { return false, fmt.Errorf("HTTP RPC already running on %s", api.node.httpEndpoint) } if host == nil { h := common.DefaultHTTPHost if api.node.httpHost != "" { h = api.node.httpHost } host = &h } if port == nil { port = rpc.NewHexNumber(api.node.httpPort) } if cors == nil { cors = &api.node.httpCors } modules := api.node.httpWhitelist if apis != nil { modules = nil for _, m := range strings.Split(*apis, ",") { modules = append(modules, strings.TrimSpace(m)) } } if err := api.node.startHTTP(fmt.Sprintf("%s:%d", *host, port.Int()), api.node.rpcAPIs, modules, *cors); err != nil { return false, err } return true, nil }
// StartWS starts the websocket RPC API server. func (api *PrivateAdminAPI) StartWS(host *string, port *rpc.HexNumber, allowedOrigins *string, apis *string) (bool, error) { api.node.lock.Lock() defer api.node.lock.Unlock() if api.node.wsHandler != nil { return false, fmt.Errorf("WebSocket RPC already running on %s", api.node.wsEndpoint) } if host == nil { h := common.DefaultWSHost if api.node.wsHost != "" { h = api.node.wsHost } host = &h } if port == nil { port = rpc.NewHexNumber(api.node.wsPort) } if allowedOrigins == nil { allowedOrigins = &api.node.wsOrigins } modules := api.node.wsWhitelist if apis != nil { modules = nil for _, m := range strings.Split(*apis, ",") { modules = append(modules, strings.TrimSpace(m)) } } if err := api.node.startWS(fmt.Sprintf("%s:%d", *host, port.Int()), api.node.rpcAPIs, modules, *allowedOrigins); err != nil { return false, err } return true, nil }
// UninstallFilter disables and removes an existing filter. func (s *PublicWhisperAPI) UninstallFilter(filterId rpc.HexNumber) bool { s.messagesMu.Lock() defer s.messagesMu.Unlock() if _, ok := s.messages[filterId.Int()]; ok { delete(s.messages, filterId.Int()) return true } return false }
// GetFilterChanges retrieves all the new messages matched by a filter since the last retrieval. func (s *PublicWhisperAPI) GetFilterChanges(filterId rpc.HexNumber) []WhisperMessage { s.messagesMu.RLock() defer s.messagesMu.RUnlock() if s.messages[filterId.Int()] != nil { if changes := s.messages[filterId.Int()].retrieve(); changes != nil { return changes } } return returnWhisperMessages(nil) }
// GetMessages retrieves all the known messages that match a specific filter. func (s *PublicWhisperAPI) GetMessages(filterId rpc.HexNumber) []WhisperMessage { // Retrieve all the cached messages matching a specific, existing filter s.messagesMu.RLock() defer s.messagesMu.RUnlock() var messages []*Message if s.messages[filterId.Int()] != nil { messages = s.messages[filterId.Int()].messages() } return returnWhisperMessages(messages) }